后端开发学习路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
互联网
互联网如何工作?
什么是 HTTP?
浏览器如何工作?
DNS 如何工作?
什么是域名?
什么是主机?

前端基础知识
HTML
CSS
JavaScript

操作系统和通用技能
终端的使用
操作系统工作原理
进程管理
内存管理
进程间通信
I/O 管理
POSIX 基础
stdin
stdout
stderr
pipes
基础网络知识
线程和并发
基本命令
grep
awk
lsof
curl
wget
tail
head
less
find
ssh
kill

开发语言
Java
Python
Go
JavaScritp
Ruby
Rust
C#
PHP(虽然是最好的语言)

版本管理
Git 的基本用法
仓库托管服务
GitHub
GitLab
Bitbucket

关系型数据库
PostgreSQL
MySQL
MariaDB
MS SQL
Oracle

NoSQL Database
HBase
MongoDB
CouchDB
RethinkDB
DynamoDB

数据库周边
ORM框架
ACID 特性
BASE 特性
Basic Availability:基本可用。
Soft-state:软状态。
Eventual Consistency:最终一致性
事务
N+1问题
数据库范式
索引是什么、工作原理
数据副本
分片策略
CAP 定理

API设计
REST
Json API
SOAP 协议
认证
基于 Cookies
OAuth
Basic 认证
Token 认证
JWT
OpenID
SAML
Open API 规范 和 Swagger

缓存
CDN
Server 端缓存
Redis
Memcached
Client 端缓存

Web 安全知识
Hash 算法
何为MD5,为什么不要使用MD5来加密?
SHA 家族
SCrypt
BCrypt
HTTPS
CORS
SSL/TLS
内容安全政策

测试
集成测试
单元测试
功能测试

CI / CD

设计模式和开发原则
SOLID
KISS
YAGNI
DRY
GOF 设计模式
领域驱动设计
测试驱动设计

架构模式
单体架构
微服务架构
Service Mesh
SOA
CQRS 和事件源
Serverless

搜索引擎
ElasticSearch
Solr

消息中介
RabbitMQ
Kafka

容器化与虚拟化
Docker
rkt
LXC

GraphQL
Apollo
Relay Modern

图数据库
Neo4j

WebSocket

Web 服务器
Nginx
Apache
Caddy
MS IIS

大规模建设
容错策略
降级
限流
负载转移
断路器
迁移策略
水平与垂直伸缩
可观察性建设
8 条谬论
网络是稳定的
网络传输的延迟是零
网络的带宽是无穷大
网络是安全的
网络的拓扑不会改变
只有一个系统管理员
传输数据的成本是零
整个网络是同构的

标记说明
个人推荐
替代方案
不紧急,用到再学
不推荐

持续学习