分享我的后端学习之路

发表时间: 2021-03-29 14:19

后端工程师初、中、高阶各级别学习成长路线,以及所需要掌握了解的技术核心要点分享给大家,并提供相关的阅读学习书籍参考。

对于学习的过程,除了要坚持以外,还要注重实践和交流,交流就包括要去思考和总结,并且将其输出出来。


1、初阶

1.技术基础

网络:DNS、TCP&IP、浏览器、HTTP

2.操作系统

  • Unix/Linux命令行:grep, awk, sed, lsof, curl, wget, tail, head, less, find, ssh, kill;正则表达式
  • 操作系统如何运行
  • 进程管理
  • 线程与并发

3.基本前端知识

HTML、CSS、JavaScript

4.编程语言

Java, Go, Kotlin、Bash、C/C++

5.算法与数据结构

性能分析、基本数据结构(列表、树等)、排序、查找、图

6.数据库

索引、事务、分库分表

7.编程工具

版本管理:

Git、版本控制系统、代码托管服务

8.构建工具

Maven、Gradle

9.编辑器

VSCode、Emacs、VIM

IDE:

Intellij IDEA

10.相关学习资源

1、陈鸣译,《计算机网络:自顶向下方法(原书第6版)》

2、龚奕利,贺莲译,《深入理解计算机系统(原书第3版)》

3、谢路云译,《算法(第4版)》

4、陈昊鹏译,《Java编程思想》

5、李道兵等译,《Go程序设计语言》

6、《ProgrammmingKotlin》

7、刘晓霞等译,《MySQL必知必会》

8、《Pro Git》

9、许晓斌,《Maven实战》

10、李松峰等译,《JavaScript高级程序设计(第3版)》

11、Cameron Newham等,《学习bash(第二版)》


2、中阶

1、编程框架:

应用框架:spring、play网络框架:netty、持久化:MyBatis、HibernateRPC:gRPC、Dubbo

2.JVM执行系统:

类结构与字节码、类加载机制内存管理:内存区域与溢出、垃圾收集器与内存分配策略、性能监控与故障处理工具)并发:内存模型与线程、线程安全与锁优化

3.消息队列:

kafka、rocketmq

4.存储:

redis 、mysql

5.工程测试:

单元测试、集成测试、功能测试安全:OAuth、HTTPS、CORS、内容安全策略持续集成

6.相关学习资源

1、 Brian Goetz等,《Java并发编程实战》

2、张卫滨译,《Spring实战》

3、何品译,《Netty实战》

4、周志明,《深入理解Java虚拟机》

5、 Neha Narkhede等,《Kafka: The Definitive Guide》

6、黄健宏,《Redis设计与实现》

7、《计算机程序的构造和解释》


3、高阶

1.编程范式

函数式编程、面向对象编程、泛型编程、类型系统、装饰器模式、代理模式

2.设计原则

DRY、KISS、S.O.L.I.D.

3.分布式系统

  • 基础理论:节点与网络、时间与顺序、ACID、CAP/FLP/DLS、一致性理论
  • 设计模式:网关模式,Gateway、边车模式,Sidecar、服务网格,Service Mesh、防腐层,Anti-corruption Layer、分布式锁、配置中心、异步通讯、幂等性
  • 弹性(容错)设计:服务降级、服务限流、熔断设计、补偿事务、隔离设计、异步通讯、幂等性设计、重试设计、bulkhead
  • 工程:监控追踪、服务/资源调度、流量控制、数据调度、开发与运维自动化、负载均衡+健康检查、服务发现+动态路由+健康检查、自动化运维

4.相关学习资源

1、赵军平等译,《数据密集型应用系统设计》

2、Marko Luksa,《Kubernetes in Action》

3、Distributed systems theory for the distributed systems engineer

4、孙宇聪译,《SRE:Google运维解密》

5、崔力强等译,《微服务设计》