{{ Dev-Roadmap }}
2025-11-14 22:02:39 0 举报
AI智能生成
开发者路线图
作者其他创作
大纲/内容
互联网(Internet)
互联网是如何工作的?(How does the internet work?)
什么是Http?(What is HTTP?)
浏览器和它们是如何工作的?(Browsers and how they work?)
DNS及它是如何工作的?(DNS and how it works?)
什么是域名?(What is Domain Name?)
什么是托管?(What is hosting?)
基本的前端知识(Basic Frontend Knowledge)
HTML
iframe
sandbox
子主题
子主题
CSS
Javascript
Vue
基础
属性
方法
计算属性 & 侦听属性
computed
watch
绑定
v-model
v-on
v-bind
v-show
实例属性
$data
$method
$refs
$mount
条件语句
v-if
v-else
v-else-if
循环语句
v-for
v-for="a in list"
v-for="(a,i) in list" :key="i"
遍历对象 v-for="(k,v,i) in list"
组件
注册
全局注册 Vue.component("组件名",{Vue对象})
本地注册
特点
1. data 不再是一个json对象,是一个函数
2. template的值是一个字符串, 有且只有一个根元素
生命周期
创建前后
beforeCreate
created
绑定前后
beforeMount
mounted
更新前后
beforeUpdate
updated
销毁前后
beforeDestroy
destroyed
React
操作系统和通用知识(OS and General Knowledge)
终端用法(Terminal Usage)
操作系统通常如何工作(How OSs work in General)
进程管理(Process Management)
线程与并发(Threads and Concurrency)
线程三大特性
可见性
有序性
原子性
问题
1. 一个线程池启动多少个线程合适?
子主题
基本的终端命令(Basic Terminal Commands)
内存管理(Memory Management)
进程间通信 (Interprocess Communication)
I/O 管理 (I/O Management)
I/O 模型
阻塞式 I/O
blocking IO
blocking IO
非阻塞式 I/O
non-blocking IO
non-blocking IO
I/O 复用
select/poll
epoll
信号驱动式 I/O
signal-driven IO
signal-driven IO
异步 I/O
asynchronous IO
asynchronous IO
分类
网络 I/O
磁盘 I/O
问题
1. C10K问题
2. select 和 epoll 的区别?水平触发和边缘触发的区别是啥?使用的时候需要注意什么?
3. epoll 储存描述符的数据结构是什么?
4. select 有描述符限制吗?是多少?
POSIX 基础 (POSIX Basics)
基本的网络概念(Basic Networking Concepts)
Linux 工具
tcpdump
nc
1. 连接; nc localhost 80
2. 模拟请求头信息后回车两次发送;GET / HTTP/1.0
strace
1. 创建文件夹; mkdir ~/strace-nginx
2. 启动; strace -ff -o ~/strace-nginx/nginx ./nginx
3. 测试连接; curl -I localhost
4. 查看进程文件; tail -100f ~/strace-nginx/nginx.3374
netstat
1. 查看; netstat -natp
lsof
1. 查看端口; lsof -i:80
编程语言 (Learn a Language)
Go
基础
数据类型
1. 布尔型
布尔型
布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
2. 数字类型
整型
uint8
无符号 8 位整型 (0 到 255)
无符号 8 位整型 (0 到 255)
uint16
无符号 16 位整型 (0 到 65535)
无符号 16 位整型 (0 到 65535)
uint32
无符号 32 位整型 (0 到 4294967295)
无符号 32 位整型 (0 到 4294967295)
uint64
无符号 64 位整型 (0 到 18446744073709551615)
无符号 64 位整型 (0 到 18446744073709551615)
int8
有符号 8 位整型 (-128 到 127)
有符号 8 位整型 (-128 到 127)
int16
有符号 16 位整型 (-32768 到 32767)
有符号 16 位整型 (-32768 到 32767)
int32
有符号 32 位整型 (-2147483648 到 2147483647)
有符号 32 位整型 (-2147483648 到 2147483647)
int64
有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
浮点型
float32
IEEE-754 32位浮点型数
IEEE-754 32位浮点型数
float64
IEEE-754 64位浮点型数
IEEE-754 64位浮点型数
complex64
32 位实数和虚数
32 位实数和虚数
complex128
64 位实数和虚数
64 位实数和虚数
其他数字类型
byte
类似 uint8
类似 uint8
rune
类似 int32
类似 int32
uint
32 或 64 位
32 或 64 位
int
与 uint 一样大小
与 uint 一样大小
uintptr
无符号整型,用于存放一个指针
无符号整型,用于存放一个指针
3. 字符串类型
字符串类型:
字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
4. 派生类型
(a) 指针类型(Pointer)
(b) 数组类型
(c) 结构化类型(struct)
(d) Channel 类型
(e) 函数类型
(f) 切片类型
(g) 接口类型(interface)
(h) Map 类型
运算符
算术运算符
相加 +
相减 -
相乘 *
相除 /
求余 %
自增 ++
自减 --
关系运算符
等于 ==
不等于 !=
大于 >
小于 <
大于等于 >=
小于等于 <=
逻辑运算符
逻辑与 &&
逻辑或 ||
逻辑非 !
位运算符
赋值运算符
简单赋值 =
相加后再赋值 +=
相减后再赋值 -=
相乘后再赋值 *=
相除后再赋值 /=
求余后再赋值 %=
左移后赋值 <<=
右移后赋值 >>=
按位与后赋值 &=
按位异或后赋值 ^=
按位或后赋值 |=
其他运算符
返回变量存储地址 &
指针变量 *
条件语句
if 语句
if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
if...else 语句
if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 嵌套语句
你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
switch 语句
switch 语句用于基于不同条件执行不同动作。
switch 语句用于基于不同条件执行不同动作。
select 语句
select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
注意:Go 没有三目运算符,所以不支持 ?: 形式的条件判断。
循环语句
循环处理语句
for 循环
重复执行语句块
重复执行语句块
循环嵌套
在 for 循环中嵌套一个或多个 for 循环
在 for 循环中嵌套一个或多个 for 循环
循环控制语句
break 语句
经常用于中断当前 for 循环或跳出 switch 语句
经常用于中断当前 for 循环或跳出 switch 语句
continue 语句
跳过当前循环的剩余语句,然后继续进行下一轮循环。
跳过当前循环的剩余语句,然后继续进行下一轮循环。
goto 语句
将控制转移到被标记的语句。
将控制转移到被标记的语句。
设计模式
创建型模式
结构型模式
行为型模式
内置类型和函数
内置类型
值类型
引用类型:(指针类型)
内置函数
内置接口error
Rust
Java
基础
数据类型
运算符
流程控制
面向对象编程
JavaSE
C#
node/JavaScript/TypeScript
Python
Ruby
Lua
基础
数据类型
无效值 nil
布尔值 boolean
双精度浮点 number
字符串 string
函数 function
C数据结构 userdata
协同程序(线程) thread
表 table
运算符
算术运算符
加 +
减 -
乘 *
除 /
取余 %
乘幂 ^
负号 -
关系运算符
等于 ==
不等于 ~=
大于 >
小于 <
大于等于 >=
小于等于 <=
逻辑运算符
逻辑与 and
逻辑或 or
逻辑非 not
其他运算符
连接符 “..”
一元运算符,返回字符串或表的长度 “#”
Lua + Redis
OpenResty
项目
Orange
Kong
包管理
opm
luarocks
PHP
基础
数据类型
字符串 string
整型 int
浮点型 float
布尔 boolean
数组 array
对象 object
资源 resource
无效值 NULL
运算符
框架
laravel
生命周期
源码分析
yii
生命周期
1. 用户提交指向入口脚本“web/index.php”的请求
2. 入口脚本会加载配置数组,并创建一个应用实例用于处理请求
3. 应用会通过“request”应用组件,解析被请求的路由
4. 应用创建一个“controller”实例,具体处理请求
5. “controller” 创建一个“action”,并执行相关的“filter”
6. 如果有一个“filter”验证失败,“action”就会取消
7. 如果全部的“action”验证成功,“action”就会执行
8. “action”加载一个数据模型,通过模型从数据库中获取数据
9. “action”渲染一个视图,并为视图提供数据
10. 结果返回给“response”应用组件
11. “respone”应用组件把结果返回给用户浏览器
源码分析
tp
生命周期
源码分析
入口文件
类的自动加载
函数 : spl_autoload_register()
流程
1. 获取文件路径, 获取当前
2. 验证文件是否【autoload_static.php】
1. 属性 prefixDirsPsr4 【命名空间 与 路径的对应】
2. 属性 prefixLengthsPsr4 【命名空间 与 长度的 对应】
3. 属性 fallbackDirsPsr4
4. 属性 calssMap 【内容从类库映射文件中读取】
1. 映射文件需手动生成
2. 生成映射文件的命令【php think optimize:autoload】
2. 找到文件之后 将文件【require】
3. 类的别名
1. 方法 class_alias 的使用
2. 存在别名的类 ,可以直接访问 【栗子: \Config::get('xx', 123)】
4. 类的自动加载
1. 主要功能就是查找类文件
3. 查找文件的几种方式
1. 从属性classMap中查找
子主题
4. 加载自定义类
5. composer 自动加载
1. 调用 composer install **/**
2. 更新 autoload_static.php 文件
子主题
问题
1. PHP7 、PHP8 新特性
2. in_array 时间复杂度
3. PHP 匿名函数bind与bindTo方法使用总结
4. PHP如何修改SESSION的生存时间
5. php数组合并用加号和用array_merge()的区别
版本控制系统(Version Control Systems)
Git 基本用法 (Basic Usage of Git)
仓库托管服务 (Repo hosting services)
GitHub
Gitlab
Bitbucket
Gogs
数据库
Databases
Databases
关系型数据库
Relational Databases
Relational Databases
MySQL
版本
5.1
InnoDB 设为默认引擎
5.7
8.0
问题
1. mysql 使用JSON_EXTRACT() 取json值
子主题
MariaDB
MS SQL
Oracle
PostgreSQL
非关系型数据库
NoSQL Databases
NoSQL Databases
Document MongoDB, CouchDB
Column DBs Cassandra
Time series InfluxDB, TimescaleDB
Realtime Firebase, RethinkDB
Redis
Remote Dictionary Server
Remote Dictionary Server
基本数据类型
字符串
String
String
字符串
SET
GET
MSET
MGET
STRLEN
数值
INCR
DECR
INCRBY
DECRBY
Bitmap
SETBIT
BITCOUNT
BITPOS
BITOP
列表
List
List
栈(先进后出)
同向操作
同向操作
LPUSH
LPOP
LPOP
RPUSH
RPOP
RPOP
队列(先进先出)
反向操作
反向操作
LPUSH
RPOP
RPOP
RPUSH
LPOP
LPOP
数组
LSET
LLEN
LRANGE
LTRIM
阻塞 单波队列
BLPOP
BRPOP
哈希
Hash
Map(k-v)
Hash
Map(k-v)
HSET
HGET
HMSET
HMGET
HVALS
HKEYS
HGETALL
集合
Set
Set
无序
去重
去重
SADD
SCARD
SMEMBERS
SREM
交并差
SINTER
SUNION
SDIFF
SINTERSTORE
SUNIONSTORE
SDIFFSTORE
随机事件
SRANGEMEMBER
count 正
count 负
SPOP
有序集合
Zset
Zset
默认排序
左小右大
左小右大
ZADD
ZRANGE
ZRANGEBYSCORE
ZRANK
ZRERANK
集合操作
交并差
交并差
ZINTER
ZUNION
ZDIFF
ZINTERSTORE
ZUNIONSTORE
ZDIFFSTORE
扩展
管道
Pipelining
Pipelining
发布/订阅
Pub/Sub
Pub/Sub
PUBLISH
SUBSCRIBE
Lua脚本
事务
Transactions
Transactions
MULITI
EXEC
WATCH
布隆过滤器
BloomFilter
BloomFilter
回收策略
volatile-lru
volitile-ttl
volitile-random
volatile-lfu
allkeys-lfu
allkeys-lru
allKeys-random
noeviction
过期判定原理
1. 被动访问时过期
2. 主动周期轮询判定 (增量)
HyperLogLog
PFADD
PFCOUNT
PFMERGE
使用场景
缓存
不需要强一致性的数据
缓存状态数据,过滤有效请求,这种缓存服务无状态,能保证服务器动态扩缩容(ex:商品售罄状态)
秒杀
描述 :有限的时间内抢有限的商品
关键字
setnx(抢锁)
watchdog(解决key过期,业务未过期)
红锁(解决单点故障,多台独立实例,保证加锁过半)
分布式场景
集中缓存,解决session共享问题
子主题
持久化
AOF
文件:appendonly.aof
配置
# 默认关闭
appendonly yes
appendonly yes
# 设置文件名
appendfilename appendonly.aof
appendfilename appendonly.aof
# 每次写入一条数据执行一次fsync,它能确保数据一条都不丢,但结果就是性能非常非常的差,吞吐量很低
# appendfsync always
# 每隔一秒执行一次fsync,这个是最常用,生产环境一般都这么配置,性能很高,QPS还是可以上万的
appendfsync everysec
# 不主动执行fsync ,redis将数据写入os cache就撒手不管了,然后后面os自己会时不时有自己的策略将数据输入磁盘,不可控了
# appendfsync no
# appendfsync always
# 每隔一秒执行一次fsync,这个是最常用,生产环境一般都这么配置,性能很高,QPS还是可以上万的
appendfsync everysec
# 不主动执行fsync ,redis将数据写入os cache就撒手不管了,然后后面os自己会时不时有自己的策略将数据输入磁盘,不可控了
# appendfsync no
命令
bgrewriteaof
子主题
RDB
文件:dump.rdb
配置
# 设置 dump 的文件名
dbfilename dump.rdb
dbfilename dump.rdb
# 工作目录
dir ./
dir ./
# save <seconds> <changes>
# 每隔900s, 有1个key发生改变则触发save
save 900 1
save 300 10
save 60 10000
# 每隔900s, 有1个key发生改变则触发save
save 900 1
save 300 10
save 60 10000
命令
save
bgsave
集群
解决的问题
单点故障
单机容量有限
压力
遵循原理
AKF
CAP
方式
主备
主从
主从 + 哨兵
关键字
二进制安全
雪崩、穿透、击穿
问题
数据库其他
More about Databases
More about Databases
对象关系映射(ORMs)
Object Relational Mapping
Object Relational Mapping
事务
Transactions
Transactions
定义 :由一系列数据库操作组成的一个完整的逻辑过程
四个特性ACID
原子性 (或称不可分割性)
Atomicity
Atomicity
一致性
Consistency
Consistency
隔离性
Isolation
Isolation
持久性
Durability
Durability
事务隔离级别
索引
索引概念 :
索引其实是一种数据结构,能够帮助我们快速的检索数据库中的数据
索引其实是一种数据结构,能够帮助我们快速的检索数据库中的数据
索引模型
Hash索引
B+ Tree索引
聚簇索引
简介:
类型
聚簇索引
非聚簇索引
关键字
回表
索引覆盖
联合索引(最左前缀匹配)
索引下推(5.7版本之后默认开启)
主键
复合主键
联合主键
存储引擎
InnoDB
MyISAM
Memory
CAP定理
CAP Theorem
CAP Theorem
一致性
Consistency
Consistency
可用性
Availability
Availability
分区容错性
Partition tolerance
Partition tolerance
分片策略
Sharding Strategies
Sharding Strategies
数据复写
Data Replication
Data Replication
问题
索引优化
N+1 问题
N+1 Problem
N+1 Problem
学习API
Learn about APIs
Learn about APIs
HATEOAS
Open API 说明和 Swagger
Open API Spec and Swagger
Open API Spec and Swagger
身份验证
Authentication
Authentication
REST
Read Roy Fielding’s Paper
子主题
JSON APIs
SOAP
OAuth
缓存
Caching
Caching
CDN
Content Delivery Network
Content Delivery Network
服务端
Server Side
Server Side
Redis
Memcached
客户端
Client Side
Client Side
网页安全
Web Security Knowledge
Web Security Knowledge
为什么不使用MD5
MD5 and why not to use it
MD5 and why not to use it
SHA族
SHA Family
SHA Family
scrypt
bcrypt
哈希算法
Hashing Algorithms
Hashing Algorithms
web服务器漏洞
XSS(跨域脚本攻击)
Cross Site Scripting
Cross Site Scripting
CSRF(跨域请求伪造)
Cross-Site Request Forgery
Cross-Site Request Forgery
SSRF (服务端请求伪造)
Server-Side Request Forgery
Server-Side Request Forgery
测试
Testing
Testing
持续集成与持续部署
CI / CD
CI / CD
测试
集成测试
Integration Testing
Integration Testing
单元测试
Unit Testing
Unit Testing
功能测试
Functional Testing
Functional Testing
设计和开发原则
Design and Development Principles
Design and Development Principles
架构模式
Architectural Patterns
Architectural Patterns
单体式应用
Monolithic Apps
Monolithic Apps
优化方向
无锁化
隔离化(分库分表)
缓存
过滤有效请求
子主题
微服务
Microservices
Microservices
SOA(面向服务的架构)
Service-Oriented Architecture
Service-Oriented Architecture
CQRS 和事件溯源
CQRS and Event Sourcing
CQRS and Event Sourcing
无服务化
Serverless
Serverless
搜索引擎
Search Engines
Search Engines
Elasticsearch
Solr
设计
Design
Design
GOF 设计模式
GOF Design Patterns
GOF Design Patterns
领域驱动设计
Domain Driven Design
Domain Driven Design
测试驱动开发
Test Driven Development
Test Driven Development
设计模式
Design Pattern
Design Pattern
三大分类
创建型模式
Creational Pattern
Creational Pattern
结构型模式
Structural Pattern
Structural Pattern
行为型模式
Behavioral Pattern
Behavioral Pattern
六大原则
SOLID
SOLID
单一职责原则
Single Responsibility Principle
Single Responsibility Principle
开闭原则
Open Closed Principle
Open Closed Principle
里氏替换原则
Liskov Substitution Principle
Liskov Substitution Principle
迪米特法则
Law of Demeter
Law of Demeter
接口隔离原则
Interface Segregation Principle
Interface Segregation Principle
依赖倒置原则
Dependence Inversion Principle
Dependence Inversion Principle
KISS
YAGNI
DRY
集群
Cluster
Cluster
负载均衡集群(高扩展)
Load Balance Cluster
Load Balance Cluster
简介:负载均衡(Load Balance)是集群技术(Cluster)的一种应用。
将大量的并发请求分担到多个处理节点,从而提高并发处理能力。
由于单个处理节点的故障不影响整个服务,负载均衡集群同时也实现了高可用性。
将大量的并发请求分担到多个处理节点,从而提高并发处理能力。
由于单个处理节点的故障不影响整个服务,负载均衡集群同时也实现了高可用性。
Web负载均衡
DNS轮询
CDN(内容分发网络)
Content Delivery Network
Content Delivery Network
IP负载均衡
简介:IP负载均衡是基于特定的TCP/IP技术实现的负载均衡。
比如NAT、DR、Turning等
比如NAT、DR、Turning等
硬件设备实现
F5-BIG-IP-GTM(简称F5)
缺点:价格高
软件实现
LVS (Linux虚拟服务器)
Linux Virtual Serve
Linux Virtual Serve
基于网络地址转换技术
VS/NAT
VS/NAT
基于IP隧道技术
VS/TUN
VS/TUN
基于直接路由技术
VS/DR
VS/DR
子主题
HAProxy
Nginx
高可用性集群
High Availability Cluster
High Availability Cluster
简介:提高冗余单元,避免单点故障
子主题
高性能计算集群
High Performance Computing Cluster
High Performance Computing Cluster
简介:将单个重负载的请求分散到多个节点进行处理,
最后再将处理结果进行汇总
最后再将处理结果进行汇总
性能优化
方向
响应时间优化
吞吐量优化
方式
分表分库
CDN
中间件(MQ)
消息代理
Message Brokers
Message Brokers
RabbitMQ
Kafka
容器化 vs 可视化
Containerization vs Virtualization
Containerization vs Virtualization
Docker
rkt
LXC
网络通信
WebSockets
TCP
Transmission Control Protocol
Transmission Control Protocol
简介:是一种面向连接的、可靠的、基于字节流的传输层通信协议
问题
1. 三次握手
2. 四次挥手
UDP
Http
网页服务器
Web Servers
Web Servers
Nginx
高性能
OpenResty
Apache
老牌
Caddy
MS IIS
仅用于widows
Tomcat
Java
Servelet容器
图数据库
Graph Databases
Graph Databases
Neo4j
GraphQL
中文网
Apollo
Relay Modern
面试
1. 语言基础
2. 框架源码,生命周期
3. 关系型数据库,事务,索引
4. 非关系型数据库,Redis
5. 消息中间件,RabbitMQ,Kafka
6. 设计模式
三大分类
六大原则
7.时间/空间 复杂度
8. 网络通信
OSI七层
TCP/IP协议族
TCP
UDP
9. 操作系统
I/O
常用命令
10. 业务场景
1. C10K
全称:Concurrent 10,000 connections
子主题
2. stock 库存超卖
1. 小型项目:前端防抖+库存字段无符号
2. 中小型项目:乐观锁或悲观锁。
3. 高并发场景:分布式锁 + 消息队列
4. 超高并发场景:限流 + 消息队列 + 预扣库存。
子主题
关键字
滑动时间窗口算法
令牌桶算法
hystrix & sentinel
熔断
限流
降级
服务隔离
kafka
背压
流式计算
Topic
MBA & MEM
BASE & CAP
容器化改造
0 条评论
下一页