学习路线
大约 2 分钟
学习路线
职业规划与学习路线
岗位
C++后端与业务后端不同
C/C++的后端:与python、java、golang的后端不同
- 不适合岗位:C/C++不适合做业务的。不适合那种 前端-->后端-->SQL-->后端-->前端 这种,这种用GC会更好,GC语言想把进程写崩溃都很难。
- 适合那种:接口比较简单,但底层需要一些分布式、磁盘IO的操作
- 适配岗位:适配行业、量化、安全、高性能、CDN、游戏后端、自动驾驶、云原生、基础架构、虚拟化、网络开发、存储、推荐算法、流媒体服务、金融业务
35岁
- 找一个垂直的领域,职业生涯更久(网络、存储、虚拟化等)
目标岗位
- 量化 C/C++、Python
- 安全
- 高性能
- CDN
- 游戏服务
- 自动驾驶
- 基础架构(基础组件)
- 虚拟化
- DPDK网络开发
- 存储
- 推荐算法
- 流媒体服务
- 其他
- 嵌入式
- 桌面开发(QT)
技术能力
- 硬实力:开发能力扎实
- 软实力:组织、沟通、协调能力
C/C++语言
- 数据结构/算法,主要的数据结构:
- bash
- rbTree
- b/b+ Tree
- list
- 设计模式,主要的:
- 单例
- 策略
- 观察者
- 工厂
- 迭代器模式
- 过滤器
- 库
- STL
- C++新特性(与C式C++相比)
- Linux工程
- Makefile/cmake
- git/svn
- htop/top
- netstat
- tcpdump
- iperf
网络
- 网络编程
- select/poll/epoll
- 多线程 多进程
- 阻塞 非阻塞
- 同步 异步
- 业务
- 自己实现网络框架,提高对网络理解
- 网络原理
- eth
- ip
- udp/tcp
- http
- 自己实现tcp协议栈,提高对网络理解
- 像《计算机网络》,但不会告诉代码怎么写,且不会更倾向于代码可控的东西
基础组件
要有造轮子的能力、也要有不造轮子的觉悟
轮子:软件设计的固定模式
- 池化(内存池、线程池、数据库连接池、请求池)
- 原子操作
- ringbuffer
- 无锁队列
- 定时器方案
- 死锁检测
- 内存泄露
- 日志
- 网络块
- 共享内存
- probuf
中间件
不同于java的中间件,这些中间件就是独立的进程
- MySQL(持久化存储关系型数据库)
- Redis(Nonrelational database 缓存)
- Nginx(网关)
- grpc(服务与服务之间调度,分布式,RPC)
- mq
框架 (适配行业)
- skynet(游戏)
- openresty(cdn/waf)
- dpdk(网络)
- spdk(存储)
- cuda(gpu)
- workflow(网络编程范式)
devops
- docket
- k8s
- github/gitee (CICD)
性能分析
- 内核 (kernel)
- 磁盘
- 网络
- 内存
- bpf/ebpf
- 火焰图
- 中间件
- gtest
分布式 (技术扩展)
- 分布式数据库 TiDB
- 分布式文件系统 ceph
- 分布式协同 etcd
行业前景分析
跳过
一
二
三
四
链接到当前文件 0
没有文件链接到当前文件