Cpp后台学习计划与记录

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++内存池
  • web服务器
  • 网络库
  • 数据库引擎

笔试面试

  • 牛客网面经 -
  • 牛客笔试题
  • 《剑指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/