http://blog.csdn.net/jnu_simba/article/details/8957242
http://www.cppblog.com/Solstice
1. 精通多线程开发(并发编程: 锁,无锁编程等),多进程通信, 精通网络编程, 精通套接字模型, 熟悉epoll,熟悉iocp, 熟悉io/逻辑处理的2种方式( 一种accept后,唤醒别人继续监听, 自己处理client, 一种accept后, 唤醒别人去处理client,自己继续监听),
2. 熟悉3个池类技术(内存池, 线程池, 连接池).
3. 熟悉消息封包解包 常见做法. 了解protobuf, thrift, 了解一些RPC库.
然后根据服务端 提供的 服务类型 再进行专门的知识掌握, 如游戏服务端要熟悉lua/python脚本,以及一些地图,玩家,物品数据结构设计等等, 互联网的肯定要熟悉memcached,redis之类的缓存软件, 分布式系统知识.
ok, 足够你折腾1年多了.
=================
http://blog.csdn.net/sunyurun/article/details/9289721
linux后台开发需要熟练掌握哪些技能呢?
1. 内存泄漏
- cpu wait% ↑
- top: swap memory ↑
- kswap进程
- valgrid中malloc/free值
- 调用
mallinfo
输出当前所占内存 - strace -p
2. 野指针
valgrid中access invalid address
3. 机器负载较高
- 内存泄漏:top
- 进程太多: vmstat 1
- io阻塞:vmstat 1
4. 多线程
- 线程参数不能是局部变量
- pthread_join或boost::thread::join等于waitpid, 调用者会阻塞
- socketfd等资源无法共享
- 使用gcc -pthread 或者 -D_REENTERANT来解决全局变量重入问题
-
使用_r版本的库函数解决库函数重入问题
readelf -s /lib/libc-2.17.so | grep _r@
查看所有_r版本函数
- 互斥逻辑rcntl, flock, semaphere, mutex, rwlock
- 内存原子操作
5. TCP
-
状态转移图
CLOSED, LISTEN, SYN_RCVD, SYN_SENT, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, TIME_WAIT
- 为什么要三步握手
- 为什么要有TIME_WAIT
6. coredump
ulimit -c unlimited
gcc -g
-
gdb
gdb -c core bin (gdb) bt (gdb) l (gdb) frame 0 (gdb) p this->m_value
7. 智能指针
scoped_ptr
shared_ptr
weak_ptr
enable_shared_from_this
noncopable