一、書籍筆記索引
下面是到目前已發出的各模塊書籍學習筆記的索引。
C/C++
算法
計算機網絡
數據庫
系統編程
網絡編程
Python
Linux
其他工具
補充
還有一些已整理但比較零碎的筆記沒有發到博客上,經過梳理后后續都會補充上來。
二、各知識模塊及學習路線
下面是學習時參照的學習路線,在實際學習過程中與該路線有所出入。
1、C++
- C++ Primer
- 深入探索 c++ 對象模型
- STL 源碼剖析
- Effective C++、More Effective C++
2、算法
- 大話數據結構
- 算法第4版
- 劍指offer + 算法導論
3、操作系統
- 現代操作系統
4、計算機網絡
- 《計算機網絡》第七版 和 《計算機網絡:自頂向下方法》一起學,比較一下。
- 網絡是怎樣連接的
- 圖解HTTP
- 《TCP/IP詳解卷1:協議》
5、數據庫
- 看 W3Schools 的 SQL 教程,掌握基礎語法,會編寫 SQL 語句
- 看書《MySQL必知必會》, 邊學邊用,動手實操。
- 看書《數據庫系統概念》
- 《高性能MySQL(第3版)》、《深入理解MySQL》、Mysql官網等。豐富的經驗
6、系統編程
- 深入理解計算機系統
- 程序員的自我修養
7、網絡編程
- TCP/IP網絡編程
- Linux高性能服務器編程
- Linux多線程服務器編程
- Unix網絡編程
- Unix環境高級編程
三、學習感悟
因為學習后如果不及時整理和復習很快就會忘記,隔一段時間后就好像沒看一樣,會感覺自己白看了,做了無用功。所以在開始學習這一系列計算機知識后,我努力讓自己靜下心來做筆記。
一般我會在看完某一章后盡快做一下這章的筆記,有時可能會連續看了許多章后再做,但盡量避免整理筆記的時間和學習的時間相隔太久。
我在整理筆記時所考慮的是:在筆記記完后,當我需要查找某個知識點時,不需要到書中去找,只需查看筆記即可找到相關知識點,並且要能在筆記中快速找到並迅速理解。因此在整理筆記時力求全面與簡潔。
在此基礎上,我所做的筆記中,已整理的內容是對書中內容的提煉,包括了我在學習時所認為的書中所有有用的知識點,因此每章的筆記內容都比較多。
對於這些經典的計算機書籍來說,書中有用的知識點太多了,因此做筆記的過程是很慢的。在我學習整理的過程中,平均來看,學習一章內容和整理一章內容的時間比大概在 1:1.5 左右,也就是整理筆記的時間實際上要比學習一遍還要更久。
但是對我來說,整理筆記是十分有用並且必須要做的事情。一方面,整理筆記相當於對學習的內容的一次復習,並且因為整理筆記時需要篩選有用內容並對其盡量提煉、簡化,所以相比於第一遍看書學習,整理筆記也可以看作是更為細致的第二遍的學習。另一方面,在日后需要查找書中某個知識點時,筆記可以代替原書成為查找知識點的參考。而因為筆記是自己整理的,所以相比原書,對筆記中的知識點進行查找和理解的速度都更快。
但是並非所有的書都要全部整理成筆記,不同的書需要整理的詳細程度也不同。如我對《鳥哥的Linux私房菜》的整理內容較為簡略,因為這本書中對 Linux 的講解十分詳細,但並非所有知識都常用,並且其整理成本非常高,而整理的收效又不大。因此我只選擇其中比較重要、常用的知識進行了整理。