Cpp后台需要学习的知识多而杂,务必要制定一个切实可行的学习计划。
Cpp后台书籍&项目
技术栈思维导图
Cpp
- 《C++ primer》 √
- 《Effective C++》 √
第一遍:43-47,49-52未读。 - 《Effective STL》
- 《STL源码剖析》-
- 《深度探索C++对象模型》
- 《More Effective C++》
Linux环境&相关工具
- 《鸟哥的Linux私房菜I》-
- GCC/GDB -
- Make/CMake
- Git -
算法与数据结构
- LeetCode Top100 Liked Questions -
- LeetCode -
- 《挑战程序设计竞赛》 -
系统编程
- 《深入理解计算机操作系统》 -
- 《Unix/Linux编程实践教程》 √
- 《Linux/UNIX系统编程手册(上册)》 √
- 《Linux/UNIX系统编程手册(下册)》 √
- 《UNIX环境高级编程》
网络编程
- 《TCP/IP详解 卷1:协议》
- 《TCP/IP详解 卷2:实现》
- 《UNIX网络编程 卷1:套接字联网API》-
- 《UNIX网络编程 卷2:进程间通信》
- 《Linux多线程服务器端编程:使用muduo C++网络库》-
Linux内核
- 《计算机操作系统(汤小丹汤子瀛版)》√
- 《Linux内核设计与实现》
源码阅读
- Tinyhttpd √
- Webbench √
- leveldb
- muduo
- Redis
- nginx
- UNIX v6
项目实践
- C++线程池 √
- C++内存池 √
- 代理程序
- ftp服务器
- 网络库
- 即时通讯软件
- 消息队列
- k-v数据库
笔试面试
- 牛客网面经 -
- 牛客笔试题
- 《剑指offer》 √
- 《编程之美》
其他
- 《后台开发:核心技术与应用实践》 -
本书可以用来当做一个知识图谱,具体知识还需要去看相应书籍来学习。 - 《Redis设计与实现》
- 《深入理解Nginx》
要点与注意事项
- 基础知识是最根本的,也是最基本的。这些书一定要过一遍,并且有些书要读不止一遍。
- 每一阶段的学习一定要多总结!多总结!可以总结到博客里,不然很快就会忘记。
学习计划与记录
…
思维导图对应markdown
- 本图参考《后台开发:核心技术与应用实践》
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77# 后台开发
## 常用类库
### JSON
* 掌握JSON的结构
* JSON相关库的使用
* JSON的用途
### Protobuff
* 了解Protobuff的特点
* 能熟练使用Protobuff
* 了解Protobuff的用途
## HTTP协议
### HTTP协议
* HTTP协议结构
* HTTP的原理
### CGI
* 掌握CGI的环境变量
* 熟练掌握GET和POST参数的使用
### FASTCGI
* 了解FASTCGI是什么
## 进程通信
### 多线程
* 了解多线程的使用、属性
* 了解进程同步问题
* 了解多线程重入问题
### 进程
* 掌握进程的创建与结束
* 掌握僵尸进程和守护进程
* 熟练使用daemon函数
### 进程间通信
* 掌握管道、共享内存和信号量的使用
* 了解消息队列
* 掌握ipcs工具的使用
## 网络通信
### TCP协议
* 深入了解TCP协议和状态流转图
* 掌握超时重传、滑动窗口、与用塞控制机制
* 熟练使用网络编程api
* 了解TCP协议选项
* 了解网络字节序和主机序的区别
* 可以轻松地写出一个客户端和服务器端
### 网络IO模型
* 了解网络IO模型
* 知道select\poll\epoll的使用方法和原理
* 了解select\poll\epoll的区别
### 网络分析工具
* 熟练使用ping\tcpdump\netstat\lsof四款工具
## 编译调试
### 编译与链接
* 了解编译与链接过程中都发生了什么
### Makefile的编写
* 能熟练地编写Makefile
### 目标文件
* 了解ELF文件类型
* 了解两种视图下ELF文件的内容
* 了解处理目标文件相关工具
### 调试工具
* 熟练使用strace\gdb调试程序
* 熟练使用top\ps\valgrind工具分析进程
## 编程语言
### 语法
* 熟练掌握函数、数组指针、引用、结构体、预处理等语法知识
### 面向对象
* 类与对象
* 掌握类的封装性
* 掌握构造函数、析构函数、静态数据成员
* 掌握类模板
* 会计算对象的存储空间
* 类的继承与派生
* 熟练使用类的继承与派生
* 了解派生类的访问属性
* 类的多态
* 熟练使用类的多态和虚函数
* 能使用单例模式
* 掌握纯虚函数的用法
### STL的使用
* 掌握string\vector\map\set\的使用和原理
* 使用时需注意的细节
欢迎与我分享你的看法。
转载请注明出处:http://taowusheng.cn/