作為一個IT從業人員,持之以恆的學習是這個行業永遠無法避免的行業特性,也是 IT 技術人員為了能避過 35 歲大限不得不一直奮進的必做之事。
在當今這個時代里,學習有多種方式,視頻、播客、技術文章等等等等。但是,無論如何,一本好書,絕對是學習中無論如何不可避開的最大助力。
我讀過許多許多的技術好書,學習了各種架構知識、設計模式,還有各種最佳實踐和中間件原理。
但是,何為好的技術書籍?不同種類的技術書籍有不同的技術特色。但是也無外乎以下幾點:
- 寫的深入淺出
- 對自己的能力提升能有很大的幫助
- 對自己的職業生涯有一定的促進
- 對自己的技術觀念有巨大的革新
要找到好的技術書籍並不是件容易的事情,很多時候,往往買來的書籍並不如意。所以,為了節省時間,在這里,我給大家推薦一些我認為的比較經典的書籍。
與其說是羅列一些書,不如說是一次讀書之旅。
1. 《C程序設計語言典藏版套裝》
首先,由於很多經典書籍大部分是用 C 語言或者類 C 語言實現,所以,C 語言本身應該作為計算機學習前的任何前置基礎。
C 語言設計最經典的書籍《C程序設計語言典藏版套裝》是一定要提及的。

這本書原著即為 C 語言的設計者之一 DennisM.Ritchie,另外一位作者則是著名的計算機科學家 BrianW.Kernighan。
這本書是 C 語言最經典的著作。我們現在見到的大量論述 C 語言程序設計的教材和專著均以此書為藍本。
這本書本身比較薄,內容充實緊密,花費不長的時間即可讀完。對於程序員來說,更是耗費兩三天即可讀完。
2. 《深入理解計算機系統(原書第3版)》
當完全了解 C 語言特性后,我們自然要開啟一系列的計算機基礎知識之旅。
首當其沖的自然是神書《深入理解計算機系統(原書第3版)》

這本書評分高達9.9分,可以說是豆瓣上計算機相關書籍中評分最高的一本了。
這本書像一張網一樣,從計算機硬件講起,描述了一台主機中都有什么部件,主板上有什么零件,CPU、內存和硬盤之間怎么連接起來的。
這本書還描述了一個程序是怎么從一個文本文件被編譯、鏈接變成匯編碼,又是怎么從匯編語言變成機器碼,以及怎么被計算機執行的。
同時,這本書還講到了計算機網絡、組成原理、進程、線程等等。它從硬件講到軟件,從里講到外,它把我們整個計算機生涯中可能遇到的知識給組織起來了。它就像我們整個職業生涯中所需要的所有基礎知識的總綱,有了總綱,我們才能更有調理更有自己的節奏的去進一步學習各種總綱中的知識。
但是,這個總綱對新手甚至對一些基礎知識不扎實的程序員可能都不是那么友好,所以建議配合哈佛大學的 CS50 課程一起配合為佳。
當我們看完了總綱之后,我們就可以按照一個固定的體系去安排我們自己的學習計划了。
3. 《算法導論(原書第3版)》
在我們學習完計算機系統后,我們需要明白,計算機能運行本質是通過運行在硬件之上的軟件來實現的。我們這些IT從業人員的職業生涯也主要就是圍繞着這些計算機軟件展開。
而計算機軟件中最為核心的就是其數據結構和算法。談到這些,我們就自然需要推薦史上最權威最經典的《算法導論(原書第3版)》

這本書英文名為"Introduction to Algorithms",有時也被稱為 CLRS(取自作者四個人名字的首字母),在計算機領域經典書籍中有時會與 SICP(計算機程序的構造和解釋)、CSAPP(深入理解計算機系統)相提並論。
算法導論是國內外公認的算法學習的經典教材,國內外很多知名院校如 MIT、CMU 都有開《算法導論》的課。
這本書號稱如果一個人能用一種語言獨立完成 90% 以上的算法,那么全世界工作就可以隨便挑選了。
如果我們了解了數據結構以及相關算法,那么隨后我就需要知道這些數據結構與相關算法的最佳實踐:操作系統
4. 《現代操作系統(原書第4版)》
為什么我們要學習操作系統?
我們學習操作系統並不是為了去實現一個操作系統。我們學習操作系統可以知道操作系統能做什么,在實際項目中,我們對一些莫名其妙的問題,我們就能更好的歸類,更好的追蹤,更快的去解決這些問題。
同時,操作系統可能是我們職業生涯中可以遇見的最復雜的軟件。
作為復雜的軟件,它的設計,它的接口,它的抽象,它的體系架構都是我們自己做軟件設計,做系統設計,做架構設計的最佳實例。
另外,操作系統本身也是並發並行的最佳實踐。這里,你也可以學習到時序,分時,信號量,各種調度算法。明白了操作系統的並發,你再遇到任何並發問題,都可以從容的迎刃而解了。
學習操作系統我推薦:《現代操作系統(原書第4版)》

這本書對進程、內存管理、文件系統、I/O 都有很詳細地講解,最后還有專門的的章節介紹 Linux 和 Windows Vista 系統。
與國內的教材相比其優點主要在於並非是知識點簡單的羅列,而是通過一個個問題去引導出用以解決這些問題的技術,從而加深讀者的理解。
5. 《計算機網絡:自頂向下方法(原書第7版)》
知道了操作系統,我們就需要去了解當代社會最重要的發明:計算機網絡。
《計算機網絡:自頂向下方法(原書第7版)》

這本書對於網絡就像是深入理解計算機系統這本書對於整個計算機基礎知識,是對整個計算機網絡體系的一個總綱。
你從這本書中可以學習到現代網絡是如何通信的,最初網絡是如何設計的以及為何要這樣設計,協議和協議是如何互相溝通的。
這本書同樣也需要在線課程搭配着來,可以參考如下兩門課程(B 站上可以搜到):
- 國防科技大學-計算機網絡(國家級精品課)
- 斯坦福大學 Introduction to Computer Networking
6. 《TCP/IP詳解(套裝共3冊)》
當我們學懂了計算機網絡之后,你會發現,這個網絡的靈魂是網絡通信和數據傳輸。而能達到這種目的,通信之間所憑借的核心就是 TCP/IP。
在實踐中,我們會發現,我們只有深入理解了 TCP/IP 協議,才能從容的面對各種復雜混亂的網絡問題,才能在生產中順利的當我們的技術大牛,為公司各種項目的順利進展保駕護航。
TCP/IP 的學習不用說,只能是唯一的經典書籍《TCP/IP詳解(套裝共3冊)》

要注意的是,這是一套書,其中卷一是最經典的,需要反復看。
對於幾個基礎的協議一定要非常清晰,比如 IP、TCP、UDP、ICMP,一定記住每個協議所有字段細節,ping、traceroute 的工作原理。可以做一些小實驗。
卷二、卷三更多偏重於編程細節,可以粗看了解內容即可。
7. Java相關的幾本書
當我們學會了以上的基礎知識,我們想成為一個技術超級大牛,還需要做好自己的本職工作才好。
以上的基礎知識給與我們在日常技術工作中,能快速設計系統,快速解決問題的超級能力。我們有了這些超級能力,還需要一套非常有用的工具,去把這些超級能力落地——這就是編程語言。
我之前是一個 Java 工程師,所以,我會在下面給大家推薦一下大家能深入掌握 Java 這門語言的必備好書。
7.1
《深入理解Java虛擬機:JVM高級特性與最佳實踐(第3版)》

這本書不用多說,這是每個 Java 程序員要從中級到高級必須看的一本書。
7.2
《Java並發編程實戰》

這本書,如果你還沒有讀通、讀懂,那么 Java 的多線程開發對你來說難度會不小。
7.3
《Effective Java中文版(原書第3版)》

這本書不用說了,絕對是一名熱愛代碼、追求代碼質量的開發人員的必備書籍。
最后
上面的這些書,不僅有計算機基礎知識的內功,也有Java編程語言這類的外功。我們如果真的想靠自己的技術拿到百萬年薪,那么以上這些書是必不可少的助力。
我准備了一些純手打的高質量PDF:
深入淺出Java多線程、HTTP超全匯總、Java基礎核心總結、程序員必知的硬核知識大全、簡歷面試談薪的超全干貨。
別看數量不多,但篇篇都是干貨,看完的都說很肝。
領取方式:掃碼關注后,在公眾號后台回復:666

