- 博客(16)
- 收藏
- 关注
原创 es的倒排索引结构理解
首先倒排索引由 词项索引(termIndex),词项字典(termDict),postingList(实际文档ID)在使用分词搜索小米手机的时候,文档3会命中2个字典 ,那么文档3的score就会很高,就会比较靠前;termIndex存储的不是所有的term,而是term的前缀,用于快速定位term;顾名思义,是词项字典的一个索引,用于快速定位词项字典。数据结构使用的是FST,就当成是一棵树理解就可以。具体的记分算法可以百度,这里就做扩展;词项字典存储的是所有的分词;存储的是命中字典的文档ID;
2025-06-03 12:58:53
221
原创 消息队列的使用场景
流量削峰: 如果一个业务突然请求很多,但是服务扛不住那么多,就可以使用消息队列来进行削峰进行慢速处理;异步: 同步操作比较耗时使用异步处理 or 不关心结果的时候可以使用;解耦: 应用之前同步操作使用MQ进行异步操作解耦;
2025-06-03 02:33:16
99
原创 mysql优化的几个方向
3.尽量不要使用text和二进制字段,如果必要使用外表存储;4.在创建索引的时候尽量选择查询频率比较高/重复率低的字段;1.尽量使用values批量插入,不要一个一个插入;2.数据量大的时候可以先不创建索引;5.主键能自增就自增,避免页分裂;2.尽量不要设置冗余字段;1.设置合理的字段类型;
2025-06-03 01:47:46
219
原创 redis的缓存穿透/缓存击穿/缓存雪崩/缓存未命中
缓存击穿网络上大部分文章都描述的是热点key,因为只有在热点key高并发情况下,缓存击穿才是问题,如果一个数据只有一两个情况也根本不会影响什么,但是一般使用缓存也可能是热点数据;建议2: 如果项目真的并发特别高,建议使用分布式锁来一次性解决缓存穿透和缓存击穿问题,因为在开发写代码的时候是无法提前感知到是缓存穿透还是缓存击穿。一般情况下: 设置成null就可以解决,但是如果一个key 在一秒内查询1W次,依然会打崩数据库,这个高并发情况下;缓存雪崩: 大量key在一定时间内同时触发了缓存击穿。
2025-06-03 01:37:20
181
原创 redis的内存淘汰策略
lru 最近最少使用,某个key上次获取时间距离当前时间越远越有可能被删除;lfu 最少频率使用, 某个key在一定时间内访问次数越少越有可能被删除;在redis内存不足的时候触发内存淘汰策略。
2025-06-03 01:10:36
145
原创 nacos配置中心动态刷新机制
使用原来,使用@scope在ioc里会被注册成scopeBean,在接收到事件的时候会销毁bean重新生成,销毁生成会重新走一遍生命周期并会带来额外的负担,对有状态的bean不友好;推荐使用这种,在接收到事件的时候调用set方法重新赋值配置。@RefreshScope 配置@value使用。
2025-06-02 22:41:03
294
原创 nacos服务实例健康检查机制
由nacos主动探活,每隔20S探测一下,如果不健康设置为不健康状态,不会移除,永久存在;由客户端发送心跳,每隔5S发送心跳,超过15S认为不健康,超过30S移除实例,
2025-06-02 22:34:49
180
原创 springboot配置文件的优先级以有nacos为例
nacos>系统级别(命令行 环境变量)> jar包外部(config目录>同级)>jar包内部(config目录>同级)同名配置properties>yaml>yml。配置文件的加载优先级。
2025-06-02 22:31:06
166
原创 spring事务的传播机制
required_new 父子事务可以独立回滚,nested使用savepoint父事务如果回滚子事务也会回滚。nested:嵌套事务,如果有事务就执行嵌套事务,使用数据的savepoint;support: 如果有事务就加入当前事务,如果没有就以无事务的方式执行;support_not: 如果有事务就挂起当前事务,以无事务的方式执行;required:默认 如果有事务就加入该事务,如果没有就创建新事物。never: 以无事务的方式执行,如果有事务抛出异常;
2025-06-02 22:28:25
133
原创 redis保持数据一致性
强一致性 低性能:使用读写锁,在写操作中加锁修改数据库和缓存;强一致性 高性能:阿里的canal,监控binlog。弱一致性 高性能:延迟双删。
2025-06-02 22:19:25
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人