王者段位java面试视频
文章目录
王者段位java模式
hystrix 降级 限流
配置 中心 阿波罗,config 等
微服务网关 zuul
rbac模型
用户和角色是多对多的 一个 角色 多个用户,一个用户 多个 角色
权限 和 角色关系,一个权限 多个 角色,一个 角色可以多个权限
常见分布式解决方案
- tcc
- 最大努力尝试
- 最终一致性
rabbitMQ 重复消息
redis 和 mysql 双写一致性的问题
先更新 数据库 再删除缓存
【可能出现的问题,更新完成后, 缓存 还没有删除,可能导致
短暂的数据不一致问题】
你直接回答: 没有十全十美的解决方案
redis 分布式锁
- setnx 的问题:
- 还没有操作完, 这个锁已经过期了
- 解决方案: watchdog 看门狗机制
- 还没有操作完, 这个锁已经过期了
mybatis 二级缓存, hashMap redis 缓存的区别
redis 做分布式缓存, 允许别的服务 同时去使用
数据库的优化
- 分库分表
- 集群
- explain 解释 优化
- 覆盖索引
- 回表
分表策略
- 设置步长
- 按照时间
- 今年的放一张表
- 这个月的放一张表
- hash算法
- 算出 在哪张表
union 的问题
- union 会导致临时表产生
- union和 union all 区别
- union 会去重 【去重的话 会导致效率低】
- union all 不去重
索引
直接回答 b + 树,
b+ 树 和 二叉树 的区别
b+ 树 有多个子节点, 这样压低了 层数 ,如果是 二叉树的话,数据量比较多
层数就比较深, b+ 数压低层数,查询效率就会比较高
myisam 和 innodb 索引上面的区别
my 分为2部分 索引 和 数据文件 是 不一样的 ,数据分离,
查询的话 是先查索引再查数据,会有个回表操作
这里 我直接 说 myisam 是非聚集索引 查询会回表
innodb 如果是 主键索引的话,直接 就是 可以 一次查询出来、
因为 索引和数据是存 一起的,叫做聚集索引
那 innodb 普通索引是非聚集索引, 索引存的是 主键,查询 会有个回表操作。也就是查询2次回表效率低
innodb 可以支持事务, myisam 不支持事务,只能锁表,更新操作 锁表,导致效率太低
mysql 默认使用 innodb , innodb 和 myisam 区别是 innodb 行锁,myisam 表锁
innodb 锁表怎么解决
1. 锁表的话,可能是 因为 范围更新,导致 锁住一个比较大的区间【 这样 近似看成是锁表了】
2. 数据库备份的时候,好像会锁表
文章作者 LYR
上次更新 2021-08-17