一、C++ 语言核心(基础 + 进阶)

C++ 后端的立身之本,需兼顾语法熟练度与底层原理,尤其要掌握现代 C++ 特性以适配高并发场景。

1. 基础语法与核心特性

基础语法:

  • 变量 / 基础类型(int/float/char 等)
  • 自定义类型(typedef/using)
  • 运算符、流程控制(if/else/for/while/switch)
  • 函数(重载 / 默认参数 / 可变参数 /inline)
  • 数组 / 指针 / 引用(核心区分指针与引用的底层差异)
  • 结构体 / 联合体 / 枚举
  • const/constexpr/const_cast
  • static/extern/inline
  • 命名空间(namespace)

变量名的本质https://blog.csdn.net/Howrun777/article/details/157581102?spm=1011.2415.3001.5331

函数名与函数指针的底层原理https://blog.csdn.net/Howrun777/article/details/157581072?sharetype=blogdetail&sharerId=157581072&sharerefer=PC&sharesource=Howrun777&spm=1011.2480.3001.8118C/C++结构体超详细讲解https://blog.csdn.net/Howrun777/article/details/156461113C++声明_定义_实例化_前向声明https://blog.csdn.net/Howrun777/article/details/155712221

C++ 运算符重载https://blog.csdn.net/Howrun777/article/details/157307505

C++隐式类型转化与explicit关键词https://blog.csdn.net/Howrun777/article/details/157577989?sharetype=blogdetail&sharerId=157577989&sharerefer=PC&sharesource=Howrun777&spm=1011.2480.3001.8118

面向对象(OOP)

  • 类与对象
  • 封装 / 继承 / 多态
  • 构造 / 析构函数(默认 / 拷贝 / 移动 / 委托构造)
  • 虚函数 / 纯虚函数 / 抽象类 / 接口
  • 友元(友元函数 / 友元类)
  • this指针
  • 重载 / 重写 / 隐藏的区别
  • 继承方式(public/protected/private)

C++ 继承 多态 组合 从运用到底层原理https://blog.csdn.net/Howrun777/article/details/155987844

异常处理:

  • try/catch/throw
  • 异常规范(noexcept)
  • 自定义异常类
  • 异常安全(RAII 结合异常)

高级语法:

  • 模板(函数模板、类模板、模板特化 / 偏特化、模板参数(类型 / 非类型)、SFINAE)
  • RTTI(运行时类型识别)

C++泛型--模版--全解析https://blog.csdn.net/Howrun777/article/details/156030050

C++可变模板参数详细讲解https://blog.csdn.net/Howrun777/article/details/157581910?sharetype=blogdetail&sharerId=157581910&sharerefer=PC&sharesource=Howrun777&spm=1011.2480.3001.8118

2. 现代 C++(C++11 及以后,后端开发核心)

内存管理:

  • 智能指针(unique_ptr/shared_ptr/weak_ptr
  • RAII 原则(资源获取即初始化)
  • 右值引用(&&)/ 移动语义 / 完美转发(std::forward
  • std::move

便捷特性:

  • auto/decltype/decltype(auto)
  • 范围 for 循环
  • nullptr(替代 NULL)
  • 强类型枚举(enum class
  • lambda 表达式(捕获列表 / 参数 / 返回值)
  • 初始化列表({}
  • std::initializer_list

容器与算法:

  • STL 容器
    (vector/list/deque/map/unordered_map/set/unordered_set/queue/stack/priority_queue)
  • 迭代器
    (输入 / 输出 / 前向 / 双向 / 随机访问)
  • STL 算法
    (sort/find/for_each/transform/accumulate等)
  • 容器底层实现
    (如vector动态扩容、unordered_map哈希表冲突解决)

并发编程:

  • std::thread/std::jthread(C++20)
  • std::mutex/std::recursive_mutex/std::shared_mutex(读写锁)
  • std::condition_variablestd::atomic(原子操作)
  • 线程池实现
  • C++20 协程(co_await/co_yield/co_return、无栈协程原理)

现代 C++ 特性(后端高频使用):

  • C++11 及以上:lambda 表达式、右值引用 / 移动语义、std::move/std::forward、emplace 系列、范围 for、nullptr、enum class、constexpr、std::thread
  • C++14/17:std::make_unique、if constexpr、结构化绑定、std::optional/std::variant/std::any、std::string_view、折叠表达式
  • C++20:概念(Concepts)、协程(Coroutines,后端异步场景)、模块(Modules)

C++11新特性https://blog.csdn.net/Howrun777/article/details/156237731C++ 匿名函数 lambdahttps://blog.csdn.net/Howrun777/article/details/156699850

函数包装器-CSDN博客https://blog.csdn.net/Howrun777/article/details/157579812?sharetype=blogdetail&sharerId=157579812&sharerefer=PC&sharesource=Howrun777&spm=1011.2480.3001.8118C++_bind函数-CSDN博客https://blog.csdn.net/Howrun777/article/details/157580602?spm=1011.2415.3001.5331

可调用对象https://blog.csdn.net/Howrun777/article/details/157582577?spm=1011.2415.3001.5331

3. 内存管理(后端高频考点)

  • 内存分区:栈区 / 堆区 / 静态存储区 / 常量区 / 代码区、内存对齐规则(alignas/alignof)。
  • 常见问题:内存泄漏、野指针、悬空指针、双重释放、内存越界,排查工具(Valgrind/AddressSanitizer/LeakSanitizer)。
  • 进阶:自定义内存池(解决频繁new/delete的开销)、内存池实现(固定大小 / 可变大小内存池)、零拷贝技术。

C/C++内存管理合集https://blog.csdn.net/Howrun777/article/details/155817717

4. 编译与链接

  • 编译流程:预处理(#include/#define/ 条件编译)→ 编译(语法分析→语义分析→中间代码生成)→ 汇编(生成目标文件.o/.obj)→ 链接(静态链接 / 动态链接)。
  • 关键概念:头文件保护(#pragma once/#ifndef...#define...#endif)、符号表、名字修饰(name mangling)、ABI 兼容、库的制作与使用(静态库.a/.lib、动态库.so/.dll、动态加载dlopen/dlsym)。

二、计算机组成原理(后端必备)

后端开发的底层逻辑,理解后才能吃透网络、并发、性能优化的本质。

  • CPU 核心:核心 / 缓存(L1/L2/L3)、流水线、分支预测、超标量执行、CPU Cache Line(缓存失效优化关键)。
  • 内存系统:RAM/ROM、虚拟内存、物理地址→虚拟地址映射、内存带宽、TLB(Translation Lookaside Buffer)。
  • IO 与总线:磁盘(HDD/SSD)、网卡、PCIe 总线、数据 / 地址 / 控制总线、DMA(直接内存访问)。
  • 中断与系统调用:中断机制(硬件中断 / 软中断)、中断处理流程、系统调用与内核态 / 用户态切换的开销。
  • 数据表示:二进制 / 十六进制、原码 / 反码 / 补码、浮点数存储(IEEE 754)、大端 / 小端字节序(网络字节序转换)。
  • 程序运行:进程地址空间、指令执行周期、ELF 文件格式(Linux 可执行文件)。

Linux_文件超详细合集: 软件->硬件https://blog.csdn.net/Howrun777/article/details/155675156

页表(Page Table)深度解析:虚拟地址映射的核心字典https://blog.csdn.net/Howrun777/article/details/156136493

进程虚拟地址空间(Virtual Address Space, VAS)深度解析https://blog.csdn.net/Howrun777/article/details/156136240


三、数据结构与算法

后端服务的效率基石,需兼顾理论与工程落地,是面试与性能优化的核心。

1. 基础数据结构

  • 线性结构:数组(动态数组vector)、链表(单链表 / 双链表 / 循环链表)、栈(stack)、队列(queue/deque)、哈希表(unordered_map/unordered_set,哈希函数 / 冲突解决:链地址法 / 开放寻址法)。
  • 非线性结构:树(二叉树 / 二叉搜索树 / AVL 树 / 红黑树 / B + 树 / 字典树)、堆(大顶堆 / 小顶堆,priority_queue)、图(邻接矩阵 / 邻接表、遍历:DFS/BFS)。
  • 特殊结构:跳表(Redis 核心)、布隆过滤器(缓存穿透防护)、位图(Bitmap)、前缀树(Trie)。

2. 核心算法

  • 排序算法:快速排序、归并排序、堆排序、希尔排序、计数排序、桶排序(需掌握时间 / 空间复杂度、适用场景)。
  • 查找算法:二分查找、哈希查找、二叉搜索树查找、B + 树查找(数据库索引核心)。
  • 高级算法:递归 / 分治、贪心算法、动态规划(DP)、回溯算法、拓扑排序、最短路径(Dijkstra/Floyd)、最小生成树(Kruskal/Prim)、字符串匹配(KMP/BM)。
  • 工程要求:能分析算法的时间 / 空间复杂度(O (n)/O (logn) 等)、独立解决 LeetCode 中等难度算法题(字符串 / 链表 / 动态规划 / 图论类)、结合业务选择合适的数据结构(如用 B + 树做数据库索引、用跳表做 Redis 有序集合)。

四、操作系统核心知识

C++ 后端直接与操作系统交互,是高并发、高可用的核心支撑,重点掌握 Linux 系统原理。

1. 进程与线程

  • 核心概念:进程(PCB / 进程状态 / 进程控制)、线程(轻量级进程 / 线程栈 / 线程局部存储 TLS)、协程(用户态线程 / 无栈 / 有栈),三者的区别与联系。
  • 进程间通信(IPC):管道(匿名 / 命名)、消息队列、共享内存、信号量(POSIX/System V)、信号(signal/sigaction)、Socket 通信(网络 IPC)。

Linux进程通信---1---匿名管道

Linux进程通信---2---命名管道

Linux进程通信---3---System V 共享内存

Linux进程通信---4---信号量System V & POSIX

Linux进程通信---5---System V 消息队列

Linux进程通信---6---信号

Linux进程通信---6.1---进程信号屏蔽

Linux进程通信---7---中断

  • 线程生命周期:创建(pthread_create/std::thread)、就绪 / 运行 / 阻塞 / 终止、线程回收(pthread_join/detach)。

Linux---进程

Linux---线程---全面讲解

Linux---线程---底层原理

C++标准线程库-全面讲解

C++ 线程实战案例解析

不可重入函数Non-Reentrant & 可重入函数Reentrant

2. 同步与互斥

  • 同步机制:互斥锁(mutex)、自旋锁、读写锁(shared_mutex)、条件变量(condition_variable)、信号量、屏障(barrier)。
  • 死锁:死锁的四个必要条件(互斥 / 持有并等待 / 不可剥夺 / 循环等待)、死锁检测 / 避免 / 解除(银行家算法)、活锁与饥饿。

C++ 线程互斥锁 lock_guard

Linux_C++_日志实例

C++_竞态_底层原理解释

信号量(Semaphore)

3. IO 模型(后端网络核心)

  • 阻塞 IO:read/write阻塞等待数据。
  • 非阻塞 IO:fcntl设置 O_NONBLOCK,轮询检查数据。
  • IO 多路复用:select/poll/epoll(Linux 核心,水平触发 / 边缘触发)、kqueue(FreeBSD/macOS),核心是 “一个线程监听多个 IO 事件”。
  • 信号驱动 IO:sigaction注册信号,IO 就绪时触发信号。
  • 异步 IO(AIO):aio_read/aio_write,内核完成 IO 后通知进程,无需轮询。

4. 内存管理

  • 虚拟内存:虚拟地址→物理地址映射、分页 / 分段机制、缺页中断。
  • 内存置换算法:LRU(最近最少使用)、FIFO(先进先出)、LFU(最不经常使用)。
  • 内存分配:malloc/free(C)、new/delete(C++)、mmap(文件映射)、brk/sbrk(堆扩展)。

C/C++内存管理合集!-CSDN博客

5. 文件操作

文件系统:文件描述符(fd)、文件 IO(open/read/write/close)、目录操作、文件权限(rwx)、inode 与 dentry、ext4/xfs 文件系统。

Linux - 软硬链接

动静态库制作与使用

Linux_文件超详细合集: 软件->硬件

C++ 文件操作全知识点详细讲解

C++ 文件操作速查手册

Linux ELF 详解:从定义到底层原理

6. 其他核心

调度算法:先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)、优先级调度、多级反馈队列。

系统调用:Linux 系统调用(syscall)、用户态与内核态切换的开销、常用系统调用(epoll_ctl/accept/connect/fork/exec)。

Linux---内核态&用户态


五、计算机网络

后端服务的通信基石,需掌握从底层协议到应用层的全链路,重点是 TCP/IP 协议族。

1. 网络模型

OSI 七层模型:物理层→数据链路层→网络层→传输层→会话层→表示层→应用层。

TCP/IP 四层模型(实际开发核心):网络接口层→网络层(IP)→传输层(TCP/UDP)→应用层(HTTP/HTTPS/DNS 等)。

2. 网络层

IP 协议:IPv4/IPv6、IP 地址分类(A/B/C 类)、子网划分(子网掩码)、路由协议(RIP/OSPF/BGP)、ARP(地址解析协议)、ICMP(互联网控制报文协议,ping/tracert)。

网络安全:TCP 三次握手攻击、SYN 洪水、HTTPS(SSL/TLS)、对称 / 非对称加密、数字签名、CA 证书、防火墙、NAT(网络地址转换), VPN

3. 传输层

TCP 协议:三次握手(建立连接)、四次挥手(断开连接)、滑动窗口(流量控制)、拥塞控制(慢启动 / 拥塞避免 / 快重传 / 快恢复)、超时重传、粘包 / 拆包问题(解决方案:固定长度 / 分隔符 / 长度字段)。

UDP 协议:无连接、不可靠、高效,适用场景(视频通话 / 游戏 / 实时数据)。

核心区别:TCP(可靠 / 面向连接 / 字节流) vs UDP(不可靠 / 无连接 / 数据报)。

计算机网络_UDP和TCP-CSDN博客

4. 应用层

HTTP/HTTPS:HTTP1.1(长连接 / 管线化)、HTTP2(多路复用 / 头部压缩)、HTTP3(QUIC 协议,基于 UDP)、HTTPS(SSL/TLS 加密,握手流程 / 证书验证)。

其他协议:DNS(域名解析,递归 / 迭代查询)、WebSocket(全双工通信,握手升级)、RESTful API(设计规范)、Cookie/Session(会话管理)、JWT(无状态认证)、FTP/SMTP/POP3。

5. 网络编程

Socket 编程:TCP 服务端(socketbindlistenacceptread/writeclose)、TCP 客户端(socketconnectread/writeclose)、UDP 通信(socketbindrecvfrom/sendto)。

网络字节序:大端(网络序)/ 小端(主机序),转换函数(htons/ntohs/htonl/ntohl)。

网络问题排查:ping/telnet/nc/wireshark/tcpdump(抓包分析)、netstat/ss(连接监控)。

Linux网络命令-CSDN博客

Linux网络编程_常见API-CSDN博客

Linux_C++网络编程四种CS模型-CSDN博客

Windows客户端与Linux服务端测试与错误排查-CSDN博客

网络编程进阶:

自定义协议设计(基于 TCP/UDP)、协议序列化(Protobuf/Thrift/FlatBuffers)

粘包 / 拆包解决(固定长度、分隔符、头部 + 长度)

高可用:心跳检测、重连机制、断线重连

服务端开发模式:

客户端 / 服务器(C/S)、B/S、微服务、分布式架构

服务端框架:muduo、brpc、FastCGI、ACE

本地 IPC 进阶:

UNIX 域套接字(比 TCP 快,本地进程通信)、DBus

六、C++ 后端开发核心技术

区别于 C++ 客户端 / 嵌入式的核心能力,聚焦 “网络服务 + 并发 + 分布式”,是后端业务落地的关键。

1. 网络编程框架

原生 Socket:手写 TCP/UDP 服务端(处理多连接 / 并发)。

主流框架:

  • Boost.Asio:跨平台异步网络库,支持 TCP/UDP/SSL,C++ 后端常用。
  • muduo:陈硕开发的 C++11 网络库,基于 Reactor 模式,高性能。
  • libevent/libev:C 语言网络库,C++ 可封装使用,轻量高效。
  • ACE:重量级跨平台网络框架,适合复杂企业级应用。

2. 并发编程实战

线程池:实现原理(任务队列 + 工作线程)、动态扩容 / 缩容、任务优先级、拒绝策略。

无锁编程:原子操作(std::atomic)、CAS(比较并交换)、无锁队列 / 栈、内存序(memory_order)。

协程框架:libco(微信)、boost.coroutine、C++20 标准协程,解决 “线程开销大” 的问题。

3. RPC 框架(分布式服务核心)

序列化协议:Protobuf(Google,高效跨语言)、Thrift(Facebook)、JSON(可读性强,效率低)、FlatBuffers(零拷贝)。

主流 RPC 框架:gRPC(基于 Protobuf+HTTP2,跨语言)、Thrift(跨语言,支持多协议)、brpc(百度,高性能)、Tars(腾讯,企业级)。

RPC 核心:服务注册 / 发现、负载均衡、超时重试、熔断降级、序列化 / 反序列化、流量控制。

4. 高并发服务设计

连接管理:长连接 / 短连接、连接池、心跳机制、断线重连。

请求处理:异步处理、任务拆分、批量处理、异步回调。

高可用:限流(令牌桶 / 漏桶算法)、熔断(Hystrix/Sentinel)、降级、容灾备份、多活架构。

5. 中间件集成

消息队列:Kafka(高吞吐)、RabbitMQ(可靠)、RocketMQ(阿里,金融级),核心:发布 / 订阅模式、消息持久化、幂等性、死信队列、消息回溯。

缓存中间件:Redis(内存缓存)、Memcached(纯内存),核心:缓存穿透 / 击穿 / 雪崩防护、缓存与数据库一致性。

七、数据库与存储

后端服务的数据核心,需兼顾关系型与非关系型数据库的使用与优化,重点掌握 MySQL+Redis 组合。

1. 关系型数据库(RDBMS)

主流数据库:MySQL(开源,互联网主流)、PostgreSQL(功能强大,支持 JSON)、Oracle(企业级,付费)。

核心知识:

  • 索引:B + 树索引(底层原理)、哈希索引、全文索引、索引优化(避免索引失效)、联合索引、覆盖索引。
  • 事务:ACID 特性(原子性 / 一致性 / 隔离性 / 持久性)、隔离级别(读未提交 / 读已提交 / 可重复读 / 串行化)、MVCC(多版本并发控制,MySQL InnoDB 核心)。
  • 锁:行锁 / 表锁 / 间隙锁 / 临键锁(InnoDB)、死锁检测与解决、锁等待分析。
  • SQL 优化:慢查询分析(explain/explain analyze)、避免全表扫描、优化 JOIN / 子查询、分库分表(垂直 / 水平拆分)、读写分离、主从复制。

C++ 操作:原生 API(MySQL C API)、ORM 框架(sqlpp11、ODB)、连接池实现。

2. 非关系型数据库(NoSQL)

Redis(核心):

  • 数据结构:string/hash/list/set/zset/bitmap/hyperloglog/geo/stream。
  • 持久化:RDB(快照)、AOF(日志)、混合持久化。
  • 集群:主从复制、哨兵模式、Redis Cluster(分片 + 高可用)。
  • 缓存策略:缓存穿透(布隆过滤器)、缓存击穿(互斥锁 / 永不过期)、缓存雪崩(过期时间随机 / 集群)。

其他 NoSQL:MongoDB(文档型,存储非结构化数据)、Elasticsearch(搜索引擎,全文检索)、HBase(列式存储,大数据场景)、TiDB(分布式 NewSQL)。

3. 分布式存储与数据一致性

  • 分布式事务:2PC(两阶段提交)、3PC(三阶段提交)、TCC(Try-Confirm-Cancel)、SAGA 模式、最终一致性(BASE 理论)。
  • 数据同步:主从同步、CDC(变更数据捕获,Canal/Debezium)、数据备份与恢复(全量 / 增量)。
  • 分布式存储:Ceph、HDFS、MinIO(对象存储)。

 八、Linux 系统与工具链

C++ 后端 99% 运行在 Linux 上,需熟练掌握 Linux 操作与工具,是开发环境的核心。

  • 核心命令:文件操作(ls/cp/mv/rm/tar/grep/find)、进程管理(ps/top/htop/kill/pkill)、网络命令(ifconfig/ip/ping/telnet/nc/curl)、权限命令(chmod/chown/chgrp)、磁盘命令(df/du/mkfs/fdisk)、系统命令(uname/uptime/free)。
  • Shell 脚本:Bash 语法(变量 / 循环 / 条件 / 函数 / 正则)、脚本编写(自动化部署 / 监控 / 日志分析)、crontab(定时任务)。
  • 交叉编译:针对嵌入式 / 跨平台的编译(arm-linux-gcc、aarch64-linux-gnu)、工具链配置、根文件系统制作。
  • 系统调优:内核参数优化(/etc/sysctl.conf)、文件句柄限制(ulimit)、TCP 参数优化、CPU 调度优化、磁盘 IO 调度优化。

Linux 环境变量:定义、核心作用与实操指南https://blog.csdn.net/Howrun777/article/details/155248768

九、工程化与开发工具

企业级开发的效率基石,决定能否融入团队、维护大型项目,是初级到中级的关键跨越。

1. 构建工具

  • Makefile:基础语法、依赖管理、编译规则、变量 / 函数、伪目标。
  • CMake(主流):CMakeLists.txt编写、跨平台编译、静态 / 动态库生成、工程分层(src/include/lib/bin)、第三方库集成(find_package)、交叉编译配置。
  • Bazel:Google 开源构建工具,适合大型项目(如 TensorFlow、百度工程)。

Linux Makefile 从入门到精通https://blog.csdn.net/Howrun777/article/details/156200687

Makefile进阶案例_高手专用https://blog.csdn.net/Howrun777/article/details/157367461

2. 调试与测试

  • 调试工具:GDB(断点 / 栈跟踪 / 内存查看 /core dump 分析)、LLDB(macOS/Linux)、perf(性能分析)、gprof(函数耗时分析)、AddressSanitizer(ASan,实时检测内存问题)。
  • 测试框架:单元测试(GTest/GMock)、集成测试、压力测试(JMeter/WRK)、静态代码分析(Clang-Tidy/Cppcheck/coverity)、代码覆盖率(gcov/lcov)。

3. 版本控制与 CI/CD

  • Git:分支管理(master/main/develop/feature/hotfix)、merge/rebase、冲突解决、提交规范(Conventional Commits)、GitLab/GitHub/Gitee 使用、Git LFS(大文件存储)。
  • CI/CD:Jenkins、GitLab CI、GitHub Actions,自动化编译→测试→部署→发布、镜像构建(Docker)。

Git从入门到精通https://blog.csdn.net/Howrun777/article/details/157023938?spm=1001.2014.3001.5501

4. 代码规范与文档

  • 代码规范:Google C++ Style、LLVM Style、命名规范(驼峰 / 下划线)、注释规范(Doxygen 格式)、代码格式化(clang-format)。
  • 文档工具:Doxygen(代码文档生成)、Swagger(接口文档)、Markdown(项目文档)、Confluence(团队文档协作)。

十、性能优化与问题排查

区分初级与资深C++ 后端的核心,解决 “高并发、高可用、高性能” 问题,是后端进阶的必备能力。

1. 性能优化方向

  • CPU 优化:减少上下文切换、避免 CPU 缓存失效(Cache Line 对齐)、分支预测优化、内联函数、减少虚函数调用、避免频繁系统调用。
  • 内存优化:减少内存拷贝(std::move/ 零拷贝)、内存池、内存对齐、避免内存碎片、大内存分配优化。
  • IO 优化:异步 IO、批量读写、磁盘 IO 优化(顺序读写 / 预读)、减少文件打开关闭、mmap 文件映射。
  • 网络优化:TCP 连接复用(keepalive)、调整 TCP 缓冲区大小、减少握手次数(HTTP2/QUIC)、数据压缩(gzip/snappy)、UDP 替代 TCP(实时场景)。

2. 问题排查工具

  • 内存问题:Valgrind(memcheck 检测内存泄漏 / 越界)、AddressSanitizer(ASan)、LeakSanitizer(LSan)、pmap(进程内存映射)。
  • 性能问题:perf(CPU 性能分析)、火焰图(perf+FlameGraph)、pprof(Google 性能分析)、pidstat(进程 CPU / 内存 / IO 监控)、top/htop(系统监控)。
  • 系统问题:strace(跟踪系统调用)、ltrace(跟踪库函数调用)、iostat(磁盘 IO 监控)、vmstat(内存 / CPU 监控)、netstat/ss(网络连接监控)、tcpdump(网络抓包)。

十一、架构设计

从 “写代码” 到 “做系统” 的关键,负责服务的整体设计与演进,是资深开发者的核心能力。

1. 设计模式(C++ 后端常用)

  • 创建型:单例模式(懒汉 / 饿汉 / 线程安全)、工厂模式(简单工厂 / 工厂方法 / 抽象工厂)、建造者模式、原型模式。
  • 结构型:适配器模式、代理模式(静态 / 动态)、装饰器模式、外观模式、组合模式、Pimpl 模式(接口与实现分离)。
  • 行为型:观察者模式、策略模式、模板方法模式、责任链模式、状态模式、命令模式。
  • C++ 特有:RAII 模式、智能指针模式、无锁设计模式。

2. 架构模式

  • 分层架构:接入层(网关 / 负载均衡)→ 业务层(核心逻辑)→ 数据层(数据库 / 缓存)→ 基础设施层(日志 / 监控 / 配置)。
  • 微服务架构:服务拆分(领域驱动设计 DDD)、服务注册 / 发现(Consul/Etcd/Nacos)、服务网关(Kong/APISIX)、配置中心(Nacos/Apollo)、链路追踪(SkyWalking/Jaeger)。
  • 分布式架构:CAP 理论(一致性 / 可用性 / 分区容错性)、BASE 理论(基本可用 / 软状态 / 最终一致性)、分布式锁(Redis/ZooKeeper)、分布式 ID 生成(雪花算法 / UUID)。

3. 高可用设计

  • 负载均衡:硬件(F5)、软件(Nginx/LVS/HAProxy)、算法(轮询 / 加权轮询 / IP 哈希 / 最小连接数 / 一致性哈希)。
  • 容灾备份:多机房部署、异地多活、数据备份(全量 / 增量 / 定时备份)、故障转移(Failover)。
  • 限流熔断:令牌桶算法、漏桶算法、熔断降级(Sentinel/Hystrix)、服务降级(返回默认值 / 缓存数据)、流量削峰。

十二、云原生与运维

适配云时代的开发与部署,提升服务的弹性与可维护性,是现代后端必备能力。

  • 容器化:Docker(镜像制作 / 容器运行 / 仓库 Docker Hub)、Docker Compose(多容器编排)、容器网络 / 存储。
  • 容器编排:Kubernetes(K8s,Pod/Service/Deployment/ConfigMap/Secret/StatefulSet)、Helm(K8s 包管理)、Operator(自定义资源管理)。
  • 监控告警:Prometheus( metrics 采集)、Grafana(可视化)、AlertManager(告警)、ELK/PLG(日志收集:Elasticsearch/Logstash/Kibana/Promtail/Loki/Grafana)。
  • 服务网格:Istio(流量管理 / 安全 / 可观测性)、Linkerd(轻量级服务网格)。
  • 云平台:阿里云 / 腾讯云 / 华为云(云服务器 ECS、对象存储 OSS、云数据库 RDS、消息队列 MQ)。

十三、安全与合规

保障服务与数据的安全底线,避免安全漏洞与合规风险,是企业级开发的必备要求。

  • 常见漏洞防护:SQL 注入(参数化查询)、XSS(跨站脚本,输入过滤 / 输出编码)、CSRF(跨站请求伪造,Token 验证)、文件上传漏洞(文件类型 / 大小校验)、命令注入(过滤特殊字符)、越权访问(权限校验)。
  • 加密算法:对称加密(AES)、非对称加密(RSA/ECC)、哈希算法(SHA256/MD5,防篡改)、数字签名 / 证书(HTTPS)、加盐哈希(密码存储)。
  • 权限控制:RBAC(基于角色的访问控制)、OAuth2.0/OpenID Connect(第三方登录)、数据脱敏(敏感数据加密 / 掩码)、接口鉴权(API 密钥 / JWT)。
  • 合规要求:等保 2.0、GDPR(欧盟数据保护)、数据加密存储与传输、日志审计、漏洞扫描(AWVS/Nessus)。

学习路径建议

  1. 基础阶段:C++ 语言核心(含现代 C++)→ 计算机组成原理 → 数据结构与算法 → Linux 基础命令。
  2. 核心阶段:操作系统核心知识 → 计算机网络 → C++ 后端核心技术(网络编程 / 并发 / RPC)→ 数据库与存储。
  3. 工程阶段:工程化工具(CMake/Git/CI/CD)→ 性能优化与问题排查 → 架构设计。
  4. 进阶阶段:云原生与运维 → 安全与合规 → 分布式系统设计。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐