自我介绍
Bean自动装配,Jar包哪些是前期就要装配的
- 自动装配可以简单理解为:通过注解或者一些简单的配置就能在 Spring Boot 的帮助下实现某块功能。
- Spring Boot 通过@EnableAutoConfiguration开启自动装配,通过 SpringFactoriesLoader 最终加载META-INF/spring.factories中的自动配置类实现自动装配,自动配置类其实就是通过@Conditional按需加载的配置类,想要其生效必须引入spring-boot-starter-xxx包实现起步依赖
- 视频讲解:https://www.bilibili.com/video/BV1NY411P7VX/?spm_id_from=333.337.search-card.all.click&vd_source=63c31c00f43b2146deb2abe22be2973b
mysql慢查询以及怎么优化
- slow_query_log 开启慢查询日志,设置超过几秒为慢SQL语句,抓取慢SQL语句
- 通过explain查看执行计划,对慢SQL语句分析;创建索引并调整语句,再查看执行计划,对比调优结果
- 原因:
- 没加索引,索引失效,走了全表扫描
- 选错索引了
- 数据库在刷脏页
- 拿不到锁
- 数据库服务器内存、硬件资源,或者网络资源配置不是很好。
- 数据库压力大,高并发场景下,大量请求使得CPU 占用很高或者 IO利用率 很高。
接口慢怎么查询
缓存一致性以及解决方案,延迟双删
- 「先更新数据库,再更新缓存」,还是「先更新缓存,再更新数据库」,存在并发问题,会出现缓存和数据库中的数据不一致的现象。
- 先更新数据库,再删除缓存,
- 无并发:第一步失败没事,第二步失败,重试缓存
- 有并发:等待缓存删除,可能有部分数据会读到旧的缓存
- 先删除缓存,再更新数据库
- 无并发:第一步失败没事,第二步失败,重试数据库更新
- 有并发: 在删除缓存和更新数据库之间的时间,有大量请求,会导致缓存更新为旧值,这时候可以使用延迟双删
redis的Hyperloglog、Bitmap
kafka怎么解决消息的可靠性
零拷贝
- 十亿个整数查询奇数
- 如何提供一个公共登录页面给兄弟项目组用