其实学习路线一类的文章网络上也有不少,但我看了很多,大部分都是罗列了许多的课程和知识点,却缺少一个类似时间轴的东西,告诉大家按照什么样的节奏来推进,所以呢,我希望补上这一个重要的信息。
这份学习路线,包含了从新手到工作分阶段所需要学习的内容、详细的知识点、可以参考的书单、电子书资源等等。
先给大家看C/C++后端开发的,长文预警,发车~
路线图
开局一张图,内容全靠编,没错,咱们先来看一张全局图,先从总体上有个宏观的认识。
这张图有点大,由于平台对图片压缩的厉害,如果想要高清版的可以在文末地址中查看
精进基石专栏【一】
在我看来,相对来说,Python、Java这类上层语言是面向业务编程,而C/C++这类底层语言更多是面向计算机编程,所以第一个基础阶段需要补充一些基础知识
-
随处可见的红黑树
-
磁盘存储链式的B树与B+树
-
海量数据去重的Hash与BloomFilter,bitmap
-
创建型设计模式
-
结构型设计模式
精进基石专栏【二】
-
stl容器,智能指针,正则表达式
-
新特性的线程,协程,原子操作,lamda表达式
-
Makefile/cmake/configure
-
分布式版本控制git
-
Linux系统运行时参数命令
高性能网络设计专栏-网络编程
网络编程,socket编程,各种网络IO模型的区别与底层原理,尤其是epoll模型中的各种细节问题,需要摸得非常熟悉
-
网络io与select,poll。epoll
-
reactor的原理与实现
-
http/https服务器的实现
-
websocket协议与服务器实现
高性能网络设计专栏-网络原理
-
服务器百万并发实现
-
redis,memcached,nginx网络组件
-
Posix API与网络协议栈
-
UDP的可靠传输协议QUIC
高性能网络设计专栏-自研协程框架
-
协程设计原理与汇编实现
-
协程调度器实现与性能测试
-
用户态协议栈设计实现
-
tcp/ip定时器与滑动窗口
-
手把手设计实现epoll
基础组件设计专栏-池式组件
-
手写线程池与性能分析
-
内存池的实现与场景分析
-
异步请求池的实现
-
mysql连接池的实现
基础组件设计专栏-高性能组件
-
原子操作CAS与锁实现
-
无锁消息队列实现
-
定时器方案红黑树,时间轮,最小堆
-
手写死锁检测组件
-
手写内存泄漏检测组件
-
手把手实现分布式锁
基础组件设计专栏-开源组件
-
libevent/libev框架实战的那些坑
-
异步日志方案log4cpp
-
应用层协议设计ProtoBuf/Thrift
中间件开发专栏-MySQL
MySQL是互联网中应用非常多的数据库系统,在基础阶段只学习了数据库的理论知识和SQL的用法。
到这个阶段,需要更加深入,研究MySQL的底层原理,索引实现原理、事务实现原理、锁机制等等,不仅能用,还要能在开发大型项目遇到数据库性能问题时,了解原理更好的解决问题。
-
SQL语句,索引,视图,存储过程,触发器
-
MySQL索引原理以及SQL优化
-
MySQL事务原理分析
-
MySQL缓存策略
中间件开发专栏-TiDB
-
TiDB存储引擎的原理
-
TiDB集群方案与Replication原理
中间件开发专栏-Redis
Redis作为MySQL的好搭档,缓存系统的主流选择,其重要性越来越强了。
除了基本的使用,还需要学习一下Redis背后的原理,内存数据结构如何实现,持久化、高可用、集群扩展、分布式锁如何实现等等问题都值得研究。一方面Redis作为非常优秀的开源软件,其本身就非常值得借鉴学习,另一方面学习背后的实现原理,对实际工作中解决问题也有非常大的帮助。
-
Redis相关命令详解及其原理
-
Redis协议与异步方式
-
Redis源码 存储原理与数据模型
-
Reids源码 主从同步与对象模型
中间件开发专栏-RocksDB
-
不一样的kv存储RocksDB的使用场景
-
RocksDB的特殊操作
中间件开发专栏-Nginx
-
Nginx反向代理与系统参数配置conf原理
-
Nginx过滤器模块实现
-
Nginx Handler模块实现
中间件开发专栏-MongoDB
-
接口编程与文档操作
-
集群方案与持久化备份
开源框架专栏-skynet
-
Skynet设计原理
-
skynet网络层封装以及lua/c接口编程
-
skynet重要组件以及手撕游戏项目
开源框架专栏-TARS
-
TARS RPC服务模型原理
-
TARS公共框架服务与数据库
-
数据监控与服务性能压测
开源框架专栏-DPDK
-
DPDK环境与testpmd/l3fwd/skeletion
-
DPDK的用户态协议栈
-
千万级流量并发的dns处理
-
高性能数据处理框架vpp
-
DPDK的虚拟交换机框架OvS
Rust项目专栏【一】
-
Rust Slice类型与泛型
-
Rust文件操作与错误处理
-
Rust并发编程与智能指针
-
组件实现之网卡速度监控
Rust项目专栏【二】
-
组件实现之邮件发送
-
组件实现之OAuth2 第三方登陆
-
Rust异步框架 tokio
-
Rust web框架 Warp
Rust项目专栏【三】
-
Rust http库 hyper
-
DBProxy功能分析与设计实现
-
DBProxy的MySQL代理
-
DBProxy的Redis代理
性能分析专栏
-
测试框架gtest以及内存泄漏检测
-
火焰图的生成原理与构建方式
分布式架构专栏【一】
-
Kafka使用场景与设计原理
-
Kafka存储机制
-
远程调用brpc
-
注册服务中心Etcd
分布式架构专栏【二】
-
Kong 动态负载均衡与服务发现
-
Kong 实时监控与REST API
-
内核级支持的分布式存储Ceph
-
服务容器化Docker
项目实战【一】-图床共享云存储
-
fastdfs架构分析和配置
-
fastdfs存储原理
-
分布式fastdfs存储集群部署
-
高负载nginx/fastcgi
-
文件传输和接口设计
-
产品上云公网发布/测试用例
项目实战【二】-微服务即时通讯
-
IM即时通讯项目框架分析和部署
-
IM消息服务器/文件传输服务器
-
消息服务器/路由服务器
-
数据库代理服务器设计
-
文件服务器和docker部署
-
产品上云公网发布/公网测试上线
总结
以上就是做C/C++后端开发,从新手入门到工作所需要学习的内容整理了,可能并不全面,但掌握以上这些内容足以胜任大部分的岗位要求了。
除了学习路线,我还整理了这个过程中学习的大量学习资料,配合上面的学习路线使用:
数十位跳槽大厂的面经视频分享
2021BATJ等大厂面试题集锦
如果你有需要,可以加交流群83218493,我发给你。
路线图地址: Linux C/C++后端服务器架构开发 成长体系
整理不易,如果觉得还不错的话,欢迎帮点赞评论转发三连支持呀~