C++服務器開發學習進階路線和資料

C++服務器開發完整學習路線(含免費學習資料下載地址)

相信大部分同學剛畢業或者想轉行做c++服務端開發的時候都很迷茫不知道從哪裏開始學習,這篇文章的目的就是爲了幫助更多想入行或者想轉行做c++服務器的新人避免走更多的彎路,最終能夠順利的掌握相關知識找到心儀的工作。

所有資料可以加羣:783153655 (一線互聯網架構交流羣)獲取。

一. 基礎階段  

  1. c/c++編程語言

  2. linux基礎

  3. 數據結構與算法

  4. 設計模式

  5. 腳本語言(可選)

二. 入門階段  

  1. linux系統編程

  2. linux網絡編程

三. 進階階段  

  1. 數據庫mysql

  2. 分佈式緩存redis

  3. 網絡庫

四. 項目實踐階段  

  1. 編寫簡單FTP服務器

五. 高級階段(可選)  

  1. nginx

  2. zookeeper

  3. 消息隊列

  4. skynet

  5. boost  

  6. 負載均衡    

  7. 容器  

  8. rpc  

  9. 微服務  
    ……

一. 基礎階段

1. c/c++編程語言

  • c語言必備的入門書籍就是這本《C程序設計語言》  

    C程序設計語言(原書第2版·新版 典藏版)

 

  • 另外推薦一本比較經典的c語言書籍,可以選擇性看一下《C陷阱與缺陷》  

     

     

  • 既然是C++的學習路線,那麼《C++ Primer》這本書肯定是必學不可的   

    學了c++基礎後,爲了寫出更高效的c++代碼,那麼就須要看這本書《Effective C++》  


  • 個人認爲STL的原理非常重要,我推薦《STL源代碼剖析》  


  • 另外推薦一本比較經典的c++書籍,可以選擇性看一下《深度探索C++對象模型》  

  •  

2. linux基礎

  • linux系統安裝和命令、工具使用  
    c++服務器程序基本都是運行在linux系統下面,所以對於linux的系統安裝、命令工具等的使用要學會。  
    推薦《鳥哥的Linux私房菜-基礎學習篇》  


    makefile編程    

  • 在軟件開發中,make通常被視爲一種軟件構建工具。該工具主要經由讀取一種名爲“makefile”或“Makefile”的文件來實現軟件的自動化建構。它會通過一種被稱之爲“target”概念來檢查相關文件之間的依賴關係,這種依賴關係的檢查系統非常簡單,主要通過對比文件的修改時間來實現。在大多數情況下,我們主要用它來編譯源代碼,生成結果代碼,然後把結果代碼連接起來生成可執行文件或者庫文件。  
    推薦《跟我一起學makefile》    
     

3. 數據結構與算法

  • 入門推薦《大話數據結構》這本書,它的最大的特點是把理論講得很有趣,不枯燥。而且每個數據結構和算法,作者都結合了生活中的例子,能讓你有非常直觀的感受。雖然這本書有 400 頁,但是花兩天時間讀完應該是沒問題的。所以,如果你之前完全不懂數據結構和算法,可以先從這本書看起。  

 

  • 你也可以學習《數據結構和算法分析》。國內外很多大學都拿它當作教材。因爲這本書非常系統、全面、嚴謹,而且又不是特別難,適合對數據結構和算法有些基本瞭解,並且掌握了至少一門編程語言的同學。而且,這個作者也很用心,他用了三種語言,寫了三個版本,分別是:《數據結構與算法分析 : C 語言描述》、《數據結構與算法分析 : C++ 描述》、《數據結構與算法分析 : Java 語言描述》。  

數據結構與算法分析:C語言描述(原書第2版)

 

4. 設計模式

設計模式是一套被反覆使用、多數人知曉的、經過分類的、代碼設計經驗的總結。  
使用設計模式的目的:爲了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。 設計模式使代碼編寫真正工程化;設計模式是軟件工程的基石脈絡,如同大廈的結構一樣。  

 

5. 腳本語言(可選)

做c++開發很多情況下會和其他腳本語言做混合編程,特別是遊戲公司以c++配合lua腳本編程作爲主流,也有一些用python, 所以建議大家學一下這兩門腳本語言

  • lua書籍推薦,包括入門書籍《lua程序設計》和深入原理書籍《lua設計與實現》  

     

 

  • python書籍推薦 《python核心編程》  

     

二. 入門階段

1. linux系統編程

linux下的編程你首先要學會文件和目錄、標準I/O庫、系統數據文件和信息、進程環境、進程控制、進程關係、信號、線程、線程控制、守護進程、各種I/O、進程間通信、網絡IPC等方面的內容。  
推薦《unix環境高級編程》   

 

 

2. linux網絡編程

網絡編程可以編寫網絡通訊程序,比如聊天程序、數據傳輸程序、文件傳輸程序等到;可以讓你對網絡通訊有更深的理解,當你遇到網絡通訊方面的問題時,會有很深入的分析;爲學習湧現很多分佈式應用系統打下堅實的基礎。  
推薦《unix網絡編程》(共兩卷)  

 

三. 進階階段

1. 數據庫mysql

  • 入門推薦《MySQL必知必會》這是最好的數據庫入門書,在Amazon上長期排在數據庫銷售榜首,建議想快速瞭解數據庫原理和MySQL的新手閱讀。快餐性質,簡潔明快,小開本,而且很薄,比較好讀。  

     

     

  • 怎麼說,每個行業都有幾本被翻來翻去的“街書”,而《mysql技術內幕》就是MySQL的“街書”。從源代碼的角度深度解析了InnoDB的體系結構、實現原理、工作機制,並給出了大量最佳實踐,能幫助你係統而深入地掌握InnoDB


 

  • 《高性能mysql》作者推薦的工具、實戰案例及經驗過的診斷技術,可大大提高性能急救技能,以及加深對MySQL本質的理解。而且本書將數據庫結構的客觀方面納入思考,此外還增補了MySQL高可用性及雲特性  

 

 

2. 分佈式緩存redis

  • 《Redis 設計與實現》一書全面而完整地講解了 Redis 的內部運行機制, 對 Redis 的大多數單機功能以及所有多機功能的實現原理進行了介紹, 展示了這些功能的核心數據結構以及關鍵的算法思想。 通過閱讀本書, 讀者可以快速、有效地瞭解 Redis 的內部構造以及運作機制, 從而學會如何更高效地使用 Redis。  


    《redis實戰》本書深入淺出地介紹了Redis的5種數據類型,並通過多個實用示例展示了Redis的用法。除此之外,書中還講述了Redis的優化方法以及擴展方法。  

  •  

     

3. 網絡庫

linux c/c++網絡庫比較多,有boost.asio、libevent、libev、libuv、muduo、ace等, 建議找一個代碼比較少夠精簡的來反覆學習,琢磨內部原理,有效提升網絡編程能力。我自己反覆研究了muduo網絡庫幾遍收穫不少,你們可以選libevent、libev、libuv、muduo中的一個學習即可,其中libev和muduo最爲精簡,容易學習。

  • libevent學習資源  
    Libevent源碼分析專欄:https://blog.csdn.net/luotuo44/column/info/libevent-src/2     
    libevent-book

  • muduo學習資源     


    Linux多線程服務端編程:使用muduo C++網絡庫
    muduo使用手冊

     

四. 項目實踐階段

1. 編寫簡單FTP服務器

2. 加羣 783153655

五. 高級階段(可選)

1. nginx

  • Nginx是一款自由的、開源的、高性能的HTTP服務器和反向代理服務器;同時也是一個IMAP、POP3、SMTP代理服務器;Nginx可以作爲一個HTTP服務器進行網站的發佈處理,另外Nginx可以作爲反向代理進行負載均衡的實現。  
    推薦書籍《深入理解nginx模塊開發與架構解析》  


     

2. zookeeper

  • ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。  

     


     

3. 消息隊列

  • 當前使用較多的消息隊列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等, 我推薦兩本kafka的書籍, 入門書籍《kafka權威指南》和深入的書籍 《Kafka技術內幕:圖文詳解Kafka源碼設計與實現》  

  •  

     

4. skynet

  • Skynet是一個基於C跟lua的開源服務端併發框架, 現在很多遊戲公司都在用它,特別是中小型的公司,棋牌公司,越來越多公司採用, 想往遊戲方面發展建議認真學一下原理。  
    skynet wiki:https://github.com/cloudwu/skynet/wiki    
    skynet作者博客:https://blog.codingnow.com/eo/skynet/    
    skynet框架應用文章:https://blog.csdn.net/qq769651718/article/category/74802075.

未完待續

   MongoDB

memcache等等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章