复活了博客,但不更新了
redis的list实现分页:
int startIndex = (index - 1) * size;
int endIndex = index * size - 1;
List
http.cors.enabled: true
http.cors.allow-origin: "*"
去除所有空格: name = name.replaceAll(" +","");
指定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 &
将数据库时间格式化,dto也能用,@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
es操作索引:
1.text类型:会分词,先把对象进行分词处理,然后再再存入到es中,查出来的是分词的一大把数据
2.keyword:不分词,没有把es中的对象进行分词处理,而是存入了整个对象,查出来的只要一串数据
3.分词插件是:中文分词用的
缓存击穿:就是热点key失效了,重建缓存要长时间
解决办法:
互斥锁:
新请求发现失效了,先查询有没有缓存,没有就再获取锁,然后判断有没有人用这个锁,如果有人,说明有人正在重建缓存,那么就休眠一会,醒了就判断有没有缓存,直到有缓存就返回出去
逻辑过期:
就是不设置redis的ttl,写进redis数据时设置一个逻辑过期数据字段,如果有访问进来,没有缓存,就进入互斥锁,在互斥锁里面新开线程,让这个新的线程去干缓存重建,自已就把旧数据返回出去,如果别的请求进来了,还没重建好,还是返回旧数据
图片流程:
各项缺点:
第一个:同一时间多个请求进来,没人释放锁,请求都进入休眠,存在死锁风险
第二个:会返回旧数据出去,额外的内存消耗,实现复杂
记录情感点滴,生活随笔