作為一個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

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/202156.html
標籤:Java
