![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《Effective Java》
strugglelin
这个作者很懒,什么都没留下…
展开
-
Effective Java (二)
二、遇到多个构造器参数要考虑用构建器public class User { private int id; private int age; private String userName; private String professional; private double salary; private User(Build bui...原创 2018-06-07 17:18:29 · 115 阅读 · 0 评论 -
Effective Java (第十章-并发)
第 66 条:同步访问共享的可变数据1、Java 语言规范保证读写一个变量是原子的,除非类型是 long 和 double。 2、多线程共享可变数据的时候,每个读或者写数据的线程都必须执行同步。第 67 条:避免过度同步1、过度同步可能会导致性能降低、死锁,甚至数据破坏。 2、不要在同步区域内部调用外来的方法,尽量限制同步区块内部的工作量。第 68 条:executor 和 t...原创 2018-07-11 16:21:47 · 243 阅读 · 0 评论 -
Effective Java (第九章-异常)
第 57 条:只针对异常的情况才使用异常1、现在 JVM 实现上,基于异常的模式比标准模式要慢得多。 2、使用异常反而阻止现代 JVM 可能要执行的某些特定优化。 3、异常是为了异常情况下而设计的。不要将它们用于普通的控制流,也不要编写迫使它们这么做的 API 。第 58 条:对可恢复的情况使用受检异常,对编程错误使用运行时异常第 59 条:避免不必要的使用受检的异常第 60 ...原创 2018-07-11 11:05:15 · 248 阅读 · 0 评论 -
Effective Java (第八章-通用程序设计)
第 45 条:将局部变量的作用域最小化1、循环终止不在需要循环变量的内容,for 循环优于 while 循环。第 46 条:for-each 循环优于传统的 for 循环1、三种情况无法使用 for-each 循环。(过滤,遍历删除选定元素、转换,遍历替代选定元素、平行迭代,并行遍历多个集合需要显示地控制迭代器或者索引变量)第 47 条:了解和使用类库第 48 条:如果需要精确...原创 2018-07-10 18:28:40 · 192 阅读 · 0 评论 -
Effective Java (第七章-方法)
第 38 条:检查参数的有效性 1、公有方法,要用 Javadoc 的@throws 标签在文档中说明违反参数值限制时会抛出的异常。 /** * 获取年龄 * * @param age * @return age * @throws ArithmeticException if age < = 0 */ pub...原创 2018-07-10 14:12:08 · 154 阅读 · 0 评论 -
Effective Java (六-七)
六、消除过期的对象引用内存泄漏: 1、无意识的对象保持。 2、缓存,清除无用的缓存项。 3、监听器和其他回调。 检测:Heap 剖析工具 解决:置为 null;使用 java.lang.ref 包下文件。七、避免使用终结方法终结方法(finalizer)通常是不可预测的,一般情况下不是必要的 用途: 1、当对象的所有者忘记调用前面段落中建议的显示终止方法时,终结方法可以充...原创 2018-06-08 19:06:42 · 111 阅读 · 0 评论 -
Effective Java (三-五)
三、用私有构造器或枚举类型强化 Singleton 属性 参照 单例模式:https://blog.csdn.net/bluesky003/article/details/78650243原创 2018-06-07 18:19:54 · 136 阅读 · 0 评论 -
Effective Java (一)
一、考虑用静态工厂方法替代构造器 优点: 1. 静态工厂方法 有名称 2. 静态工厂方法 不必每次调用创建一个新对象 3. 静态工厂方法 可以返回原返回类型的任何子类型 4. 静态工厂方法 创建参数化类型实例更简洁 例子: public static &amp;lt;K,V&amp;gt; HashMap&amp;lt;K,V&amp;gt; newIn...原创 2018-05-09 19:14:02 · 148 阅读 · 0 评论 -
Effective Java (第十一章-序列化)
第 74 条:谨慎地实现 Serializable 接口1、序列化,将一个对象编码成一个字节流。相反的过程称为反序列化。代价 1、一旦一个类被发布,就大大降低了 “改变这个类的实现” 的灵活性。 2、增加了出现 Bug 和安全漏洞的可能性。如:反序列化确保有默认的构造器。 3、随着类发行新的版本,相关的测试负担也增加。如:确保 “序列化-反序列化” 过程成功。注意 1、为继承而...原创 2018-07-12 11:06:17 · 256 阅读 · 0 评论