水文---服务端学习路线(听别人说的,记录以激励自己)

Posted 芳杨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了水文---服务端学习路线(听别人说的,记录以激励自己)相关的知识,希望对你有一定的参考价值。

一次学习时,视频的最后讲课老师分享了他的学习路线。觉得很有参考意义,特此记录下来,以激励自己。

工作五年以下,分以下几个水平,其实我觉得可能划分并不明显。

1. 数据结构和算法、设计模式
  1. 最小堆、红黑树、时间轮、b/b+树, 布隆过滤器(redis击穿)
  2. 排序(快排、希尔、归并,堆排序)及时间复杂度和是否稳定
  3. 跳表 redis 中zset的实现手法,通过生成多级的有序列表,达到接近二分查找的速度。空间换时间。
  4. 责任链、过滤器、观察者、代理、单例,工厂等设计模式
2. 中间组件编程
  1. 数据库 redis(请求回应模式,hirides - c driver) mysql(mysqlclient) nginx zeromq(bind, connect, send, recv).
  2. nginx 配置
  3. zeromq
  4. zk (zoomkeeper) (c driver)
3. 网络IO
  1. select poll epoll (边缘触发,水平触发)
  2. 同步,异步
  3. 阻塞, 非阻塞
  4. libevent, libuv
  5. reactor(epoll_wait) proactor(信号 + 回调)
4. linux 系统
  1. iostat uptime
  2. 网络 netstat tcpdump iperf
  3. dd umount
  4. tail mutitail
  5. htop top
  6. vi sed grep awk
  7. shell 脚本
5. 开源框架
  1. 配置 xml json
  2. 脚本 lua
  3. 协议 protobuffer, thrift, messagepack, flatbuffer
  4. 数据压缩 zlib snappy
  5. xxtea, openssl , tls
  6. log4 cpp
  7. nginx, lighttpd
  8. 协程 —> libco --> hock mysqlclient 同步阻塞操作改成同步非阻塞操作
6. 代码工程化
  1. makefile, cmake, autoconf
  2. git, svn
7. 性能测试
  1. gtest, luatest, boost.test
  2. wrk , webbench

对于上述这些,会用这些应用的话,老师说这是初级的水平(啊这,学废了)。下面记一下五年以上的(也不知道自己能不能干到那个时候)

0
  1. 明确方向
  2. 自律
  3. 2-3技术基友
1. 从源码学习
  1. nginx
  2. redis hash 时间轮 string hash
  3. zeromq
  4. skynet
2. 造轮子能力
  1. 中间件,内存池,线程池等
  2. 高并发io的实现 epoll reactor 这些
  3. 网络协议栈的实现
  4. nginx模块
  5. 高并发锁
3. 集群能力
  1. 数据库
  2. nginx
  3. zk
4. linux内核
5. 性能优化
  1. mysql
  2. linux
6. 运维部署 docker
7. 一线架构分析 (同样的功能, 一线大厂怎么实现的)

以上是关于水文---服务端学习路线(听别人说的,记录以激励自己)的主要内容,如果未能解决你的问题,请参考以下文章

长期更新提升听明白能力的二三事

学习别人的rpc框架

实用水文篇--SpringBoot整合Netty实现消息推送服务器

敏捷团队激励手段

前端入门 前端自学路线 web开发前端如何学习

Java 学习路线之四个阶段