一直計劃做一個計算機知識體系的系列文章,目的是將自己學過的計算機知識融會貫通,也算是給自己學習計算機以來的一個總結;同時給周圍那些同我一樣不是計算機專業出身的人一些幫助,讓他們能夠少走彎路,通過這一系列的文章來儘快的系統的補充完整自己的技術死角。
自己學習的時候,走過很多彎路,比如在不懂彙編的時候竟然拿一本編譯原理在看,這種不符合學習順序的事情希望通過這系列文章不要繼續發生在更多人身上。我會結合自己的學習經驗和工作經驗來講我所知道的東西通過這一系列的文章來表達出來,將自己認為最有效的學習順序以及學習內容告訴那些需要的人,希望能夠幫助周圍的朋友同時以及文章前面的你少走一些彎路。如果你自認為計算機知識掌握的已經很全面了,那這些文章不適合你,還請飄過。當然 你也可以“溫故而知新”。
我認為每一名程式設計師,無論是php還是java c,都應該對 計算機知識進行系統的學習,縱然不能做到精通,但一定要做到熟知。我認為有如下方面
1.假如我們就根本不知道一些知識存在,那我們永遠沒有辦法將其納入我們的思維中來。舉個最簡單的例子,假如我們不瞭解資料結構,我們就不會去思考該選擇哪種資料結構,使用連結串列還是用陣列,因為我們不知道資料結構的存在。所以為了將系統設計的更合理更健壯,我們也應該熟悉基礎知識體系。
2.在我們研發過程中出現問題時,假如我們的知識體系不完善,我們就沒有辦法去想到解決方案,甚至無法確定問題的存在。比如 當一個php-cgi佔用cpu很高,假如我們不知道strace可以檢視程式中的系統呼叫,我們除了重啟cgi,別的什麼都幹不了。所以為了我們能夠更全面的解決問題,我們也應該系統的去了解這些知識。
3.在我們學習新東西的時候,如果我們的知識體系很完善,我們學習起來會更容易會更快。比如 我們學習memcache redis,其實就是一個管理記憶體分配排程儲存的程式,不同之處就是redis可以持久化到硬碟上。當然這是原理 細節肯定很多,這裡要說的是完善的知識體系會幫助我們更快的學習和掌握新技術。
4.如果我們打算做程式設計師做研發,那我們就應該有一個很完善的技術知識體系,難道我們做了好多年,我們連那些應屆生都知道的東西我們竟然不知道,那就太慘了。所以為了對得起自己程式設計師的這個職業,我們也應該去系統的學習。
5.如果你的知識夠全面,考慮問題更周全,解決問題更迅速,學習新知識更快捷,能常人之不能,那麼你的薪資待遇也應該是不錯的。所以為了你能夠活的更好,你也應該好好去學習。藝多不壓身,這個社會上沒有慈善組織,我們只有憑藉我們自己的技能拿到更高的待遇,從而過得更好,獲得幸福。
整個系列文章會分為三個階段,基礎篇、進階篇、高階篇。
基礎篇:包括 計算機組成原理、計算機網路及應用、組合語言、編譯原理、作業系統、資料結構、c語言、c++ 等基礎知識、 linux作業系統。通過計算機組成原理了解計算機硬體的作用,通過計算機網路瞭解各種網路協議的原理及應用,通過組合語言瞭解cpu的工作運算處理原理以及為編譯原理的學習打點基礎,通過對作業系統的學習來了解硬體資源分配、程式排程以及與程式開發的關係,知道當我們按下一個鍵的時候具體發生了什麼,瞭解顯示卡cpu記憶體硬碟工作關係。通過c、c++來學習資料結構,幫助我們更好的理解資料結構,也為我們開發或學習開原始碼提供基礎,通過學習linux系統管理來開始學習偉大的linux。
基礎篇我們所應該達到的目標應該是對整個計算機基礎知識體系有了一個很全面的瞭解,現階段瞭解熟知就可以。這為我們以後的學習和工作打下了良好的基礎,其實新技術新功能都是在這些基礎上不斷的組合出來的,我們要做到以不變應萬變,這才是根基,這才是最重要的東西。我們應該好好掌握。
進階篇:這裡面應該是一些對基礎篇一些具體的應用去做一些剖析,以及工作經驗的一些總結,比如 mysql資料庫管理以及優化、nginx的應用、php的應用以及優化、vim編輯器的使用、svn git 等版本控制的使用,shell指令碼的編寫。
進階篇應是一些總結和應用,在我們平時工作中用到的遇到的一些東西的總結和應用,對我們平時的工作應該有所幫助。
高階篇:這裡面對一些技術做一些原始碼分析,比如php原始碼的分析,nginx原始碼的分析,sphinx搜尋引擎的原始碼分析,這裡面幾乎要用到基礎篇的所有知識,一些原理還有一些語言 如彙編這種低階語言 c、c++高階語言來幫我們閱讀以及分析這些優秀開源產品的原始碼。
高階篇對一些比較成熟的產品進行了原始碼解析,能夠在幫助我們熟悉這些開源產品的功能的同時,又能增加我們對基礎知識的鞏固以及應用,也學習到了那些高手們的開發經驗。這個階段後我們開發一些底層的東西 如檔案系統 記憶體管理系統 開發這些底層應用應該是沒有問題的了。
文章序號排列:比如“基礎篇的第一章第一節”的文章序號就是1-1.1 “進階篇的第二章第三節”的文章序號就是2-2.3 “高階篇的第8張第一節”的文章序號就是3-3.1。
這件事情一直一拖再拖,寫這篇文章第一是為這個系列寫個前言正式開始實施這個計劃,第二也是給自己一些壓力,有壓力才有動力,希望能夠儘快的完成這件事情。