關(guān)于我們
書單推薦
新書推薦
|
C++新經(jīng)典:Linux C++通信架構(gòu)實戰(zhàn) 本書是一部介紹在Linux下使用C++開發(fā)網(wǎng)絡(luò)通信服務器程序的書。本書共8章36節(jié),介紹了一個完整的項目,其中包括通信框架和業(yè)務邏輯框架,有以下幾個特點: ①項目本身是一個完整的多線程高并發(fā)的服務器程序; ②支持TCP長連接,按照“包頭+包體格式”正確接收客戶端發(fā)送過來的數(shù)據(jù)包,完美解決收包時的數(shù)據(jù)粘包問題; ③可根據(jù)收到的不同數(shù)據(jù)包選擇不同的業(yè)務處理邏輯; ④可將業(yè)務處理產(chǎn)生的結(jié)果數(shù)據(jù)包正確返回給客戶端。 項目中用到的主要開發(fā)技術(shù)和特色包括: ①epoll高并發(fā)通信技術(shù),用到的觸發(fā)模式是epoll中的水平觸發(fā)模式(LT); ②通過線程池技術(shù)處理業(yè)務邏輯; ③線程之間的同步技術(shù)包括互斥量和信號量; ④連接池中連接的延遲回收技術(shù),可極大程度地消除諸多導致服務器程序工作不穩(wěn)定的因素; ⑤專門處理數(shù)據(jù)發(fā)送的一整套數(shù)據(jù)發(fā)送邏輯以及對應的發(fā)送線程; ⑥信號處理、配置文件讀取、日志的打印輸出、調(diào)用fork創(chuàng)建子進程、創(chuàng)建守護進程等技術(shù)。 本書適合作為已經(jīng)掌握C/C++語言,希望進一步深入學習的開發(fā)人員的自學參考用書。 書中主題 商業(yè)項目的完整源碼 從無到有,實現(xiàn)一個商業(yè)質(zhì)量的多線程高并發(fā)服務器程序項目框架,只需要增加業(yè)務邏輯代碼就可以利用本項目完成實際工作中諸多服務器項目的開發(fā),如網(wǎng)絡(luò)游戲服務器、交易服務器、通信服務器等。 商業(yè)項目的實現(xiàn)功能 ①按照包頭+包體格式正確接收客戶端發(fā)送的數(shù)據(jù)包, 完美解決數(shù)據(jù)粘包問題;②根據(jù)接收的數(shù)據(jù)包的不同來執(zhí)行不同的業(yè)務處理邏輯;③把業(yè)務處理產(chǎn)生的結(jié)果數(shù)據(jù)包正確返回給客戶端。 商業(yè)項目的開發(fā)技術(shù) ①epoll高并發(fā)通信技術(shù)(水平觸發(fā)模式LT);②通過線程池技術(shù)處理業(yè)務邏輯;③線程之間的同步技術(shù)包括互斥量與信號量;④連接池中連接的延遲回收技術(shù),極大程度上消除諸多導致服務器程序工作不穩(wěn)定的因素;⑤其他次要技術(shù),包括信號的處理、配置文件的讀取、日志的打印輸出、調(diào)用fork創(chuàng)建子進程、創(chuàng)建守護進程等。 環(huán)境標準 VMware Workstation Pro:Ubuntu Linux、g++、Windows:Visual Studio 2019、Visual Studio Code VMware Workstation Pro:Ubuntu Linux、g++ Windows:Visual Studio 2019、Visual Studio Code 程序代碼 全部實例源代碼可以掃描右方二維碼獲取,配套開發(fā)工具及更多學習資源可以關(guān)注作者公眾號“程序員速成”獲取。 自序 親愛的讀者,如果你已經(jīng)讀完了筆者的《C 新經(jīng)典》《C 新經(jīng)典: 對象模型》兩本介紹C 語言基礎(chǔ)的書籍,并決定進一步深入學習,以備將來用C 在Linux下從事網(wǎng)絡(luò)通信/網(wǎng)絡(luò)服務器開發(fā)和架構(gòu)工作,那么這本《C 新經(jīng)典: Linux C 通信架構(gòu)實戰(zhàn)》,是筆者推薦給你的第3本書,不可錯過。 縱觀以往,很少有人敢于嘗試教只掌握C和基本C 語言的開發(fā)者去學習這種難度頗高的網(wǎng)絡(luò)通信架構(gòu)知識,但筆者愿意做這個擺渡人,通過這本書,用自己多年積累的知識,為讀者鋪設(shè)一條極速的成才之路,可以毫不夸張地說,學好這本書,讀者可以節(jié)省少則3~5年,多則10年的在C 網(wǎng)絡(luò)通信開發(fā)道路上成長和摸索的時間。 (2) 在微信公眾號中輸入“通信架構(gòu)”4個字,就可以獲取配套學習資料下載鏈接。 狂想老師的課真的太精彩了,服務器端開發(fā)小白看了之后簡直打通了任督二脈!夸! 狂夸!希望大家都來買狂想老師的課! 最近搞個AI的特性,用上了你講的架構(gòu)和epoll的接口設(shè)計,主管直接加薪5000元,加薪后超越30k元的月薪了。 老師講得特別棒,全是干貨。 課程講得非常好,受益匪淺,謝謝老師。 我把老師的C 課程和對象模型都學習完了,前面兩門課程講得不錯,思路清晰,特別是講C 11一些新知識點,不是把知識點硬塞給你,而是為了解決某些問題引入。這門課程我也是第一時間入手,相信老師的能力。非常好的課程! 從老師的《C 從入門到精通 C 11/14/17》跟過來的,說良心話,老師講得真不錯,邏輯清晰,詳略得當。五星好評! 講得很細致,一些基礎(chǔ)概念都有提及,照顧到我們這些新手,讓我們能學到平常難以接觸的知識,很好。 我是跟著老師的對象模型過來的,不得不說,真是非常好的課程。 C 工作14年的老菜鳥來學藝,希望能得到質(zhì)的飛躍!技術(shù)這東西不服牛人不行,有些地方自學不只是多走彎路的事兒,是根本入不了道。 這個課程真的非常棒,之前沒什么項目經(jīng)驗,所以沒信心,學完這個課之后感覺自己提升很多,學到了很多知識,自信心增加,對我找工作幫助很大,感謝老師! 老師講得真心好,不知不覺幫我解決了很多工作中遇到的沒有理解透的難點,非常實用。如果不聽老師的課,這些僅靠自己真是太難了,感謝老師讓從事8年C語言工作的我重拾信心。 正好新公司要我接手服務器框架。2倍速聽完了老師的課程,對我理解公司的代碼有很大的幫助。為來年月薪30k元努力!! 王健偉,1995年畢業(yè)于哈爾濱工程大學計算機及應用專業(yè),20多年軟件開發(fā)經(jīng)驗,經(jīng)歷過數(shù)十個軟件項目開發(fā)包括網(wǎng)絡(luò)通信、網(wǎng)絡(luò)安全、網(wǎng)絡(luò)游戲等領(lǐng)域,多年的摸爬滾打使自身具備了極其深厚的開發(fā)實力和實戰(zhàn)經(jīng)驗。中國首套網(wǎng)絡(luò)安全在線掃描評估系統(tǒng)項目負責人,電子工業(yè)出版社2003年《Crystal Reports水晶報表設(shè)計與開發(fā)實務》書籍作者,全球同服獨立游戲《冒險之路》制作人。 第1章課程介紹 1.1本書內(nèi)容詳細介紹 1.1.1內(nèi)容總述 1.1.2為什么選擇Linux操作系統(tǒng)平臺 1.1.3講解規(guī)劃和學習建議 1.1.4書籍推薦和讀書須知 1.2環(huán)境搭建詳細介紹 1.2.1Windows下的Visual Studio 2019安裝 1.2.2準備一個Word文檔 1.2.3Windows下的虛擬機安裝 1.2.4在虛擬機中安裝Linux操作系統(tǒng) 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整體結(jié)構(gòu)、進程模型 2.2.1Nginx的整體結(jié)構(gòu) 2.2.2Nginx進程模型細說 第3章Nginx開發(fā)初步 3.1學習Nginx源碼前的準備工作 3.1.1Nginx源碼總述 3.1.2Nginx源碼查看工具 3.1.3Nginx源碼入口函數(shù)定位 3.1.4創(chuàng)建一個自己的Linux下的C語言程序 3.2Nginx源碼學法,終端和進程的關(guān)系 3.2.1Nginx源碼學習方法 3.2.2終端和進程的關(guān)系 3.3信號的概念、認識、處理動作 3.3.1信號的基本概念 3.3.2通過kill命令認識一些信號 3.3.3進程的狀態(tài) 3.3.4常用信號列舉 3.3.5信號處理的相關(guān)動作 3.4UNIX/Linux體系結(jié)構(gòu)、信號編程初步 3.4.1UNIX/Linux操作系統(tǒng)體系結(jié)構(gòu) 3.4.2signal函數(shù)范例 3.5信號編程進階、sigprocmask范例 3.5.1信號集(信號屏蔽字) 3.5.2信號相關(guān)函數(shù) 3.5.3sigprocmask等信號函數(shù)范例演示 3.6fork函數(shù)詳解、范例演示 3.6.1簡單認識fork函數(shù) 3.6.2進一步認識fork函數(shù) 3.6.3完善fork代碼 3.6.4一個和fork執(zhí)行有關(guān)的邏輯判斷 3.6.5fork失敗的可能原因 3.7守護進程詳解、范例演示 3.7.1普通進程運行觀察 3.7.2守護進程基本概念 3.7.3守護進程編寫規(guī)則 3.7.4守護進程不會收到的信號 3.7.5守護進程和后臺進程的區(qū)別 第4章服務器程序框架初步 4.1服務器程序目錄規(guī)劃、makefile編寫 4.1.1信號高級認識范例 4.1.2服務器架構(gòu)初步 4.2讀配置文件、查泄漏、設(shè)置標題實戰(zhàn) 4.2.1基礎(chǔ)設(shè)施之配置文件讀取 4.2.2內(nèi)存泄漏的檢查工具 4.2.3設(shè)置進程名稱(標題) 4.3日志打印實戰(zhàn),優(yōu)化main函數(shù)調(diào)用順序 4.3.1基礎(chǔ)設(shè)施之日志打印實戰(zhàn)代碼一 4.3.2設(shè)置時區(qū) 4.3.3基礎(chǔ)設(shè)施之日志打印實戰(zhàn)代碼二 4.3.4理順main函數(shù)中代碼執(zhí)行順序 4.4信號、子進程實戰(zhàn),文件I/O詳談 4.4.1信號功能實戰(zhàn) 4.4.2Nginx中創(chuàng)建worker子進程 4.4.3日志輸出重要信息講解 4.4.4write函數(shù)思考 4.4.5掉電導致write寫入的數(shù)據(jù)丟失破解法 4.4.6標準I/O庫 4.5守護進程及信號處理實戰(zhàn) 4.5.1守護進程功能的實現(xiàn) 4.5.2信號處理函數(shù)的進一步完善(避免僵尸子進程) 第5章網(wǎng)絡(luò)通信實戰(zhàn) 5.1C/S、TCP/IP妙趣橫生、惟妙惟肖談 5.1.1客戶端與服務器端 5.1.2網(wǎng)絡(luò)模型 5.1.3最簡單的客戶端和服務器程序?qū)崿F(xiàn)代碼 5.1.4TCP和UDP的區(qū)別 5.2TCP三次握手詳析,telnet、Wireshark示范 5.2.1TCP連接的三次握手 5.2.2telnet工具使用介紹 5.2.3Wireshark監(jiān)視數(shù)據(jù)包 5.2.4TCP斷開的四次揮手 5.3TCP狀態(tài)轉(zhuǎn)換,TIME_WAIT詳解,SO_REUSEADDR 5.3.1TCP狀態(tài)轉(zhuǎn)換 5.3.2TIME_WAIT狀態(tài) 5.3.3SO_REUSEADDR選項 5.4listen隊列剖析、阻塞與非阻塞、同步與異步 5.4.1listen隊列剖析 5.4.2阻塞與非阻塞I/O 5.4.3異步與同步I/O 5.5監(jiān)聽端口實戰(zhàn)、epoll介紹及原理詳析 5.5.1監(jiān)聽端口 5.5.2epoll技術(shù)簡介 5.5.3epoll原理與函數(shù)介紹 5.6通信代碼精粹之epoll函數(shù)實戰(zhàn)1 5.6.1提醒注意 5.6.2配置文件的修改 5.6.3epoll函數(shù)實戰(zhàn) 5.7通信代碼精粹之epoll函數(shù)實戰(zhàn)2 5.7.1ngx_epoll_process_events函數(shù)調(diào)用位置 5.7.2ngx_epoll_process_events函數(shù)內(nèi)容 5.7.3ngx_event_accept函數(shù)內(nèi)容 5.7.4總結(jié)和測試 5.7.5事件驅(qū)動總結(jié) 5.7.6一道騰訊后臺開發(fā)的面試題 5.8ET、LT深釋,服務器設(shè)計、粘包解決 5.8.1ET、LT模式深入分析及測試 5.8.2本項目的服務器設(shè)計 5.9通信代碼精粹之收包、解包實戰(zhàn) 5.9.1收包分析及包頭結(jié)構(gòu)定義 5.9.2收包狀態(tài)宏定義 5.9.3收包實戰(zhàn)代碼 5.9.4測試服務器收包避免推諉扯皮 第6章服務器業(yè)務邏輯處理框架 6.1業(yè)務邏輯之多線程、線程池實戰(zhàn) 6.1.1學習方法 6.1.2多線程的提出 6.1.3線程池實戰(zhàn)代碼 6.1.4線程池的使用 6.2業(yè)務邏輯之打通業(yè)務處理脈搏實戰(zhàn) 6.2.1線程池代碼調(diào)整及補充說明 6.2.2線程池實現(xiàn)具體業(yè)務之準備代碼 6.2.3threadRecvProcFunc成員函數(shù)講解 6.2.4整體測試工作的開展 6.3預發(fā)包,多線程資源回收深度思考 6.3.1業(yè)務邏輯細節(jié)寫法說明 6.3.2連接池中連接回收的深度思考 6.3.3程序(進程)退出時線程的安全終止 6.3.4epoll事件處理的改造 6.3.5連接延遲回收的具體應用 6.4LT發(fā)數(shù)據(jù)機制深釋、gdb調(diào)試淺談 6.4.1水平觸發(fā)模式(LT)下發(fā)送數(shù)據(jù)深度解釋 6.4.2gdb調(diào)試淺談 6.5發(fā)數(shù)據(jù)、信號量、并發(fā)、多線程綜合實戰(zhàn) 6.5.1發(fā)送數(shù)據(jù)指導思想 6.5.2發(fā)送數(shù)據(jù)代碼實戰(zhàn) 6.5.3發(fā)送數(shù)據(jù)后續(xù)處理代碼 第7章畫龍點睛之服務器安全與完善 7.1過往總結(jié)、心跳包代碼實戰(zhàn) 7.1.1前面學習的總結(jié) 7.1.2心跳包概念 7.1.3心跳包代碼實戰(zhàn) 7.2控制連入數(shù),黑客攻擊防范及畸形包應對 7.2.1控制并發(fā)連入數(shù)量 7.2.2黑客攻擊的防范 7.2.3超時直接踢出服務器的需求 7.3超負荷安全處理、綜合壓力測試 7.3.1輸出一些觀察信息 7.3.2遺漏的安全問題思考 7.3.3壓力測試前的準備工作 7.3.4壓力測試 7.4驚群、性能優(yōu)化大局觀 7.4.1CPU占比與驚群 7.4.2性能優(yōu)化大局觀 7.4.3性能優(yōu)化的實施 7.4.4配置最大允許打開的文件句柄數(shù) 7.4.5內(nèi)存池補充說明 第8章總結(jié)與展望 8.1遺留問題探討增補之消息跳躍發(fā)送 8.1.1調(diào)整ngx_write_request_handler函數(shù)的代碼順序 8.1.2消息的跳躍發(fā)送 8.2結(jié)束語、課程總結(jié) 8.2.1本書概要總結(jié) 8.2.2技術(shù)總結(jié) 8.2.3項目的用途總結(jié) 8.2.4學習方法總結(jié) 8.2.5架構(gòu)師之路 8.2.6代碼統(tǒng)計與再見
你還可能感興趣
我要評論
|