一次学习时,视频的最后讲课老师分享了他的学习路线。觉得很有参考意义,特此记录下来,以激励自己。
工作五年以下,分以下几个水平,其实我觉得可能划分并不明显。
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. 一线架构分析 (同样的功能, 一线大厂怎么实现的)