Linux C++后台开发自学路线,看完醍醐灌顶

后台开发包括的知识点很多,包括语言基础,算法,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职级技术栈对标,围绕数据结构与算法、数据库、网络、操作系统、网络编程、分布式架构等方面全面提升,值得学习一波~

还有一份大厂面经集合:

和技术路线总结图:

 

资料领取

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值