乐趣区

关于程序员:全新出击Java开发手册嵩山版解读手册升级下载

简介:《〈Java 开发手册(嵩山版)〉灵魂 15 问》重磅来袭!“一线大厂如何用 Java”解读再降级,千万浏览量博主深究 Java 规约背地的原理。标准学好 Java 还不来看一看?

《Java 开发手册(嵩山版)》解读版降级下载

随着《Java 开发手册(嵩山版)》的公布,解读再降级!灵魂 13 问随新版 JAVA 开发手册重磅回归,一线大厂怎么用 JAVA?千万浏览量技术博主 15 问为你全面分析。

作者介绍
Hollis,一个对 Coding 有着独特谋求的人,现任阿里巴巴技术专家,集体技术博主,技术文章全网浏览量数千万,《程序员的三门课》联结作者。

[收费下载
《〈Java 开发手册(嵩山版)〉灵魂 15 问》](https://developer.aliyun.com/…

[](https://developer.aliyun.com/…

或者复制该链接到浏览器实现下载或分享:https://developer.aliyun.com/topic/download?id=811

精彩导读

一、为什么禁止应用 Apache Beanutils 进行属性的 copy?
市面上有很多相似的属性拷贝工具类,比拟罕用的有
1、Spring BeanUtils 2、Cglib BeanCopier 3、Apache BeanUtils 4、Apache PropertyUtils 5、Dozer
那么,咱们到底应该抉择哪种工具类更加适合呢?为什么 Java 开发手册中提到禁止应用 Apache BeanUtils 呢?

接下来就聚焦于比照这几个类库的性能问题来剖析。>> 点击查看详情

二、为什么要求日期格式化时必须有应用 y 示意年,而不能用 Y?
在 Java 中进行日期解决大家肯定都不生疏,咱们常常会须要在代码中进行日期的转换、日期的格式化等操作。

而个别咱们进行日期格式化的时候都会应用 SimpleDateFormat 工具,之前咱们有一篇文章介绍过 SimpleDateFormat 的线程平安问题,这一篇文章再来介绍一个和 SimpleDateFormat 无关,很容易被忽视,而一旦漠视可能导致大故障的问题。>> 点击查看详情

三、《Java 开发手册 - 泰山版》提到的三目运算符的空指针问题到底是个怎么回事?
手册中有一条规约引起了作者的关注,那就是手册中提到在三目运算符应用过程中,须要留神主动拆箱导致的 NullPointerException(后文简称:NPE)问题:

具体是怎么的呢?>> 点击查看详情

四、为什么倡议初始化 HashMap 的容量大小?
咱们之前提到过,《Java 开发手册》中倡议咱们设置 HashMap 的初始化容量。

那么,为什么要这么倡议?>> 点击查看详情

五、Java 开发手册倡议创立 HashMap 时设置初始化容量,然而多少适合呢?
HashMap 有扩容机制,就是当达到扩容条件时会进行扩容。HashMap 的扩容条件就是当 HashMap 中的元素个数(size)超过临界值(threshold)时就会主动扩容。在 HashMap 中,threshold = loadFactor * capacity

所以,如果咱们没有设置初始容量大小,随着元素的一直减少,HashMap 会产生屡次扩容,而 HashMap 中的扩容机制决定了每次扩容都须要重建 hash 表,是十分影响性能的。>> 点击查看创立 HashMap 时设置初始化容量多少适合

六、为什么禁止应用 Executors 创立线程池?
为什么说能够通过 Executors 动态工厂构建线程池,但个别不倡议这样应用。
本节咱们就来围绕这个问题来剖析一下为什么 JDK 本身提供的构建线程池的形式并不倡议应用?到底应该如何创立一个线程池呢?>> 点击查看详情

七、为什么要求审慎应用 ArrayList 中的 subList 办法?
汇合是 Java 开发日常开发中常常会应用到的。

对于汇合类,《Java 开发手册》中其实还有另外一个规定:

本节就来剖析一下为什么会有如此倡议?其背地的原理是什么?>> 点击查看详情

八、为什么不倡议在 for 循环中应用“+”进行字符串拼接?
应用 + 拼接字符串,其实只是 Java 提供的一个语法糖,那么他的外部原理到底是如何实现的。>> 点击查看详情

语法糖:语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·兰丁创造的一个术语,指计算机语言中增加的某种语法,这种语法对语言的性能没有影响,然而更不便程序员应用。语法糖让程序更加简洁,有更高的可读性。

九、为什么禁止在 for each 循环里进行元素的 remove/add 操作?
在 Java 开发手册中,有这样一条规定:

本节就来深入分析一下该规定背地的思考。>> 点击查看详情

十、为什么禁止工程师间接应用日志零碎 (Log4j、Log back) 中的 API?
作为 Java 程序员,我想很多人都晓得日志对于一个程序的重要性,尤其是 Web 利用。很多时候,日志可能是咱们理解应用程序如何执行的惟一形式。

所以,日志在 Java Web 利用中至关重要,然而,很多人却认为日志输入只是一件简略的事件,所以会常常疏忽和日志相干的问题。>> 点击查看详情

十一、为什么禁止把 SimpleDateFormat 定义成 static 变量?
在日常开发中,咱们常常会用到工夫,咱们有很多方法在 Java 代码中获取工夫。然而不同的办法获取到的工夫的格局都不尽相同,这时候就须要一种格式化工具,把工夫显示成咱们须要的格局。

最罕用的办法就是应用 SimpleDateFormat 类。这是一个看上去性能比较简单的类,然而,一旦使用不当也有可能导致很大的问题。本节就围绕 SimpleDateFormat 的用法、原理等来深入分析下如何以正确的姿态应用它。>> 点击查看详情

十二、为什么禁止开发人员应用 is Success 作为变量名?
在日常开发中,咱们会常常要在类中定义布尔类型的变量,比方在给内部零碎提供一个 RPC 接口的时候,咱们个别会定义一个字段示意本次申请是否胜利的。

对于这个”本次申请是否胜利”的字段的定义,其实是有很多种考究和坑的,稍有不慎就会掉入坑里,作者在很久之前就遇到过相似的问题,本节就来围绕这个简略剖析一下,到底该如何定一个布尔类型的成员变量。>> 点击查看详情

十三、为什么禁止开发人员批改 serialVersionUID 字段的值?
对于 serialVersionUID。这个字段到底有什么用?如果不设置会怎么样?为什么《Java 开发手册》中有以下规定:

本节带你一探到底。>> 点击查看详情

十四、为什么倡议开发者审慎应用继承?
对于很多开发者来说,继承必定都是不生疏的。然而,继承肯定适宜所有的场景吗?毫无禁忌的应用继承来做代码扩大真的好吗?
为什么《Java 开发手册》中有一条规定:审慎应用继承的形式进行扩大,优先应用组合的形式实现。>> 点击查看详情

十五、为什么禁止应用 count(列名) 或 count(常量) 来代替 count(*)?
除了 COUNT(id)和 COUNT(*)以外,还能够应用 COUNT(常量)(如 COUNT(1))来统计行数,那么这三条 SQL 语句有什么区别呢?到底哪种效率更高呢?为什么《Java 开发手册》中强制要求不让应用 COUNT(列名)或 COUNT(常量)来代替 COUNT(*)呢?

本节就这些问题带来解答。>> 点击查看详情


藏经阁系列电子书

阿里云开发者社区——藏经阁系列电子书,汇聚了一线大厂的技术积淀精髓,爆款一直。
点击链接获取海量收费电子书:https://developer.aliyun.com/topic/ebook

退出移动版