摘要: 由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件。 Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持续集 成和可测试性。由于依赖注入和控制反转,JDBC 得以简化。它是开源免费的。 阅读全文
posted @ 2020-07-11 21:48 咔啡 阅读(550) 评论(0) 推荐(0)
摘要: 下面有几条可以遵循的方法重载的最佳实践来避免造成自动装箱的混乱。 a)不要重载这样的方法:一个方法接收 int 参数,而另个方法接收 Integer 参 数。 b)不要重载参数数量一致,而只是参数顺序不同的方法。 c)如果重载的方法参数个数多于 5 个,采用可变参数。 阅读全文
posted @ 2020-07-11 21:46 咔啡 阅读(297) 评论(0) 推荐(0)
摘要: 这是我在使用 Java 中 Collectionc 类的一些最佳实践: a)使用正确的集合类,例如,如果不需要同步列表,使用 ArrayList 而不是 Vector。 b)优先使用并发集合,而不是对集合进行同步。并发集合提供更好的可扩展性。 c)使用接口代表和访问集合,如使用 List 存储 Ar 阅读全文
posted @ 2020-07-11 21:42 咔啡 阅读(314) 评论(0) 推荐(0)
摘要: Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度。它是轻量级、松 散耦合的。它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序 开发提供了一个有凝聚力的框架。它可以集成其他框架,如 Structs、Hibernate、 EJB 等,所以又称为框架的框架。 阅读全文
posted @ 2020-07-11 21:38 咔啡 阅读(1411) 评论(0) 推荐(0)
摘要: 因为有强制的规范指定需要同时重写 hashcode 与 equal 是方法,许多容器类, 如 HashMap、HashSet 都依赖于 hashcode 与 equals 的规定。 阅读全文
posted @ 2020-07-11 21:34 咔啡 阅读(174) 评论(0) 推荐(0)
摘要: 每种方式都有它的缺点和优点。构造器注入保证所有的注入都被初始化,但是 setter 注入提供更好的灵活性来设置可选依赖。如果使用 XML 来描述依赖, Setter 注入的可读写会更强。经验法则是强制依赖使用构造器注入,可选依赖使用 setter 注入。 阅读全文
posted @ 2020-07-11 21:31 咔啡 阅读(1349) 评论(0) 推荐(0)
摘要: 不能,虽然你可以调用 System.gc() 或者 Runtime.gc(),但是没有办法保证 GC 的执行。 阅读全文
posted @ 2020-07-11 21:30 咔啡 阅读(600) 评论(0) 推荐(0)
摘要: JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局 部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享, 而堆被整个 JVM 的所有线程共享。 阅读全文
posted @ 2020-07-11 21:28 咔啡 阅读(364) 评论(0) 推荐(0)
摘要: final 是一个修饰符,可以修饰变量、方法和类。如果 final 修饰变量,意味着该 变量的值在初始化后不能被改变。finalize 方法是在对象被回收之前调用的方法, 给对象自己最后一个复活的机会,但是什么时候调用 finalize 没有保证。finally 是一个关键字,与 try 和 cat 阅读全文
posted @ 2020-07-11 21:27 咔啡 阅读(255) 评论(0) 推荐(0)
摘要: PriorityQueue 保证最高或者最低优先级的的元素总是在队列头部,但是 LinkedHashMap 维持的顺序是元素插入的顺序。当遍历一个 PriorityQueue 时,没有任何顺序保证,但是 LinkedHashMap 课保证遍历顺序是元素插入的顺 序。 阅读全文
posted @ 2020-07-11 21:26 咔啡 阅读(476) 评论(0) 推荐(0)
摘要: poll() 和 remove() 都是从队列中取出一个元素,但是 poll() 在获取元素失败 的时候会返回空,但是 remove() 失败的时候会抛出异常。 阅读全文
posted @ 2020-07-11 21:25 咔啡 阅读(1185) 评论(0) 推荐(0)
摘要: 这两个类有许多不同的地方,下面列出了一部分: a) Hashtable 是 JDK 1 遗留下来的类,而 HashMap 是后来增加的。 b)Hashtable 是同步的,比较慢,但 HashMap 没有同步策略,所以会更快。 c)Hashtable 不允许有个空的 key,但是 HashMap 允 阅读全文
posted @ 2020-07-11 21:24 咔啡 阅读(271) 评论(0) 推荐(0)
摘要: 是双向链表,你可以检查 JDK 的源码。在 Eclipse,你可以使用快捷键 Ctrl + T, 直接在编辑器中打开该类。 阅读全文
posted @ 2020-07-11 21:22 咔啡 阅读(3288) 评论(0) 推荐(1)
摘要: 接口用于定义 API。它定义了类必须得遵循的规则。同时,它提供了一种抽象, 因为客户端只使用接口,这样可以有多重实现,如 List 接口,你可以使用可随机 访问的 ArrayList,也可以使用方便插入和删除的 LinkedList。接口中不允许写 代码,以此来保证抽象,但是 Java 8 中你可以 阅读全文
posted @ 2020-07-11 21:20 咔啡 阅读(1207) 评论(0) 推荐(1)
摘要: 重载和重写都允许你用相同的名称来实现不同的功能,但是重载是编译时活动, 而重写是运行时活动。你可以在同一个类中重载方法,但是只能在子类中重写方 法。重写必须要有继承。 阅读全文
posted @ 2020-07-11 21:18 咔啡 阅读(436) 评论(0) 推荐(0)
摘要: 虽然两种都可以实现代码复用,但是组合比继承共灵活,因为组合允许你在运行 时选择不同的实现。用组合实现的代码也比继承测试起来更加简单。 阅读全文
posted @ 2020-07-11 21:16 咔啡 阅读(287) 评论(0) 推荐(0)
摘要: 可以使用 PowerMock 库来测试静态方法。 阅读全文
posted @ 2020-07-11 21:14 咔啡 阅读(448) 评论(0) 推荐(0)
摘要: 适配器模式提供对接口的转换。如果你的客户端使用某些接口,但是你有另外一 些接口,你就可以写一个适配去来连接这些接口。 阅读全文
posted @ 2020-07-11 21:12 咔啡 阅读(501) 评论(0) 推荐(0)
摘要: 组合模式使用树结构来展示部分与整体继承关系。它允许客户端采用统一的形式 来对待单个对象和对象容器。当你想要展示对象这种部分与整体的继承关系时采 用组合模式。 阅读全文
posted @ 2020-07-11 21:08 咔啡 阅读(317) 评论(0) 推荐(0)
摘要: 模板方法提供算法的框架,你可以自己去配置或定义步骤。例如,你可以将排序 算法看做是一个模板。它定义了排序的步骤,但是具体的比较,可以使用 Comparable 或者其语言中类似东西,具体策略由你去配置。列出算法概要的方 法就是众所周知的模板方法。 阅读全文
posted @ 2020-07-11 21:05 咔啡 阅读(247) 评论(0) 推荐(0)