深圳羅湖網(wǎng)站建設(shè)公司如何推廣網(wǎng)站
本篇是 《極客時間:數(shù)據(jù)結(jié)構(gòu)與算法之美》課程的學(xué)習(xí)筆記和帶有自己的一些思考實(shí)踐。
原文學(xué)習(xí)鏈接如下:https://time.geekbang.org/column/intro/100017301
- 開篇詞 | 從今天起,跨過“數(shù)據(jù)結(jié)構(gòu)與算法”這道坎
- 01 | 為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法?
- 02 | 如何抓住重點(diǎn),系統(tǒng)高效地學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法?
開篇詞 | 從今天起,跨過“數(shù)據(jù)結(jié)構(gòu)與算法”這道坎
邊讀邊練,寫代碼時考慮性能方面的問題,進(jìn)行時間、空間復(fù)雜度分析。
遇到問題,解決之后進(jìn)行思考、研究透徹。
技術(shù)人成長的姿勢:關(guān)注架構(gòu)和技術(shù)趨勢的概念、設(shè)計思想、實(shí)踐為能力。
不管上層衍生出來多少新技術(shù)、新產(chǎn)品,都依賴于底層的基礎(chǔ)知識,所以基礎(chǔ)知識才是核心和本質(zhì)。
基礎(chǔ)知識包括:
- 數(shù)據(jù)結(jié)構(gòu)與算法。
- 計算機(jī)組成原理。
- 操作系統(tǒng)。
- 計算機(jī)網(wǎng)絡(luò)。
- 編譯原理。
- 數(shù)據(jù)庫原理。
基礎(chǔ)知識決定技術(shù)高度和建造技術(shù)大樓的速度和質(zhì)量。
學(xué)習(xí)的過程需要思考和時間,而不是死記硬背,思考怎么用?為什么需要?如何用?設(shè)計思想是什么?應(yīng)用場景有哪些?
所有知識轉(zhuǎn)化為能力的過程,都是邏輯思維的鍛煉和動手能力的實(shí)踐提升,而絕不是死記硬背,機(jī)械的重復(fù)記憶。
對于生活中遇到問題的態(tài)度和處理:
人生路上,我們會遇到很多的坎。跨過去,你就可以成長,跨不過去就是困難和停滯。而在后面很長的一段時間里,你都需要為這個困難買單。對于我們技術(shù)人來說,更是這樣。既然數(shù)據(jù)結(jié)構(gòu)和算法這個坎,我們總歸是要跨過去,為什么不是現(xiàn)在呢?
數(shù)據(jù)結(jié)構(gòu)和算法是一個普通程序員和一個優(yōu)質(zhì)高潛質(zhì)程序員之間永遠(yuǎn)的區(qū)分線。
01 | 為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法?
面試,數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)知識是對長期潛力的考察。
算法思維將實(shí)際問題抽象為數(shù)學(xué)問題,然后用計算機(jī)將數(shù)學(xué)問題用代碼進(jìn)行表示和處理。
學(xué)習(xí)任何知識如果不是為了去應(yīng)用解決實(shí)際問題,那便毫無意義。
多刁難自己,多給自己提問,然后去解決,在解決的過程中就可以學(xué)到更多新知識。簡而言之就是在學(xué)習(xí)方面不要放過自己,隨時挑自己的刺。
即使是直接調(diào)用類庫接口,也至少應(yīng)該知道根據(jù)自己的業(yè)務(wù)應(yīng)該調(diào)用哪個類的哪些接口,更深層次來說,你經(jīng)常調(diào)用的接口難道就沒有興趣了解一些實(shí)現(xiàn)?這些實(shí)現(xiàn)憑什么可以被放在標(biāo)準(zhǔn)庫中使用?實(shí)現(xiàn)的時候有沒有什么缺點(diǎn)?如果讓你實(shí)現(xiàn),你是否實(shí)現(xiàn)的比標(biāo)準(zhǔn)庫好?不斷給自己提問,然后去解決,解決的過程就會學(xué)到更多知識,自己的知識地圖不斷擴(kuò)大,深度越深越能接觸到底層最本質(zhì)的原理,邏輯思維能力和解決問題的能力就會不斷提升。
如果自己經(jīng)常使用的東西,都不知道該如何取用,都不知道實(shí)現(xiàn)和原理,那是多么可怕的事情。
寫出達(dá)到開源水平的框架才是目標(biāo)。
高手之間的競爭是細(xì)節(jié)的競爭:
算法夠不夠優(yōu)化—時間復(fù)雜度,數(shù)據(jù)存取效率是不是夠高—響應(yīng)時間,內(nèi)存是不是足夠節(jié)省—空間復(fù)雜度。
做事情需要有難度梯度,需要思考,在解決問題的過程中提升能力。走出舒適區(qū),不斷鍛煉自己。
即學(xué)即用,即用即學(xué)。
在實(shí)踐中遇到問題去思考,然后帶著問題去學(xué)習(xí),是非常高效的學(xué)習(xí)方法。
學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法的目的:
- 建立時間、空間復(fù)雜度意識,寫出高質(zhì)量的代碼,提升編程能力。
- 能夠設(shè)計基礎(chǔ)架構(gòu)。
- 訓(xùn)練邏輯思維。
- 積攢人生經(jīng)驗(yàn)。
- 長期看來,大腦的思考能力是個人最重要的核心競爭力,算法是為數(shù)不多的能夠有效訓(xùn)練大腦思考能力的途徑之一。
- 獲得工作匯報,實(shí)現(xiàn)價值。
- 完善人生。
掌握了數(shù)據(jù)結(jié)構(gòu)與算法,看待問題的深度,解決問題的角度就會完全不一樣。不只是編程方面,生活中的各個方面,遇到各種問題,會因?yàn)槟愕倪壿嬎季S能力獲得鍛煉和提升而處理的更好。