原文出處: 江南白衣
書(shū)架主要針對(duì)Java后端開(kāi)發(fā)。
3.0版把一些后來(lái)買(mǎi)的、看的書(shū)添補(bǔ)進(jìn)來(lái),又或刪掉或降級(jí)一些后來(lái)沒(méi)有再翻開(kāi)過(guò)的書(shū)。
更偏愛(ài)那些能用簡(jiǎn)短流暢的話(huà),把少壯不努力的程序員所需的基礎(chǔ)補(bǔ)回來(lái)的薄書(shū),而有些教課書(shū)可能很著名,但干澀枯燥,喋喋不休的把你帶回到大學(xué)課堂上昏昏欲睡,不錄。
1. 操作系統(tǒng)與網(wǎng)絡(luò)的書(shū)
《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn) 第3版》
Robert Love用最薄的篇幅,順暢的文字將Linux內(nèi)核主要的算法講清楚了,《深入理解Linux內(nèi)核》,《深入Linux內(nèi)核架構(gòu)》之類(lèi)厚厚的全是代碼,不是專(zhuān)門(mén)的內(nèi)核程序員看這本足夠了。
《Linux系統(tǒng)編程 第2版》
繼續(xù)是Robert Love,比起APUE也是以薄見(jiàn)長(zhǎng),專(zhuān)門(mén)針對(duì)重要的系統(tǒng)調(diào)用講解。
《性能之巔》
操作系統(tǒng)的性能調(diào)優(yōu)、監(jiān)控、工具和方法論,看這本就夠了,已經(jīng)足夠厚,可能是書(shū)單里最厚的一本。
《TCP/IP詳解 卷1:協(xié)議》
這么多年過(guò)去了,TCP的書(shū)好像主要還是只有這一本,有點(diǎn)舊了,看了也還是半懂不懂的。后人在2011年寫(xiě)了第二版,機(jī)械工業(yè)正在翻譯。
《WireShark網(wǎng)絡(luò)分析就這么簡(jiǎn)單》和 《WireShark網(wǎng)絡(luò)分析的藝術(shù)》 new!
多少人,是看了這兩本輕松又實(shí)戰(zhàn)的書(shū),才真正理解TCP的細(xì)節(jié)。
PS:《UNIX環(huán)境高級(jí)編程》和《UNIX網(wǎng)絡(luò)編程》,APUE和UNP更多作為一本超厚工具書(shū)存在。《Unix 編程藝術(shù)》,扯的都是閑篇,厚厚的一本其實(shí)略讀一下就行。 《現(xiàn)代操作系統(tǒng) 第3版》如果看LKD未盡興,可以回頭看看這本基礎(chǔ)概念,感覺(jué)比那本枯燥的《操作系統(tǒng)概念》(恐龍書(shū))讀起來(lái)舒服。
《TCP/IP指南》 前面wireshark書(shū)作者的推薦,網(wǎng)上有英文免費(fèi)版,然后有中文版的卷1和卷2,但可能那么多章節(jié)那么厚你只關(guān)心TCP和HTTP兩部分?!禜TTP權(quán)威指南》,同樣是自己從厚厚的目錄里挑選感興趣的章節(jié)來(lái)看。另外,那些日本韓國(guó)人寫(xiě)的《圖解XXX》感覺(jué)都不喜歡,真的不行。
2. 算法的書(shū)
《數(shù)據(jù)結(jié)構(gòu)與算法分析-Java語(yǔ)言描述 第3版》
夠薄,數(shù)據(jù)結(jié)構(gòu)與算法分析的點(diǎn)基本都涵蓋了,而且喜歡它的示例代碼是Java寫(xiě)的,新出了第3版。
《算法 第4版》
可與上一本對(duì)比著讀,厚一些,也多些圖,但知識(shí)點(diǎn)沒(méi)上面的全,也是Java的。
PS: 《數(shù)學(xué)之美》、《編程珠璣》,都是專(zhuān)欄文章,講得并不系統(tǒng),可以當(dāng)興趣讀物來(lái)看。
《算法設(shè)計(jì)與分析基礎(chǔ) 第3版》數(shù)學(xué)系偏愛(ài)無(wú)比枯燥很多公式的《算法導(dǎo)論》, 計(jì)算機(jī)系喜歡這本實(shí)用主義的典型。
3. 架構(gòu)設(shè)計(jì)的書(shū)
《軟件系統(tǒng)架構(gòu):使用視點(diǎn)和視角與利益相關(guān)者合作 第2版》
也是教科書(shū),最難得的是,這本老書(shū)在十年后的去年升級(jí)了第二版,所以感覺(jué)鮮活了好多,也許是最鮮活的一本架構(gòu)書(shū)。
《恰如其分的軟件架構(gòu) – 風(fēng)險(xiǎn)驅(qū)動(dòng)的設(shè)計(jì)方法》
由于人類(lèi)與生俱來(lái)的惰性,計(jì)算機(jī)原本科學(xué)的、精準(zhǔn)的設(shè)計(jì)方式,有了敏捷的借口之后就很難再維持了。本書(shū)就是在這種背景下,提出由風(fēng)險(xiǎn)來(lái)決定設(shè)計(jì)的度。除了開(kāi)始的風(fēng)險(xiǎn)驅(qū)動(dòng)部分,其余部分就是規(guī)規(guī)矩矩標(biāo)標(biāo)準(zhǔn)準(zhǔn)的架構(gòu)師教科書(shū)。
《發(fā)布!軟件的設(shè)計(jì)與部署 – Release It!: Design and Deploy Production-Ready Software 》
關(guān)于高可靠性的軟件,學(xué)校里不會(huì)教,出來(lái)社會(huì)卻要面對(duì)的那部分,英文的原標(biāo)題更清晰。
《大型網(wǎng)站技術(shù)架構(gòu):核心原理與案例分析》
淘寶出品,大型互聯(lián)網(wǎng)站的科普入門(mén)書(shū)。
《高擴(kuò)展性網(wǎng)站的50條原則》 new!
同是入門(mén)級(jí)讀物,如果還有個(gè)高可用50條原則,那就齊了。
《微服務(wù)設(shè)計(jì)》 new!
那么多微服務(wù)的書(shū),還是這本比較不像賺快錢(qián)的。
《大數(shù)據(jù)日知錄》
前幾年參加各種技術(shù)會(huì)議,CAP,最終一致性,RWN,向量時(shí)鐘,Paxos,一致性哈希,Gossip什么的能灌你一耳朵。而現(xiàn)在,你只要在家安安靜靜的看書(shū)就夠了。不過(guò)這個(gè)領(lǐng)域發(fā)展太快,又一年過(guò)去了,期望它可以持續(xù)出新版。
PS: 關(guān)于設(shè)計(jì)模式,我以前曾經(jīng)有過(guò)很多很多本,GOF23啦,企業(yè)應(yīng)用架構(gòu)模式啦,EIP啦, POSA 5卷本啦,反模式啦,JavaEE/SOA/Restful的模式啦。但現(xiàn)在覺(jué)得對(duì)新人來(lái)說(shuō),一本Java寫(xiě)的《Head First 設(shè)計(jì)模式》,知道什么叫設(shè)計(jì)模式就夠了。
《程序員必讀之軟件架構(gòu)》作者維護(hù)著codingthearchitecture.com 。不過(guò)中文書(shū)名叫“必讀”有點(diǎn)過(guò)。
4. 語(yǔ)言的書(shū)
《Java并發(fā)編程實(shí)戰(zhàn)》
Java并發(fā)經(jīng)典,人手一本不用多說(shuō)了。
《實(shí)戰(zhàn)Java高并發(fā)程序設(shè)計(jì)》 new!
國(guó)人新作,流暢易讀,內(nèi)容也比上面一本來(lái)得新。
《深入理解 Java 虛擬機(jī) 第2版》
理解虛擬機(jī)并不是那么難,Java程序員來(lái)說(shuō),很多知識(shí)其實(shí)是必須的。另外還有幾本類(lèi)似主題的書(shū),忽然一下子都出來(lái)了。
《Java性能權(quán)威指南》 new!
比起多年前那部調(diào)優(yōu)圣經(jīng),講得更加深入,也更加貼近現(xiàn)在的JDK??梢詮睦锩嫣粜┲R(shí)點(diǎn)來(lái),做Java調(diào)優(yōu)的面試題。
《有效的單元測(cè)試》 new!
不同于那些動(dòng)輒BDD的高深書(shū)籍,專(zhuān)注于如何寫(xiě)“好”的,可維護(hù)的單元測(cè)試,拿來(lái)給團(tuán)隊(duì)看,能省很多口水。
《七周七語(yǔ)言》
《七周七X》系列的開(kāi)山之作,可能也是最好的一本。
PS:《Effective Java》外界一致推崇,但有點(diǎn)太過(guò)譽(yù)了。另外《Thinking in Java》有點(diǎn)舊了,而且作者思路隨意,譯者語(yǔ)言晦澀,新程序員還是建議同時(shí)再看兩卷《Java核心技術(shù) - Core Java》。
5. 具體技術(shù)的書(shū)
《Docker: 容器與容器云》
這本書(shū)叫Docker一本就夠了,的確夠了,在那些Docker操作指南書(shū)之上。不想著改Docker代碼的看它就夠了,別想著什么《Docker源碼分析》。
《Redis設(shè)計(jì)與實(shí)現(xiàn)分析》
用Redis的工程師桌面必備吧。
《分布式服務(wù)框架:原理與實(shí)踐》 new!
如果要寫(xiě)一個(gè)SOA框架,要留意的方方面面。
《Spark技術(shù)內(nèi)幕》
深度與厚度之間,選了這本200頁(yè)的薄書(shū),一樣有很多的原理與代碼解釋?zhuān)粫?huì)像有的書(shū)那樣貼20行代碼只寫(xiě)一行字。
《Netty權(quán)威指南 第2版》
雖然網(wǎng)上的吐槽較多,但Netty 快速入門(mén)也只有這一本了。
6. 程序員的自我修養(yǎng)
PS. 最近沒(méi)買(mǎi)什么新書(shū),隨便說(shuō)點(diǎn)舊書(shū):
《程序員修煉之道-從小工到專(zhuān)家》,Pragmatic Programmer-注重實(shí)效的程序員開(kāi)山之作,翻譯的馬達(dá)維文筆也和熊節(jié)一樣好。
《代碼整潔之道》和 《程序員的職業(yè)素養(yǎng)》,英文名是很相近的《Clean Code》和 《Clean Coder》,應(yīng)該接替《代碼大全2》成為必看的系列,因?yàn)楹笳咛窳耍乙灿胁簧龠^(guò)時(shí)的東西,要自己去過(guò)濾。
《重構(gòu)》很厚,但最有價(jià)值就是前面幾章的洗腦篇,具體實(shí)作不如薄薄的《重構(gòu)手冊(cè)》。
關(guān)于敏捷的書(shū),最開(kāi)始的那本《解析極限編程–擁抱變化》就很好,再隨便找本Scrum的流程看看就夠了,《敏捷開(kāi)發(fā)的藝術(shù)》也不錯(cuò)。
《布道之道 – Driving Technical Change:Why People on Your Team Don’t Act on Good Ideas,and How to Convince Them They Should》,經(jīng)常在組織里推行新技術(shù)的同學(xué)可以看下,七種懷疑論者模式,腦海中一幅幅熟悉的面孔。
PS. 溫伯格的書(shū)網(wǎng)上很推崇,《成為技術(shù)領(lǐng)導(dǎo)者》之類(lèi)的,但我覺(jué)得年代太遠(yuǎn),讀起來(lái)其實(shí)沒(méi)多大意思,一兩個(gè)雞湯觀點(diǎn)還要自己從書(shū)里慢慢淘,有那功夫不如看點(diǎn)別的。
7. 沒(méi)有覆蓋到的內(nèi)容
數(shù)據(jù)庫(kù)如MySQL,我們DBA太專(zhuān)業(yè),自己沒(méi)機(jī)會(huì)搞。