全新出击!《Java开发手册(嵩山版)》解读手册升级下载
《Java開(kāi)發(fā)手冊(cè)(嵩山版)》解讀版升級(jí)下載
隨著《Java開(kāi)發(fā)手冊(cè)(嵩山版)》的發(fā)布,解讀再升級(jí)!靈魂13問(wèn)隨新版JAVA開(kāi)發(fā)手冊(cè)重磅回歸,一線大廠怎么用JAVA?千萬(wàn)閱讀量技術(shù)博主15問(wèn)為你全面剖析。
作者介紹
Hollis,一個(gè)對(duì)Coding有著獨(dú)特追求的人,現(xiàn)任阿里巴巴技術(shù)專(zhuān)家,個(gè)人技術(shù)博主,技術(shù)文章全網(wǎng)閱讀量數(shù)千萬(wàn),《程序員的三門(mén)課》聯(lián)合作者。
免費(fèi)下載
《〈Java開(kāi)發(fā)手冊(cè)(嵩山版)〉靈魂15問(wèn)》
或者復(fù)制該鏈接到瀏覽器完成下載或分享:https://developer.aliyun.com/topic/download?id=811
精彩導(dǎo)讀
一、為什么禁止使用Apache Beanutils進(jìn)行屬性的copy?
市面上有很多類(lèi)似的屬性拷貝工具類(lèi),比較常用的有
1、Spring BeanUtils 2、Cglib BeanCopier 3、Apache BeanUtils 4、Apache PropertyUtils 5、Dozer
那么,我們到底應(yīng)該選擇哪種工具類(lèi)更加合適呢?為什么Java開(kāi)發(fā)手冊(cè)中提到禁止使用Apache BeanUtils呢?
接下來(lái)就聚焦于對(duì)比這幾個(gè)類(lèi)庫(kù)的性能問(wèn)題來(lái)分析。>>點(diǎn)擊查看詳情
二、為什么要求日期格式化時(shí)必須有使用y表示年,而不能用Y?
在Java中進(jìn)行日期處理大家一定都不陌生,我們經(jīng)常會(huì)需要在代碼中進(jìn)行日期的轉(zhuǎn)換、日期的格式化等操作。
而一般我們進(jìn)行日期格式化的時(shí)候都會(huì)使用SimpleDateFormat工具,之前我們有一篇文章介紹過(guò)SimpleDateFormat的線程安全問(wèn)題,這一篇文章再來(lái)介紹一個(gè)和SimpleDateFormat有關(guān),很容易被忽視,而一旦忽視可能導(dǎo)致大故障的問(wèn)題。>>點(diǎn)擊查看詳情
三、《 Java 開(kāi)發(fā)手冊(cè)-泰山版》提到的三目運(yùn)算符的空指針問(wèn)題到底是個(gè)怎么回事?
手冊(cè)中有一條規(guī)約引起了作者的關(guān)注,那就是手冊(cè)中提到在三目運(yùn)算符使用過(guò)程中,需要注意自動(dòng)拆箱導(dǎo)致的NullPointerException(后文簡(jiǎn)稱(chēng):NPE)問(wèn)題:
具體是怎樣的呢?>>點(diǎn)擊查看詳情
四、為什么建議初始化HashMap的容量大小?
我們之前提到過(guò),《Java 開(kāi)發(fā)手冊(cè)》中建議我們?cè)O(shè)置 HashMap 的初始化容量。
那么,為什么要這么建議?>>點(diǎn)擊查看詳情
五、Java開(kāi)發(fā)手冊(cè)建議創(chuàng)建HashMap時(shí)設(shè)置初始化容量, 但是多少合適呢?
HashMap 有擴(kuò)容機(jī)制,就是當(dāng)達(dá)到擴(kuò)容條件時(shí)會(huì)進(jìn)行擴(kuò)容。HashMap 的擴(kuò)容條件就是當(dāng) HashMap 中的元素個(gè)數(shù)(size)超過(guò)臨界值(threshold)時(shí)就會(huì)自動(dòng)擴(kuò)容。在 HashMap 中,threshold = loadFactor * capacity。
所以,如果我們沒(méi)有設(shè)置初始容量大小,隨著元素的不斷增加,HashMap 會(huì)發(fā)生多次擴(kuò)容,而 HashMap 中的擴(kuò)容機(jī)制決定了每次擴(kuò)容都需要重建 hash 表,是非常影響性能的。>>點(diǎn)擊查看創(chuàng)建HashMap時(shí)設(shè)置初始化容量多少合適
六、為什么禁止使用Executors創(chuàng)建線程池?
為什么說(shuō)可以通過(guò)Executors靜態(tài)工廠構(gòu)建線程池,但一般不建議這樣使用。
本節(jié)我們就來(lái)圍繞這個(gè)問(wèn)題來(lái)分析一下為什么JDK自身提供的構(gòu)建線程池的方式并不建議使用?到底應(yīng)該如何創(chuàng)建一個(gè)線程池呢?>>點(diǎn)擊查看詳情
七、為什么要求謹(jǐn)慎使用ArrayList中的subList方法?
集合是Java開(kāi)發(fā)日常開(kāi)發(fā)中經(jīng)常會(huì)使用到的。
關(guān)于集合類(lèi),《Java開(kāi)發(fā)手冊(cè)》中其實(shí)還有另外一個(gè)規(guī)定:
本節(jié)就來(lái)分析一下為什么會(huì)有如此建議?其背后的原理是什么?>>點(diǎn)擊查看詳情
八、為什么不建議在for循環(huán)中使用“+”進(jìn)行字符串拼接?
使用+拼接字符串,其實(shí)只是Java提供的一個(gè)語(yǔ)法糖,那么他的內(nèi)部原理到底是如何實(shí)現(xiàn)的。>>點(diǎn)擊查看詳情
語(yǔ)法糖:語(yǔ)法糖(Syntactic sugar),也譯為糖衣語(yǔ)法,是由英國(guó)計(jì)算機(jī)科學(xué)家彼得·蘭丁發(fā)明的一個(gè)術(shù)語(yǔ),指計(jì)算機(jī)語(yǔ)言中添加的某種語(yǔ)法,這種語(yǔ)法對(duì)語(yǔ)言的功能沒(méi)有影響,但是更方便程序員使用。語(yǔ)法糖讓程序更加簡(jiǎn)潔,有更高的可讀性。
九、為什么禁止在for each循環(huán)里進(jìn)行元素的remove/add操作?
在Java開(kāi)發(fā)手冊(cè)中,有這樣一條規(guī)定:
本節(jié)就來(lái)深入分析一下該規(guī)定背后的思考。>>點(diǎn)擊查看詳情
十、為什么禁止工程師直接使用日志系統(tǒng)(Log4j、Log back) 中的API?
作為Java程序員,我想很多人都知道日志對(duì)于一個(gè)程序的重要性,尤其是Web應(yīng)用。很多時(shí)候,日志可能是我們了解應(yīng)用程序如何執(zhí)行的唯一方式。
所以,日志在Java Web應(yīng)用中至關(guān)重要,但是,很多人卻以為日志輸出只是一件簡(jiǎn)單的事情,所以會(huì)經(jīng)常忽略和日志相關(guān)的問(wèn)題。>>點(diǎn)擊查看詳情
十一、為什么禁止把SimpleDateFormat定義成static變量?
在日常開(kāi)發(fā)中,我們經(jīng)常會(huì)用到時(shí)間,我們有很多辦法在Java代碼中獲取時(shí)間。但是不同的方法獲取到的時(shí)間的格式都不盡相同,這時(shí)候就需要一種格式化工具,把時(shí)間顯示成我們需要的格式。
最常用的方法就是使用SimpleDateFormat類(lèi)。這是一個(gè)看上去功能比較簡(jiǎn)單的類(lèi),但是,一旦使用不當(dāng)也有可能導(dǎo)致很大的問(wèn)題。本節(jié)就圍繞SimpleDateFormat的用法、原理等來(lái)深入分析下如何以正確的姿勢(shì)使用它。>>點(diǎn)擊查看詳情
十二、為什么禁止開(kāi)發(fā)人員使用is Success作為變量名?
在日常開(kāi)發(fā)中,我們會(huì)經(jīng)常要在類(lèi)中定義布爾類(lèi)型的變量,比如在給外部系統(tǒng)提供一個(gè)RPC接口的時(shí)候,我們一般會(huì)定義一個(gè)字段表示本次請(qǐng)求是否成功的。
關(guān)于這個(gè)”本次請(qǐng)求是否成功”的字段的定義,其實(shí)是有很多種講究和坑的,稍有不慎就會(huì)掉入坑里,作者在很久之前就遇到過(guò)類(lèi)似的問(wèn)題,本節(jié)就來(lái)圍繞這個(gè)簡(jiǎn)單分析一下,到底該如何定一個(gè)布爾類(lèi)型的成員變量。>>點(diǎn)擊查看詳情
十三、為什么禁止開(kāi)發(fā)人員修改serialVersionUID字段的值?
關(guān)于serialVersionUID 。這個(gè)字段到底有什么用?如果不設(shè)置會(huì)怎么樣?為什么《Java開(kāi)發(fā)手冊(cè)》中有以下規(guī)定:
本節(jié)帶你一探究竟。>>點(diǎn)擊查看詳情
十四、為什么建議開(kāi)發(fā)者謹(jǐn)慎使用繼承?
對(duì)于很多開(kāi)發(fā)者來(lái)說(shuō),繼承肯定都是不陌生的。但是,繼承一定適合所有的場(chǎng)景嗎?毫無(wú)忌諱的使用繼承來(lái)做代碼擴(kuò)展真的好嗎?
為什么《Java開(kāi)發(fā)手冊(cè)》中有一條規(guī)定:謹(jǐn)慎使用繼承的方式進(jìn)行擴(kuò)展,優(yōu)先使用組合的方式實(shí)現(xiàn)。>>點(diǎn)擊查看詳情
十五、為什么禁止使用count(列名) 或count(常量) 來(lái)替代count(*)?
除了COUNT(id)和COUNT(*)以外,還可以使用COUNT(常量)(如COUNT(1))來(lái)統(tǒng)計(jì)行數(shù),那么這三條SQL語(yǔ)句有什么區(qū)別呢?到底哪種效率更高呢?為什么《Java開(kāi)發(fā)手冊(cè)》中強(qiáng)制要求不讓使用 COUNT(列名)或 COUNT(常量)來(lái)替代 COUNT(*)呢?
本節(jié)就這些問(wèn)題帶來(lái)解答。>>點(diǎn)擊查看詳情
藏經(jīng)閣系列電子書(shū)
阿里云開(kāi)發(fā)者社區(qū)——藏經(jīng)閣系列電子書(shū),匯聚了一線大廠的技術(shù)沉淀精華,爆款不斷。
點(diǎn)擊鏈接獲取海量免費(fèi)電子書(shū):https://developer.aliyun.com/topic/ebook
原文鏈接:https://developer.aliyun.com/article/769906?
版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊(cè)用戶(hù)自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開(kāi)發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開(kāi)發(fā)者社區(qū)用戶(hù)服務(wù)協(xié)議》和《阿里云開(kāi)發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫(xiě)侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的全新出击!《Java开发手册(嵩山版)》解读手册升级下载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 轻松处理高于平常10倍的视频需求,还能节
- 下一篇: 《Java开发手册》解读:大整数传输为何