蚊子 6 个月前

redis的list实现分页:
int startIndex = (index - 1) * size;
int endIndex = index * size - 1;
List users = stringRedisTemplate.opsForList().range(listKey, startIndex, endIndex);

发布于:2023-11-03 15:46:06
蚊子 6 个月前

http.cors.enabled: true
http.cors.allow-origin: "*"

发布于:2023-11-02 14:12:03
蚊子 6 个月前

去除所有空格: name = name.replaceAll(" +","");

发布于:2023-11-02 09:42:31
蚊子 6 个月前

指定jdk运行
nohup /home/jdk17/jdk-17.0.2/bin/java -jar /home/shangjia/1.jar > a.log 2>&1 &

不指定
nohup java -jar 1.jar > a.log 2>&1 &

发布于:2023-10-23 17:08:13
蚊子 9 个月前

将数据库时间格式化,dto也能用,@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

发布于:2023-08-09 10:43:38
蚊子 11 个月前

image-1685951945823

发布于:2023-06-05 15:58:42
蚊子 11 个月前

es操作索引:
1.text类型:会分词,先把对象进行分词处理,然后再再存入到es中,查出来的是分词的一大把数据
2.keyword:不分词,没有把es中的对象进行分词处理,而是存入了整个对象,查出来的只要一串数据
3.分词插件是:中文分词用的
image
image-1685774895320

发布于:2023-06-03 14:35:17
蚊子 11 个月前

es倒排索引:就是分词,词对应文章
先找词后面对照的id,根据id拉文章
image-1685520667219

发布于:2023-05-31 16:11:01
蚊子 11 个月前

缓存击穿:就是热点key失效了,重建缓存要长时间

解决办法:
互斥锁:
新请求发现失效了,先查询有没有缓存,没有就再获取锁,然后判断有没有人用这个锁,如果有人,说明有人正在重建缓存,那么就休眠一会,醒了就判断有没有缓存,直到有缓存就返回出去

逻辑过期:
就是不设置redis的ttl,写进redis数据时设置一个逻辑过期数据字段,如果有访问进来,没有缓存,就进入互斥锁,在互斥锁里面新开线程,让这个新的线程去干缓存重建,自已就把旧数据返回出去,如果别的请求进来了,还没重建好,还是返回旧数据

图片流程:
image-1685435191785
image-1685435290226

各项缺点:
第一个:同一时间多个请求进来,没人释放锁,请求都进入休眠,存在死锁风险
第二个:会返回旧数据出去,额外的内存消耗,实现复杂

发布于:2023-05-30 16:14:48
蚊子 11 个月前

缓存雪崩:就是redis嗝屁了,所有key都验证不通过,都进入了mysql
解决:给ttl设置随机时间,使用集群,多级缓存

发布于:2023-05-30 15:52:06