2021年,Java從入門到升仙的書單推薦,附帶讀書筆記
2021年,Java從入門到升仙的書單推薦,附帶讀書筆記

我的建議是看書一定要看經(jīng)典書,剛才開始也可以配合一下簡單的視頻教程跟著一起學(xué)習(xí),但是要提高肯定是看書,然后按照由淺入深的學(xué)習(xí)線路來學(xué)習(xí)(Java語言基礎(chǔ)->Java語言進(jìn)階->分布式&存儲->修煉內(nèi)功)。
第一階段、Java入門書單推薦
首先是語言基礎(chǔ),有了扎實(shí)的語言基礎(chǔ),才可能寫出好的代碼。
本階段主要的學(xué)習(xí)內(nèi)容:Java的語言基礎(chǔ)、代碼規(guī)范、能夠熟練的使用常用的開發(fā)工具,對于開發(fā)工具的話,我還是強(qiáng)推Intellij IDEA, IDEA的激活插件可以去我的博客首頁中找
推薦書籍1:《head first java》

在以前我學(xué)習(xí)Java的時候沒有看過這本書,網(wǎng)友們給我的推薦的都是《Java編程思想第4版》,對于新手的我來說看的我差點(diǎn)被勸退;工作以后偶然一次機(jī)會看到來同事的桌上放了一本《Head First Java》,隨意翻開看了一會就 吸引了我(如果入門的時候就看了這本書,我還能是現(xiàn)在這個吊樣?)
雖然本書很厚,但是圖文并茂看起來很就趣,很少有寫編程語言的書籍能夠把趣味性融合在一起,做游戲就可以學(xué)習(xí)一門技術(shù),所以這本書很適合作為Java入門書籍;

第一章主要介紹了 Java 的工作原理、發(fā)展簡史、程序結(jié)構(gòu)。 第二章主要介紹了 Java 的面向?qū)ο螅ɡ^承、覆蓋等內(nèi)容。 第三章主要介紹了 Java 的變量。關(guān)鍵點(diǎn):引用變量存儲的是對象的地址(儲存方式)、數(shù)組也是對象。 第四章主要介紹了 Java 的方法。關(guān)鍵點(diǎn):實(shí)參和形參、值傳遞和引用傳遞、== 和 equals()。 第五章主要介紹了程序設(shè)計(jì)與實(shí)現(xiàn)的步驟。 第六章主要介紹了 Java 的 API。關(guān)鍵點(diǎn):ArrayList。 第七章主要介紹了繼承和多態(tài)。關(guān)鍵點(diǎn):覆蓋和重載。 第八章主要介紹了接口和抽象類。關(guān)鍵點(diǎn):超類 Object。 第九章主要介紹了構(gòu)造器與垃圾收集器。關(guān)鍵點(diǎn):對象存儲在堆中,對象引用在棧中;當(dāng)對象失去最后一個引用變量時,它會被回收。第十章主要介紹了靜態(tài)類、靜態(tài)方法、靜態(tài)變量。關(guān)鍵點(diǎn):final、常量、數(shù)字格式化、日期表示法。 第十一章主要介紹了異常處理。 第十二章和第十三章,主要介紹了 GUI 和 Swing。關(guān)鍵點(diǎn):事件處理機(jī)制。 第十四章主要介紹了序列化和文件輸入/輸出。關(guān)鍵點(diǎn):Serializable接口。 第十五章主要介紹了網(wǎng)絡(luò) Socket 和多線程。 第十六章主要介紹了集合和泛型。 第十七章主要介紹了程序的打包和發(fā)布。 第十八章主要介紹了遠(yuǎn)程服務(wù)調(diào)用。
學(xué)習(xí)永遠(yuǎn)都不能只停留在書本,在看完這本書之后就應(yīng)該去實(shí)戰(zhàn)一下,通常Java SE入門學(xué)習(xí)完之后就可以寫一個坦克大戰(zhàn)的游戲了
推薦書籍2:《Java編程思想》

這本書我在讀大學(xué)的時候就買過一本,當(dāng)時剛?cè)隞ava坑,不知道看什么書,在網(wǎng)上搜到的推薦都是這本書,當(dāng)時雄心勃勃計(jì)劃把要這本書認(rèn)真看完,看本書的過程還挺痛苦的,最終也沒能完全看完;這本書足足有接近900頁,我也不推薦完全 從頭到位看,本書可以配合《head first java》一起看;而且本書的成書時間是2007年,使用的JDK1.5;
其實(shí)本書的作者在17年也有發(fā)布第五版,因?yàn)楦拿耍抑挥须娮影?,所以大家都不知?/p>
推薦書籍3:《Maven實(shí)戰(zhàn)》

本書是國內(nèi)第一本公開出版的Maven相關(guān)的書籍,系統(tǒng)的講解了Maven的安裝、配置和基本使用方法,以便于初學(xué)者參考;
詳細(xì)講解了坐標(biāo)和依賴、maven倉庫、生命周期和插件、聚合與繼承等Maven的核心概念,建議所有讀者仔細(xì)閱讀;
闡述了使用Nexus建立私服、使用Maven進(jìn)行測試、使用Hudson進(jìn)行持續(xù)集成、使用Maven構(gòu)建Web應(yīng)用、Maven的版本管理、Maven的靈活構(gòu)建、生成項(xiàng)目站點(diǎn)等實(shí)用性較強(qiáng)的高級知識
現(xiàn)在的我們工作所能接觸到的Java項(xiàng)目80%都是使用Maven構(gòu)建的,所以這本書不得不看
推薦書籍4:《Git版本控制管理》

Git是一款免費(fèi)、開源的分布式版本控制系統(tǒng),現(xiàn)在已成為了分布式版本控制的主流工具,Github、Gitee都是使用的git;
《Git版本控制管理(第2版)》是學(xué)習(xí)掌握Git的最佳教程,總共分為21章,其內(nèi)容涵蓋了如何在多種真實(shí)開發(fā)環(huán)境中使用Git;洞察Git的常用案例、初始任務(wù)和基本功能;如何在集中和分布式版本控制中使用Git;使用Git管理合并、沖突、補(bǔ)丁和差異;獲得諸如重新定義變基(rebasing)、鉤子(hook)以及處理子模塊(子項(xiàng)目)等的高級技巧;Git如何與SVN版本庫交互(包括SVN向Git的轉(zhuǎn)換);通過GitHub導(dǎo)航、使用開源項(xiàng)目,并對開源項(xiàng)目做貢獻(xiàn)。
推薦書籍5:《網(wǎng)絡(luò)是怎樣連接的》

本書以探索之旅的形式,從在瀏覽器中輸入網(wǎng)址開始,一路追蹤了到顯示出網(wǎng)頁內(nèi)容為止的整個過程,以圖配文,講解了網(wǎng)絡(luò)的全貌,并重點(diǎn)介紹了實(shí)際的網(wǎng)絡(luò)設(shè)備和軟件是如何工作的。目的是幫助讀者理解網(wǎng)絡(luò)的本質(zhì)意義,理解實(shí)際的設(shè)備和軟件,進(jìn)而熟練運(yùn)用網(wǎng)絡(luò)技術(shù)。同時,專設(shè)了“網(wǎng)絡(luò)術(shù)語其實(shí)很簡單”專欄,以對話的形式介紹了一些網(wǎng)絡(luò)術(shù)語的詞源,頗為生動有趣
推薦書籍6:《圖解Http》

好書不一定要厚,本書就是一本短小精干的一本好書,嚴(yán)謹(jǐn)細(xì)致地剖析了HTTP協(xié)議的結(jié)構(gòu);通過本書快速了解并掌握HTTP協(xié)議的基礎(chǔ),前端工程師分析抓包數(shù)據(jù),后端工程師實(shí)現(xiàn)REST API
這里也留下一篇我讀了本書之后寫的文章:
《面試篇》Http協(xié)議
針對本書里面提到的大文件的斷點(diǎn)續(xù)傳知識點(diǎn),我就寫了一個開源項(xiàng)目:Java多線程下載大文件
Java實(shí)現(xiàn)大文件多線程下載,提速30倍!想學(xué)?我教你啊
Gitee倉庫:https://gitee.com/silently9527/fast-download
第二階段、Java語言進(jìn)階
推薦書籍1:《Effective Java中文版 第3版》

本書是經(jīng)過作者實(shí)戰(zhàn)總結(jié)出來的90條具有實(shí)用價(jià)值的經(jīng)驗(yàn)規(guī)則;讀本書可以不同從頭到位通讀,可以根據(jù)自己的興趣選擇不同的章節(jié),章節(jié)與章節(jié)之間沒有必然的聯(lián)系;反正讀過本書的人沒有一個人說不好的;
推薦書籍2:《重構(gòu)——改善既有的代碼設(shè)計(jì)》

這本書依然是一本不朽的經(jīng)典之作,如果你想要讓自己在公司有不可替代性,建議仔細(xì)閱讀本書中的壞代碼味道,寫出的代碼保證只有你一個人能夠看懂,絕對讓公司離不開你。。。
我后來有重新翻讀了本書,寫了一篇簡化條件表達(dá)式的文章:https://juejin.cn/post/6901814939833335821
推薦書籍3:《Java NIO 中文版》

本書先從操作系統(tǒng)層面由淺入深的逐步引出NIO中實(shí)現(xiàn)的關(guān)鍵概念,逐步的闡述了java nio原理以及運(yùn)用過程中需要注意的細(xì)節(jié)點(diǎn);
就程序員所面臨的有代表性的I/O問題作了詳盡闡述,并講解了如何才能充分利用新的I/O特性所提供的各種潛能。您將通過實(shí)例學(xué)會如何使用這些工具來解決現(xiàn)實(shí)工作中常常遇到的I/O問題,并了解這些新特性如何對響應(yīng)速率、可伸縮性和可靠性產(chǎn)生直接影響。
這本書中文版只有電子書,下面是我讀這本書以及結(jié)合網(wǎng)上的一些文章做的總結(jié)

推薦書籍4:《Java并發(fā)編程的藝術(shù)》

并發(fā)編程領(lǐng)域的扛鼎之作,作者是阿里和1號店的資深Java技術(shù)專家,對并發(fā)編程有非常深入的研究,《Java并發(fā)編程的藝術(shù)》是他們多年一線開發(fā)經(jīng)驗(yàn)的結(jié)晶。
內(nèi)容涵蓋Java并發(fā)編程機(jī)制的底層實(shí)現(xiàn)原理、Java內(nèi)存模型、Java并發(fā)編程基礎(chǔ)、Java中的鎖、并發(fā)容器和框架、原子類、并發(fā)工具類、線程池、Executor框架等主題, 每個主題都做了深入的講解,同時通過實(shí)例介紹了如何應(yīng)用這些技術(shù)。
本書強(qiáng)烈建議精讀,內(nèi)容不多,總共200多頁,但本書都是精華干貨。這是我讀這本書后做的腦圖

第三階段、分布式&存儲
推薦書籍1:《MySQL是怎樣運(yùn)行的 : 從根兒上理解 MySQL》

《MySQL是怎樣運(yùn)行的:從根兒上理解 MySQL》采用詼諧幽默的表達(dá)方式,對MySQL的底層運(yùn)行原理進(jìn)行了介紹,內(nèi)容涵蓋了使用MySQL的同學(xué)在求職面試和工作中常見的一些核心概念。
為什么這個SQL語句執(zhí)行得這么慢?為什么我明明建立了索引,但是查詢計(jì)劃顯示沒用?為什么IN查詢中的參數(shù)一多就不使用索引了?為什么我的數(shù)據(jù)顯示成了亂碼?
這些問題不僅是工作中經(jīng)常遇到的,也是在面試中的高頻面試題,從豆瓣的評分就可以知道這本書內(nèi)容不凡;不信?可以先看下我的筆記

推薦書籍2:《Redis 深度歷險(xiǎn):核心原理與應(yīng)用實(shí)踐》

《Redis 深度歷險(xiǎn):核心原理與應(yīng)用實(shí)踐》分為基礎(chǔ)和應(yīng)用篇、原理篇、集群篇、拓展篇、源碼篇共 5 大塊內(nèi)容。基礎(chǔ)和應(yīng)用篇講解對讀者來說最有價(jià)值的內(nèi)容, 可以直接應(yīng)用到實(shí)際工作中;原理篇、集群篇讓開發(fā)者透過簡單的技術(shù)表面看到精致的底層世界;拓展篇幫助讀者拓展技術(shù)視野和夯實(shí)基礎(chǔ),便于進(jìn)階學(xué)習(xí);源碼篇讓高階的讀者能夠讀懂源碼,掌握核心技術(shù)實(shí)力。
這本書強(qiáng)烈建議準(zhǔn)備想要換工作面試的同學(xué)看看,redis的面試題基本上逃不出本書。本書依然有寫讀書筆記

推薦書籍3:《Tomcat架構(gòu)解析》

做Java的兄弟基本上離不開Tomcat,90%的公司應(yīng)用服務(wù)都是使用的Tomcat,所以本書我們必須的看看;這里我重點(diǎn)推薦第2、3、4、6章,其他章節(jié)可以簡單了解,其 對本書我印象比較深的是遞推式的對各個組件進(jìn)行分解來闡述tomcat整體架構(gòu),這樣更容易理解每個組件的實(shí)際作用;以及Tomcat在設(shè)計(jì)時考慮的擴(kuò)張性。由外到內(nèi):Server、Service、Connector及Engine(Host、Context、Wrapper);責(zé)任鏈的實(shí)現(xiàn)通過Pipeline和Valve、BasicValve;
推薦書籍4:《Tomcat內(nèi)核設(shè)計(jì)剖析》

本書可以配合《Tomcat架構(gòu)解析》一起看,前一本書從架構(gòu)上整體去理解Tomcat的設(shè)計(jì),而這本書中對Tomcat中的重要組件有比較細(xì)致的講解,而且基本上都有配上幾張圖來很 形象的說明該組件是如何工作的。

推薦書籍5:《深入理解Apache Dubbo與實(shí)戰(zhàn)》

本書雖然評價(jià)不太高,但是是唯一一本dubbo評價(jià)最高的書籍,如果只是簡單的使用dubbo,那直接看官網(wǎng)文檔就可以了,如果要想深入到源碼去理解dubbo,那么本書應(yīng)該是必須了;這本書中貼了很多的源碼,要想看懂這本書的話還必須跟著書中的內(nèi)容一起斷點(diǎn)跟蹤源碼才行;
看書需要帶著目的性去看,這本書建議抓住幾個核心的問題在去看:
dubbo的SPI機(jī)制,如何實(shí)現(xiàn)的動態(tài)加載,IOC和AOP dubbo的服務(wù)暴露過程? dubbo的服務(wù)發(fā)現(xiàn)過程? dubbo的服務(wù)調(diào)用過程? dubbo的整體架構(gòu)?

如果要想理解dubbo底層的網(wǎng)絡(luò)通信,還需要學(xué)習(xí)netty;netty相關(guān)的書籍我沒看過,我就不推薦了,這里附上我在網(wǎng)上學(xué)習(xí)netty之后的筆記,Netty之所以受到這么多人的推崇, 還是因?yàn)檫@個框架確實(shí)很強(qiáng),這個框架做的優(yōu)化以及需要的知識也比較多;
這里我尤其要強(qiáng)調(diào)netty中的一個重點(diǎn)模塊"高性能內(nèi)存分配",理解了Netty的內(nèi)存管理之后就可以理解redis的內(nèi)存管理,它們兩個的實(shí)現(xiàn)思路都是一樣的,內(nèi)存管理通常都是c語言來寫的, 而Netty用java寫來一個內(nèi)存管理,Java程序猿也可以內(nèi)存管理一探究竟

推薦書籍6:《Spring源碼深度解析》

講Spring源碼相關(guān)的書籍評價(jià)都不是很高,這里我推薦我看過的這本書,本書也不用全部看完,挑選自己有興趣的來看,這本書通用也需要配合這代碼調(diào)試來看,當(dāng)初我在看這本書時主要看的內(nèi)容是 IOC容器的啟動過程、以及獲取Bean的過程;Spring實(shí)現(xiàn)AOP的機(jī)制,以及Spring如何利用AOP實(shí)現(xiàn)事物?帶著這些問題看書配合這斷點(diǎn)調(diào)試;

推薦書籍7:《看透Spring MVC》

本人在工作之后經(jīng)歷過struts2的沒落,到SpringMVC的崛起;現(xiàn)在的工作環(huán)境SpringMVC幾乎是必選框架之一,所以深入理解SpringMVC還是很有必要的
全面介紹Spring MVC的架構(gòu)、原理、核心概念和操作,系統(tǒng)總結(jié)Spring MVC九大組件的處理以及常用的技巧和實(shí)踐
本人再次重新閱讀了SpringMVC的源碼之后也寫來SpringMVC相關(guān)的系列文章;想要深入理解框架莫過于實(shí)戰(zhàn)手寫一個,所以我手寫來一個簡易版的SmartMVC框架;
Github的倉庫地址:https://github.com/silently9527/SmartMvc
相應(yīng)的我還寫了這個框架的開發(fā)文檔:
00 深入解析SpringMVC核心原理:從手寫簡易版MVC框架開始(SmartMvc) 01 SmartMVC總體架構(gòu)規(guī)劃 02 RequestMappingHandlerMapping初始化過程 03 攔截器HandlerInterceptor 04 HandlerMapping獲取對應(yīng)的Handler 05 參數(shù)解析器HandlerMethodArgumentResolver 06 返回解析器HandlerMethodReturnValueHandler 07 Handler執(zhí)行器InvocableHandlerMethod 08 實(shí)現(xiàn)RequestMappingHandlerAdapter 09 視圖InternalResourceView、RedirectView 10 視圖解析器ViewResolver 11 DispatcherServlet實(shí)現(xiàn)doDispatch來完成請求邏輯 12 全局異常處理器HandlerExceptionResolver 13 核心配置類WebMvcConfigurationSupport 14 SmartMvc與SpringBoot集成(一) 15 SmartMvc與SpringBoot集成(二) 16 SmartMvc項(xiàng)目實(shí)戰(zhàn)
第四階段、修煉內(nèi)功
推薦書籍1:《算法圖解》

本書的例子圖文并茂,以讓人容易理解的方式闡釋了算法;書中的前三章將幫助你打下基礎(chǔ),帶你學(xué)習(xí)二分查找、大O表示法、兩種基本的數(shù)據(jù)結(jié)構(gòu)以及遞歸等。余下的篇幅將主要介紹應(yīng)用廣泛的算法,具體內(nèi)容包括:面對具體問題時的解決技巧,比如,何時采用貪婪算法或動態(tài)規(guī)劃;散列表的應(yīng)用;圖算法;K最近鄰算法。
看完本書可以對一些常見的經(jīng)典算法做一個了解,哪種算法解決哪些問題;
推薦書籍2:《算法第四版》

這本書也可以算得上是算法書籍中的不朽制作來,作者在講解每種算法都是采用的循序漸進(jìn)的方式,提出問題解決問題,再提出問題在解決這種方式直至得到最優(yōu)的算法; 作者全面介紹了關(guān)于算法和數(shù)據(jù)結(jié)構(gòu)的必備知識,并特別針對排序、搜索、圖處理和字符串處理進(jìn)行了論述。第4版具體給出了每位程序員應(yīng)知應(yīng)會的50個算法,
提供了算法的實(shí)際代碼,而且這些Java 代碼實(shí)現(xiàn)采用了模塊化的編程風(fēng)格,讀者可以方便地加以改造。
本書總共600多頁,而且看算法本書也比較燒腦,如果想要快速的了解本書的內(nèi)容,大家可以先看我看完本書之后寫的一些文章:
老哥是時候來復(fù)習(xí)下數(shù)據(jù)結(jié)構(gòu)與算法了 如何檢測社交網(wǎng)絡(luò)中兩個人是否是朋友關(guān)系(union-find算法) 常見的初級排序算法,這次全搞懂 死磕歸并排序算法 快速排序算法實(shí)現(xiàn)及優(yōu)化 原來實(shí)現(xiàn)優(yōu)先級隊(duì)列如此簡單 圖解堆排序 基于數(shù)組或鏈表實(shí)現(xiàn)Map 基于二叉樹實(shí)現(xiàn)Map 重點(diǎn)推薦:硬核圖解紅黑樹并手寫實(shí)現(xiàn) 基于拉鏈?zhǔn)胶途€性探測式散列表實(shí)現(xiàn)Map 圖算法系列之無向圖的數(shù)據(jù)結(jié)構(gòu) 圖算法系列之深度優(yōu)先搜索(一) 圖算法系列之深度優(yōu)先搜索(二) 圖算法系列之計(jì)算圖中最短路徑
推薦書籍3:《深入理解Java虛擬機(jī) 第三版》

搞Java的人,如果不了解JVM是不行的;如果學(xué)習(xí)JVM不看這本書是更不行的;
本書詳細(xì)講解了類加載機(jī)制、java內(nèi)存原理、垃圾回收機(jī)制等知識。只有掌握了JVM,才能在實(shí)際生產(chǎn)環(huán)境遇到線上問題如GC頻率過高、內(nèi)存溢出等應(yīng)對自如、還有應(yīng)用系統(tǒng)JVM參數(shù)合理配置。
看完本書就可以對虛擬機(jī)有個比較深入的了解,此時可以配合一起看一下《Java虛擬機(jī)規(guī)范JAVA SE8版》,這本書詳細(xì)的描述了Class類文件的規(guī)定,內(nèi)存管理相關(guān)的規(guī)定比較少,基本都是有虛擬機(jī)實(shí)現(xiàn)者自行絕對
推薦書籍4:《虛擬機(jī)設(shè)計(jì)與實(shí)現(xiàn) 以JVM為例》

本書從一位虛擬機(jī)(VM)架構(gòu)師的角度,以易于理解、層層深入的方式介紹了各種主題和算法,尤其是不同VM通用的主要技術(shù)。這些算法用圖示充分解釋,用便于理解的代碼片段實(shí)現(xiàn), 使得這些抽象概念對系統(tǒng)軟件工程師而言具像化并可編程。書中還包括一些同類文獻(xiàn)中較少涉及的主題,例如運(yùn)行時輔助、棧展開和本地接口
本書可以配合《深入理解Java虛擬機(jī) 第三版》一起看,也能解答很多JVM中相關(guān)的問題,比如:面試經(jīng)常問的鎖升級,大多數(shù)的人都會說偏向鎖、輕量級鎖、重量級鎖,如果在繼續(xù)問什么是重量級鎖,重量鎖是如何實(shí)現(xiàn)的?頓時就懵圈了;這種問題這本書可以幫助解答,以及wait、notify調(diào)用之后虛擬機(jī)都是如何實(shí)現(xiàn)的
推薦書籍5:《自己動手寫Java虛擬機(jī)》

紙上得來終覺淺,絕知此事要躬行;
在看完《深入理解Java虛擬機(jī) 第三版》、《Java虛擬機(jī)規(guī)范JAVA SE8版》、《虛擬機(jī)設(shè)計(jì)與實(shí)現(xiàn) 以JVM為例》之后,我相信很多人對虛擬機(jī)里面的概念是如何實(shí)現(xiàn)的依然很模糊,比如說Java的多態(tài)是如何實(shí)現(xiàn)的?在執(zhí)行main方法的時候加載class的細(xì)節(jié)是怎樣的?要解決這些心里的疑問,最好的方式動手自己干一個簡單版的JVM;
本書是一本實(shí)戰(zhàn)書籍,可以跟著這本書一起手動寫一個簡單版的JVM;這本書是有g(shù)o語言寫的,如果對go不熟悉的同學(xué)也可以采用Java語言;我沒有聽錯把Java語言也可以實(shí)現(xiàn)jvm?是的,java可以實(shí)現(xiàn)jvm,相關(guān)的開源項(xiàng)目也有很多;可以自行到github上去搜索
這里貼上我對這幾本JVM書看完之后做的筆記

原文鏈接:https://silently9527.cn/?p=96
