java开发知识导图(超级全,附上解析!)
2024-09-22 22:42:34 0 举报
AI智能生成
这是一个java开发的思维导图,不单单只局限于java,还有很多Linux、MySQL、redis、clickhouse的知识,绝不会亏。
作者其他创作
大纲/内容
Java基础
java集合
Map
HashTable
效率低的原因
键值不可以为null
与hashmap的区别
fail-fast和fail-safe
ConcurrentHashmap
synchronizedMap
mutex
操作加上synchronized
hashmap
底层结构
链表
1.7头插
1.8尾插
红黑树
hash碰撞
扩容机制
rehash
初始化大小
扩容方式
负载因子
线程不安全
重写hashcode和euqals
List
ArrayList
set
vector
linkedlist
多线程
ThreadLocal
内存泄漏
底层实现原理
Callable和Runnable
线程池
参数
运行机制
策略
有哪些线程池
阻塞队列
设置线程池
设计模式
创建型模式
简单工厂
工厂模式
抽象工厂
单例模式
建造者模式
原型模式
六大原则
开闭原则
依赖倒转原则
里氏替换原则
接口隔离原则
迪米特原则
合成复用原则
结构型模式
适配器模式
装饰器模式
代理模式
桥接模式
行为型模式
策略模式
模板方法
观察者模式
责任链
迭代器模式
内存泄漏
异常
Throwable
Error
VrtulMachineError
StackOverFlowError
OutOfMemoryError
NoClassDefFoundError
Execption
运行时异常
RuntimeException
NullPointerException
ArithmeticException
IndexOutOfBoundsException
ClassCastException
编译时异常
IOException
EOFException
FileNoFoundException
classNotFoundException
JVM
双亲委派机制
类加载顺序
垃圾回收算法
标记清除
标记复制
标记整理
三色标记
标记过程
算法缺陷
多标
漏标
判断一个对象是否存活
引用计数
可达性分析
组成成分
本机方法栈
native方法的局部变量表
native类信息
虚拟机栈
局部变量
对象的引用
程序计数器
执行的字节码指令位置
方法区
类信息
静态变量
常量
堆
对象实例
锁
乐观锁
CAS
实现原理
存在问题
ABA问题
标志位
循环开销
单对象访问
JUC包的使用
互斥锁
自旋锁
读写锁
死锁
怎么解决死锁
预防死锁
以确定的顺序获得锁
hashcode排序
银行家算法
超时放弃
解除死锁
剥夺资源
撤销进程
死锁检测
Jstack命令
Jconsole工具
产生死锁的条件
互斥条件
请求与保持条件
不剥夺条件
循环等待条件
volatile
可见性
java内存模型
指令重排序
happen-before
内存屏障
悲观锁
synchronized
用法
实现原理
monitor
队列
锁升级
偏向锁
匿名偏向和非匿名偏向
轻量级锁
重量级锁
ReentrantLock
AQS
condition
同步队列
条件队列
怎么保证接口的安全性
token
session
分布式
分布式算法
Quorum机制
Paxos
Raft
Zab
分布式理论
CAP
BASE
分布式事务
刚性事务
XA模型
XA接口规范
XA协议的实现
2PC
缺点
性能问题
协调者单点故障问题
丢失消息导致数据不一致问题
两阶段提交
提交事务请求
执行事务请求
成功执行
中断请求
3PC
三阶段提交
CanCommit
PreCommit
DoCommit
2PC和3PC区别
缺点
XA的限制
柔性事务
通知型事务
异步确保型事务
MQ事务消息方案
本地消息表方案
最大努力通知
MQ事务消息方案
本地消息表方案
补偿型事务
TCC
TCC与2PC的不同
go
map
map的底层数据结构
map的查找
map的扩容
map的用法
slice
slice底层结构
如何扩容
如何查找
slice的用法
channel
channel的底层数据结构
有缓冲chan和无缓冲chan
防止channel死锁、阻塞
对已关闭的channel进行读写
go内存结构
如何判断一个对象是分配在堆上还是栈上
内存逃逸分析
函数返回局部变量的指针是否安全
内存管理
内存池
go垃圾回收
垃圾回收机制
goroutime调度
GMP模型
什么是协程
goroutine相关操作函数
goroutine什么时候会发生内存泄露,如何避免
锁
mutex
底层实现原理
正常模式、饥饿模式
atomic
SAGA
Seata
事务执行流程
四种模式
AT模式
充值业务场景
电商下单场景
TCC模式
SAGA模式
XA模式
如何解决分布式事务问题?
强一致性场景
弱一致性场景
最终一致性场景
流式计算
Hadoop
HDFS
MapReduce
YARN
Hive
HBase
Spark
RDD
SQL
Streaming
Storm
Flink
项目
分布式链路
QPS是多少,如何统计
向上日志统计
利用优先队列统计
计算机系统
虚拟内存
内存分段
内存分页
段页式内存
Linux内存管理
零拷贝
DMA
mmap
sendfile
PageCache
进程
进程的状态
进程的结构
进程间通信
管道
消息队列
共享内存
信号量
信号
socket
线程
线程的状态
waiting
用户线程
线程间通信
共享内存
volatile共享内存
消息传递
wait/notify、join
管道流
PipeWriter、PipeReader
内核线程
轻量级线程
进程的调度算法
先来先服务调度算法
最短作业优先调度算法
高响应比优先调度算法
时间片轮转调度算法
最高优先级调度算法
多级反馈队列调度算法
内存页面置换算法
最佳页面置换算法(OPT)
先进先出置换算法(FIFO)
最近最久未使用置换算法(LRU)
时钟页面置换算法(LOCK)
最不常用置换算法(LFU)
磁盘调度算法
先来先服务算法
最短寻道时间优先算法
扫描算法
循环扫描算法
LOOK与C-LOOK算法
IO多路复用
select、poll、epoll
Reactor
单Reactor 单进程/单线程
单Reactor 多进程/多线程
多Reactor 多进程/多线程
Proactor
计算机网络
TCP
拥塞控制
慢启动
拥塞避免
拥塞发生
快速恢复
重传机制
超时重传
快速重传
SACK
D-SACK
流量控制
滑动窗口
发送窗口
接收窗口
连接队列
半连接队列
全连接队列
三次握手
四次挥手
time wait
time wait状态过多情况
为什么time wait的等待时间是2MSL
优化time wait
close wait
close wait状态过多情况
为什么抓包抓到的TCP挥手是三次
为什么挥手需要四次
与UDP的区别
SYN泛洪
粘包问题
原因
发送端
接收端
解决
发送端
接收端
Ping
输入url的过程
解析URL
应用层处理
Host查询
DNS查询
DNS解析过程
DNS发生在什么阶段
DNS挟持
HTTP请求
请求行
请求头
空行
请求正文
传输层处理
TCP报文格式
TCP分割数据
网路层处理
IP报文格式
数据链路层处理
MAC头部
ARP协议
ARP缓存
MAC报文
物理层处理
网卡
经过交换机
网络包接收
经过路由器
路由器与交换机的区别
路由器接收包
查询路由表
路由器发送
处理请求
HTTP响应
状态行
响应头
响应正文
浏览器显示
网络模型
IOS模型
物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
TCP/IP模型
物理层
数据链路层
网络层
传输层
应用层
http
https
SSL连接过程
非对称加密
对称加密
获取公钥的过程
CA签发证书的过程
客户端检验数字证书
中间人攻击
加密算法
RAS
DH秘钥交换
ECDHE
http 1.0
http 1.1
http 2.0
http 3.0
状态码
1xx
2xx
3xx
4xx
5xx
请求响应
请求
响应
session
分布式session
cookie
跨域
数据格式
ip
ipv4
ipv6
子网掩码
中间件
kafka
底层结构实现
零拷贝
内存页
顺序写
page cache
reactor
数据压缩
分区并发
memory mapper files
spring-kafka
实现延时队列的方案
顺序读写
重复消费
保证不丢失数据
rocketMQ
底层结构实现
分布式事务
Elasticsearch
底层数据结构
倒排索引
数据同步
Logstash
go Elasticsearch
canal
etcd
组成
http server
stroe
raft
wal
Java框架
Spring
IOC
依赖注入的三种方式
BeanFactory和ApplicationContext的区别
循环依赖
bean
Bean的生命周期
Bean的作用范围
Bean的自动装配
Bean的加载流程
单例Bean是线程安全的吗
Spring是怎么解决线程并发安全的
AOP
AOP相关名词
实现方法
静态代理
AspectsJ
动态代理
handlerinvocation接口
CGlib
通知类型
事务
事务的种类和区别
事务的隔离级别
事务的传播行为
事务的实现方式和实现原理
Mybatis
一、二级缓存
#{}和${}的区别
接口方法能否重载
常见的标签
spring中的设计模式
代理模式
工厂模式
单例模式
模板方法
观察者模式
springboot自动装配原理
SpringMVC处理流程
注解
注解失效
Netty
IO模型
BIO
NIO
AIO
Netty的线程模型
Netty零拷贝
执行流程
核心组件
Channel
EventLoop
EventLoopGroup和EventLoop的关系
ChannelFuture
ChannelHandler和ChannelPipelin
Bootstrap和ServerBootstrap
长连接
心跳机制
启动流程
dubbo
服务暴露
服务引入
服务调用
SPI机制
负载均衡
RPC原理
序列化协议
数据库
mysql
事务
ACID
锁机制
行锁
表锁
MVVC
主从复制
原理
搭建方式
主从复制模式
宕机解决
代码层面实现
持久化
redo log
undo log
Mysql是怎么存取数据的
MyIsam和InnoDB的区别
MyIsam不支持事务,InnoDB支持事务
InnoDB支持外键,MyIsam不支持
索引结构不一样
锁粒度不一样
索引
分类
PREIMARY KEY
UNIQUE KEY
联合索引
hash索引
索引失效情况
底层结构
b+树
hash索引
性能提升
慢查询
优化limit分页
排查索引没起做用的情况
模糊匹配
%key
key%
%key%
避免使用not in 使用not exists
避免使用or 使用union
避免null值判断 给字段加0判断
避免在等号左边使用表达式和函数操作
联合索引的顺序
避免查询字段时进行隐式转换
Explain分析细节
type
key
rows
Extra
mmr
buffer pool
修改的LRU算法
change buffer
Redis
数据结构
String
底层数据结构
int
sds
命令
List
底层数据结构
ziplist
linkedList
命令
Set
底层数据结构
intSet
dist
命令
Hash
底层数据结构
ziplist
字典
命令
Rehash过程
扩容和缩容机制
Zset
底层数据结构
ziplist
跳表+dist
命令
数据持久化
RDB
save
bgsave
AOF
bgrewriteaof
混合持久化
mysql数据同步
代码层面
cannl
线程模型
单线程模型
多线程操作
过期清除策略
定时删除
惰性删除
定期删除
Redis采用的过期删除策略
内存淘汰策略
AOF、RDB和复制模式处理过期键
Aop操作Redis
数据一致性
缓存穿透
缓存击穿
缓存雪崩
BloomFilter
分布式锁
锁误解除
setnx
Redis集群
Sentinel模式
工作原理
优缺点
主从复制模式
主从复制原理
主从复制优点
主从复制缺点
数据断点续传
Cluster模式
工作原理
数据自动分片机制
MongoDB
基本数据类型
Stirng
Integer
Boolean
Double
......
TSDB
底层数据结构
clickhouse
底层数据结构
与行式储存的对比
云原生
服务网格
领域应用
go
面试
k8s
概念与原理
实践
算法
动态规划
排序算法
二分
快排
堆排
回朔
0 条评论
下一页