java面试宝典max,最强复习脑图
2021-04-23 16:21:50 0 举报
AI智能生成
java面试复习脑图max
作者其他创作
大纲/内容
多线程
aqs
基础数核心
双向链表
state
AbstractQueuedSynchronizer
FairLock
noFairLock
核心方法
lock
tryAcquire 尝试获取锁
addWaiter 加入双向链表
acquireQueued 队列中参与自旋
unlock
应用
ReentrantLock
可重入锁(防止死锁)
可用计数器实现
Semaphore
子主题
工具
CountDownLatch
CyclicBarrier
锁优化
自旋,无锁
cas
有锁
线程池
关键参数
核心线程池个数,最大线程数,keepalive,队列个数
threadlocal
enter
key
为什么WeakReference
弱引用,在局部方法内,enter中的 theradlocal key 如果为引用,那么就一直不会被回收
内存泄漏问题
enter中的 theradlocal key变为null,一直没有被回收
强 软 弱 虚
软
内存不足直接回收
弱
引用计数照样计,但是当对象只有一个弱引用,就会回收
虚
形同虚设
sync
基础
cas
volitile
线程状态
linux
java
分布式锁
mysql悲观锁
redis
setnx
key唯一,锁超时释放
超时提前释放
线程失败。导致无法解锁
锁的key,由a线程加,a线程执行超时,锁提前释放。b线程加锁,但是a又正常了,a执行解锁操作
value设置锁唯一线程key
if(uuid.equals(redisTool.get('Test')){
redisTool.del('Test');
}
redisTool.del('Test');
}
非原子操作
redlock
子主题
宕机锁
锁超时-锁延长
zk
ectd
threadpoolexecuter
spring
spring mvc
mvc
spring boot
自动配置
spring core
ioc
aop
bean的生命周期
beanfactoryprocessor
单次生效
beanpostprocessor
对所有bean生效
initionBean
spring 消息事件
spring core
ContextRefreshedEvent
ContextStartContext
ContextStopContext
spring boot
ApplicationStartedEvent
ApplicationPreparedEvent
ApplicationReadyContext
系统部署
负载均衡
dns
lvs
nginx
dubbo
https://blog.csdn.net/boonya/article/details/51064482
基础
java8
stream
lambda
invokedynamic
增加元数据区域
子主题
java基础
java数据结构
map
hashmap
hashtable
currentHashMap
collection
list
set
泛型
注解
计算机网络
网络协议
http
http 是在TCP/IP 之上的一种传输协议
基于tcp的可靠连接
无连接
针对是http协议,是一种无连接的协议,每次请求只有一次请求/回复。无持续连接的能力
无状态
针对http协议,无状态是指协议对于事务处理没有记忆能力,区别于同样基于tcp的smtp协议
长连接/短连接
针对的是tcp连接, 一次tcp连接建立不释放认为是长连接,否则是无连接
tcp
面向连接
字节流
点对点
全双工,可靠信道
udp
无连接
报文
1对多
全双工,不可靠信道
dubbo
子主题
websocket
https
https的过程
序列化协议
xml
json
hessian
协议模型
osi模型 & tcp/ip模型
io模型
同步 阻塞的区别
同步
用户线程与内核的交互
用户线程主动
同步
子主题
非同步
阻塞
线程访问数据
等待数据返回
阻塞
非阻塞 有数据时创建线程处理
非阻塞
bio
面向流
FileStream
拷贝逻辑
磁盘->内核->用户->socket buffer ->网卡
同步阻塞
nio
同步非阻塞
模型
多路复用器:Selector
注册socket到多路复用器线程上, 轮询socket,发现有请求在开启线程处理请求
面向缓存
磁盘-》直内核接内存-》网卡接口buffer
零拷贝
channel
缓存
使用jvm直接内存
子主题
netty
base
nio
base reactor模型
mainreactor 接受连接创建socket
sub线程处理读和业务处理
高级 reactor模型
mainreactor 接受连接创建socket
sub线程处理读
业务线程处理业务流程
数据存储
关系性mysql
索引(https://zhuanlan.zhihu.com/p/62018452)
数据结构
B/B+
https://zhuanlan.zhihu.com/p/69666785
why 数据结构
最左原则
聚簇和辅助索引
聚簇索引是主建索引, value直接存储行数据
子主题
数据库理论
事务隔离级别
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
脏读、不可重复读、可重复读、幻读
事务的特性acid
事务传播特性
RR 使用 gap lock实现避免幻读 RC 无gap-lock
锁
排他锁
for update ,insert,update
共享锁
RR模式
gap
rr模式下的间隙锁
next-key
行锁
crash safe
BinLog
server 层独有
主从复制
redoLog
innodb引擎层
2pc
保证持久化特性
https://zhuanlan.zhihu.com/p/184876531
Binlog和Redolog的关系: 事务提交的过程中需要同时写redolog和binlog。步骤如下:1)数据改动写入内存,写入redolog,此时redolog是prepare状态; 2)写binlog; 3)commit redolog。
server 和 引擎层的交互
https://zhuanlan.zhihu.com/p/74045370
https://www.jianshu.com/p/d67f0329d3bf
非关系
redis
String,list,set,zset,hash
list,zset 实现原理
动态字符串
双向链表
字典
跳表
为什么是单线程
复杂度,多线程的收益不高
缓存
穿透
select -1
击穿
单个失效
雪崩
全面失效
集群
分片
16384
redlock方案
setnx的分布式锁方案
部署
哨兵
单个主,其他是从,至少是3个哨兵
集群
多个主
正常比如需要3主6从的方式部署
一致性hash
redssion
memcache
hbase
redis 和 bd的一致性问题
https://www.zhihu.com/question/319817091/answer/653985863
cache- 设置redis的失效时间
cache-更新时delete redis
通过canal,监控db的变更
jvm
gc
gc算法
回收算法
标记整理
标记清除
标记算法
引用计数法
可达性分析
分代回收
年轻代
g1
Minor GC
老年代
cms,g1
Major GC
Full GC
jvm参数含义
-Xms
堆最小大小
-Xmx
堆最大大小
-Xmn
新生代大小
jvm内存结构
主内存/线程内存
jvm对象模型
oop-klass
object ,class对象, instanceKlass
举例来说,作为一种JVM实现,HotSpot VM的不同版本就会把静态变量放在不同的地方。
在Sun JDK6 / OpenJDK6或以前的HotSpot VM里,静态变量存储在instanceKlass对象的末尾,而instanceKlass对象存储在一个由GC管理的、名为Permanent Generation的区域中。
在Oracle JDK7 / OpenJDK7及之后的HotSpot VM里,静态变量存储在java.lang.Class对象末尾的隐藏字段里,而java.lang.Class对象存储在普通的Java heap里(不在PermGen里了)。
在Sun JDK6 / OpenJDK6或以前的HotSpot VM里,静态变量存储在instanceKlass对象的末尾,而instanceKlass对象存储在一个由GC管理的、名为Permanent Generation的区域中。
在Oracle JDK7 / OpenJDK7及之后的HotSpot VM里,静态变量存储在java.lang.Class对象末尾的隐藏字段里,而java.lang.Class对象存储在普通的Java heap里(不在PermGen里了)。
深拷贝和浅拷贝。
jvm内存模型
规范层面
虚拟机栈
堆
方法区
存储class元数据信息,static变量
本地方法栈
程序计数器
实现层面
方法区的实现
1.7及以前
永久代
1.8
元数据
调试工具
jstack
jmap
jstat
框架
系统间交互框架
消息
各个消息中间间之间的区别
nsq
topic ,channel ,nsqdlookup
nsqd
nsqlookup
nsqadmin
kafka
rabbit mq
rocoket mq
https://www.cnblogs.com/qdhxhz/p/11094624.html
rpc框架
dubbo
分层
https://blog.csdn.net/cwz_cwz/article/details/105901760
https/http
数据持久化框架
mybatis
核心流程
sqlsession
StatemnentHandler
paramterHandler
ResultHandler
sqlsession
sqlsession 如何保证线程安全
threadlock
# $ 安全注入
#
预编译为字符串
$
原样替换,容易出现 sql注入
分布式框架
redis
分布式协调器
组件
watch
监控数据节点发送变更时通知
监控检查机制
一致性算法
数据结构
持久化方案
zk
https://juejin.im/entry/6844903717083283464
性能问题
tcp长连接的健康检查
网络分区导致无法注册,形成孤岛
全量日志的缓存
etcd
ap系统的分布式协调器
http://www.360doc.com/content/20/0106/12/46368139_884483920.shtml
算法
算法思想
分治
贪婪
穷举
数据结构
hash
树
链表
算法评判方式
时间复杂度
基础算法理念
排序
快排
查找
二分
没有bug的二分查找
子主题
快慢指针
99.99%
故障转移
高可用
分布式系统
cap
cp
ap
base理论
分布式事务实现
tcc
try confirm cacel
可靠消息(本地消息)
gts
一致性协议
paxcos
raft
应用
redis
ap
zk
cp
协议:zab
etcd
cp
协议:raft
0 条评论
下一页