c++架构师需要掌握哪些知识

目录

本文技术梳理主要针对于三类人群的技术需求

c/c++Linux服务器端开发岗位分析

经常被问到的问题:

技术体系建立的好处

c/c++Linux服务器开发技术学习路径

一、精进基石

二、高性能网络设计

三、基础组件设计

四、中间件开发

五、开源框架

六、云原生

七、性能分析

八、分布式架构

九、项目实战

如何系统学习c/c++Linux服务器端技术内容?

成果数据展现


本文技术梳理主要针对于三类人群的技术需求

1.即将毕业的本科,研究生计算机科班应届生;

2.有c/c++语言基础,工作1-3年还在开发岗位寻找技术方向定位的在职工程师;

3.已经在c/c++下从事多年其他方向的技术开发,有准备往服务器开发方向尝试的工程师。

c/c++Linux服务器端开发岗位分析

经常被问到的问题:

Q: 这个岗位市场需求量大吗?

A:程序员能不能应聘到岗位,只由两部分组成,一个是技术能力,另一个是年龄。

Q:能进大厂吗?

A:Linux下的服务器端开发,一般都是进大厂,小厂很难有这样的招聘岗位。

Q: 岗位对学历有要求吗?

A:对学历有要求的是企业,不是岗位。

如果还有其他问题,欢迎在评论区交流!

技术体系建立的好处

1.c/c++Linux服务器开发不同于Java,没有固定的业务流程和技术方向。在Linux下的服务器端开发,大家可以选择的就业方向一样有很多,没有模板可言。所以构建一个全面的技术体系就显得尤为重要。

2.针对于刚毕业以及工作1-3年的工程师而言,在这样一个年限下,靠自己去梳理出完善的技术体系,难度非常大,如果有这样一个学习路径,能够更快更全面的帮助工程师去构建自己的技术体系。

c/c++Linux服务器开发技术学习路径

一、精进基石

1.数据结构与算法

  • 随处可见的红黑树
  • 磁盘存储链式的B树与B+树
  • 海量数据去重的Hash与BloomFilter,bitmap

2.设计模式

  • 创建型设计模式
  • 结构型设计模式

3.c++新特性

  • stl容器,智能指针,正则表达式
  • 新特性的线程,协程,原子操作,lamda表达式

4.Linux工程管理

  • Makefile/cmake/configure
  • 分布式版本控制git
  • Linux系统运行时参数命令

二、高性能网络设计

1.网络编程

  • 网络IO与select,poll,epoll
  • reactor的原理与实现
  • http/https服务器的实现
  • websocket协议与服务器实现

2.网络原理

  • 服务器百万并发实现
  • redis,memcached,nginx网络组件
  • Posix API与网络协议栈
  • UDP的可靠传输协议QUIC

3.协程框架NtyCo的实现

  • 协程设计原理与汇编实现
  • 协程调度器实现与性能测试

4.用户态协议栈NtyTcp的实现

  • 用户态协议栈设计实现
  • tcp/ip定时器与滑动窗口
  • 手把手设计实现epoll

5.高性能异步io机制io_uring

  • 与epoll媲美的io_uring
  • io_uring的使用场景

三、基础组件设计

1.池式组件

  • 手写线程池与性能分析
  • 内存池的实现与场景分析
  • 异步请求池的实现
  • mysql连接池的实现

2.高性能组件

  • 原子操作CAS与锁实现
  • 无锁消息队列实现RingBuffer
  • 定时器方案红黑树,时间轮,最小堆
  • 手写死锁检测组件
  • 手写内存泄漏检测组件
  • 手把手实现分布式锁

3.开源组件

  • Libevent/Libev框架实战的那些坑
  • 异步日志方案log4cpp
  • 应用层协议设计ProtoBuf/Thrift

四、中间件开发

1.redis

  • redis相关命令详解及其原理
  • redis协议与异步方式
  • 存储原理与数据模型
  • 主从同步与对象模型

2.MySQL

  • SQL语句,索引,视图,存储过程,触发器
  • MySQL索引原理以及SQL优化
  • MySQL事务原理分析
  • MySQL缓存策略

3.Kafka

  • Kafka使用场景与设计原理
  • Kafka存储机制

4.gRPC

  • gRPC的内部组件关联
  • 基于http2的gRPC通信协议

5.nginx

  • nginx反向代理与系统参数配置conf原理
  • nginx过滤器模块实现
  • nginx Handler模块实现

五、开源框架

1.skynet

  • skynet设计原理
  • sky net网络层封装以及lua/c接口编程
  • sky net重要组件以及手撕游戏项目

2.分布式API网关

  • 高性能web网关Openresty
  • Kong动态负载均衡与服务发现

3.DPDK

  • DPDK环境与testpmd/I3fwd/skeletion
  • DPDK的用户态协议栈
  • 千万级流量并发的dns处理
  • 高性能数据处理框架vpp
  • DPDK的虚拟交换机框架OVS

4.高性能计算CUDA

  • gpu并行计算cuda的开发流程
  • 音视频编解码中的并行计算

六、云原生

1.Docker

  • Docker风光下的内核功能
  • Docker容器管理与镜像操作
  • Docker网络管理
  • Docker云与容器编排

2.Kubernetes

  • K8S环境搭建
  • Pod与Service的用法
  • K8S集群管理
  • K8S二次开发与K8S API

七、性能分析

1.性能与测试工具

  • 测试框架gtest以及内存泄漏检测
  • 性能工具与性能分析
  • 火焰图的生成原理与构建方式

2.观测技术bpf与ebpf

  • 内核bpf的实现原理
  • bpf对内核功能的观测

3.内核源码机制

  • 进程调度机制
  • 内核内存管理运行机制
  • 网卡nic与网络协议栈的关系
  • 文件系统组件

八、分布式架构

1.RocksDB

  • 不一样的kv存储RocksDB的使用场景
  • RocksDB的特殊操作

2.云原生分布式数据库TiDB

  • TiDB存储引擎的原理
  • TiDB集群方案与Replication的原理

3.分布式服务

  • 内核级支持的分布式存储Ceph
  • 注册服务中心Etcd

九、项目实战

1.图床共享云存储

  • fastdfs架构分析和配置
  • fastdfs存储原理
  • 分布式fastdfs存储集群部署
  • 高负载nginx/fastcgi
  • 文件传输和接口设计
  • 产品上云公网发布/测试用例

2.微服务即时通讯

  • IM即时通讯项目框架分析和部署
  • IM消息服务器/文件传输服务器
  • 消息服务器/路由服务器
  • 数据库代理服务器设计
  • 文件服务器和docker部署
  • 产品上云公网发布/公网测试上线

如何系统学习c/c++Linux服务器端技术内容?

推荐大家可以看一下零声的直播课程

  • 内容涵盖上述八大技术模块及两大线上项目实操
  • 98次直播,时间持续8个半月
  • 涉及语言:45%的C,25%的c++,20%的go,5%的lua,5%的其他语言
  • 简历梳理,模拟面试,offer选择
  • 腾讯kt薪选课程,腾讯认证的大厂标准

c++架构师需要掌握哪些知识_第1张图片

成果数据展现

c++架构师需要掌握哪些知识_第2张图片

c++架构师需要掌握哪些知识_第3张图片

 

c++架构师需要掌握哪些知识_第4张图片

c++架构师需要掌握哪些知识_第5张图片

c++架构师需要掌握哪些知识_第6张图片

 

c++架构师需要掌握哪些知识_第7张图片

你可能感兴趣的:(c++,开发语言,linux,架构)