linux后台开发知识点
2015-08-08 09:02
543 查看
作者:yurunsun@gmail.com
新浪微博@孙雨润 新浪博客
CSDN博客日期:2013年7月9日
linux后台开发需要熟练掌握哪些技能呢?
top: swap memory ↑
kswap进程
valgrid中malloc/free值
调用
strace -p
进程太多: vmstat 1
io阻塞:vmstat 1
pthread_join或boost::thread::join等于waitpid, 调用者会阻塞
socketfd等资源无法共享
使用gcc -pthread 或者 -D_REENTERANT来解决全局变量重入问题
使用_r版本的库函数解决库函数重入问题
查看所有_r版本函数
互斥逻辑rcntl, flock, semaphere, mutex, rwlock
内存原子操作
为什么要三步握手
为什么要有TIME_WAIT
gdb
作者:yurunsun@gmail.com
新浪微博@孙雨润 新浪博客
CSDN博客日期:2013年7月9日
linux后台开发需要熟练掌握哪些技能呢?
1. 内存泄漏
cpu wait% ↑top: swap memory ↑
kswap进程
valgrid中malloc/free值
调用
mallinfo输出当前所占内存
strace -p
2. 野指针
valgrid中access invalid address3. 机器负载较高
内存泄漏: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
相关文章推荐
- Linux socket 初步
- 使用C++实现JNI接口需要注意的事项
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- 关于指针的一些事情
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区
- Linux VS Unix:Linux欲一统天下 Unix不死