天天看點

狂補計算機基礎知識,讓我上了瘾,想要盡快和同齡人拉開差距,必須這麼幹,才有戲!!!!

CSDN 的小夥伴們,大家好,我是沉默王二。最近我在狂補計算機基礎知識,感覺有點上瘾!以前覺得很枯燥的知識,現在竟然有點香!不知道為什麼。

我算是科班出身,大學的專業就是計算機網絡,不過老實說,在實際的開發中,大學的很多課程,要麼“用處”不大,要麼可以換個方式,更高效的學習。

其中的原因,一方面是實際開發更關注知識的“實用”,另外一方面,大學的教學确實和産業有些脫鈎。是以我就從實際應用的角度出發,重新來梳理一下計算機基礎方面的知識。

01、資料結構

毫無疑問,資料結構對一名程式員來說非常重要,還是那句話程式=資料結構+算法,這種說法無論放在什麼時候都是成立的。

大部分的資料結構課程,關注的重點都在如何從數學上實作一個資料結構,但在實際開發中,大部分主流語言都已經内置了常見的資料結構,比如說 Java。也就是說,對于大部分程式員來說,實際開發中,很難有需求要從零開始實作一個資料結構。是以我們隻需要做到下面幾點。

1、熟悉常見資料結構的概念,比如說數組、堆棧、連結清單、哈希表等。

2、了解常用資料結構之間的差異,比如說 ArrayList 和 LinkedList,我在之前的文章中有詳細說明過,可以點選連結去檢視下。

3、關注常用資料結構的外圍算法,比如說如何對 List 和 Map 進行查找。

4、關注資料結構使用中容易出錯的地方,比如說線程是否安全等。

B 站上浙江大學的一個資料結構的課還不錯,很系統很經典,适合小白入門。

視訊位址如下。

https://www.bilibili.com/video/BV1JW411i731

02、算法

以我接觸的領域來說,大部分普通的業務系統都不會涉及到太複雜的算法,是以我沒有在算法上投入過多時間。

但如果你在一些特殊的領域,如果算法跟不上,可以說是“寸步難行”,比如說圖形處理領域,無論是圖像的變化還是增強,無一例外都要用到矩陣變換,是以就必然涉及到線性代數的内容,再往深處學的話,必然會牽扯出更多的知識。

是以學習算法要視情況而定,如果想走算法崗,那麼《算法第4版》、《算法導論》、《數學之美》、《程式設計珠玑》、《劍指offer》這些書都要耐着性子啃一啃。電子書可以在下面這個 GitHub 倉庫上找得到。

https://github.com/itwanger/JavaBooks

順帶再推薦一份阿裡大佬的算法刷題筆記吧,在 GitHub 上已經有 13.3k 的 star 了。裡面的每道題都寫了解題思路,是通過 GO 語言實作的,每道題都 runtime beats 100% 了。

線上閱讀位址如下所示:

https://books.halfrost.com/leetcode/

03、設計模式

我認為設計模式是國中級程式員邁向進階程式員的必經之路。有不少程式員,前期沖勁十足,但後繼乏力,都是吃了設計模式的虧。

在工作的前幾年,大部分程式員都處于熟悉程式設計語言的階段,也就是處于“技”的階段,随後就要進入“術”的階段了。在程式設計領域,“術”的典型代表就是“設計模式”。

我自己推薦的一本書是《設計模式之禅》,代碼是用 Java 實作的,讀起來比較輕松,也更符合國内程式員的閱讀習慣。

另外就是我上次推薦的 Refactoring Guru 網站,裡面附帶的圖檔非常精美,閱讀起來的視覺效果會比較豐富。

https://refactoring.guru

離線版可以通過下面這個連結下載下傳(無套路,不需要解壓密碼):

設計模式,牛逼!

04、軟體工程

實作一個軟體系統的過程,不僅隻有編碼,還涉及到項目安排,團隊協調等一系列非技術因素,如果想從一名程式員走向管理崗,成為 team leader 或者開發經理,軟體工程方面的知識就必須得跟得上。

這裡我推薦幾本不錯的經典書,其中有一本鄒欣老師的書,他剛出任 CSDN 副總裁,希望 CSDN 能在他的入駐後變得更好一些。他這本書的書名叫做《建構之法》,我看過,還是很不錯的。

另外還有兩本必讀,就是《人月神話》和《人件》,雖然有了歲月的痕迹,但依然值得深讀。當然,關于軟體工程,最好的學習方法是觀察,觀察你所在的團隊是如何處理工程問題的,然後思考,最終形成自己的方法觀。

05、架構 & 設計

要想寫出一個好而美的程式,需要經過三個階段。

第一階段,有紮實的基本功,簡單點說,就是要做到文法熟練、架構熟練,成為一名能夠完成開發任務的“碼農”。

第二階段,從“碼農”到“工程師”,在局部上,不僅要能夠實作功能,還能關注功能之外的次元,比如健壯性、低耦合、可擴充等名額。

第三階段,從“工程師”到“架構師”,不僅在局部上追求一個子產品的好壞,而且還要從整個系統層面去掌控,合理安排資源的優先級,保證整個系統不會出現腐敗等等。

要想成為一名優秀的架構師,除了自身的努力,也需要一點點運氣,但靠讀書可能不夠,但這些經典書籍還是要閱讀的,能給日常的工作帶來巨大的幫助。

《代碼大全》

《重構:改善既有代碼的設計》

《設計原本》

《大型網站技術架構核心原理與案例分析》

最後

技術這條道路并不好走,不僅要學習很多新技術、新架構,還要及時補充必要的計算機基礎知識,底子硬的同時還要學會擁抱變化。

學習的過程,就好像登山一樣,大概有 80% 的人在這個過程中會掉隊。那麼請相信我,隻要目标明确,努力加上堅持,再加上一點點好運氣,你就能登頂!