剛入門C++網絡編程時,咱們都會學習一些基礎API或者書上的回射服務器、聊天室、簡單HTTP服務器實現。html
學完上述基礎後,大部分小夥伴都摩拳擦掌想作一個像樣項目,但看來看去也不知道該怎麼入手,或者不知道一個像樣項目的框架是什麼。git
我建議剛開始不要上來就鑽網絡框架,也不適合入手成熟複雜的項目,最好是找一些基礎開源項目,根據本身的想法在其基礎上添磚加瓦或者從新寫一遍,有了這些基礎後,再談精進。github
其實,對於初學者來講,最難的就是找到一個容易入門的,基礎的後臺開發項目。面試
這時候,不少人都會推薦推薦陳碩大佬的書和木鐸,我也推薦。數據庫
但我建議,在讀陳大佬的書以前,能夠先看一下游雙的Linux高性能服務器編程,將書上的代碼和例程跑一遍,再去看muduo,確定會更有收穫。編程
C++後臺開發,通常的是指服務器端開發,涉及的模型有C/S模型和B/S模型。其中C/S模型更多的是關注TCP協議,服務器端和客戶端都須要本身完成,數據包也須要本身設計;B/S模型更多的關注HTTP協議,由於以瀏覽器充當客戶端,而且有現成的HTTP協議,因此重點在服務器端。設計模式
咱們看大多數書上的講解目錄,都是先講C/S模型,再講B/S模型。相對於入門來講,書上的回射服務器和聊天室程序更容易入門和理解,但要想作一個拿得出手的C/S模型項目,我的以爲仍是不容易的。瀏覽器
從面試作項目的角度,我我的更傾向先從簡易的B/S模型入手,而後再過渡到簡易的C/S模型。這樣咱們能夠跳過客戶端和數據包的設計,將更多重點放在服務器端,儘快完成一個小demo,提高初學者的信心。服務器
在這裏我將去年面試秋招時候我所準備的項目分享給你們,但願對剛入門的小夥伴有所幫助,這個項目目前還在更新和維護。網絡
項目連接:https://github.com/qinguoyi/T...
去年秋招的時候,讀完遊雙的高性能Linux服務器編程後,我根據書上的代碼攢了一個Linux下C++輕量級Web服務器的項目,在原來的基礎上實現了簡單註冊和登陸等簡單前臺交互和後臺訪問功能,經壓力測試能夠實現上萬的併發鏈接。(測試機器爲Intel i7 7700,16G內存)。
Linux下C++輕量級Web服務器雖然是toy級別的項目,但只要你按照README中的步驟運行,經多個同窗測試,一次就能夠跑通,這將極大加強初學者作項目的信心。
通過各位小夥伴的反饋,一旦請求服務器文件較大文件時,會出現問題,不是文件顯示不全,就是沒法顯示。我分析定位到了問題後,作了初步修正,並實現了Demo
。等代碼測試完成後,我會將其同步到Github
。
目前對該Bug初步修正後,我在Ubuntu下的Chrome瀏覽器進行了大文件測試,請求服務器上的大圖(6M)和視頻(493k),效果以下。
Webbench對服務器進行壓力測試,能夠實現上萬的併發鏈接.
- 併發鏈接總數:10500
- 訪問服務器時間:5s
- 每秒鐘響應請求數:552852 pages/min
- 每秒鐘傳輸數據量:1031990 bytes/sec
- 全部訪問均成功
總體的框架就是下面這樣子,模塊聯繫比較簡單,耦合性也不高,很是簡陋,只求能看懂就好。
項目中所涉及的模塊和知識點,我進行了整理,羅列在下面,每一個模塊都有對應知識的理解和運用。
線程池
HTTP請求與響應
註冊登陸
定時器
數據庫鏈接池
同步/異步日誌系統
壓力測試
再次強調,代碼大部是書上的,我只是整理成一個較爲完善的項目,並加了一些功能,對全部作了一些註釋和講解。
若是對上面的項目模塊原理有疑問,你們優先查閱遊雙的Linux高性能服務器編程,還有些模糊的話,歡迎來我公號查看系列講解,最後實在搞不清楚,就直接騷擾我吧。
若是你對這個項目感興趣,或者在學習項目過程有什麼疑問,查看個人我的介紹能夠直接聯繫我。
感謝你能看到這裏。