网站首页 > 教程文章 正文
C++ 需要学多久,怎样才能学好?怎样才能达到大厂技术标准?
其实这个问题不好回答...
为什么呢?
C++有一千个分支,你想学哪个?客户端(Qt),后端(更多的是量化和游戏),音视频流媒体,图形学,嵌入式,深度学习,存储,网络,量化,各种底层,驱动,操作系统内核等等。。。
C++ 学习具有明显的阶梯性,需从语法基础逐步过渡到系统级开发能力,同时结合具体应用方向深化(如后端开发、Qt等),文尾附腾讯T级职业等级标准图。
以下是按阶段划分的核心内容:
提示:如果你时间充足,建议先把C学习了,C/C++是一个体系,相信会对你的认知有一个提升。
Part1基础阶段
此阶段目标是掌握 C++ 基本语法,理解程序执行逻辑与内存模型,为后续学习奠定基础。
环境搭建与工具链
- 编译器与 IDE:安装 GCC/Clang 编译器,使用 VSCode(搭配插件)或 CLion 作为开发环境。
- 基础操作:掌握编译(g++)、运行、调试(GDB)命令,编写第一个程序(如 Hello World)。
核心语法基础
- 数据类型与变量:基本类型(int、float、char)、自定义类型(enum、typedef),重点理解引用(Reference)与指针(Pointer)(内存地址操作、野指针处理)、const 常量的使用。
- 控制流程:分支(if-else、switch-case)、循环(for、while)、跳转语句(break、continue),理解迭代逻辑。
函数与模块化编程
- 函数核心:定义与调用(值传递、引用传递、指针传递)、重载(Overload)、内联函数(inline)、默认参数。
- 工程化基础:命名空间(namespace,如 std 库的使用)、预处理指令(#define 宏定义、#ifdef 条件编译)。
基础实践项目
- 命令行计算器(四则运算)、简易成绩管理系统(数组 + 文件存储),目标是掌握语法并理解栈 / 堆内存模型。
Part2进阶阶段
此阶段聚焦面向对象思想(OOP)、内存管理与标准库应用,是从 “会用” 到 “用好” 的关键。
面向对象编程(OOP)
- 类与对象:类的定义(成员变量 / 函数)、构造函数(默认 / 带参 / 拷贝构造)、析构函数,访问控制(public/protected/private)。
- 继承与多态:单继承 / 多继承(虚基类解决菱形问题)、虚函数(virtual)、纯虚函数(抽象类)、动态类型转换(dynamic_cast)。
内存管理与智能指针
- 手动管理:new/delete、数组 new[]/delete[] 的使用与风险(内存泄漏、二次释放)。
- 智能指针:std::shared_ptr(引用计数)、std::unique_ptr(独占所有权)、std::weak_ptr(解决循环引用),搭配 Valgrind 等工具检测内存泄漏。
模板与泛型编程
- 函数模板(如通用排序、交换逻辑)、类模板(自定义泛型容器)。
- STL 标准库:容器(vector、list、map、set)、算法(迭代器操作、查找、排序)、适配器(stack、queue),需熟练掌握其底层实现原理(如 vector 动态扩容机制)。
文件与流操作
- 文本 / 二进制文件读写(ifstream、ofstream)、字符串流(stringstream)与格式化输出。
进阶实践项目
- 命令行电话簿(类封装 + 文件持久化)、简易图书管理系统(继承 + 多态 + STL 容器),目标是掌握 OOP 思想与内存管理逻辑。
Part3高阶阶段
此阶段需具备处理复杂场景的能力,涵盖并发、网络、架构设计等核心技能。
多线程编程
- 线程管理:std::thread/std::jthread 的创建与销毁。
- 同步机制:互斥量(std::mutex、std::lock_guard)、信号量(std::counting_semaphore)、读写锁(std::shared_mutex),理解线程池与任务调度原理。
网络编程
- 基础:Socket 编程(TCP/UDP 协议)、客户端 / 服务器模型实现。
- 进阶:使用 Boost.Asio、libuv 等网络库,理解 I/O 多路复用(select/poll/epoll)与 Reactor 模式。
设计模式应用
- 创建型:单例模式(Singleton)、工厂模式(Factory)。
- 结构型:适配器模式(Adapter)、装饰器模式(Decorator)。
- 行为型:观察者模式(Observer)、策略模式(Strategy),需结合场景选择合适模式降低代码耦合。
性能优化与调试
- 工具:性能分析(gprof、perf)、内存优化(避免碎片、内存池)、编译优化(GCC/Clang 选项)。
- 调试:GDB 断点调试、日志系统设计,定位高并发场景下的性能瓶颈。
高阶实践项目
- 并发网络爬虫(多线程 + Socket)、游戏引擎核心模块(场景管理、碰撞检测),目标是具备系统级开发能力。。
- Linux教程
- 分享Linux、Unix、C/C++后端开发、面试题等技术知识讲解
- 89篇原创内容
- 公众号
Part4怎样才算学好 C++?
C++ 难度在于 “语法背后的原理”(如内存模型、操作系统交互),而非单纯语法记忆。学好需兼顾 “基础扎实”“实践深入”“方向聚焦” 三大原则。
1. 重视基础,拒绝 “跨越式学习”
- 基础阶段(语法、指针、内存模型)是核心,例如:指针与引用的区别、new 与 malloc 的底层差异、栈与堆的内存分配机制,这些内容直接影响后续对 OOP 和多线程的理解。
- 推荐通过《C++ Primer》系统学习语法,搭配《深入理解计算机系统》理解程序执行的底层逻辑(如寄存器、虚拟内存)。
2. 以 “项目驱动” 代替 “纯理论学习”
- 每个阶段必须配套实践:基础阶段写计算器,进阶阶段用 STL 实现图书管理系统,高阶阶段尝试开发简易 Web 服务器(解析 HTTP 请求 + 处理静态文件)。
- 项目需 “循序渐进”:从单文件程序到多模块工程(用 CMake 管理),从单线程到多线程(解决竞态条件),逐步贴近工业级场景。
3. 深入源码与原理,避免 “API 调用员” 思维
- 阅读 STL 源码(如 vector 的扩容逻辑、map 的红黑树实现),理解 “为什么这样设计”(如 vector 选择连续内存是为了随机访问效率)。
- 分析开源项目:如 Nginx 的事件驱动模型、Redis 的单线程架构,学习其代码组织与性能优化思路(如 Redis 的 I/O 多路复用)。
4. 针对性补充 “领域知识”
- 若走后端开发:需学 Linux 系统编程(《Unix 环境高级编程》)、网络编程(《TCP/IP 详解》),掌握 epoll、进程通信等底层技术。
- 若走游戏引擎:需深入数学(线性代数)、图形学,学习物理引擎(如 Bullet)的集成,理解 C++ 与脚本语言(Lua)的交互。
5. 善用工具与资源
- 调试工具:GDB 调试内存问题,Valgrind 检测泄漏,perf 分析性能瓶颈。
- 书籍推荐:
- 基础:《C++ Primer》《Effective C++》(避坑指南);
- 进阶:《STL 源码剖析》(侯捷)、《C++ 并发编程实战》;
- 后端方向:《Linux 高性能服务器编程》(游双)、《高性能 MySQL》。
6. 接受 “慢即是快”,拒绝 “速成思维”
C++ 涉及的知识体系庞大(语法、OS、网络、算法等),切忌急于求成。例如:多线程的互斥与同步,需要通过实际编写线程池并解决死锁问题才能真正掌握;内存管理需结合 Valgrind 调试多个泄漏案例才能理解风险点。
保持 “每周一个小练习 + 每月一个综合项目” 的节奏,积累 1-2 年,即可具备扎实的开发能力。
Part5 方向深化
附上几个不同方向的学习路线:
音视频流媒体高级开发-学习路线
C++ Qt学习路线一条龙!(桌面开发&嵌入式开发)
Linux内核学习指南,硬核修炼手册
现在我们以 Linux 后端开发为例,若聚焦 Linux 后端开发,需补充以下知识点:
一、基础理论专栏
1.1、数据结构与算法
红黑树
- 红黑树在进程调度 CFS 及内存管理中的应用场景解析
- 红黑树的数学原理证明与推导过程
- 红黑树左旋与右旋操作的手写演示步骤
- 红黑树添加操作的实现逻辑及三种情况的证明
- 红黑树删除操作的实现逻辑及四种情况的证明
- 红黑树的线程安全实现方案
- 工程实践中红黑树的实用特性总结
磁盘存储的 B 树与 B + 树
- 磁盘结构剖析与数据存储底层原理
- 多叉树的应用场景及 B 树的定义与证明
- B 树插入操作的两种分裂方式详解
- B 树删除操作的借位与节点合并方法
- B 树的插入、删除、遍历、查找操作手写演示
- B + 树的定义、特性与实现逻辑
- B + 树叶子节点前后指针的设计与作用
- B + 树的应用场景与实用特性分析
- B + 树的线程安全实现方式
数据去重技术
- Abhloriter Bitap 算法在海量数据去重中的应用
- Hash 原理剖析与 Hash 函数的实现方式
- Hash 技术的典型应用场景
- 分布式 Hash 的实现原理与架构
- 布隆过滤器在海量数据去重中的应用
- 布隆过滤器的数学推导与准确性证明
1.2、设计模式专栏
创建型设计模式
- 单例模式:实现原理、线程安全问题及解决方案
- 策略模式:策略封装与动态切换机制
- 观察者模式:订阅 - 发布机制与松耦合设计
- 工厂方法模式与抽象工厂模式:对象创建的封装与扩展
- 原型模式:对象复制的实现与深 / 浅拷贝问题
结构型设计模式
- 适配器模式:接口兼容与系统集成方案
- 代理模式:访问控制、延迟加载与增强功能实现
- 责任链模式:请求分发与处理流程解耦
- 状态模式:对象状态管理与行为动态切换
- 桥接模式:抽象与实现的分离及多维度扩展
- 组合模式:树形结构的统一表示与操作
1.3、C++ 新特性专栏
STL 容器及智能指针
- STL 容器体系:序列式容器、关联式容器的特性与应用
- 智能指针:shared_ptr 的引用计数机制、unique_ptr 的独占 ownership 及使用场景
- unordered_map 的底层实现(哈希表)与使用技巧
- 哈希在 STL 中的应用:哈希函数、冲突解决策略及原理
正则表达式与函数对象
- 正则表达式基础:basic_regex 对象、sub_match 匹配结果处理
- 函数对象模板:function 的可调用对象封装、bind 的参数绑定与调整
多线程与并发编程
- C++ 新特性中的线程管理与协程基础
- 原子操作:atomic 的类型支持、内存序与线程安全保证
- Lambda 表达式在并发编程中的应用:捕获模式与匿名任务
- thread_local 变量的线程私有存储特性、condition_variable 的线程同步机制
异常处理与错误处理
- 异常处理:exception_ptr 的异常传递与延迟处理
- 错误处理:error_category 的错误分类与描述
- 协程的使用场景、状态管理与原理剖析
1.4、Linux 工程管理及系统监控
构建工具与版本控制
- Makefile/CMake/configure 的工作原理与实际应用
- 构建工具的参数传递机制与常用操作函数
- Git 全流程:工作区与暂存区管理、分支创建与合并、服务器搭建与协作流程
系统监控
- Linux 运行时参数查看命令:系统资源、进程状态等关键指标获取
- 进程间通信设施状态(ipcs)与系统运行时长(uptime)监控
- 性能分析工具:iostat(磁盘活动)、mpstat(多处理器使用)的指标解读
- 综合监控工具:sar(系统活动收集)、pmap(内存使用)、nmon(多维度监控)的使用
系统监控与网络工具
- 多用途监控工具:glances(系统全景)、strace(系统调用跟踪)、ftptop(FTP 连接)、powertop(电源管理)
- 数据库与系统监控:mytop(MySQL 性能)、htop/top/atop(系统运行参数)
- 网络监控工具:netstat(网络统计)、tcpdump(数据包分析)、Telnet(远程登陆)、iptraf(实时网络统计)、iftop(带宽使用)
二、高性能网络设计专栏
2.1、网络编程异步网络库 zvnet
- 网络 I/O 模型:I/O 多路复用技术(select/poll/epoll)原理对比
- Socket 与文件描述符的关联:文件描述符表、Socket 操作的底层映射
- 多路复用实现:select/poll 的代码编写与性能瓶颈分析
- LT/ET 模式的区别:电平触发与边缘触发的事件处理逻辑
- 事件驱动 reactor 模式:核心原理、组件设计与实现步骤
- reactor 模式对业务开发的优势:异步处理、高并发支持
- poll 封装:send_cb/recv_cb/accept_cb 的回调函数设计
- 多核环境下 reactor 的优化:负载均衡与线程模型设计
- 跨平台 reactor 封装:适配 select/epoll/kqueue 的统一接口
- 网络组件集成:与 redis、memcached、nginx 的交互方案
- HTTP 服务器实现:协议解析、请求处理与响应构建
- reactor 中的缓冲区设计:sendbuffer 与 recvbuffer 的封装及 HTTP 协议适配
- HTTP 协议格式:请求行 / 头 / 体、响应结构与状态码
- 有限状态机 FSM:HTTP 请求的分段解析实现
- 其他协议支持:WebSocket 握手与帧处理、TCP 文件传输协议设计
2.2、网络原理
- 服务器百万并发实现:从理论到实操的关键配置与优化
- 同步与异步数据处理的差异:阻塞 / 非阻塞模型对性能的影响
- 网络 I/O 线程池:异步处理架构设计与任务调度
- 系统参数调优:ulimit 提升 FD 上限、sysctl.conf 中 rmem 与 wmem 的内存配置
- 连接追踪(conntrack):原理分析与大规模连接下的性能问题
- POSIX API 与网络协议栈的交互:从 API 调用到协议层的流程
- TCP 三次握手:connect、listen、accept 的角色与时机
- listen 参数 backlog:半连接队列与全连接队列的关系
- SYN 泛洪防范:SYN Cookie、队列长度调整等解决方案
- TCP 四次挥手:close 操作与连接终止的状态变化
- TCP 连接 11 种状态迁移:状态转换条件与异常处理
- close_wait 与 time_wait 堆积:产生原因与优化方案(端口复用、超时调整)
- 心跳机制:TCP keepalive 与应用层心跳包的设计与对比
- TCP 核心机制:拥塞控制(慢启动、拥塞避免)与滑动窗口(流量控制)
- UDP 协议:可靠传输方案(QUIC)、优缺点与高并发设计
- QQ 早期选择 UDP 的原因:实时性、带宽占用与协议简化
- QUIC 协议:设计原理(0-RTT 握手、连接迁移)与开源方案 quiche
- KCP 协议:设计方案(快速重传、流量控制)与算法原理
2.3、框架:基于 DPDK 的用户态协议栈的实现
- 用户态协议栈:设计架构、适用场景(高性能场景)与实现原理
- 开源框架参考:netmap 的工作模式与技术特点
- 协议实现:eth 协议(帧处理)、IP 协议(路由与分片)、UDP 协议(数据报传输)
- 辅助协议实现:ARP 协议(地址解析)、ICMP 协议(控制消息)
- 应用层 POSIX API 适配:socket/bind/listen/accept/recv/send 的用户态实现
- TCP 核心机制:滑动窗口(流量控制)、慢启动(拥塞控制)解释
- 定时器实现:重传定时器、坚持定时器、time_wait 定时器、keepalive 定时器
- epoll 用户态实现:数据结构设计、线程安全保证与 FD 就绪回调机制
- LT/ET 模式:用户态下的事件触发逻辑实现
- 高性能异步 I/O:IO_uring 机制与 epoll 的对比
- IO_uring 系统调用:io_uring_setup(初始化)、io_uring_register(注册资源)、io_uring_enter(提交任务)
- liburing 与 IO_uring 的关系:封装库的功能与使用方式
- IO_uring 特性:共享内存机制、性能优势与适用场景
- IO_uring 操作实现:accept/connect/recv/send(网络)、读写(磁盘)的机制
- proactor 模式:基于 IO_uring 的实现方案
三、组件设计
3.1、池式组件
线程池:手写实现与性能分析(项目实战)
- 异步处理场景:任务分发、并发任务执行
- 核心组成:任务队列(生产者 - 消费者模型)、执行队列(线程管理)
- 任务调度:回调函数设计与条件变量等待机制
- 动态伸缩:线程数量根据任务量的调整策略
- 扩展对比:nginx 线程池的实现方式与设计差异
内存池:实现与场景分析(项目实战)
- 应用场景:高频内存分配、避免内存碎片
- 分配策略:小块内存(链表管理)与大块内存(直接分配)的管理
- 手写实现:结构体封装(元数据)与 API 设计(创建 / 分配 / 释放)
- 内存泄漏防护:两种万能方法(资源管理对象、泄漏检测工具)
- 定位工具:3 种常用工具(valgrind、addr2line、mtrace)的使用
- 扩展对比:nginx 内存池的架构与优化
MySQL 连接池:实现(项目实战)
- 性能影响因素:top 连接数控制、MySQL 认证流程优化
- 连接管理策略:请求归还机制、超时未归还处理、断开重连方案
- 连接数量优化:基于并发量的动态调整策略
3.2、高性能组件
原子操作与锁:CAS 原理与锁实现(项目实战)
- 互斥锁:使用场景(临界区保护)与底层实现原理
- 自旋锁:性能分析(忙等 vs 阻塞)与适用场景
- 原子操作:汇编层面的实现(x86 指令)与内存序保证
无锁消息队列:实现(项目实战)
- 性能对比:有锁与无锁队列的吞吐量与延迟
- 内存屏障(Barrier):防止指令重排的原理与应用
- 设计实现:数组无锁队列(环形缓冲区)、链表无锁队列(CAS 节点操作)
网络缓冲区设计
- RingBuffer:环形结构的读写指针操作与边界处理
- 定长消息包:包头长度字段与数据解析
- ChainBuffer:链式结构的碎片整合与高效读写
- 双缓冲区:前台写入与后台处理的切换机制
定时器方案:红黑树、时间轮、最小堆(项目实战)
- 使用场景:定时任务、超时检测
- 存储实现:红黑树(按时间排序)、时间轮(分层哈希)、最小堆(堆顶最小时间)
- 分布式定时器:跨节点任务同步与触发机制
死锁检测组件:手写实现(项目实战)
- 死锁原理:资源竞争与循环等待条件
- 实现基础:pthread_mutex_lock/unlock 的 hook(dlsym 动态链接)
- 检测逻辑:有向图构建(锁依赖)、DFS 环判断算法
- 核心操作:lock_before(前置检查)、lock_after(记录依赖)、unlock_after(清除依赖)
- 检测线程:定时扫描与死锁告警
内存泄漏检测组件:手写实现(项目实战)
- 泄漏现象:第三方库与业务代码的泄漏差异
- 实现基础:malloc/free 的 hook(dlsym 替换)
- 检测策略:分配记录(地址、大小、堆栈)、释放校验、泄漏统计
- 应用场景:单元测试、集成测试中的泄漏定位
分布式锁:手把手实现(项目实战)
- 锁类型:互斥锁(资源独占)、自旋锁(短任务)
- 异常处理:加锁超时、锁释放失败
- 实现方案:非公平锁(先到先得)、公平锁(队列排队)
3.3、开源组件
异步日志方案 spdlog(项目实战)
- 性能瓶颈:同步写入、磁盘 I/O 阻塞
- 设计实现:异步日志队列、批量写入、双缓存机制(前台写缓存,后台刷盘)
- 可靠性保障:崩溃后的日志找回(缓存持久化)
应用层协议设计 ProtoBuf(项目实战)
- 协议案例:IM、云平台、nginx、http、redis 的协议设计思路
- 消息完整性:长度前缀、校验和、序列号机制
- 实战:手撕 protobuf IM 通信协议的定义与使用
- 核心原理:protobuf 的序列化(紧凑编码)与反序列化流程
- 编码细节:字段类型、varint 编码、zigzag 编码原理
四、中间件开发
4.1、Redis
- Redis 命令详解:核心命令(字符串、哈希、列表等)的使用与底层原理
- 分布式锁实现:基于 setnx 的方案、超时处理与可重入优化
- Lua 脚本:原子性保证(ACID 中的 A)与复杂逻辑封装
- Redis 事务:ACID 性质分析(弱一致性、隔离性)
- Redis 协议: RESP 协议格式与异步通信方式
- 协议解析:请求 / 响应的编码与解码流程
- 存储原理:数据模型(键值对)、对象编码(int、embstr 等)
- 主从同步:复制流程(全量 / 增量同步)与对象模型同步
- 集群与持久化:3 种集群方式(主从、哨兵、Cluster)、4 种持久化方案(RDB、AOF 等)
- 数据结构实现:string(SDS)、list(双向链表)、hash(字典)、set(整数集合 / 哈希表)、zset(跳表)
4.2、MySQL
- SQL 基础:语句分类(DDL/DML/DQL/DCL)、索引、视图、存储过程、触发器
- 体系结构:连接层、服务层、引擎层的组件与交互
- SQL 执行流程:解析、优化、执行的详细步骤
- 权限管理:用户创建、权限分配(GRANT/REVOKE)与访问控制
- 索引原理:B + 树结构、聚簇 / 非聚簇索引、索引选择性与优化
- 事务原理:ACID 特性、隔离级别(读未提交 - 串行化)与实现(MVCC)
- 锁机制:锁类型(行锁 / 表锁)、锁算法(Record Lock 等)、锁操作对象
- 缓存策略:查询缓存(失效机制)、缓冲池(页缓存)
4.3、Kafka
- 使用场景:日志收集、消息队列、流式处理
- 设计原理:发布订阅模式与点对点消息传递的实现
- Kafka Brokers:集群架构、副本机制与 leader 选举
- Topics 和 Partitions:存储机制(分区日志文件)、分区策略
- 消息查找:offset 索引与 message 的快速定位
- 存储细节:日志分段、清理策略(日志保留 / 压缩)
- gRPC:微服务通信基石,内部组件(Channel/Stub)关联
- gRPC 异步实现:异步调用流程与回调处理
- 回调方式:客户端 / 服务端的异步调用模式
4.4、Nginx
- 反向代理:配置原理与系统参数(worker_processes 等)优化
- 静态文件配置:root/alias 指令、缓存策略、压缩配置
- 动态接口代理:location 匹配、 upstream 负载均衡配置
- 协议转发:Mqtt 协议、Rtmp 推拉流的代理配置
- Openresty 扩展:Redis 缓存数据代理的 lua 脚本实现
- 模块开发:过滤器模块(请求 / 响应处理)、Handler 模块(请求处理)的实现
- 负载均衡:策略(轮询、加权、IP 哈希)与健康检查
- 核心数据结构:ngx_cycle_t(全局状态)、ngx_event_module_t(事件模块)
- Upstream 机制:请求分发、失败重试、超时设置的设计与实现
五、开源框架
5.1、游戏服务器开发 - Skynet 设计原理
- 多核并发编程:多线程(共享内存)、多进程(独立地址空间)、CSP 模型(通信顺序进程)、Actor 模型(消息驱动)
- Actor 模型实现:Lua 服务(轻量隔离)与 C 服务(高性能计算)的实现方式
- 消息机制:消息队列设计(无锁队列)与 Actor 消息调度流程
- Skynet 网络层:封装细节(Socket 抽象)与 Lua/C 接口编程(API 使用)
- Reactor 网络模型:Skynet 中的封装与事件处理
- Socket 组件:Socket/SocketChannel 的连接管理与数据传输
- 高性能开发:C 服务的编写规范与性能优化
- Lua 编程:基础语法与 Lua/C 接口(数据交互、函数调用)
核心组件:
- 基础接口:Skynet.send(异步发送)、Skynet.call(同步调用)、Skynet.response(响应处理)
- 广播组件:Multicastd 的组播实现
- 数据共享:SharedData(内存共享)、DataSheet(配置表)
项目实战:
万人同时在线游戏的架构设计与开发要点
5.2、分布式 API 网关
- Openresty:高性能 Web 网关的架构(Nginx+Lua)与优势
- Nginx 与 Lua 模块:集成方式(ngx_lua 模块)与 Lua API 使用
- 数据交互:Openresty 访问 Redis(lua-resty-redis)和 MySQL(lua-resty-mysql)
- API 开发:Restful API 的设计规范与 Openresty 实现
- 性能分析:瓶颈定位(CPU / 内存 / IO)与优化策略
- Kong:动态负载均衡(策略配置)与服务发现(与注册中心集成)
- 技术整合:Nginx、Openresty 和 Kong 的功能边界与协同方案
- 核心机制:动态负载均衡(权重调整)、服务发现(健康检查)的原理
- Serverless 架构:网关在无服务场景中的路由与触发
- 运维保障:监控(metrics 收集)、故障检测(心跳)与恢复(自动切换)
- 性能优化:代理层缓存(本地 / 分布式)、响应服务(压缩 / 合并)
- 日志管理:系统日志的收集、分析与告警
5.3、SPDK 助力 MySQL 数据落盘
- SPDK 文件系统:设计架构(用户态驱动)与实现流程
- 硬件原理:NVMe 协议与 PCIe 总线的通信机制
- SPDK 组件:NVMe Controller 与 Bdev 的交互(RPC 通信)
- 存储结构:Blobstore(块管理)与 Blob(文件抽象)的关系
- POSIX API 实现:Open/Write/Read/Close 的用户态适配
- 四层结构设计 VFS:虚拟文件系统的接口封装
- 异步改造:SPDK 的异步操作与 POSIX 同步 API 的兼容
- 性能测试:承接 MySQL 业务的读写性能对比(与内核文件系统)
- 优化方案:使用 LD_PRELOAD 替换 MySQL 系统调用(转向 SPDK 接口)
- I/O 性能:Iodepth 参数影响、随机 / 顺序读写的性能比较
5.4、高性能计算 - CUDA 开发
- GPU 并行计算:CUDA 开发流程(核函数编写、数据传输)
- 异构计算:CPU+GPU 的任务分工(串行 vs 并行)
- 体系结构:GPU 的硬件组成(SM、线程束)与并行模型
- 环境搭建:NVCC 编译器使用、SRUN 任务调度
- 基础案例:CUDA 向量加法(内存分配、核函数调用)、矩阵乘法(共享内存优化)
- 并行扩展:MPI 与 CUDA 的结合(多 GPU 通信)
- 音视频应用:CUDA 在 H.264、MPEG 编解码中的并行计算
- FFmpeg 集成:CUDA 硬件加速的启用与使用
5.5、并行计算与异步网络引擎工作流
- Workflow 框架:应用场景(分布式任务、异步网络)与编程范式(任务驱动)
- 组件支持:MySQL/Redis/Kafka/DNS 的请求处理封装
- 任务处理:并行任务(多任务同时执行)与任务组装(依赖关系)
- 内部实现:组件架构、线程池设计(任务调度)
- 核心功能:DAG 图任务(复杂依赖)、消息队列(任务传递)的实现
- 工具封装:纯 C 的 JSON 解析器(轻量、高效)实现
5.6、物联网通信协议 MQTT 的实现框架 - Mosquitto
- MQTT 适用场景:低带宽、高延迟的物联网环境
- 核心模式:发布订阅模式(Broker 中转)的实现
- 低带宽优化:消息压缩、QoS 等级适配
- QoS 等级:3 种等级(0 - 最多一次,1 - 至少一次,2 - 恰好一次)的实现
- 安全认证:OAuth 授权、JWT 令牌的集成方案
- MQTT Broker:Mosquitto 的消息路由、会话管理
- 特色机制:遗嘱消息(客户端异常断开通知)、发布订阅过滤器(通配符)
- 部署与监控:Mosquitto 的 Docker 部署、日志实时监控(收集与分析)
六、云原生
6.1、Docker
Docker 内核功能
- namespace 隔离:进程(PID)、UTS(主机名)、IPC(进程通信)、网络(网络栈)、文件系统(挂载点)的隔离实现
- cgroup 资源控制:CPU、内存、IO 等资源的限制与配额
Docker 容器管理与镜像操作
- 镜像管理:下载(pull)、运行(run)、构建(build)流程
- 存储管理:镜像分层存储、容器数据持久化
- 数据卷:命名卷、绑定挂载的使用与区别
- 容器安全:capabilities 权限控制、镜像安全扫描
- 网络驱动:5 种驱动(bridge/host/overlay 等)的适用场景
- 跨主机通信:pipework 工具、0vS 的 vlan 划分与隧道模式、GRE 隧道实现
Docker 云与容器编排
- Dockerfile:语法规则(指令含义)与构建流程
- 编排工具:Fig/Compose 的服务定义与启动管理
- Flynn 体系架构:容器云平台的组件与功能
- Docker 的变革:对软件开发、部署流程的影响
6.2、Kubernetes
k8s 环境搭建
- 集群安全:证书管理、RBAC 权限控制
- 网络设置:CNI 插件选择、Pod 网络通信
- 核心服务:API Server、etcd、Controller Manager、Scheduler 配置
- 命令工具:kubectl 的常用命令与资源操作
- YAML 文件:语法规则(缩进、列表、映射)与资源定义
Pod 与 Service 的用法
- Pod 管理:创建、删除、扩容配置,健康检查(liveness/readiness)
- Pod 升级与回滚:滚动更新策略、版本控制
- DNS 服务:k8s 内部服务发现的实现(CoreDNS)
- 7 层策略:Ingress 控制器与 TLS 安全配置(证书管理)
k8s 集群管理的相关内容
- Node 管理:节点添加、污点与容忍度、资源预留
- namespace:资源隔离机制与多租户支持
- 日志管理:容器日志收集(fluentd)、存储与分析
- 监控体系:metrics-server 指标收集、Prometheus+Grafana 可视化
k8s 二次开发与 k8s API
- RESTful 接口:资源操作的 HTTP 方法与 URL 规范
- API 聚合机制:扩展 API 的注册与访问
- API 组:版本控制与资源分类
- Go 访问 k8s API:client-go 库的使用(客户端创建、资源操作)
七、性能分析专栏
7.1、测试框架
- 单元测试框架:gtest 的测试用例编写、断言使用
- 内存泄漏检测:gtest 结合内存检测工具的集成方案
- googletest 与 googlemock:测试文件组织、mock 对象模拟依赖
- 测试覆盖:函数检测(是否执行)、类测试(方法覆盖)
- 测试夹具(test fixture):共享测试环境的 setup/teardown
- 类型参数化:通用测试逻辑的多类型适配
- 事件测试:全局 / 测试套件级别的事件处理
- mock 功能:设置期望(ExpectCall)、参数匹配、调用次数验证
性能测试工具:
- 数据库:mysqlslap(MySQL)、redis-benchmark(Redis)
- 网络:wrk(HTTP)、TCPBenchmarks(TCP)
- 系统性能分析:磁盘 IO、内存使用率、网络带宽的指标采集
- 火焰图:生成原理(栈采样)、构建工具(perf+flamegraph)
- 火焰图应用:nginx/MySQL/Redis 的性能瓶颈定位(热点函数)
7.2、观测技术 BPF 与 eBPF
内核观测技术
- 内核 BPF:实现原理(虚拟机、JIT 编译)与演进(eBPF 的增强)
- 观测维度:跟踪(函数调用)、嗅探(数据)、采样(统计)、可观测性定义
- 动态 hook:kprobe(内核函数)/uprobe(用户态函数)的挂载与事件捕获
- 静态 hook:tracepoint(内核静态点)和 USDT(用户态静态标记)的使用
- 性能监控:PMC 模式(性能监控计数器)的 CPU 指标采集
- CPU 观测:taskset 的进程绑定与 CPU 使用率分析
- BPF 工具:bpftrace(脚本快速编写)、BCC(复杂工具开发)的使用
内核功能观测:
- 内存:kmalloc 分配跟踪、vm_area_struct 虚拟内存布局
- 文件系统:VFS 操作(open/read/write)状态
- 磁盘 IO:bitesize(IO 大小)、mdflush(缓存刷新)监控
应用观测:
- 网络流量:BPF 的流量统计(端口、协议)
- Redis 服务器:命令执行、连接状态的跟踪
- 网络事件:tcp_connect/accept/close 的生命周期监控
7.3、内核源码机制
- 进程调度机制:QEMU 调试内存的方法(断点设置、内存查看)
- 调度类:CFS(完全公平调度)与其他四类调度(实时、deadline 等)的原理
- task_struct 结构体:进程描述符的核心字段(状态、优先级、资源)
- RCU 机制:读 - 拷贝 - 更新的原理与内存优化屏障(memory barrier)
内核内存管理:
- 虚拟内存地址布局:内核 / 用户态地址空间划分
- SMP/NUMA 模型:多处理器内存访问与本地内存优化
- 页表:多级页表结构与页表缓存(TLB)原理
- 伙伴系统:物理内存页的分配与释放实现
- 块分配:Slab/Slub/Slob 的原理(对象缓存)与对比
- 系统调用流程:brk/kmalloc/vmalloc 的底层实现
文件系统组件:
- 虚拟文件系统(VFS):统一接口与各文件系统适配
- Proc 文件系统:内核信息导出的实现
- super_block(超级块)与 inode(索引节点)的结构体解析
- 文件描述符:fd 表与文件挂载流程
八、分布式架构
8.1、分布式数据库
- RocksDB 使用场景:与 kv 存储的差异(支持复杂操作)
- 高级功能:前缀搜索、低优先级写入、生存时间(TTL)支持
- 事务与存储:Transactions 实现、快照存储机制
- 引擎特性:日志结构的数据库引擎(LSM 树)原理
- TiDB 存储引擎:
- 权限管理:基于 RBAC 的角色与权限分配
- 数据安全:传输与存储加密实现
- 集群方案:Replication 原理(数据同步)
- TiDB 集群组件:TiDB Server(SQL 层)、PD Server(调度)、TiKV Server(存储)
- Raft 协议:分布式一致性的实现(领导者选举、日志复制)
- 数据库类型:OLTP(在线事务)与 OLAP(在线分析)的支持
8.2、分布式文件系统
- Ceph:内核级支持的分布式存储架构
- 集群部署:步骤与环境配置
- 核心组件:5 个核心组件(Monitor、OSD 等)的功能
- 运维管理:集群监控(指标收集)、性能调优(参数调整)、benchmark 测试
存储特性:
- 同步机制:数据一致性保证
- 线性扩容:新增节点的自动负载均衡
- 高可用:副本机制与故障恢复
- 负载均衡:数据分片与迁移策略
8.3、分布式协同
- Etcd:注册服务中心的核心功能(配置服务、服务发现等)
- 应用场景:监控数据存储、leader 选举、分布式锁实现
- 体系结构:集群节点角色与通信机制
- 存储原理:KV 存储结构与 MVCC 版本控制
- 读写机制:线性读、串行化读与事务的 ACID 特性
- Raft 共识算法:详细流程(选举、日志复制、安全性)
- 协同事件:用户态文件系统 fuse 的使用场景(自定义文件操作)
- fuse 实现:文件系统读写事件的捕获与处理
- 底层原理:/dev/fuse 设备的作用(用户态与内核态通信)
8.4、P2P 网络技术
- 快播 P2P 框架:核心技术揭秘(节点发现、数据传输)
- NAT 分析:网关 NAT 表的工作原理与端口映射
- NAT 类型:分类(全锥型、地址限制型等)与检测方法
- 代码实现:NAT 类型检测的逻辑流程
- 网络穿透:原理与 3 种情况(同 NAT、不同 NAT 等)的解决方案
九、建议练习的实战项目
9.1、DKV 存储实现(技术栈)
- 架构设计:KV 存储的整体架构与模块划分
- 核心定义:存储节点的数据结构与功能
- 网络通信:TCP 服务器 / 客户端的实现(连接管理、协议设计)
数据存储:
- 基础结构:哈希表、列表的存储实现
- 高级结构:SkipTable(有序)、RBTree(红黑树)的集成
网络同步与事务:
- 序列化格式:数据传输的编码 / 解码方案
- 事务管理:事务的创建、提交、回滚与释放
- 线程安全:并发访问的同步机制
内存管理:
- 优化策略:内存池使用、LRU 缓存(最近最少使用)实现
- 分配策略:大块 / 小块内存的管理方案
- 回收机制:内存泄漏防护与资源释放
- 数据持久化:磁盘存储方案与恢复机制
性能测试:
- 网络测试:TPS(每秒事务处理量)统计
- 吞吐量:数据传输速率测试
- 多语言支持:Go、Lua、Java 客户端的适配
9.2、图床共享云存储(技术栈)
- Ceph 应用:架构分析、快速配置与集群管理
- 核心逻辑:文件上传 / 下载的流程分析与实现
- 接口设计:文件传输协议与 HTTP 接口定义
- 数据库设计:图床的元数据(文件信息、用户权限)存储
- 功能实现:文件上传、下载、分享功能的完整流程
- 部署方案:容器化 Docker 部署的配置与编排
运维管理:
- Crontab 定时任务:过期数据清理
- Docker 服务:容器管理与监控
- gRPC 连接池:连接复用与性能优化
9.3、容器化 Docker 部署(技术栈)
- 运维自动化:Crontab 定时清理数据的脚本编写
- Docker 服务:容器的创建、启动、停止与日志管理
- gRPC 连接池:管理策略(创建、复用、销毁)与实现
产品发布:
- 云服务器使用:资源配置与环境搭建
- 测试工具:Fiddler(HTTP 请求监控)、Postman(接口模拟)
- 性能测试:wrk(接口吞吐量)、JMeter(压力测试)
9.4、微服务即时通讯(技术栈)
- 项目架构:IM 即时通讯的框架分析与部署方案
- 场景分析:即时通讯的业务场景(单聊、群聊等)特点
- 方案对比:自研 IM 与第三方 SDK 的优缺点分析
- 数据库设计:用户信息、消息记录、好友关系的表结构
- 服务器实现:IM 消息服务器、文件传输服务器的架构
功能实现:
- 用户认证:密码 + 混淆码的 MD5 匹配机制
- 数据同步:好友列表与用户信息的全量 / 增量拉取
- 消息机制:未读消息标记、单聊 / 群聊的消息推拉
- 路由转发:消息的节点路由与分发策略
9.5、魔兽世界后端 TrinityCore(技术栈)
核心模块实现:
- 网络模块:Socket 通信与协议解析
- 地图模块:地图数据加载与坐标管理
- AOI 核心算法:视野范围内实体检测(九宫格 / 十字链表)
- 战斗模块:技能释放、伤害计算与状态管理
玩法实现:
- TrinityCore 基础玩法的配置与扩展
- 用户任务系统:任务接取、进度跟踪、奖励发放
- 数据设计:数据配置文件与数据库表结构(用户数据、游戏配置)
- 多人玩法:工会系统的创建、成员管理与功能实现
十、K8S 二开:内网穿透 Tunnel (运维部署开发)
10.1、系统设计以及 frp 开源项目
- 项目基础:背景分析与需求梳理(内网服务暴露)
- 设计方案:系统架构与数据库设计(应用配置存储)
frp 核心功能:
- TCPMIUX 代理与 httpconnect 复用器的原理
- ssh/http/https 内网穿透的配置与实现
- AuthServerConfig 的 token 鉴权机制
10.2、应用管理与应用配置
- 应用维护:ssh、http、https 等类型应用的生命周期管理
- 配置管理:应用程序端口分配规则与配置文件生成
- 配置导出:将应用配置转换为 yaml 格式的标准化文件
10.3、Go 客户端实现 Kubernetes 集群应用部署与更新
- 客户端连接:Go 客户端与 Kubernetes API Server 的认证与通信
- 资源操作:
- ConfigMap:配置资源的创建与更新
- Deployment:部署资源的定义与滚动更新
- Service:服务资源的创建与访问配置
10.4、Vite/Vue/ElementUI 实现前端页面
前端开发:
- Vue 组件化开发与 ElementUI 组件库的使用
- TypeScript 的 interface 类型定义与应用
网络请求:
- axios 实例封装与拦截器(请求 / 响应处理)
- get/post 请求的统一封装
- 项目配置:配置文件管理与 API 调用的封装
10.5、自动化域名解析与 Kubernetes 集群部署 tunnel 服务
- 域名管理:自动化域名解析配置与域名备注管理
- 服务部署:tunnel 服务的容器化部署与版本更新
- 客户端配置:tunnel 客户端程序的自动部署与配置下发
- 证书管理:certbot 生成通配符证书用于 Tunnel 应用的 HTTPS 加密
附:腾讯T级职业等级标准图→「链接」
猜你喜欢
- 2025-10-19 Nuxt.js 全栈渲染指南:从基础概念到生产环境部署
- 2025-10-19 1天搭建免费微信小程序商店卖茶(3)连载中
- 2025-10-19 Spring Boot3 中实现高效数据权限控制的技术分享
- 2025-10-19 TypeScript 中提升幸福感的 10 个高级技巧
- 2025-10-19 Nginx 高效动静分离:从原理到实战
- 2025-10-19 解决Vue/React路由404的终极方案!Nginx这行代码拯救你的部署
- 2025-10-19 Vue项目子文件夹部署全攻略:从配置到上线,避坑指南在此!
- 2025-10-19 小小vite.config.js文件,藏着不少知识点,本文来个大起底。
- 2025-10-19 问题:vue项目打包后,放到二级目录无法访问的解决方案
- 2025-10-19 一站式解决方案!Electron、Vite和Vue 3助你打造功能丰富桌面应用
- 10-19前端错误可观测最佳实践_前端错误处理
- 10-19工作中,前端开发要看项目,怎么查看别人的js项目代码
- 10-19超趣味 Electron+Vue 贪吃蛇游戏Snake
- 10-19AI时代的全栈框架:独立开发者的机会与挑战
- 10-19(CAD集成到网页)网页查看CAD的SDK快速入门
- 10-19前端webpack从入门到精通视频教程文末下载
- 10-19CSS 定位详解_css定位方式
- 10-19React Server Component 从理念到原理
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)