序 绪论 第1章 C++编程常用技术 1 1.1 第一个C++程序 1 1.2 函数 3 1.3 数组 6 1.4 指针 8 1.5 引用 12 1.6 结构体、公用体、枚举 14 1.6.1 结构体、共用体、枚举的概念 14 1.6.2 结构体、共用体在内存单元占用字节数的计算 18 1.7 预处理 20 1.8 本章小结 25 第2章 面向对象的C++ 26 2.1 类与对象 26 2.2 继承与派生 49 2.3 类的多态 57 2.4 本章小结 64 第3章 常用STL的使用 65 3.1 STL是什么 65 3.2 string 66 3.3 vector 77 3.3.1 vector是什么 77 3.3.2 vector的查增删 78 3.3.3 vector的内存管理与效率 86 3.3.4 Vector类的简单实现 90 3.4 map 96 3.4.1 map是什么 96 3.4.2 map的查增删 96 3.4.3 map的原理 109 3.5 set 111 3.5.1 set是什么 111 3.5.2 set的查增删 112 3.6 本章小结 116 第4章 编译 117 4.1 编译与链接 117 4.2 makefile的撰写 131 4.3 目标文件 135 4.3.1 ELF的文件类型 135 4.3.2 链接视图下的ELF内容 136 4.3.3 执行视图下的ELF内容 142 4.3.4 阅读ELF文件的工具——readelf 144 4.3.5 获得二进制文件里符号的工具——nm 144 4.3.6 减少目标文件大小的工具——strip 146 4.4 本章小结 147 第5章 调试 148 5.1 strace 148 5.2 gdb 156 5.3 top 164 5.4 ps 165 5.5 Valgrind 168 5.5.1 Valgrind概述 168 5.5.2 Linux程序内存空间布局 170 5.5.3 内存检查原理 175 5.5.4 Valgrind安装 176 5.5.5 Valgrind使用 177 5.6 本章小结 187 第6章 TCP协议 188 6.1 TCP协议 188 6.1.1 网络模型 188 6.1.2 TCP头部 191 6.1.3 TCP状态流转 193 6.1.4 TCP超时重传 196 6.1.5 TCP滑动窗口 200 6.1.6 TCP拥塞控制 202 6.2 TCP网络编程API 205 6.3 实现一个TCP server 211 6.4 TCP协议选项 215 6.5 网络字节序与主机序 233 6.6 封包和解包 233 6.7 本章小结 247 第7章 网络IO模型 248 7.1 4种网络IO模型 248 7.2 select 256 7.3 poll 267 7.4 epoll 277 7.5 本章小结 289 第8章 网络分析工具 290 8.1 ping 290 8.2 tcpdump 292 8.3 netstat 294 8.4 lsof 296 8.5 本章小结 298 第9章 多线程 299 9.1 多线程是什么 300 9.2 多线程的创建与结束 301 9.3 线程的属性 307 9.4 多线程同步 312 9.5 多线程重入 332 9.6 本章小结 333 第10章 进程 334 10.1 程序与进程 334 10.2 进程的创建与结束 335 10.3 僵尸进程 342 10.4 守护进程 347 10.5 本章小结 351 第11章 进程间通信 352 11.1 管道 352 11.2 消息队列 358 11.3 共享内存 362 11.4 信号量 368 11.5 ipcs命令 373 11.6 本章小结 374 第12章 HTTP协议 375 12.1 HTTP协议工作流程 375 12.2 HTTP协议结构 376 12.3 HTTPS 383 12.4 CGI 386 12.5 FastCGI 397 12.6 本章小结 398 第13章 常用类库 399 13.1 JSON 400 13.2 Protobuf 405 13.3 本章小结 409
^ 收 起