思路
2021-08-01 18:38:45 1 举报
AI智能生成
java高级开发思维导图
作者其他创作
大纲/内容
源码、设计模式
IOC
AOP
Sploud cloud
设计模式
消息
RabbitMq
RocketMq
组件、消息类型
消息组成(高可用)、主从复制
ElasticSearch
Zookeeper
基本概念
集群、使用场景、分布式锁
Spring事务、分布式事务
DDD和中台
JVM
类加载
JVM组成
JVM对象创建及内存分配
垃圾收集器
JVM调优
垃圾回收器角度、初始化和最大堆内存大小相同
调优方向
需求的预调优、运行时的卡顿调优
1、运行情况评估
- 年轻代对象的增长速率
- young gc 的频率和时间
- 每次young gc存活的对象和进入老年代的对象
Full gc的频率和时间
2、工具
自带的工具
1、jmap -heap
2、jstat
https://gceasy.io
3、具体
arthas
thread -n
评估对象大小
对象头
mark word 8
class point:(开启指针压缩)4
数组长度 4
实例(不包含静态变量)
属性
int、string = 4
boolen = 1
引用
占4
填充
问题
循环远程调用,大数据批量查询,记载到内存中,循环调用
树层级大对象,导致频繁young gc
OOM
arthas或日志
dump 工具
Mysql
1-Mysql索引结构和Explain
2-Mysql事务、锁、MVCC、Buffer Pool
3、分表分库
Sql优化(一条sql出发)
创建索引原则
1、建立自增主键
2、联合索引、尽量扩展索引
80%的sql走联合索引、其他另建索引
3、查询频率高,区分度高的
4、更新频繁、大类型字段不要建
5、基于慢sql
sql
1、explain和trace
2、from之前的
覆盖索引
3、where条件
like
in
联合索引
小基数字段,全匹配
定时任务处理范围字段
4、排序、分组
尽量在索引上排序
单路、双路
尽量符合最左匹配原则
覆盖索引
先满足排序后分组
5、分页
可以先查主键;避免查询字段太多,不回表
6、join
有 索引的情况下 NLJ 算法比 BNL算法性能更高
关联字段加索引
小表驱动大表
in和exist优化也是一个道理
避免多表查询
难点、电商秒杀
Redis
数据结构、NIO
持久化、集群
优化设计
并发
1-JMM和volatile
2、线程池、AQS、CAS、Synchronized
0 条评论
下一页