Java 高效编程(Effective Java)中文第三版(补档)
《Effective Java, Third Edition》一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化。
(译者)在这里第一时间翻译成中文版。供大家学习分享之用。
本书的源代码见 jbloch/effective-java-3e-source-code。
目录
- 01. 考虑使用静态工厂方法替代构造方法.md
- 02. 当构造方法参数过多时使用builder模式.md
- 03. 使用私有构造方法或枚类实现Singleton属性.md
- 04. 使用私有构造方法执行非实例化.md
- 05. 使用依赖注入取代硬连接资源(hardwiring resources).md
- 06. 避免创建不必要的对象.md
- 07. 消除过期的对象引用.md
- 08. 避免使用Finalizer和Cleaner机制.md
- 09. 使用try-with-resources语句替代try-finally语句.md
- 10. 重写equals方法时遵守通用约定.md
- 11. 重写equals方法时同时也要重写hashcode方法.md
- 12. 始终重写 toString 方法.md
- 13. 谨慎地重写 clone 方法.md
- 14. 考虑实现Comparable接口.md
- 15. 使类和成员的可访问性最小化.md
- 16. 在公共类中使用访问方法而不是公共属性.md
- 17. 最小化可变性.md
- 18. 组合优于继承.md
- 19. 如使用继承则设计,应当文档说明,否则不该使用.md
- 20. 接口优于抽象类.md
- 21. 为后代设计接口.md
- 22. 接口仅用来定义类型.md
- 23. 优先使用类层次而不是标签类.md
- 24. 优先考虑静态成员类.md
- 25. 将源文件限制为单个顶级类.md
- 26. 不要使用原始类型.md
- 27. 消除非检查警告.md
- 28. 列表优于数组.md
- 29. 优先考虑泛型.md
- 30. 优先使用泛型方法.md
- 31. 使用限定通配符来增加API的灵活性.md
- 32. 合理地结合泛型和可变参数.md
- 33. 优先考虑类型安全的异构容器.md
- 34. 使用枚举类型替代整型常量.md
- 35. 使用实例属性替代序数.md
- 36. 使用EnumSet替代位属性.md
- 37. 使用EnumMap替代序数索引.md
- 38. 使用接口模拟可扩展的枚举.md
- 39. 注解优于命名模式.md
- 40. 始终使用Override注解.md
- 41. 使用标记接口定义类型.md
- 42. lambda表达式优于匿名类.md
- 43. 方法引用优于lambda表达式.md
- 44. 优先使用标准的函数式接口.md
- 45. 明智审慎地使用Stream.md
- 46. 优先考虑流中无副作用的函数.md
- 47. 优先使用Collection而不是Stream来作为方法的返回类型.md
- 48. 谨慎使用流并行.md
- 49. 检查参数有效性.md
- 50. 必要时进行防御性拷贝.md
- 51. 仔细设计方法签名.md
- 52. 明智审慎地使用重载.md
- 53. 明智审慎地使用可变参数.md
- 54. 返回空的数组或集合,不要返回 null.md
- 55. 明智审慎地返回 Optional.md
- 56. 为所有已公开的 API 元素编写文档注释.md
- 57. 最小化局部变量的作用域.md
- 58. for-each 循环优于传统 for 循环.md
- 59. 了解并使用库.md
- 60. 若需要精确答案就应避免使用 float 和 double 类型.md
- 61. 基本数据类型优于包装类.md
- 62. 当使用其他类型更合适时应避免使用字符串.md
- 63. 当心字符串连接引起的性能问题.md
- 64. 通过接口引用对象.md
- 65. 接口优于反射.md
- 66. 明智审慎地本地方法.md
- 67. 明智审慎地进行优化.md
- 68. 遵守被广泛认可的命名约定.md
- 69. 只针对异常的情况下才使用异常.md
- 70. 对可恢复的情况使用受检异常,对编程错误使用运行时异常.md
- 71. 避免不必要的使用受检异常.md
- 72. 优先使用标准的异常.md
- 73. 抛出与抽象对应的异常.md
- 74. 每个方法抛出的异常都需要创建文档.md
- 75. 在细节消息中包含失败一捕获信息.md
- 76. 保持失败原子性.md
- 77. 不要忽略异常.md
- 78. 同步访问共享的可变数据.md
- 79. 避免过度同步.md
- 80. executor 、task 和 stream 优先于线程.md
- 81. 相比 wait 和 notify 优先使用并发工具.md
- 82. 文档应包含线程安全属性.md
- 83. 明智审慎的使用延迟初始化.md
- 84. 不要依赖线程调度器.md
- 85. 优先选择 Java 序列化的替代方案.md
- 86. 非常谨慎地实现 Serializable.md
- 87. 考虑使用自定义的序列化形式.md
- 88. 保护性的编写 readObject 方法.md
- 89. 对于实例控制,枚举类型优于 readResolve.md
- 90. 考虑用序列化代理代替序列化实例.md
相关资源
赞助译者

Java 高效编程(Effective Java)中文第三版(补档)的更多相关文章
- Java高效编程:总结分享
参考资料:慕课网:Java高效编程收费实战课程.博客园.CSDN.菜鸟教程以及其他文档. 篇幅受限,不太想针对每个点都写篇博客,有的地方可能写的不是很详细,一笔带过了.如果你觉得那个点在项目中用得上可 ...
- 剑指Java高效编程教程
教程介绍 所谓"武以快为尊,天下武功唯快不破".本课程剑指Java高效编程,致力于从"技术"和"工具"两大 维度提高编程效率,帮助广大程序员 ...
- Java并发编程:Java的四种线程池的使用,以及自定义线程工厂
目录 引言 四种线程池 newCachedThreadPool:可缓存的线程池 newFixedThreadPool:定长线程池 newSingleThreadExecutor:单线程线程池 newS ...
- Effective C++(第三版)笔记 ---- 第一部分让自己习惯C++
内容从侯捷译版的<Effective C++>(第三版)摘录 条款一 C++作为一个多种范式融合的语言,可以看成是语言的联邦,它包含了一下四种主要的次语言: C.C++以C为基础,很多时候 ...
- NumPy 初学者指南中文第三版·翻译完成
原文:NumPy: Beginner's Guide - Third Edition 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. 在线阅 ...
- 架构师速成-如何高效编程 for java
引子 赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境.那枪浑身上下,若舞梨花:遍体纷纷,如飘瑞雪. 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手 ...
- Java高效编程之二【对所有对象都通用的方法】
对于所有对象都通用的方法,即Object类的所有非final方法(equals.hashCode.toString.clone和finalize)都有明确的通用约定,都是为了要被改写(override ...
- Java多线程编程模式实战指南(三):Two-phase Termination模式--转载
本文由本人首次发布在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-two-phase-t ...
- 【java并发编程艺术学习】(三)第二章 java并发机制的底层实现原理 学习记录(一) volatile
章节介绍 这一章节主要学习java并发机制的底层实现原理.主要学习volatile.synchronized和原子操作的实现原理.Java中的大部分容器和框架都依赖于此. Java代码 ==经过编译= ...
随机推荐
- D. Puzzles(Codeforces Round #362 (Div. 2))
D. Puzzles Barney lives in country USC (United States of Charzeh). USC has n cities numbered from 1 ...
- Autofac 依赖注入小知识
Autofac 依赖注入小知识 控制反转/依赖注入 IOC/DI 依赖接口而不依赖于实现,是面向对象的六大设计原则(SOLID)之一.即依赖倒置原则(Dependence Inversion Prin ...
- 【LeetCode】剑指 Offer 04. 二维数组中的查找
二维数组查找:线性查找法 有二维数组: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, ...
- 第八个知识点:交互式的定义如何帮助计算和IP类问题是什么
第八个知识点:交互式的定义如何帮助计算和IP类问题是什么 这是系列中的第8篇,我们主要讨论计算中交互作用的用处和IP类问题是什么. 为了回答这些问题,我们首先给交互式证明系统一个简洁的介绍.众所周知, ...
- Deepin20系统安装Nvidia驱动
Deepin20系统安装Nvidia驱动 系统设备配置信息如下: 电脑型号:华硕天选air[ASUS-FX516P] 显卡型号:RTX 3070 移动版独显 处理器型号: 11th Gen Intel ...
- bat文件调用cmd命令批量提取文件夹中的文件名(批量修改文件扩展名)
前言: 在平时的工作中,经常需要批量统计文件和数据,如果逐个统计的话太耗时,而且容易出错那么有没有什么快速的方法呢,这里给大家介绍一种简单高效的方法. 方法: 1.打开CMD命令: 按下 Ctrl+R ...
- Mysql 设计超市经营管理系统,包括员工库存表(stock) 和 仓库表(warehouse)
互联网技术学院周测机试题(三) 一.需求分析 为进一步完善连锁超市经营管理,提高管理效率,减少管理成本,决定开发一套商品管理系统,用于日常的管理.本系统分为商品管理.员工管理.店铺管理,库存管理等功能 ...
- 关于linux的一点好奇心(一):linux启动过程
一直很好奇,操作系统是如何工作的?我们知道平时编程,是如何让代码跑起来的,但那些都是比较高层次的东西.越往后,你会越觉得,像是空中楼阁,或者说只是有人帮你铺平了许多道理,而你却对此一无所知. 1. 操 ...
- CSS 基础 选择器的使用汇总
1.后代选择器 html 结构 <div class='father'> <p>小哥哥 小姐姐</p> <div> <p>小帅锅</p ...
- 原生android webview 显示的H5页面颜色属性无法识别 - 具体解决心得
1.前言 background-color: #fc1717bf; 这个样式属性没毛病吧,浏览器都是支持的,但是在android 7.0 系统无法正确识别这个含有透明度的属性, 即bf无法识别,将默认 ...