一次学习时,视频的最后讲课老师分享了他的学习路线。觉得很有参考意义,特此记录下来,以激励自己。
工作五年以下,分以下几个水平,其实我觉得可能划分并不明显。
1. 数据结构和算法、设计模式
- 最小堆、红黑树、时间轮、b/b+树, 布隆过滤器(redis击穿)
- 排序(快排、希尔、归并,堆排序)及时间复杂度和是否稳定
- 跳表 redis 中zset的实现手法,通过生成多级的有序列表,达到接近二分查找的速度。空间换时间。
- 责任链、过滤器、观察者、代理、单例,工厂等设计模式
2. 中间组件编程
- 数据库 redis(请求回应模式,hirides - c driver) mysql(mysqlclient) nginx zeromq(bind, connect, send, recv).
- nginx 配置
- zeromq
- zk (zoomkeeper) (c driver)
3. 网络IO
- select poll epoll (边缘触发,水平触发)
- 同步,异步
- 阻塞, 非阻塞
- libevent, libuv
- reactor(epoll_wait) proactor(信号 + 回调)
4. linux 系统
- iostat uptime
- 网络 netstat tcpdump iperf
- dd umount
- tail mutitail
- htop top
- vi sed grep awk
- shell 脚本
5. 开源框架
- 配置 xml json
- 脚本 lua
- 协议 protobuffer, thrift, messagepack, flatbuffer
- 数据压缩 zlib snappy
- xxtea, openssl , tls
- log4 cpp
- nginx, lighttpd
- 协程 —> libco --> hock mysqlclient 同步阻塞操作改成同步非阻塞操作
6. 代码工程化
- makefile, cmake, autoconf
- git, svn
7. 性能测试
- gtest, luatest, boost.test
- wrk , webbench
对于上述这些,会用这些应用的话,老师说这是初级的水平(啊这,学废了)。下面记一下五年以上的(也不知道自己能不能干到那个时候)
0
- 明确方向
- 自律
- 2-3技术基友
1. 从源码学习
- nginx
- redis hash 时间轮 string hash
- zeromq
- skynet
2. 造轮子能力
- 中间件,内存池,线程池等
- 高并发io的实现 epoll reactor 这些
- 网络协议栈的实现
- nginx模块
- 高并发锁
3. 集群能力
- 数据库
- nginx
- zk
4. linux内核
5. 性能优化
- mysql
- linux
6. 运维部署 docker
7. 一线架构分析 (同样的功能, 一线大厂怎么实现的)
|