全面、系統的計算機知識體系!
專業基礎課、專業必修課和專業選修課。
先從課程上做一個分類,按照先修關系進行整理,形成課程體系,接下來,再把學習過程分成不同的階段:
第1階段:學習程序設計基礎、面向對象程序設計、離散數學三門專業基礎課
第2階段:學習數據結構、算法設計與分析、計算機組成原理三門專業必修課
第3階段:學習操作系統、計算機網絡、數據庫系統三門專業必修課
第4階段:學習編譯原理、軟件工程兩門專業必修課,並且,在這個階段,就可以根據自己的興趣來學習選修課程了
按照計划,循序漸進,逐步攻克!
在編程的世界里,主要就是兩個事,用一定的算法去處理一定的數據。算法可以理解為業務邏輯流程,而數據自然一定是按某種結構來存放,這就是數據結構。數據結構的修改一定會導致算法的修改,數據結構直接關系到了整個程序的繁簡性,高效性。而算法則是關系到數據處理的時間、空間性能,以及日后的擴展和維護。這兩個東西是計算機科班出生的人或是需要學習編程的人必需要注意的兩件頭等大事。
https://xlinux.nist.gov/dads/
Java學習路線圖:
-
首先要學習Java SE,掌握Java語言本身、Java核心開發技術以及Java標准庫的使用;
-
如果繼續學習Java EE,那么Spring框架、數據庫開發、分布式架構就是需要學習的;
-
如果要學習大數據開發,那么Hadoop、Spark、Flink這些大數據平台就是需要學習的,他們都基於Java或Scala開發;
-
如果想要學習移動開發,那么就深入Android平台,掌握Android App開發。
七本經典書籍分別是:《深入理解計算機系統》、《數據密集型應用系統設計》、《計算機程序的構造和解釋》、《算法設計手冊》、《計算機科學中的數學》、《操作系統導論》、《計算機網絡:自頂向下方法》。
七本教材分別花一兩百個小時進行學習是很有必要的,不論是對專業能力還是職業生涯的提升都是巨大的。
還是太多?
先專注於學習兩本圖書:《深入理解計算機系統》 和 《數據密集型應用系統設計》。投入到這兩本書的時間可以獲得極高的回報率,特別適合從事網絡應用開發的自學工程師。這兩本書也可以作為上面表格中其他科目的綱領。
《深入理解計算機系統》簡介:
本書從程序員的視角詳細闡述計算機系統的本質概念,並展示這些概念如何實實在在地影響應用程序的正確性、性能和實用性。全書共12章,主要內容包括信息的表示和處理、程序的機器級表示、處理器體系結構、優化程序性能、存儲器層次結構、鏈接、異常控制流、虛擬存儲器、系統級I/O、網絡編程、並發編程等。書中提供大量的例子和練習,並給出部分答案,有助於讀者加深對正文所述概念和知識的理解。——《深入理解計算機系統(原書第3版)》
深入理解計算機系統應該是最優秀的計算機系統導論型作品,它創造性的把操作系統,計算機組成結構,數字電路,以及匯編原理這些計算機基礎學科中的核心概念匯集在一起,從而覆蓋了指令集體系結構,匯編語言,代碼優化,計算機存儲體系架構,鏈接,裝載,進程,以及虛擬內存這些程序員所需了解的關鍵計算機系統知識。如果想打下扎實的計算機基礎又不想把操作系統計算機結構編譯原理這些書統統讀一遍,閱讀深入理解計算機系統是最有效率的方式。
《深入理解計算機系統》對於那些想了解計算機系統以求編寫更快、更高效、更可靠的軟件的人來說是很好的起點。總之《深入理解計算機系統》值得反復深入閱讀,理解體會。
《數據密集型應用系統設計》簡介:
全書分為三大部分:
第一部分,主要討論有關增強數據密集型應用系統所需的若干基本原則。首先開篇第1章即瞄准目標:可靠性、可擴展性與可維護性,如何認識這些問題以及如何達成目標。第2章我們比較了多種不同的數據模型和查詢語言,討論各自的適用場景。接下來第3章主要針對存儲引擎,即數據庫是如何安排磁盤結構從而提高檢索效率。第4章轉向數據編碼(序列化)方面,包括常見模式的演化歷程。
第二部分,我們將從單機的數據存儲轉向跨機器的分布式系統,這是擴展性的重要一步,但隨之而來的是各種挑戰。所以將依次討論數據遠程復制(第5章)、數據分區(第6章)以及事務(第7章)。接下來的第8章包括分布式系統的更多細節,以及分布式環境如何達成一致性與共識(第9章)。
第三部分,主要針對產生派生數據的系統,所謂派生數據主要指在異構系統中,如果無法用一個數據源來解決所有問題,那么一種自然的方式就是集成多個不同的數據庫、緩存模塊以及索引模塊等。首先第10章以批處理開始來處理派生數據,緊接着第11章采用流式處理。第12章總結之前介紹的多種技術,並分析討論未來構建可靠、可擴展和可維護應用系統可能的新方向或方法。
隨着計算機在數量上的增加,計算機同樣開始分散。盡管商業公司過去願意購買越來越大的大型機,現在的典型情況是,甚至很小的應用程序都同時在多台機器上運行。思考這樣做的利弊權衡,即是分布式系統的研究所在,也是越來越重要的一項技能。
推薦的 《數據密集型應用系統設計》與傳統的教科書相比,它是一本為實踐者設計的具有很高的可讀性的書,並且保持了深度和嚴謹性。
現今,尤其是在互聯網領域,大多數應用都屬於數據密集型應用。本書從底層數據結構到頂層架構設計,將數據系統設計中的精髓娓娓道來。其中的寶貴經驗無論是對架構師,DBA、還是后端工程師、甚至產品經理都會有幫助。
這也是一本深入淺出的書,講述概念的來龍去脈而不是賣弄定義,介紹事物發展演化歷程而不是事實堆砌,將復雜的概念講述的淺顯易懂,但又直擊本質不失深度。每章最后的引用質量非常好,是深入學習各個主題的絕佳索引。
本書為數據系統的設計、實現、與評價提供了很好的概念框架。讀完並理解本書內容后,讀者可以輕松看破大多數的技術忽悠,與技術磚家撕起來虎虎生風。