这才是你需要的C/C++Linux服务器后台开发学习路线!

C语言和C++属于“造轮子”语言,几乎什么都能做。不过一般来说,C语言和C++主要还是做后台(服务端)开发比较多,包括:

通信公司后台开发
互联网公司后台开发
游戏公司后台开发
……
当然这个后台开发具体职责又有很多细分,比如:

有做数据处理和分析的
有做基础协议和通信的
有做服务端底层应用优化的
甚至还有做后台系统驱动和内核的
……

从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?
C/C++,它和Java确实不太一样。C语言和C++,尤其C++,语言粒度细、机制多,性能虽然高,但语言本身的包袱也确实重,我们更愿意称它“造轮子”的语言!也正是因为C语言和C++性能好、粒度细,所以什么都能做。而Java本身就是一种服务于互联网软件开发(后端开发+客户端开发)的语言,它有一个明显的“生态圈”的概念,所以应用领域非常清晰。我个人觉得C语言和C++编程比Java还是要难一些,Java毕竟是纯应用层的,C语言和C++则对程序员能力的要求要更高一些。

C/C++的应用方向大多都是后台或者server开发.,所以我认为必须要学会Linux系统。
不管怎样,下面即将要介绍的这些学习路线和内容适用于以上所有情况。

基础

数据结构与算法

排序与KMP
红黑树
B树与B+树
Hash与布隆过滤器
在这里插入图片描述

设计模式

责任链模式
过滤器模式
发布订阅模式
工厂模式
代理模式
在这里插入图片描述

工程管理

Makefi le/cmake/conf i gure
git/svn与持续集成
Linux 系统运行时参数命令

高性能网络设计

代码实现

网络io与select/poll/epoll
reactor的原理与实现
http/https web服务器的实现
websocket协议与服务器实现
在这里插入图片描述

方案分析
服务器百万并发的实现
redis/memcached/Nginx网络组件
Posix API与网络协议栈
UDP可靠性协议 QUIC/KCP
在这里插入图片描述
在这里插入图片描述

基础组件实现

池式组件
手写线程池与性能分析
ringbuffer与 内存池实现
异步请求池http/mysq1/redis/dns
mysq1连接池的实现
redis连接池的实现
在这里插入图片描述
在这里插入图片描述

高性能组件
原子操作CAS
消息队列与无锁实现
定时器方案红黑树时间轮最小堆
锁实现原理实现
服务器连接保活设计
try/catch组 件的实现
在这里插入图片描述

开源组件
libevent/libev框架实战
异步日志方案log4cpp
应用层协议设计ProtoBuf/Thr ift
OpenssI对称加密与非对称加密
Json数据解析/Xml解析器和工具包
字符编码Unicode原理及编程实践
在这里插入图片描述

框架

协程框架实现NtyCo
协程的设计原理与工程案例
协程的调度器实现与性能测试
在这里插入图片描述

用户态协议栈NtyTCP
tcp/ip设计与EpolI的实现
tcp/ip定时器与滑动窗口的实现
滑动窗口/拥塞慢启动
在这里插入图片描述

中间件开发

MySQL
SQL语句,索引,存储过程,触发器
数据库连接池与SQL协议剖析
存储引擎原理MyISAM与InnoDb
自己动手实现一个存储引擎
MySQI集群 方案与Rep1 ication原理
在这里插入图片描述

Redis
Redis相关命令与持久化
Redis连接池与协议实现_
存储原理与数据模型
主从同步与原子模型
集群方案主从复制/哨兵/集群
在这里插入图片描述

Nginx
Nginx反向代理与系统参数配置conf原理
广告内容推送Nginx过滤模块的实现
访问频率统计Nginx handler模块的实现
Nginx http状态机流程
进程间通信与Slab共享机制
在这里插入图片描述

MongoDB
接口编程与文档操作
集群方案与持久化备份
在这里插入图片描述

dfs
内核级支持的分布式存储Ceph
分布式小文件存储fastdfs
在这里插入图片描述

开源框架

Skynet
手撕Skynet高性能网关
actor实现与cluster集群/负载均衡
:skynet网络模块热更新数据共享
在这里插入图片描述

ZeroMQ
ZeroMQ Router-Dealer模式实现
消息模型与工程案例
网络机制与性能分析
在这里插入图片描述

DPDK
PCI原理与testpmd/ 13fwd/skeleton
kni数据流程与协议栈解析
DNS协议解析与服务器实现
高性能Nginx网关实现
半虛拟化virtio与vhost加速
在这里插入图片描述

Linux内核源码

进程管理
进程管理和调度
锁与进程间通信
系统调用与自定义syscall的实现

内存管理
物理内存管理
进程虚拟内存mm_ struct分析
项目:页面回收和页交换

内存管理
物理内存管理
进程虚拟内存mm_ struct分析
页面回收和页交换

文件系统
虚拟文件系统
Ext文件系统族
无持久存储的文件系统
扩展属性和访问控制表

设备驱动
内核编译与虚拟机系统升级
进程间通信组件实现
虚拟网络适配器的实现
在这里插入图片描述
在这里插入图片描述

性能分析

性能工具
高性能代码构建系统tundra
Http压测工具WRK
网站压测工具webbench
在这里插入图片描述

调试库
内存调试性能分析工具Valgr ind
谷歌C++测试框架GoogleTest
内存分配跟踪库MemTrack

内核跟踪
内核探测SystemTap
热图分析与生成

配套参考书籍资料

MySQL:《高性 能MySQL第3版》
Nginx:《深 入理解Nginx:模块开发与架构分析(第2版)》(陶辉)
Redis:《Redis 5设计与源码分析》(陈 雷)
Linux内核:《深 入理解Linux内核架构》(郭旭 译)
数据结构与算法:《算法导论》 (第3版)
性能分析:《性能之巅 洞悉系统、企业与云计算》
MongoDB:《MongoDB权威 指南》
Ceph:《Cep分布式存储学 习指南》(Ceph中 国社区)
Docker:《Docker容器 与容器云(第2版)》
TCP/IP:《Tcp/Ip详解卷一卷二卷三》
Linux系统编程:《Unix高 级环境编程》
计算机:《深入理解计 算机系统》
ZeroMQ:《ZeroMQ: 云时代极速消息通信库》
DPDK:《深 入浅出DPDK》

以上有不足的地方欢迎指出讨论,觉得不错的朋友希望能得到您的转发支持
最后,如果觉得学习资料难找的话,可以添加C/C++Linux学习交流群:960994558 学习资料已经共享在群里了,期待你的加入~

猜你喜欢

转载自blog.csdn.net/weixin_52622200/article/details/111271229