服務器開發知識要點

 http://blog.csdn.net/jnu_simba/article/details/8957242python

http://www.cppblog.com/Solsticelinux

1.  精通多線程開發(併發編程: 鎖,無鎖編程等),多進程通訊, 精通網絡編程, 精通套接字模型, 熟悉epoll,熟悉iocp, 熟悉io/邏輯處理的2種方式( 一種accept後,喚醒別人繼續監聽, 本身處理client, 一種accept後, 喚醒別人去處理client,本身繼續監聽),
2.  熟悉3個池類技術(內存池, 線程池, 鏈接池).
3.  熟悉消息封包解包 常見作法. 瞭解protobuf, thrift, 瞭解一些RPC庫.
     而後根據服務端 提供的 服務類型 再進行專門的知識掌握, 如遊戲服務端要熟悉lua/python腳本,以及一些地圖,玩家,物品數據結構設計等等, 互聯網的確定要熟悉memcached,redis之類的緩存軟件, 分佈式系統知識.
    ok, 足夠你折騰1年多了.redis

 

 

=================編程

http://blog.csdn.net/sunyurun/article/details/9289721緩存

linux後臺開發須要熟練掌握哪些技能呢?網絡

1. 內存泄漏

  1. cpu wait% ↑
  2. top: swap memory ↑
  3. kswap進程
  4. valgrid中malloc/free值
  5. 調用mallinfo輸出當前所佔內存
  6. strace -p

2. 野指針

valgrid中access invalid address數據結構

3. 機器負載較高

  1. 內存泄漏:top
  2. 進程太多: vmstat 1
  3. io阻塞:vmstat 1

4. 多線程

  1. 線程參數不能是局部變量
  2. pthread_join或boost::thread::join等於waitpid, 調用者會阻塞
  3. socketfd等資源沒法共享
  4. 使用gcc -pthread 或者 -D_REENTERANT來解決全局變量重入問題
  5. 使用_r版本的庫函數解決庫函數重入問題多線程

    readelf -s /lib/libc-2.17.so | grep _r@

    查看全部_r版本函數併發

  6. 互斥邏輯rcntl, flock, semaphere, mutex, rwlock
  7. 內存原子操做

5. TCP

  1. 狀態轉移圖socket

    CLOSED, 
    LISTEN, 
    SYN_RCVD, 
    SYN_SENT, 
    ESTABLISHED, 
    FIN_WAIT_1, 
    FIN_WAIT_2, 
    TIME_WAIT
  2. 爲何要三步握手
  3. 爲何要有TIME_WAIT

6. coredump

  1. ulimit -c unlimited
  2. gcc -g
  3. gdb

    gdb -c core bin
    (gdb) bt
    (gdb) l
    (gdb) frame 0
    (gdb) p this->m_value

7. 智能指針

  1. scoped_ptr
  2. shared_ptr
  3. weak_ptr
  4. enable_shared_from_this
  5. noncopable
相關文章
相關標籤/搜索