服务器开发知识要点

 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
相关文章
相关标签/搜索