我的后端開發書架2015
來自:http://calvin1978.blogcn.com/articles/bookshelf.html
自從技術書的書架設定為”床底下“之后,又多了很多買書的空間。中國什么都貴,就是書便宜。
不定期更新,在碎片化閱讀下難免錯評。
書架主要針對Java后端開發, 書單更偏愛那些能用簡短流暢的話,把少壯不努力的程序員所需的基礎補回來的薄書,而有些教課書可能很著名,但干澀枯燥,喋喋不休的把你帶回到大學課堂上昏昏欲睡。
1. 操作系統與網絡的書
《Linux內核設計與實現 - Linux Kernel Development》
Robert Love用最薄的篇幅,順暢的文字將Linux內核主要的算法講清楚了,比《深入理解Linux內核》,《深入Linux內核架構》之類厚厚的全是代碼的書強到不知哪里去,不是專門的內核程序員看這本足夠了。
《Linux系統編程 - Linux System Programming》
繼續是Robert Love,也是以薄見長,專門針對最重要的系統調用講解,卻甚至比APUE更詳細。
《TCP/IP詳解 卷1:協議 - TCP/IP Illustrated, Volume 1: The Protocols》
這么多年過去了,TCP的好書好像還是只有這一本。后人在2011年續寫了第二版,目錄從30章勁減到18章刪掉了不需要深入了解的協議,機械工業正在翻譯。
《現代操作系統 - Modern Operating Systems》
如果看LKD未盡興,可以回頭看看這本基礎概念,感覺比那本枯燥的《操作系統概念》(恐龍書)讀起來舒服。
《深入理解計算機系統 - Computer Systems A Programmer's perspective》
CSAPP,從巧妙的把程序設計及優化、數字電路基礎、指令集體系、匯編語言、存儲器體系結構等等這一攤來自各不同的學科的核心知識點攪和在一起,并以程序員的視角呈現,正確的直譯書名是《程序員所需要了解的計算機知識》。
PS. 《UNIX環境高級編程》,APUE更多作為一本超厚工具書存在。《Unix 編程藝術》,扯的都是閑篇,厚厚的一本其實略讀一下或看些精華筆記就行。
2. 算法的書
《數據結構與算法分析-Java語言描述》
夠薄,數據結構與算法分析的點基本都涵蓋了,而且示例代碼還是Java寫的。
《算法》
可與上一本對比著讀,厚一些,也多些圖,但知識點沒上面的全,也是Java的。
《算法設計與分析基礎》
數學系偏愛無比枯燥很多公式的《算法導論》, 計算機系喜歡這本實用主義的典型。翻開就看到一段很文藝很貼心的話:“效率能用數學的嚴密性進行精確定義,而簡單性就像“美”一樣,很大程度取決于審視者 的眼光。簡單的算法更容易理解和實現,因而相應的程序也往往更少的Bug。當然對于簡單性的美學訴求也是讓人無法抗拒的。”
PS. 《數學之美》、《編程珠璣》,都是專欄文章,講得并不系統,可以當興趣讀物來看。
3. Java的書
《寫給大忙人看的Java SE 8》
事實上,為了保持兼容性,很多項目都保持在JDK5/6上,這本書一次過將JDK7/JDK8的更新講了,是本快捷的升級指南。
《Java并發編程實戰》
人手一本不用多說了。
《深入理解 Java 虛擬機 第2版》
深入理解虛擬機并不是那么難,Java程序員都該看看,很多知識其實是必須的。
PS. 《Effective Java》外界一致推崇,但好像隨便看下就夠了。另外《Thinking in Java》有點舊了,新程序員得同時看兩卷《Core Java》。
4. 架構設計的書
《程序員必讀之軟件架構 - Software Architecture for Developers》
codingthearchitecture.com Simon Brown的書,不過叫“必讀”有點過。這本書大概分兩部分:
1. 編碼的架構師:一直是我的職業模板,我記的筆記。
2. 架構表達的文檔模板: 當年我覺得RUP的基于4+1視圖的機械架構文檔模板不足以表達系統時,Simon Brown的模板給了很好的過渡范例。
《恰如其分的軟件架構 - Just Enough Software Architecture: A Risk-Driven Approach》
由于人類與生俱來的惰性,計算機原本科學的、精準的設計方式,有了敏捷的借口之后就很難再維持了。本書就是在這種背景下,提出由風險來決定設計流程的度,當然,這個風險是廣義的。
《發布!軟件的設計與部署 - Release It!: Design and Deploy Production-Ready Software 》
關于高可靠性的軟件,學校里不會教,出來社會卻要面對的那部分,英文的原標題更清晰。
《大型網站系統與Java中間件實踐》
淘寶大神出品,面向的對者群體比較廣,內容的深淺跨度也比較廣,需要自己挑著看。
《大型網站技術架構:核心原理與案例分析》
繼續淘寶出品,大型互聯網站科普入門書。
《大規模分布式存儲系統》
繼續淘寶出品,分布式文件系統與數據庫的科普入門書。
《大數據日知錄》
前幾年參加各種技術會議,CAP,最終一致性,RWN,向量時鐘,Paxos,一致性哈希,Gossip什么的能灌你一耳朵。而現在,你只要在家安安靜靜的看看《大數據日知錄》就夠了。這個領域發展太快,期望它可以持續出新版。
《七周七并發模型》
好像沒有達到 《七周七語言》、《七周七數據庫》的快速科普效果。因為每個模型其實還是要依賴一定的背景知識,匆匆一掃原來懂的看了還是懂,不懂的看了還是不懂......有空要再看一遍。
PS. 關于設計模式,我以前曾經有過很多很多本,GOF23啦,企業應用架構模式啦,EIP啦, POSA 5卷本啦,反模式啦,JavaEE/SOA/Restful的模式啦,但現在覺得對新人來說,一本Java寫的《Head First 設計模式》,知道什么叫設計模式就夠了。
5. 具體技術的書
《Redis設計與實現分析》
用Redis的工程師桌面必備吧,不用再多說了。
《從Paxos到Zookeeper》
Zookeeper的書,淘寶出品。
《Mastering Apache Cassandra 2nd》
2015年新出,當然來不及翻譯,感覺Cassandra的書里最好。
《Storm源碼分析》
作為工具書在手邊備一本,快速看一遍在文檔之外多了解一些實現,畢竟那Clojure語言就不是給普通人看的。
《Storm分布式實時計算模式》
大概講了下Storm如何結合其他開源項目實現一些場景,可以開拓眼界,但不直接指導我的項目的開發。
--在所有Storm書里,上面兩本暫時是最推薦買的。
《Spark大數據處理技術》
左挑右挑選了這本,結果是典型的多人合著的書
6. 程序員的自我修養
PS. 最近沒買什么新書,隨便說點舊書:
《程序員修煉之道-從小工到專家》,Pragmatic Programmer-注重實效的程序員開山之作,翻譯的馬達維文筆也和熊節一樣好。
《代碼整潔之道》和 《程序員的職業素養》,英文名是很相近的《Clean Code》和 《Clean Coder》,應該接替《代碼大全-Code Complete》成為必看的系列,因為后者太厚了,而且也有不少過時的東西,要自己去過濾。
《重構》很厚,但最有價值就是前面幾章的洗腦篇,具體實作不如薄薄的《重構手冊》。
關于敏捷的書,最開始的那本《解析極限編程--擁抱變化》就很好,再隨便找本Scrum的流程看看就夠了,《敏捷開發的藝術》也不錯。
《布道之道 - Driving Technical Change:Why People on Your Team Don't Act on Good Ideas,and How to Convince Them They Should》,經常在組織里推行新技術的同學可以看下,七種懷疑論者模式,腦海中一幅幅熟悉的面孔。
《軟件架構師的12項修煉》,架構師的軟技能。
歡迎大家在評論里補充。