提纲
2022-04-22 10:39:05 7 举报
AI智能生成
知识点整理
作者其他创作
大纲/内容
springboot启动源码
启动链路
springcloudAlibaba
Mysql
MyISam
支持行锁
支持表锁
不支持外键
使用非聚集索引(索引文件和数据文件分开)
Innodb
支持事务
使用聚集索引(索引和数据在同一个文件)
为什么不使用hashmap/二叉树等;只使用B+数;
支持外键
数据库瓶颈
存储能力(IO)
增加索引
分库分表(即进行数据切分)
垂直切分
垂直分库:基于业务分类,拆分成不同的数据库,有点类似微服务化
垂直分表(效果不太好的):基于数据表来切分,如可将表列拆分出频繁访问的数据列与冷数据列
这样可以加载更多数据到内存中,增加查询的命中率,减少磁盘IO,以此来提升数据库性能
这样可以加载更多数据到内存中,增加查询的命中率,减少磁盘IO,以此来提升数据库性能
水平切分
库内分表-同一个数据库实例,对于内存/cpu还是共用
分库分表-不同数据库实例
分库分表问题:1.事务一致性 2.分页排序 3.全局唯一主键
连接数有限(并发处理能力)
读写分离(多台服务器,繁衍出主从复制方案)
增加数据缓存-热点且稳定的数据存储在NoSql(Redis)
数据库高可用
哨兵模式、主从复制
问题:服务调用过程
答:服务消费者通过代理对象 Proxy 发起远程调用,接着通过网络客户端 Client 将编码后的请求发送给服务提供方的网络层上,也就是 Server。Server 在收到请求后,首先要做的事情是对数据包进行解码。然后将解码后的请求发送至分发器 Dispatcher,再由分发器将请求派发到指定的线程池上,最后由线程池调用具体的服务
答:服务消费者通过代理对象 Proxy 发起远程调用,接着通过网络客户端 Client 将编码后的请求发送给服务提供方的网络层上,也就是 Server。Server 在收到请求后,首先要做的事情是对数据包进行解码。然后将解码后的请求发送至分发器 Dispatcher,再由分发器将请求派发到指定的线程池上,最后由线程池调用具体的服务
java基础
String/StringBuffer/StringBuilder
集合
List
LinkedList
ArrayList
Vector
问题1:Vector与ArrayList对比区别
答:Vector与ArrayList一样,也是通过数组实现的,
不同的是它支持线程的同步,多线程场景中使用单独这些方法是线程安全的。
对这些容器的复合操作无法保证其线程安全性 比如使用获取长度方法与删除方法组合(删除最后一个元素)
答:Vector与ArrayList一样,也是通过数组实现的,
不同的是它支持线程的同步,多线程场景中使用单独这些方法是线程安全的。
对这些容器的复合操作无法保证其线程安全性 比如使用获取长度方法与删除方法组合(删除最后一个元素)
Set
Map
abstractMap
HashMap
TreeMap
HashTable
IO
hashcode作用
关键字final
关键字static
关键字volitle
try catch finally
锁
分段锁-concurrentHashmap应用,对每个桶的数据进行加锁
乐观锁-基于CAS操作,其应用有自旋(占用cpu)
悲观锁-synchronize,造成线程堵塞
锁在对象头存在状态,偏向锁-轻量锁-重量级锁
关键字synchronized
SPI机制
异常
自由主题
自由主题
MQ
RocketMQ
高可用方案
重复消费问题
数据丢失
推拉模式
spring相关
事务传播机制
@Transactional
事务隔离机制
spring启动源码分析
spring IOC设计原理与源码
spring AOP
设计原理与源码
实现方式
JDK代理
CGLIB
加载入口AbstractApplicationContext的refresh()
bean生命周期
线程与并发
锁
乐观锁-cas与aba问题
悲观锁-synchronized(1.6前的重量级)
自旋锁
偏向锁
轻量级锁
重量级锁
分段锁-concurrentMap使用
分布式锁
公平锁
非公平锁
并发相关包
J.U.C
J.U.C.A
J.U.C.L
防重并发方案
reentrantLock与synchronized区别
synchronized与volatile区别
线程池理解
多线程要考虑复合操作的情况
jvm底层
双亲委派机制
类加载器
启动类加载器:只加载rt.jar
扩展类加载器:只加载ext包
系统类加载器:加载classpath下的class
自定义类加载器:用户自定义
加载处理机制
作用
安全机制,防止恶意替换java核心类
避免类的重复加载
打破双亲委派
自定义类加载器
SPI
类加载顺序
jvm内存模型
GC相关
是否可回收对象算法
引用计数器算法
可达性分析算法-GC ROOT
怎么回收-GC算法
标记-清除算法
标记-整理算法
复制算法(Java中新生代采用)
分代法(Java堆采用)
常用参数调优
性能调优
FGC次数多问题:需要合理调配堆参数以减少FGC
OOM问题则需要排查代码是否存在问题,需要dump文件进行分析
redis
react模型-事件驱动
dubbo
dubbo重要角色
Container-服务运行容器
Monitor-统计服务的调用次调和调用时间的监控中心
Registry-服务注册与发现的注册中心
Provider-暴露服务的服务提供方
Consumer-调用远程服务的服务消费方
问:服务调用过程
答:首先服务消费者通过代理对象 Proxy 发起远程调用,接着通过网络客户端 Client 将编码后的请求发送给服务提供方的网络层上,
也就是 Server。Server 在收到请求后,首先要做的事情是对数据包进行解码。然后将解码后的请求发送至分发器 Dispatcher,
再由分发器将请求派发到指定的线程池上,最后由线程池调用具体的服务
答:首先服务消费者通过代理对象 Proxy 发起远程调用,接着通过网络客户端 Client 将编码后的请求发送给服务提供方的网络层上,
也就是 Server。Server 在收到请求后,首先要做的事情是对数据包进行解码。然后将解码后的请求发送至分发器 Dispatcher,
再由分发器将请求派发到指定的线程池上,最后由线程池调用具体的服务
传输协议默认dubbo/传输框架默认为netty
dubbo使用问题记录
消费方服务调用代理
ExtensionLoader--支持dubbo的spi扩展
自由主题
0 条评论
下一页