大三開學前,反思linux網路程式設計學習方向、方法
大三前感悟
最近,我剛剛看完《UNIX網路程式設計 卷1》,感覺應該要停一下,思考下一步應該學什麼,怎麼學。
目前已經看完《鳥叔linux》和《UNP 卷1》了。在看這兩本大塊頭的時候,心情是比較浮躁的。剛剛開始時我的熱情很高,效率也不低。然而學習一段時間,由於書很厚,加之基礎知識很多,全都是新的知識,記憶負擔有點大。雖然說是可以不用全部記憶的,用時再查即可,然而即使是想要把知識點串起來也很難。新知識也不是一讀就能理解的。這種情況造成自己內心很急燥,想要儘快把書看完,前面章節又不全理解。心情浮躁導致的最嚴重後果是完全沒有心情去看書了,只想躺著….時間並不會等人,壓力並不會自行離開,想要克服這種情況就應該要改變思想,還有想辦法解決大塊頭。(下文學習方法處再提解決方法)
為了追求看書效率,儘快補完linux後臺開發基礎知識,就沒有時間打程式碼了。我指的打程式碼,是指完整的專案程式碼,書本上的程式碼有註釋,很容易讀懂,感覺沒有重複再寫的必要,只是會認真的做筆記。沒有打程式碼,另一方面也導致我看大塊頭時候熱情的下降。每天都是看書看書看書…
不知不覺到了大三,大三下學期就要正式找實習了。很希望能夠去到BAT或者其他好的公司實習。剩下的時間不多,一個學期多一點。最近看了幾篇別人的部落格,感覺他們分享出來的面試時遇到的問題都好難…
即使再困難也沒辦法,只能頂著壓力上。
學習方向
其實學習的方向早就定好了,就是linux後臺開發。最開始程式設計是從做網頁開始的,接觸了html、css、php,主要負責使用php完成後端業務邏輯,資料庫操作等,期間為了配合前端開發,也學習過js、jquery、ajax。然後,隨著見識廣了些,發現php處理的網頁後臺並非是後臺開發,後臺開發應該偏向網路程式設計。對前端也沒有興趣,在大二下學期就慢慢傾向linux及網路程式設計。
決定了這個方向,就要知道要學些什麼東西了。為此我專門看了騰訊校招要求,也在知乎上找相關的東西。很幸運有許多巨人前輩的經驗分享,讓我們這些小白知道路怎麼走。
第一個部落格廢話好多…談談接下來要讀的書單:
linux:《UNP 卷2》
tcp/ip:《tcp/ip 卷1》、《effective tcp/ip》
c++:《effective c++》、《STL原始碼解析》
設計模式:《大話設計模式》
面試演算法備考:《劍指offer》
系統:《深入理解計算機系統》
談談要做的專案:
學習網路程式設計庫。
實現一個簡單的http伺服器。(具體怎麼做還不清楚)
閱讀lighttpd原始碼、muduo原始碼。
做這些事情是有順序的,因為c++書籍閱讀比較困難(之前effective c++和STL原始碼解析都接觸過),所以應該放在unp、tcp/ip的後面。看完unp、tcp/ip之後,就去學習網路程式設計庫。之後,可以一邊實現http伺服器,一邊閱讀c++(實現伺服器為主),最後在閱讀別人的原始碼。
方法
希望可以經常反省,掌握好的方法,提高學習效率。
針對大塊頭的方法:
思想上:套用傅園慧的話,之所以還在掙扎,是因為自己還沒有放棄。
方法上:- 讀大塊頭期間,可以常寫寫部落格,反思下怎樣提高效率。
- 可以刷刷別人的部落格,看有什麼好經驗分享。多點運動。
- 還有最重要的一點是,要意識到,並非整本書幾百頁都需要一字不漏的看,要抓住主線、原理性的內容,對具體實現只粗略做筆記。也只理解自己相關的部分,譬如TCP/UDP的知識。ip、多播、sctp什麼亂七八糟的,有需要時再看吧。
- 再者,別再擔心知識點會串不起來,看書過程中,記錄好筆記,另一方面,看完書後,可以刷部落格看別人總結好的,站在巨人的肩膀上,追求最高效率。
堅持在印象筆記上做筆記,要改變的時,不需要全部知識記錄,而是隻記錄 是什麼,為什麼,缺陷是什麼。
多點運動。
休息好,狀態才會好,才會有學習的節奏。
目標:騰訊後臺實習生,最期待部門是QQ音樂、微信。
真心希望自己在騰訊校招實習生前,能夠完成上面的任務。
2016.08.31
yxc