后台开发包括的知识点很多,包括语言基础,算法,linux编程基础,linux内核,网络,数据库,分布式等等。面面俱到很难,一个领域钻研的很深也很难。我认识的大神里有把C++语言吃的非常透的,拿offer都非常轻松。
学习路线有点长,但非常的细,争取做到让看到的同学有一种相见恨晚的感觉!
Linux C++ 服务器/后台开发指的什么呢,其实就是基于 Linux 上 的 C++ 编程,较于其他语言开发,更着重Linux系统编程能力。
这里我就不讲C++基础了,申明一下,此路线只适合有C语言基础或者C++基础的人去看。
一、基础知识
(1)数据结构与算法
-
面试必聊的排序与KMP
插入排序、快速排序、希尔排序、桶排序、基数排序、归并排序、字符串匹配 KMP算法
-
随处可以见的红黑树
红黑树的应用场景,进程调度CFS,内存管理等等
-
磁盘存储链式的B树与B+树
磁盘结构与数据存储原理、B树插入的分裂、B+树的定义与实现等等
-
海量数据去重的Hash与布隆过滤器 bitmap
hsah的原理和hash函数的实现、分布式hsah、海量数据去重布隆过滤器
-
图论算法、di jkstra、dfs、bfs、动态规划
图的构建与需求应用场景、di jkstra的实现、经典动态规划问题
这里推荐大家去看《算法导论》第三版,讲的非常详细!
(2)设计模式
-
创作型设计模式
单例模式、工厂方法模式与抽象工厂模式
-
结构型设计模式
适配器模式、代理模式、桥接模式、组合模式
-
行为型设计模式
责任链模式、策略模式、观察者模式、状态模式
(三)工厂管理
-
Makefile/cmake/configure
-
git/svn与持续集成
-
Linux系统运行时的命令参数
二、高性能网络
(1)网络编程
-
网络io与select,poll,epoll
多路复用select/poll、epoll单线程多线程多进程的多种写法
-
reactro的原理和实现
epoll的封装、reactro的多核实现
-
http与https服务器的实现
http协议格式、http2.0与3.0、https的工作流程
-
websocket协议与服务器实现
websocket握手流程、websocket协议头封装、TCP分包与粘包的解决方案
(2)网络原理
-
服务器百万并发实现
同步与异步处理、网络io线程池异步处理
-
Redis、Nginx、memcached网络组件
Redis单线程reactro的实现、Nginx多进程reactro的实现
-
posix API与网络协议栈
-
UDP可以传输、QUIC/KCP
udp的优缺点、udp高并发设计方案、udp可靠传输协议
(3)协程框架实现Ntyco
福利分享
价值199协程框架实现微课资料领取
(4)用户态协议栈NtyTCP
推荐大家去看
-
《TCP详解卷一卷二卷三》
-
《Unix高级环境编程》
-
《深入理解计算机系统》
三、基础组件
池式组件
-
线程池与性能分析
-
线程池的异步处理使用场景
-
线程池的动态回缩
-
ringbuffer与内存池的实现
-
手写内存池,结构体封装与API实现
-
避免内存泄露的两种方法
-
定位内存泄露的三种工具
-
Nginx内存池的实现
-
异步请求池 http/mysql/redis/dns
-
异步请求处理流程
-
MySQL/Redis连接池的实现
高性能组件
-
原子操作CAS与锁实现原理实现
-
互斥锁
-
自旋锁
-
消息队列与无锁实现
-
有锁队列
-
内存屏障Barr ier
-
定时器方案
-
红黑树
-
最小堆
-
时间轮
开源组件
-
libevent/libev框架
-
异步日志方案log4cpp
-
应用层协议设计protoBuf/thrift
-
openss丨对称加密与非对称加密
-
json数据解析丨Xml数据解析器与工具包
中间件开发
MySQL
-
MySQLSQL语句、索引、视图、存储过程、触发器
-
MySQL索引原理与SQL优化
-
MySQL事物原理分析
-
MySQL缓存策略
-
MySQL集群方案
Redis
-
Redis相关命令及其原理
-
Redis协议与异步方式
-
存储原理与数据模型
-
主从同步与对象模型
-
集群方案主从复制
Nginx
-
Nginx反向代理与系统参数配置
-
进程间通信与slab共享机制
-
Nginx过滤模块实现
推荐书籍
-
《高性能MySQL 第三版》
-
《Redis实现与原理》 (黄建宏)
-
(深入理解Nginx:模块开发与架构分析 第二版)
实际上在腾讯这边的 C++ 后台开发,也是类似的,本身有非常成熟的基于 C++ 的微服务体系,大多数开发也只需要关注业务逻辑就好,不过还是会要求 Linux 系统编程、网络编程等能力。 这里推荐大家可以看看腾讯课堂零声学院 Linux C/C++ 高级开发架构的【免费】课程:
C/C++Linux服务器开发/后台架构师【零声学院】-学习视频教程-腾讯课堂ke.qq.com
课程内容的话和腾讯C++后台开发T8职级技术栈对标,围绕数据结构与算法、数据库、网络、操作系统、网络编程、分布式架构等方面全面提升,值得学习一波~
还有一份大厂面经集合:
和技术路线总结图:
资料领取