跳至主要內容

学习路线

LincZero大约 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

行业前景分析

跳过