1. 程式人生 > >服務端C/C++開發所需要準備的

服務端C/C++開發所需要準備的

---FD---

1、伺服器所用到的知識:(記錄自百度知道)

  1. TCP/UDP,最基本的

  2. 併發——你可以選擇使用select、poll,或者是多執行緒、多程序

  3. 如果你使用多執行緒,那麼就必須使用同步技術——訊號量、互斥體、條件變數的一種或幾種,並且對於多執行緒技術,你還需要考慮使用進行執行緒分離與合併,

  4. 如果你使用了多程序,那麼同步技術就不是你需要考慮的了,你需要考慮的是程序相關的問題了,你是使用fork還是vfork,你該如何處理客戶端的請求,如何處理客戶端斷開連線後保證能夠處理完資料並且沒有殭屍程序產生,你還需要考慮高併發的問題

  5. 你傳送接受資料的時候,採用何種方式,是阻塞的還是非阻塞的,還有連線超時、重傳等問題

  6. 你是選擇TCP還是UDP,如果選擇UDP你可得忙了,需要你自己去進行重傳驗證,模擬TCP的三次握手,保證資料不會丟失,保證資料的有序性

  7. 還有其他很多需要你考慮的,以上都是指在Linux下的C++,本人對windows C++不瞭解

  8. 推薦書目:UNIX高階環境程式設計,UNIX網路程式設計,卷一。C++只不過是你使用這些技術的方式,不管你使用C還是C++,你都可以使用從這兩本書中學習到很多有用的知識,但是不能保證你就可以寫出高質量的伺服器程式。

2、經過一段時間之後加強了對服務端C/C++開發的認識

最重要的是高併發————libevent (epoll)

多執行緒————————資源同步(訊號量和相關鎖)

多程序————————程序間通訊

資料庫————————MySQL及其他

資料庫之前的快取區——redis及其他

崩潰除錯方式—————gdb除錯

記憶體洩漏方式除錯———Valgrind(memcheck)

(https://blog.csdn.net/yuesichiu/article/details/40823299)