导图社区 JAVA架构师学习路线
这是一篇关于JAVA架构师学习路线的思维导图,主要内容包括:网络,测试,运维部署,Linux常用指令,DevOps,大数据,人工智能,实战项目,IO模型,微服务,中间件,数据库,基础。
编辑于2025-02-19 11:09:04这是一篇关于JAVA架构师学习路线的思维导图,主要内容包括:网络,测试,运维部署,Linux常用指令,DevOps,大数据,人工智能,实战项目,IO模型,微服务,中间件,数据库,基础。
这是一篇关于JAVA架构师学习路线的思维导图,主要内容包括:网络,测试,运维部署,Linux常用指令,DevOps,大数据,人工智能,实战项目,IO模型,微服务,中间件,数据库,基础。
这是一篇关于JAVA架构师学习路线的思维导图,主要内容包括:DevOps,运维部署,人工智能,IO模型,测试,网络,中间件,数据库,大数据,Linux常用指令,微服务,基础。
社区模板帮助中心,点此进入>>
这是一篇关于JAVA架构师学习路线的思维导图,主要内容包括:网络,测试,运维部署,Linux常用指令,DevOps,大数据,人工智能,实战项目,IO模型,微服务,中间件,数据库,基础。
这是一篇关于JAVA架构师学习路线的思维导图,主要内容包括:网络,测试,运维部署,Linux常用指令,DevOps,大数据,人工智能,实战项目,IO模型,微服务,中间件,数据库,基础。
这是一篇关于JAVA架构师学习路线的思维导图,主要内容包括:DevOps,运维部署,人工智能,IO模型,测试,网络,中间件,数据库,大数据,Linux常用指令,微服务,基础。
JAVA架构师学习路线
基础
基本类型
int
byte
short
float
double
long
char
boolean
面向对象
封装
继承
多态
文件操作
文件创建
删除
查找文件
文件服务器
Ceph
FastDFS
MinIO
Nginx文件服务器
NFS
tomcat文件服务器
Apache Tika
线程
线程创建
继承Thread
实现Runnable接口
实现Callable接口
线程池
ExecutorService
CompletableFuture
匿名类
线程安全
线程池
概念
创建方式
Executors
newFixedThreadPool
newCachedThreadPool
newScheduledThreadPool
newSingleThreadExecutor
newSingleThreadScheduledExecutor
newWorkStealingPool
ThreadPoolExecutor
参数: corePoolSize: maximumPoolSize: keepAliveTime: unit: workQueue: threadFactory: handler:
unit
workQueue
handler
ConcurrentHashMap
设计模式
创建型
单例模式
工厂模式
抽象工厂模式
建造者模式
原型模式
结构型
代理模式
适配器模式
装饰器模式
外观模式
桥接模式
组合模式
享元模式
行为型
策略模式
模板方法模式
观察者模式
迭代子模式
责任链模式
命令模式
备忘录模式
状态模式
访问者模式
中介模式
解释器模式
正则表达式
JVM
内存空间
监控
调优
内存模型
集合
Collection
List
ArryList
基于动态数组的数据结构,通过索引在任意位置快速访问元素,插入和删除操作相对较慢,因为需要移动元素来维护数组的顺序
LinkedList
基于链表的数据结构,每个节点包含指向前一个节点和后一个节点的引用,支持快速的插入和删除操作,访问元素时相对较慢,因为需要遍历链表来查找元素
Vector
基于动态数组的数据结构,Vector 是线程安全的,所有的方法都使用 synchronized 关键字进行同步,性能比ArrayList 差
Set
HashSet
基于哈希表的数据结构,使用哈希函数来计算每个元素的存储位置,不保证元素的顺序
TreeSet
基于红黑树(一种自平衡二叉查找树)的数据结构,维护了一个有序集合,可以使用 Comparable 或者 Comparator 来定义元素之间的顺序,性能通常比 HashSet 略低
Map
HashMap
基于链表+数组的数据结构,底层由散列表(哈希表)实现快速查找,.无序,键值允许为null,非同步,hashtable保证同步和非空,LinkedHashMap保证有序
TreeMap
基于红黑树的数据结构,自然有序,不允许存储 null 键,不同步,复杂度高
JUC
锁
锁升级过程
无锁
偏向锁
轻量锁
重量锁
互斥锁
自旋锁
读写锁
乐观锁
悲观锁
数据库
关系型数据库
mysql
常用命令
1、查找配置文件:mysql --help | grep my.cnf
DDL\DML\DQL
恢复\备份
子主题
Oracle
DB2
PostgreSQL
达梦
非关系型数据库
redis
常用命令
缓存穿透
概念:当查询一个不存在的数据时,MySQL查询不到数据就不会向redis中写数据,就会导致每次都查询数据库,当受到恶意攻击时,容易造成数据库崩溃 解决方案: 1.缓存空数据:查询到空数据,将空数据缓存到redis中 优点:实现简单,维护方便 缺点:占用大量内存,并且短期内会造成数据不一致 2.布隆过滤器:在请求和redis之间增加布隆过滤器,用户数据存在则继续执行,如果不存在则拒绝请求 有点:内存占用少、没有多余key 缺点:存在误判,数据越少误判率越高,越剧越多误判率越小 布隆过滤器可以应用在如下场景,Redis缓存击穿、邮件黑名单过滤、爬虫爬过的网站、推荐新闻
缓存击穿
概念:当redis缓存的key到期重建时,由于没有重建完成,此时大量并发请求产生,导致数据库查询压力增大,造成数据库服务崩溃 解决方案: 1.增加互斥锁 2.设置热点数据永远不过期 3.使用布隆过滤器 4.设置接口限流与熔断、降级
缓存雪崩
概念:当同时有大量key失效或redis服务宕机时,大量请求到达数据库时带来压力 解决方案: 1.redis部署使用哨兵或集群模式 2.设置接口限流与熔断、降级 3.设置key的TTL随机值,防止大量key在同一时间失效 4.设置热点数据永不过期
双写一致性
概念:当修改了数据库数据时同步一份最新数据到缓存,保证缓存与数据库一致,双写一致性一般用于两种场景:数据强一致性、允许延迟一致 实现方式: 1.延迟双删:删除缓存、修改数据库、延时后删除缓存 延迟双删带来的问题:先删除缓存或先删除数据库,都会造成脏读情况,所以需要再次删除缓存降低脏读风险。为什么使用延迟删除?数据库一般是由主从搭建的,所以需要等待主从同步完成,实际情况中主从的同步时间无法预知,所以仍然存在脏读问题。 2.分布式锁实现 适合读多写少的场景,使用共享锁读取数据,排他锁写数据,但性能较低 3.通过异步通知实现 4.通过canal的异步通知实现,binlog日志监听
持久化
数过期策略
数据淘汰策略
Redis分布式锁实现
MongoDB
Casandra
HBase
中间件
数据库中间件
ShardingJDBC
myCat
PrestoDB
消息中间件
Kafka
kafka-topics
查看主题:./kafka-topics.sh --list --bootstrap-server 10.221.1.148:9092
删除主题:./kafka-topics.sh --delete --topic digiop-topic --bootstrap-server 10.221.1.148:9092
kafka-consumer-groups
查看列表:./kafka-consumer-groups.sh --bootstrap-server 10.221.1.148:9092 --list
子主题
子主题
Rocket MQ
Rabbit MQ
Activity MQ
其他
zookeeper
配置文件
1、tickTime:单位毫秒,指定zookeeper服务之间或客户端与服务器之间维持心跳的时间间隔 2、initLimit:
微服务
Spring Cloud
springboot
注册中心
Eureka
Nacos
Zookeeper
配置中心
Apollo
Nacos
网关
Gateway
Zuul
认证中心
Security
OAuth2
Shiro
JWT
Dubbo
IO模型
实战项目
性能调优
系统层
CPU
CPU利用率
CPU平均负载
上下文切换次数
调整时间片大小,使用sched_setscheduler 命令调整执行时间
线程池复用线程资源
内存
全局内存使用
进程内存使用
磁盘
空间容量
吞吐量/磁盘IO使用率
缓冲器/缓存
网络
网络延迟
网络连接数
网络抓包
组件层
数据库
SQL调优
索引调优
连接池配置
数据库参数配置
网络IO
IO调度模型
序列化框架
线程调度模型
web容器
线程池配置
切换容器
缓存/MQ
应用层
线程
死锁检查
线程状态分布
锁竞争
占用CPU较重的线程及代码追踪
top+pid+jstack
JDK自带命令,top -hp 指令查看现场信息 按下p 根据CPU耗费进行排序,再使用printf将线程ID转换为16进制进程ID号,然后通过 jstack 进程ID | grep -A 200,通过管道grep -A 200 (匹配到的行后显示200行内容)加上16进制的进程ID号,就可以看到栈信息
Arthas
thread -n 3 -i 1000 查询耗费CPU前三的线程是谁,定位栈信息,再定位具体代码
VisualVM
内存
内存分配
垃圾回收
网络
带宽使用
流量
网络分区
日志/监控
代码逻辑
远程调用
架构设计
人工智能
深度学习
机器学习
图像处理
视频处理
大语言模型(LLM)
大数据
Spark
Hive
Hadoop
Flink
DevOps
CI
CD
Linux常用指令
防火墙
iptables
添加规则:iptables -I INPUT -p tcp --dport 6088 -m state --state NEW -j ACCEPT
保存规则(需重启):iptables-save > /etc/sysconfig/iptables
文件
进程
目录
权限
shell
包管理
编辑器vi
显示行号 :set nu
删除指定行(m,n为行号) :m,n d
搜索当前行首次出现并替换 :s/mmm/nnn 搜索当前行所有出现的并替换 :s/mmm/nnn/g 搜索全局出现并替换 :%s/mmm/nnn/g
运维部署
容器化部署
docker
Kubernetes
Harbor
web服务器
Tomcat
weblogic
Jboss
Websphere
undertow
网络通信框架
Netty
Mina
Grizzly
测试
单元测试
mock测试
测试框架Junit
集成测试
模块接口测试
灰盒测试
回归测试
性能测试
压力测试
性能监控
可靠性测试
安全测试
密码强度
加解密
防火墙
安全备份
访问控制
抓包
wireshark
自动化测试
jemter
SeleniumUI
混沌测试
随机测试
模糊测试
随机暂定
随机配置
故障注入
网络
OSI模型
应用层
表示层
会话层
传输层
数据层
网络链路层
物理层