1.脱敏:封装用户敏感信息的User对象到UserDTO(没有敏感信息)再返回。
2.短信登录(使用redis)
- Tomcat 是一个 Servlet 容器,支持 Servlet API 和 JSP 技术,能够将 HTTP 请求转发到 Java 应用程序进行处理,并将结果返回给客户端。
- 每个tomcat中都有一份session,假设用户第一次访问第一台tomcat,并且把自己的信息存放到第一台服务器的session中,但是第二次这个用户访问到了第二台tomcat,那么在第二台服务器上,肯定没有第一台服务器存放的session,所以此时 整个登录拦截功能就会出现问题。
- 解决方案:1.拷贝session到其他tomcat服务器上(服务器压力大)2.使用redis存储session。
3.redis存储:
- 验证码:key为手机号,value为验证码
- 用户信息:key为UUID生成的token,value为用户信息
4.手机号黑名单:
5.会话保持:双重拦截器
- 第一级:token校验 第二级:登录校验(代码中先调用哪个拦截在order中指定优先级,越小优先级越高,相同优先级按照声明顺序调用)
6.UUID
- 因为UUID具有唯一性,UUID的组成部分包括MAC地址,这保证了不同机器生成的UUID一定不同,包括时间戳,保证了时间维度的一致性,还有其他的一些部分用于保证唯一性(随版本和实现方式变化),UUID有128位,存入redis中为32个十六进制字符加上4个-,具有唯一性。
7.缓存击穿:
8.缓存雪崩:
9.缓存穿透
https://blog.csdn.net/liu174/article/details/146457646
布隆过滤器:google包 误判率0.01
10.超卖:
- 乐观锁CAS:他的操作逻辑是在操作时,对数据的版本号进行+1 操作,然后要求version 如果是1 的情况下,才能操作,那么第一个线程在操作后,数据库中的version变成了2,但是他自己满足version=1 ,所以没有问题,此时线程2执行,线程2 最后也需要加上条件version =1 ,但是现在由于线程1已经操作过了,所以线程2,操作时就不满足version=1 的条件了,所以线程2无法执行成功。
11.限购:
source:
https://github.com/KNeegcyao/dianping?tab=readme-ov-file