0. 总框架

方法:先从厚读薄,再从薄感受到小细节

第1阶段,c语言层面

(1) c语言基本语法:结构体、指针、宏

(2) 数据结构和算法:hash,rbtree,b/b+tree,linked list(链表)

1.2.1-1部分数据结构的说明-CSDN博客

1.2.1-2部分数据结构的说明02_链表-CSDN博客

(3) 设计模式:单例,策略,观察者,工厂,迭代器模式,过滤器

(4) 库:stl,c++新特性

(5) linux的命令:makefile/cmake,git/svn, 看内存,看网络状态(netstat),看磁盘,比如(htop,top),tcp抓包(tcpdump),测试(iperf)

1.5-1 linux的部分基础命令01-CSDN博客

第2阶段,网络层面

(1) 网络的代码怎么写:管理io的io多路复用(select/poll/epoll),多线程多进程结合业务怎么做,阻塞/非阻塞,同步/异步,来了数据后的业务如何做 → 量化指标:实现网络框架(你的设计理念,你的做法,你的适配业务,把性能参数调节好,很有必要)

2.1.1 网络io-CSDN博客

2.1.2 网络io多路复用-CSDN博客

2.1.3-1 第一次Reactor代码(流程梳理)-CSDN博客

2.1.3-2 webserver和websocket(reactor 怎么用)_webserver和websocketserver-CSDN博客

2.1.3-3 第二次Reactor代码(百万并发测试过程的报错信息)-CSDN博客

2.1.4 posix api_socket api属于posix吗-CSDN博客

2.1.5-1 协程设计原理与汇编实现-01-CSDN博客

2.1.5-2 协程设计原理与汇编实现-02-CSDN博客

2.1.6-1 dpdk的环境设置_dpdk网卡有几个队列-CSDN博客

2.1.6-2 dpdk收发数据代码实现-CSDN博客

2.1.6-3 DPDK实现TCP的三次握手的代码说明-CSDN博客

2.1.6-4 用DPDK实现TCP协议栈并发-CSDN博客

2.1.7-1 io_uring的使用-CSDN博客

2.1.7-2 io_uring与epoll的对比-CSDN博客

2.1.8 epoll的实现原理-CSDN博客

(2) 网络的原理:eth(以太网),ip,udp/tcp(可扩展的),http(可扩展的) → 量化指标: 实现tcp协议栈(很有必要)

第3阶段,基础组件(日常的轮子,要有造轮子的能力,也要有不造轮子的觉悟)

就是软件设计的固定模式,知道20-30个轮子如何实现,以后看代码会感觉似曾相识

(1) 内存池

(2)线程池

(3)数据库连接池

(4)请求池

(5)原子操作

(6)ringbuffer

(7)无锁队列定时器方案

(8)死锁检测

(9)内存泄漏

(10)日志

(11)网络块

(12)共享内存的做法

(13)probuf协议

第4阶段,中间件(形成自己的技术栈,有自己的思路当时解决业务的问题)

(1) redis(缓存)

(2)MySQL(持久化存储,关系数据库)

(3)Nginx(网关开发)

(4)grpc(服务和服务之间调度,一般服务和服务之间调度选择rpc分布式)

(5)mq(消息队列)

第5阶段,适配行业的开源框架

(1) skynet(用于游戏行业)

(2)openresty(用于cdn/waf)

(3)spdk(用于存储)

(4)dpdk(用于网络)

(5)cuda(高性能计算,gpu计算)

(6)workflow(网络编程范式)

第6阶段,devops(运维和部署)是站在产品的角度

(1) docker

(2) k8s

第7阶段,性能分析

(1)内核要足够了解,比如进程调度,内存管理,文件系统。 针对于(a)磁盘(b)网络(c)内存

(2)bpf/ebpf

(3)火焰图

(4)中间件

(5)gtest

第8阶段,分布式(作为技术扩展)

(1)分布式数据库TiDB

(2)分布式文件系统ceph

(3)分布式协同etcd

第9阶段,经历几个项目

相关推荐
数学小牛马2 小时前
现代软件工程课程 个人博客作业2-结对编程项目总结
软件工程·结对编程
云知谷9 小时前
【经典书籍】C++ Primer 第19章特殊工具与技术精华讲解
c语言·开发语言·c++·软件工程·团队开发
0和1的舞者10 小时前
《Git:从入门到精通(八)——企业级git开发相关内容》
大数据·开发语言·git·搜索引擎·全文检索·软件工程·初学者
雾江流1 天前
元萝卜 1.0.27| 免Root,XP模块框架,支持应用多开分身,一键微信平板模式
软件工程·1024程序员节
电子科技圈2 天前
芯科科技推出智能开发工具Simplicity Ecosystem软件开发套件开启物联网开发的新高度
mcu·物联网·设计模式·软件工程·软件构建·iot·1024程序员节
云知谷2 天前
【经典书籍】C++ Primer 第15章类虚函数与多态 “友元、异常和其他高级特性” 精华讲解
c语言·开发语言·c++·软件工程·团队开发
云知谷2 天前
【经典书籍】C++ Primer 第16章模板与泛型编程精华讲解
c语言·开发语言·c++·软件工程·团队开发
workflower2 天前
基本作业-管理⾃⼰的源代码
开发语言·单元测试·软件工程·需求分析·个人开发
云知谷3 天前
【经典书籍】《编写可读代码的艺术》精华
开发语言·c++·软件工程·团队开发
云知谷3 天前
【经典书籍】C++ Primer 第14类虚函数与多态精华讲解
c语言·开发语言·c++·软件工程·团队开发