談服務器端網絡編程學習

這裏主要說一下本身看的書和一些心得體會,把本身的學習路線梳理一下,也是做爲本身這段時間的學習總結。算法

由於從事的都是服務器端開發和學習,因此本文內容主要在該範圍內,假定讀者通過了系統的CS學習(DS、OS、組成原理等核心課程)。編程

 

Firstvim

個人學習書籍路線參考以下內容:服務器

 

 1 A:《Linux鳥哥私房菜》(第三版);
 2 
 3 B:《Linux程序設計》(第四版 中文版);
 4 
 5 C:《TCP/IP詳解v1》(初版 英文版);
 6 
 7 D:C/C++語言相關;
 8 
 9 E:《UNP v1》(第三版 中文版);
10 
11 F:《APUE》(第三版 中文版),《UNP v2》(第二版 中文版);

這些書沒有很是嚴格的前後次序,須要根據本身的功力和實際狀況而定,好比說剛接觸Linux不久就去看《APUE》,估計被虐的要哭啦;若是沒有實際的操做環境或者應用環境,就去搞內核方面的書,那你基本上是浪費時間,等等,這都是我走過的一些彎路,浪費了不少寶貴時間,但願你們引覺得戒,把時間用到刀刃上。網絡

 

Second數據結構

下面分門別類的說說讀這些書的心得體會:多線程

(1)系統入門必備(《鳥哥私房菜》)架構

說實話,這是業內公認的絕對入門書籍,做者是臺灣的;這本書基本上是他一步步學習和管理Linux系統的手冊,因此這本書適合從無到有(基本對Linux零基礎)的學習Linux系統(基於CentOS),基本算是手把手的教吧,我的認爲它比較適合徹底菜鳥級別的入門學習,或者入門級別的參考手冊,好比Linux安裝,配置等等一些最基本的Linux操做,固然也包括一些系統級別的介紹、工具的使用等等;另外,這本書是基於CentOS的,該系統主要是作服務器端操做系統用的。數據結構和算法

優勢:入門級別,門檻低; 缺點:做者稍囉嗦,內容多且點到爲止; 編程語言

個人用途:入門是大體看了一下重點章節,操做一些,後來就當配置參考手冊、工具(awk,vim等)的快速參考資料

PS:該類別的其餘菜鳥書籍沒看過,不作評論

 

(2)編程入門(《Linux程序設計》)

這本書知名度並不高,寫的也通常吧,Linux下的程序設計用到的方法、工具、函數等等都涉及到了,比《鳥哥私房菜》前進了一步;

這裏的編程入門並非學過數據結構和算法、會點編程語言就OK啦,而是Linux環境下的編程、調試,這本書基本涵蓋了Linux程序設計(不止是服務器端編程)涉及到的大部份內容;大部分章節我都看過,後面的圖形化那部分我沒看。

同類別同層次的書我認爲比較好的一本是《Unix-Linux編程實踐教程》,這本書好像只有一版,講的東西比上面這本更深刻點,更多的是從系統的角度去看,因此涉及到了一些操做系統、組成原理方面的內容,並引領讀者怎麼一步步編寫一些系統程序的實現(好比ls命令),還算比較好懂;另外,這本書是好久以前寫的(不少函數沒有返回值),在調試的時候會遇到一些問題;這本書我也只是瀏覽了幾章,沒細看。

優勢:開發方面的東西都涉及到了,也容易理解,讓你知道有這麼個內容; 缺點:編程能力不會有太大提高,例子的實踐價值不高。

PS:編程能力好一點的建議用《Linux程序設計》學習工做中會用到的基本技術,差一點的用《Unix-Linux編程實踐教程》提升程序設計能力。

 

(3)協議(《TCP/IP詳解》v1)

大神Stevens的六部大做之一;既然是服務器端編程,網絡協議方面的東西仍是要懂一點,主要是TCP、UDP、Http這三個協議吧,固然在校的最好把《TCP/IP詳解》的第一卷給啃了,工做之餘的學習就看對應的章節就能夠啦(我是這麼幹的O(∩_∩)O哈!),其餘的協議須要的時候再去搞就能夠啦。有一點須要注意,這本書初版出版很是早,可是重點的協議問題都講的很是清楚,通常的開發問題足夠了;11年好像出了第二版,可是聽說修訂版做者把經典給糟蹋啦。

讀這本書可能須要一點點網絡基礎,若是感受比較難懂的能夠先學習一下《圖解TCP/IP》,小日本寫的,適合零基礎瞭解,也不厚,三百頁的樣子,我從頭至尾看了一遍。

優勢:太多,你們知道的,用過的都說好; 缺點:得有點英語基礎,讀起來比較費時;有些狀況的討論在今天已經無心義,而新出現的問題可能沒有相應的講解部分。

PS:內容多,深刻淺出,須要本身把握重點;另外好像有本《Effective TCP/IP》,網上有人推薦,專一於解決常見問題,我還沒讀過。

 

(4)C/C++(語言相關)

這部分是基本功,相關的帖子和書都比較多,網上的帖子大把的是,能夠先了解下,這裏只說基礎;

C語言基礎:《The C Programming Language》 

C++的基礎書籍有兩本:《C++ Primer》 and 《The C++ Programming Language》,業內公認;

更深刻的就看你本身的功力和想法啦,我的沒什麼參考性;還有,要是推薦C++理論方面(不包括工程應用方面)的書,國內的只有估計就侯捷的啦,however,這位大神是臺灣的。

PS:搞C++愛莫能助,看一下《深刻理解C++對象模型》和陳碩的《Linux多線程服務器編程》你就知道我啥意思啦;學C++好久,可是準備放棄,由於我以爲更多精力應該放在系統業務邏輯、架構自己(服務器端的開發語言有不少,C、Go、Python等等),而不是反覆琢磨一門編程語言的模型和特性上;專心作一件事,若是工具自己特性我都很難搞定,我會選擇更合適的工具,而不是反覆練習這個工具的使用,人各有志吧。

 

(5)網絡編程(《Unix Network Programming v1》 3rd)

 Stevens的六部大做之一,網絡編程方面的常見問題這本書都講到了,甚至網上討論概念問題的時候,都是以此書爲基準,可見其經典程度(搞得後輩們都不敢寫這方面的書啦O(∩_∩)O哈!)。重點是這本書的前三分之一,和後面的個別章節;第一遍沒怎麼看懂,硬着頭皮看完,如今在看第二遍,細細琢磨以後豁然開朗的感受,可以感受到明顯的提高,這feel倍爽。感受這本書是這樣的,第一遍可能帶你入門,再細讀第二遍甚至是第三遍就會提升很大,而後就能夠成爲案頭必備啦。

優勢:同(3) 缺點:沒有具體應用場景,要靠你本身去思考其應用

PS:我是看的中文第三版,翻譯的還行,具體參考亞馬遜書評、豆瓣或者知乎評論。

(6)系統編程

《Advanced Programming in the UNIX Environment》 3rd

《Unix Network Programming v2》 2nd

《APUE》其實並不適合入門,比較適合初級到中級提高功力用的,因此若是沒有一些基礎,不要一開始就去啃這本書;有了基礎以後去撿重點章節讀一下,重中之重是文件系統和文件IO、進程屬性和進程控制,我也是撿重點的章節先看看,涉及到不懂的再去看相應的章節,並且後面的打印機程序很不錯,能把前面的不少重點串起來,至關有用啊(要是《UNP》也這麼幹該多好,唉)。另外,《APUE》第二版據傳翻譯的比較爛,搞的你們都去看英文版,如今的第三版翻譯的還不錯,我是看的這版,沒什麼問題,建議看第三版中文。

《UNP v2》說的是各類IPC機制是怎麼實現的,以及一些應用和常見問題,我看了一遍,可是後來基本上也忘了,只是須要的時候去看看。

優勢:同(3); 缺點:《APUE》門檻較高

PS:今年新出的《Linux/Unix系統編程手冊》,德國人寫的,聽說要超越《APUE》,網上沒有完整中文電子版的,能找到的中文電子版我都看了,甚至瀏覽了下亞馬遜買的紙質書,瀏覽了幾章,後來又退了。該書基本上是徹底面向Linux的,分了60多個章節,感受應該屬因而系統相關比較入門級別的書,適合基礎不太好的童鞋;考慮到排版、紙質、寫書風格問題(畢竟不想在兩種風格之間轉換),我最終選的仍是Stevens的《APUE》,反正既然能看懂經典,仍是去讀經典吧。

 

Last

上面就是本身這一年左右看的書,都是我認爲比較核心的書,讀這些書本身能感受到功力的明顯提高,其餘的零敲碎打的、讀了也感受不到進步的一些書就沒列出來。

另外,這些經典是用來閱讀、品味和收藏的,儘可能買正版吧,看着也舒服;我還把封面沾了一層透明膠,O(∩_∩)O,不怕磨破啦。

最後贈汝一句:一本經典讀十遍,遠賽過十本爛書讀一遍(多麼痛的領悟),各位,且讀且珍惜!

相關文章
相關標籤/搜索