全新出击!《Java开发手册(嵩山版)》解读手册升级下载
《Java開發手冊(嵩山版)》解讀版升級下載
隨著《Java開發手冊(嵩山版)》的發布,解讀再升級!靈魂13問隨新版JAVA開發手冊重磅回歸,一線大廠怎么用JAVA?千萬閱讀量技術博主15問為你全面剖析。
作者介紹
Hollis,一個對Coding有著獨特追求的人,現任阿里巴巴技術專家,個人技術博主,技術文章全網閱讀量數千萬,《程序員的三門課》聯合作者。
免費下載
《〈Java開發手冊(嵩山版)〉靈魂15問》
或者復制該鏈接到瀏覽器完成下載或分享: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
原文鏈接:https://developer.aliyun.com/article/769906?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的全新出击!《Java开发手册(嵩山版)》解读手册升级下载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轻松处理高于平常10倍的视频需求,还能节
- 下一篇: 《Java开发手册》解读:大整数传输为何