short-link笔记
1.@Accessors(chain = true)
(见于Result类的注解)
不写默认为false,当该值为 true 时,对应字段的 setter 方法调用后,会返回当前对象。
-->可用于链式编程
参:@Accessors 注解详解-CSDN博客
2.关键信息脱敏
利用将class通过jackon序列化为JSON返回给前端,定义序列化处理器,在需要处理的字段上添加注解即可实现关键信息脱敏
3.mp提供bean属性填充
4.业务改造---hash算法随机生成短链接
原字符串越长,生成的短链接重复概率越小.因此原本采用原网址+System.currentTimeMillis()拼接的方式.但是在短时间内大量请求涌入的情况下,该策略失效.
因此采用原网址+UUID.randomUUID()的方式
5.业务---数据库分表数据的修改
单表修改直接修改即可,分表则需要判断分片键是否变更,如果变了则需要删除原有记录,插入新记录
6.疑问---post和put的区别
7.业务---短链接的有效期处理
短链接跳转中,从数据库查出短链接数据存入缓存时,先判断有效期是否过期,如果过期则存储null值到redis
8.业务---短链接缓存穿透
采用分布式锁+双重锁防止冲击数据库和后续业务堵塞
9.业务---短链接缓存击穿
布隆过滤器+null值缓存
先在布隆过滤器中判断,针对错判情况,再到null值缓存中查找,没有在进入数据库,如果没查到则缓存null值到缓存,形成布隆过滤器的兜底