程序员后端学习路线大体了解

GitHub上比较火的路线

程序员后端学习路线大体了解_第1张图片

对勾颜色标志

紫色:强烈建议学习
绿色:备选方案,选择这个学习或是绿色
灰色:路线图中的顺序不严格(随时学习)可作为进阶
纯灰色:不建议学习,过时

第一部分:Internet(网络部分)

1.整个互联网网络怎样运行的。(计算机网络)
计算机网络中基础概念:五层协议,HTTP,浏览器,DNS
每一层的所做的事情,要搞清楚。
2.什么是HTTP–HTTPS(学习前端必须了解的协议,后端也需要学习)
3.浏览器是怎么工作的(前端所需要了解的,后端也需要了解)
什么是DNS,什么是域名

第二部分:Basic Frontend Knowledge

1.html
2.css
3.js

第三部分:OS and General Knowledge

这部分是关于操作系统的,基本程序员必须了解的系统是Linux系统,一些常见的命令。

  1. 操作系统们是怎么运行的
  2. 终端使用(terminal)
  3. 进程是怎么管理的
  4. 线程与并发
  5. 内存的管理
  6. 跨进程之间怎么进行通讯
  7. I/O 的一些管理
  8. 终端输入输出控制台,管道(进程之间的输入输出的交互)
  9. 网络基本概念:wlan,vlan,lan,wan 防火墙

第三部分:learn a language

前提:语言本身在不是很大的内容,其他知识是通用的。
学习任何一个语言,都需要了解它的核心特性(quirk)
底层实现包括并发,内存模型等。
学习那个语言其实没有重要,其他很多知识都是通用的。
首选java.python以后可以学习go语言之类的。
javascript也是必学的。

第四部分:version control systems

如何使用GitHub,基础的Git的用法。

第五部分:databases

数据库原理必须精通,用哪个工具其实差不多。
1.relational databases
postgreSQL,mysql
2.nosql databases
mongodb和cassandra(比较火)
数据库通用的基础知识:
1.ORMs(对象关系映射)
把应用程序的数据映射到数据库里,方便操作,牵扯到框架里的东西。
本人用过的django框架中,就有这个ORM,通过模型层映射到数据库中,通过应用程序进行操作。
2.事务–ACID
3.数据库范式
以及数据库索引,怎么进行工作
4.n+1 problem
5.数据的同步(主从架构,主数据库,备用数据库)
6.数据库的分片
7.CAP(理解分布式的基础)

第六部分:learn about APIs

API:后端程序员需要提供一个服务
1.推荐REST风格的API,JSON APIS
2.工作中可能会遇到,open API and Swogger 学这个东西
3.Authentication API的授权与权限问题
OAuth,Basic Authentication(基础用户名,密码),Token Authentication(令牌),JWT

第七部分:caching

1.CDN 怎么运行的,具体怎么回事。
2.Redis(集群原理)
3.client side(web中的缓存)

第八部分:web security knowledge

MD5 为什么不用他了
SHA1,SHA2,SHA256,SHA512
HTTPS/SSL/TLS
跨域的网络安全问题
OWASP上的软件漏洞

第九部分:Testing

项目中非常重要的一个环节。
1.集成测试
2.单元测试
3.功能测试
很多框架
CI/CD:Jenkins.ansible 这些东西是怎么用的

第十部分:Design and Development principles

代码设计,系统设计的基本思想
SOLID,KISS,YAGNI,DRY

架构设计:
微服务,serverless

第十一部分:search engines

elasticsearch,solr

第十二部分:Message Brokers

robbitMq,kafka

Docker

容器化

第十三部分:web servers

Nginx,Apache,Tomcat

第十四部分:Building for Scale

服务降级,限流,短路,负载均衡,背压等问题。

日志采集,监控,报警等进阶不可少。

水平扩展,垂直扩展(解决流量太大问题)

随时要想好写日志,可以进行观察。

备注:(作为一个好的工程师,写代码只是一个小的方面,更好的是把一个项目怎么做的更好)

你可能感兴趣的:(python)