《C++新經典:Linux C++通信架構實戰》是清華大學出版社於2020年出版的書籍。
基本介紹
- 書名:C++新經典:Linux C++通信架構實戰
- 作者:王健偉
- 出版社:清華大學出版社
- 出版時間:2020年11月1日
- 定價:99 元
- ISBN:9787302555292
- 印刷日期:2020年10月30日
- 印次:1-1
內容簡介,圖書目錄,
內容簡介
這是一本Linux下C++通信架構實戰書籍,針對於C/C++語言已經掌握的很熟並希望進一步深造以將來用C++在Linux下從事網路通信領域/網路伺服器的開發和架構工作。包括如下內容:(1)項目本身是一個極完整的多執行緒高並發的伺服器程式;(2)按照包頭包體格式正確的接收客戶端傳送過來的數據包, 完美解決收包時的數據粘包問題;(3)根據收到的包的不同來執行不同的業務處理邏輯;(4)把業務處理產生的結果數據包正確返回給客戶端。
圖書目錄
第1章課程介紹
1.1本書內容詳細介紹
1.1.1內容總述
1.1.2為什麼選擇Linux作業系統平台
1.1.3講解規劃和學習建議
1.1.4書籍推薦和讀書須知
1.2環境搭建詳細介紹
1.2.1Windows下的Visual Studio 2019安裝
1.2.2準備一個Word文檔
1.2.3Windows下的虛擬機安裝
1.2.4在虛擬機中安裝Linux作業系統
1.2.5配置固定IP位址
1.2.6配置遠程連線
1.2.7安裝編譯工具gcc、g++等
1.2.8共享一個操作目錄
第2章進入Nginx之門
2.1Nginx簡介、選擇理由、安裝和使用
2.1.1Nginx簡介
2.1.2為什麼選擇Nginx
2.1.3安裝Nginx,搭建Web伺服器
2.1.4Nginx的啟動和簡單使用
2.2Nginx整體結構、進程模型
2.2.1Nginx的整體結構
2.2.2Nginx進程模型細說
第3章Nginx開發初步
3.1學習Nginx源碼前的準備工作
3.1.1Nginx源碼總述
3.1.2Nginx源碼查看工具
3.1.3Nginx源碼入口函式定位
3.1.4創建一個自己的Linux下的C語言程式
3.2Nginx源碼學法,終端和進程的關係
3.2.1Nginx源碼學習方法
3.2.2終端和進程的關係
3.3信號的概念、認識、處理動作
3.3.1信號的基本概念
3.3.2通過kill命令認識一些信號
3.3.3進程的狀態
3.3.4常用信號列舉
3.3.5信號處理的相關動作
3.4UNIX/Linux體系結構、信號編程初步
3.4.1UNIX/Linux作業系統體系結構
3.4.2signal函式範例
3.5信號編程進階、sigprocmask範例
3.5.1信號集(信號禁止字)
3.5.2信號相關函式
3.5.3sigprocmask等信號函式範例演示
3.6fork函式詳解、範例演示
3.6.1簡單認識fork函式
3.6.2進一步認識fork函式
3.6.3完善fork代碼
3.6.4一個和fork執行有關的邏輯判斷
3.6.5fork失敗的可能原因
3.7守護進程詳解、範例演示
3.7.1普通進程運行觀察
3.7.2守護進程基本概念
3.7.3守護進程編寫規則
3.7.4守護進程不會收到的信號
3.7.5守護進程和後台進程的區別
第4章伺服器程式框架初步
4.1伺服器程式目錄規劃、makefile編寫
4.1.1信號高級認識範例
4.1.2伺服器架構初步
4.2讀配置檔案、查泄漏、設定標題實戰
4.2.1基礎設施之配置檔案讀取
4.2.2記憶體泄漏的檢查工具
4.2.3設定進程名稱(標題)
4.3日誌列印實戰,最佳化main函式調用順序
4.3.1基礎設施之日誌列印實戰代碼一
4.3.2設定時區
4.3.3基礎設施之日誌列印實戰代碼二
4.3.4理順main函式中代碼執行順序
4.4信號、子進程實戰,檔案I/O詳談
4.4.1信號功能實戰
4.4.2Nginx中創建worker子進程
4.4.3日誌輸出重要信息講解
4.4.4write函式思考
4.4.5掉電導致write寫入的數據丟失破解法
4.4.6標準I/O庫
4.5守護進程及信號處理實戰
4.5.1守護進程功能的實現
4.5.2信號處理函式的進一步完善(避免殭屍子進程)
第5章網路通信實戰
5.1C/S、TCP/IP妙趣橫生、惟妙惟肖談
5.1.1客戶端與伺服器端
5.1.2網路模型
5.1.3最簡單的客戶端和伺服器程式實現代碼
5.1.4TCP和UDP的區別
5.2TCP三次握手詳析,telnet、Wireshark示範
5.2.1TCP連線的三次握手
5.2.2telnet工具使用介紹
5.2.3Wireshark監視數據包
5.2.4TCP斷開的四次揮手
5.3TCP狀態轉換,TIME_WAIT詳解,SO_REUSEADDR
5.3.1TCP狀態轉換
5.3.2TIME_WAIT狀態
5.3.3SO_REUSEADDR選項
5.4listen佇列剖析、阻塞與非阻塞、同步與異步
5.4.1listen佇列剖析
5.4.2阻塞與非阻塞I/O
5.4.3異步與同步I/O
5.5監聽連線埠實戰、epoll介紹及原理詳析
5.5.1監聽連線埠
5.5.2epoll技術簡介
5.5.3epoll原理與函式介紹
5.6通信代碼精粹之epoll函式實戰1
5.6.1提醒注意
5.6.2配置檔案的修改
5.6.3epoll函式實戰
5.7通信代碼精粹之epoll函式實戰2
5.7.1ngx_epoll_process_events函式調用位置
5.7.2ngx_epoll_process_events函式內容
5.7.3ngx_event_accept函式內容
5.7.4總結和測試
5.7.5事件驅動總結
5.7.6一道騰訊後台開發的面試題
5.8ET、LT深釋,伺服器設計、粘包解決
5.8.1ET、LT模式深入分析及測試
5.8.2本項目的伺服器設計
5.9通信代碼精粹之收包、解包實戰
5.9.1收包分析及包頭結構定義
5.9.2收包狀態宏定義
5.9.3收包實戰代碼
5.9.4測試伺服器收包避免推諉扯皮
第6章伺服器業務邏輯處理框架
6.1業務邏輯之多執行緒、執行緒池實戰
6.1.1學習方法
6.1.2多執行緒的提出
6.1.3執行緒池實戰代碼
6.1.4執行緒池的使用
6.2業務邏輯之打通業務處理脈搏實戰
6.2.1執行緒池代碼調整及補充說明
6.2.2執行緒池實現具體業務之準備代碼
6.2.3threadRecvProcFunc成員函式講解
6.2.4整體測試工作的開展
6.3預發包,多執行緒資源回收深度思考
6.3.1業務邏輯細節寫法說明
6.3.2連線池中連線回收的深度思考
6.3.3程式(進程)退出時執行緒的安全終止
6.3.4epoll事件處理的改造
6.3.5連線延遲回收的具體套用
6.4LT發數據機制深釋、gdb調試淺談
6.4.1水平觸發模式(LT)下傳送數據深度解釋
6.4.2gdb調試淺談
6.5發數據、信號量、並發、多執行緒綜合實戰
6.5.1傳送數據指導思想
6.5.2傳送數據代碼實戰
6.5.3傳送數據後續處理代碼
第7章畫龍點睛之伺服器安全與完善
7.1過往總結、心跳包代碼實戰
7.1.1前面學習的總結
7.1.2心跳包概念
7.1.3心跳包代碼實戰
7.2控制連入數,黑客攻擊防範及畸形包應對
7.2.1控制並發連入數量
7.2.2黑客攻擊的防範
7.2.3逾時直接踢出伺服器的需求
7.3超負荷安全處理、綜合壓力測試
7.3.1輸出一些觀察信息
7.3.2遺漏的安全問題思考
7.3.3壓力測試前的準備工作
7.3.4壓力測試
7.4驚群、性能最佳化大局觀
7.4.1CPU占比與驚群
7.4.2性能最佳化大局觀
7.4.3性能最佳化的實施
7.4.4配置最大允許打開的檔案句柄數
7.4.5記憶體池補充說明
第8章總結與展望
8.1遺留問題探討增補之訊息跳躍傳送
8.1.1調整ngx_write_request_handler函式的代碼順序
8.1.2訊息的跳躍傳送
8.2結束語、課程總結
8.2.1本書概要總結
8.2.2技術總結
8.2.3項目的用途總結
8.2.4學習方法總結
8.2.5架構師之路
8.2.6代碼統計與再見