栈Stack 堆栈是“后进先出”(LIFO)集合。它有时被称为叠加栈(pushdown stack),因为最后“压入”(push)栈的元素,第一个被“弹出”(pop)栈。经常用来类比栈的事物是带有弹簧支架的自助餐厅托盘。最后装入的托盘总是最先拿出来使用的。 Java 1.0 中附带了一个 Stack 类,结果设计得很糟糕(为了向后兼容,永远坚持 Java 中的旧设计错误)。Java 6 添加
1 简介 支持水平和垂直滚动视图。文本区域、表格等需要显示较多数据而空间又有限时,通常使用 JScrollPane 进行包裹以实现滚动显示。 JScrollPane 内包含一个视口表示 JScrollPane 的显示区域。视口内包含一个需要滚动显示的组件,称为视图。 构造方法 参数说明: view: 需要滚动显示的视图组件 vsbPolicy: 垂直滚动条的显示策略 hsbPolicy: 水平滚
简介 BorderLayout,边界布局管理器。它把 Container 按方位分为 5 个区域(东、西、南、北、中),每个区域放置一个组件。 构造方法: 构造一个组件之间没有间距的新边框布局BorderLayout() 构造一个具有指定组件间距的边框布局BorderLayout(int hgap, int vgap) 方位常量 BorderLayout.NORTH // 容器的北边
1 简介 JTable用于显示和编辑常规的二维单元格表。有关面向任务的文档和使用JTable的示例,请参见Java教程中的如何使用表。JTable具有许多功能,可以自定义其呈现和编辑功能,但是为这些功能提供了默认设置,因此可以轻松设置简单的表。例如,要建立一个包含10行10列数字的表: TableModel dataModel = new AbstractTableModel(){ Public
信号量(英语:semaphore)又称为信号标,是一个同步对象,用于保持在0至指定最大值之间的一个计数值。当线程完成一次对该semaphore对象的等待(wait)时,该计数值减一;当线程完成一次对semaphore对象的释放(release)时,计数值加一。当计数值为0,则线程等待该semaphore对象不再能成功直至该semaphore对象变成signaled状态。semaphore对象的计
文章目录 1 异常概念 1.1 历史中所谓的“异常” 解决方案 2 基本异常 简单的例子 抛出异常后 抛出异常的简单例子 异常模型的观点 异常参数 3 异常捕获 3.1 try 块 意义 3.2 异常处理程序 - catch 块 意义 3.3 终止与恢复 3.3.1 终止模型 3.3.2 恢复模型 缺陷 4 自定义异常 无参构造器 字符串参数的构造器 4.1
最近,某台词本火了,如下。我们来一一解析下。 那些口口声声,JAVA越来越难学的人,应该看着你们,像我一样。我看着你们,满怀羡慕。人类研究了几十年的代码调优,所有的Exception和Error,像是专门为你们准备的礼物。 因为 Java的异常体系考虑的的确周到,周到到被人认为是繁琐的地步。真是笑死人了这点。 Spring繁荣、中间件繁茂、数据库繁华,现代Java的成果被层层打开,可以尽
Method的invoke方法 1 先校验AccessibleObject的override字段 指示此对象是否覆盖语言级别的访问检查。初始化为“ false”字段,方法和构造方法都会使用此字段 注意:为了安全起见,此字段在此反射包外部均不可见。 AccessibleObject是Method,Field,Constructor的父类可调用 setAccessible 方法改变,如果设置为tru
文章目录 文件和目录路径 选取路径部分片段 路径分析 **Paths**的增减修改 目录 文件系统 路径监听 文件查找 模式 `glob` `regex` 文件读写 总结 在丑陋的 Java I/O 编程方式诞生多年以后,Java终于简化了文件读写的基本操作。 打开并读取文件对于大多数编程语言来是非常常用的,由于 I/O 糟糕的设计以至于很少有人能够在不依赖其他参
1 前端请求数据URL由后台来写 在开发中,URL主要是由后台来写好给前端。若后台在查询数据,需要借助查询条件才能查询到前端需要的数据时,这时后台会要求前端提供相关的查询参数(即URL请求的参数)。 2 接口文档主要由后台设计和修改 接口文档主要由后台设计和修改,前端开发者起到了辅助的作用。后台直接跟数据打交道,最清楚数据库里有什么数据,能返回什么数据。前端只是数据的被动接受者,只是接口文档的使
0 JavaSwing 简介 Java Swing 图形界面开发简介 1 布局管理器 JavaSwing_1.1: FlowLayout(流式布局)JavaSwing_1.2: GridLayout(网格布局)JavaSwing_1.3: GridBagLayout(网格袋布局)JavaSwing_1.4: BoxLayout(箱式布局)JavaSwing_1.5: GroupLayout(分组
0 FocusEvent 低级别事件指示Component已获得或失去输入焦点。 由组件生成此低级别事件(如一个TextField)。 该事件被传递给每一个FocusListener或FocusAdapter注册,以接收使用组件的此类事件对象addFocusListener方法。 ( FocusAdapter对象实现FocusListener接口。)每个此类侦听器对象获取此FocusEvent当
背景 在开发默认提示文字时: 解决方案 转义使用\"代替" 效果 正常
1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2. 【强制】 所有的覆写方法,必须加@ Override 注解。 说明: getObject()与 get0bject()的问题。一个是字母的 O,一个是数字的 0,加@Override 可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编译报错。
所牵涉源代码地址https://github.com/Wasabi1234/design-patterns 0 简单工厂案例 JDK 应用实例 日历类 迭代器 Collection 接口就相当于 VideoFactory相当于各种具体的工厂,如 JavaVideoFactoryItr 就是具体产品 JavaVideo 工厂应用 为解决 url 协议扩展使用 logback 应用 JDBC
动态代理 V.S 静态代理 Proxy类的代码被固定下来,不会因为业务的逐渐庞大而庞大 可以实现AOP编程,这是静态代理无法实现的 解耦,如果用在web业务下,可以实现数据层和业务层的分离 动态代理的优势就是实现无侵入式的代码扩展。 静态代理这个模式本身有个大问题,若类方法数量越来越多的时候,代理类的代码量十分庞大的。所以引入动态代理 动态代理 Java中动态代理的实现的关键: Proxy In
使用内置的 null 来表示没有对象,每次使用引用的时候就必须测试一下引用是否为 null,这显得有点枯燥,而且势必会产生相当乏味的代码。 null 没啥行为,只会产生 NullPointException。java.util.Optional为 null 值提供了一个轻量级代理,Optional 对象可以防止你的代码抛 NullPointException。 虽然 Optional 是 Jav
文章目录 流支持 流创建 随机数流 int 类型的范围 generate() iterate() 流的建造者模式 Arrays 正则表达式 中间操作 跟踪和调试 流元素排序 移除元素 应用函数到元素 在 `map()` 中组合流 Optional类 便利函数 创建 Optional Optional 对象操作 Optional 流 终端操作 数组 循环 集合 组合 匹配 查
Mock 对象和 **桩(Stub)**在逻辑上都是 Optional 的变体。他们都是最终程序中所使用的“实际”对象的代理。不过,Mock 对象和桩都是假扮成那些可以传递实际信息的实际对象,而不是像 Optional 那样把包含潜在 null 值的对象隐藏。 Mock 对象和桩之间的的差别在于程度不同。 Mock 对象往往是轻量级的,且用于自测试。通常,为了处理各种不同的测试场景,我们会创建出
普通的类和方法只能使用特定的类型:基本数据类型或类类型。如果编写的代码需要应用于多种类型,这种严苛的限制对代码的束缚就会很大。 多态是一种面向对象思想的泛化机制。可以将方法的参数类型设为基类,这样的方法就可以接受任何派生类作为参数,包括暂时还不存在的类。这样的方法更通用,应用范围更广。在类内部也是如此,在任何使用特定类型的地方,基类意味着更大的灵活性。除了 final 类(或只提供私有构造
1 动机 类似于电源适配器的设计和编码技巧。一般客户端通过目标类的接口访问它所提供的服务。有时,现有类可以满足客户类需要,但所提供接口不一定是客户类所期望的,可能因为现有类中方法名与目标类中定义的方法名不一致 这时,现有接口需要转化为客户类期望的接口,保证复用现有类如果不进行这样的转化,客户类就不能利用现有类所提供的功能,适配器模式可以完成这样的转化。 在适配器模式中可以定义一个包装类,包装不兼
1 定义 一种数据类型,只包含自定义的特定数据,是一组有共同特性的数据的集合。 创建需要enum关键字,如: public enum Color{ RED, GREEN, BLUE, BLACK, PINK, WHITE; } enum的语法看似与类不同,但它实际上就是一个类。 把上面的编译成 Gender.class, 然后用 javap -c Gender反编译 可得到
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为
暴力的直接Map对象toString()存,后面取出是就是用再转换为Map String转Map: JSONObject jsonobject = JSONObject.fromObject(str); rMap = (Map<String, Object>) jsonobject; 但很多时候并不能直接将Map对象的toString()而是应该转换为JsonObject后再调用t
客户端获得一个类实例的传统方式是调用由类提供的public构造器。但还有一种技术,一个类可以提供public的静态工厂方法,只是一个返回类实例的静态方法。 静态工厂方法与设计模式的工厂方法模式不同。在设计模式中并无直接等价的说法。 2 优点 2.1 实名制 如果构造器的参数本身并不能描述清楚返回的对象,那么具有确切名称的静态工厂则代码可读性更佳! 例如 BigInteger 类的构造器 Bi
静态工厂和构造器的局限:对于大量可选参数情况,难以做到很好的扩展。 比如一个类,表示包装食品上的营养标签。有些字段是必需的:净含量、毛重和每单位份量的卡路里,还有 20 个可选字段,如:总脂肪、饱和脂肪、反式脂肪、胆固醇、钠…大多食品只使用可选字段中的少数,且非零值。 这样的类怎么编写构造器或静态工厂?SE 通常使用可伸缩构造器模式:只向构造函数提供必需的参数。提供的第一个构造器只有必需参数,第
目录 1 基本语法 1.1 定义注解 1.2 元注解 编写注解处理器 注解元素 默认值限制 生成外部文件 替代方案 注解不支持继承 实现处理器 使用javac处理注解 最简单的处理器 更复杂的处理器 基于注解的单元测试 在 @Unit 中使用泛型 实现 @Unit 本章小结 注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方式,使我们可以在稍后的某个时刻
1 为什么面试官爱问这种面试题? 因为招聘中大家都有这个要求。 技术强的人,在互联网公司肯定负责过高并发模块,那夺取offer太简单了。可惜大部分初级工程师甚至高并发代码都没想过怎么写!不是说只要用个redis缓存,用个mq异步削峰就搞定了!真实的要复杂很多倍。 面试官问你如何设计一个高并发系统,其实多半是因为知道你没干过高并发。看你简历也没啥特别的,所以就问问你,如何设计。就是想考
1 为什么面试官爱问这种面试题? 因为招聘中大家都有这个要求。 技术强的人,在互联网公司肯定负责过高并发模块,那夺取offer太简单了。可惜大部分初级工程师甚至高并发代码都没想过怎么写!不是说只要用个redis缓存,用个mq异步削峰就搞定了!真实的要复杂很多倍。 面试官问你如何设计一个高并发系统,其实多半是因为知道你没干过高并发。看你简历也没啥特别的,所以就问问你,如何设计。就是想考察你是否
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号