1.单点登录
-
sso,token,cookie,session
-
有状态登录与无状态登录
2.购物车
-
分为两种状态的购物车有状态登录与无状态登录
-
数据的存储方式redis+mysql
-
对于实时价格和比价和价格同步的解决方案redis缓存+MQ的最终一致性
3.如何保证幂等性
-
唯一标识解决幂等性
-
时间戳解决
-
数据库自增解决
-
用户id+时间戳
-
用户手机号+时间戳
-
全局表主键自增
-
redis的incr指令
-
UUID解决
-
雪花算法
-
美团的leaf
-
百度的UIDGenerator
4.拦截器
-
数据的传递
pubulic
request
Threadlocal
5.异步任务
-
实现AsyncUncaughtExceptionHandler接口
-
实现AsyncConfigurer接口
-
异步任务
声明式异步:SpringTask提供了一套注解
编程式异步:4种多线程方式,CompletableFuture
6.定时任务
-
时间驱动,异步执行,批量处理
-
定时任务的实现方式
jdk
专业框架
分布式定时任务
mq+死信队列
7.页面静态化
-
理论静态页面的访问速度高于动态页面的访问
-
具体的实现使用静态页面的模板+nginx的拍桌子
-
如何解决数据的不一致性的问题利用mq的消息队列
8.网关过滤
-
全局过滤器
-
局部过滤器
9.jwt
-
三部分组成
-
header
-
payload
-
signature
-
10.多线程的玩法
-
thread基类
-
实现runnable
-
callable+futuretask
-
线程池
11.异步编排
-
CompletableFuture
1.初始化方法:4个 runAsync:初始化没有返回结果集的异步任务 supplyAsync:初始化由返回结果集的异步任务 2.计算完成时方法:4个 whenComplete(Async):不管有没有异常都会执行 exceptionally:只有出现异常时才会执行 3.串行化方法:9个 thenApply(Async):可以获取上一个任务的结果集,也有自己的返回结果集 thenAccept(Async):可以获取上一个任务的结果集,没有自己的返回结果集 thenRun(Async):既不获取上一个任务的结果集,也没有自己的返回结果集 4.组合方法:2个 allOf:所有任务执行完成才会放行 anyOf:任何一个任务执行完成就会放行
12.分布式锁解决缓冲击穿问题
-
为了减少代码的耦合度可以使用
AOP+自定义注解的封装
13.布隆过滤器
-
牺牲精度换取空间效率和时间效率的概率数据结构
-
特点
判断一个数据存在可能不存在
判断一个数据不存在则一定不存在
-
数据同步
键值
-
新增
-
删除
-
更新
非键值
-
时效性要求不高
-
失效性要求高
-
14.缓存
-
特点内存访问效率高于硬盘的访问速度
-
缓存写的一致性
双写一致性
失效模式
双删模式
中间件
-
缓存读的问题
缓存穿透 不存在的数据 解决null布隆过滤器
缓存雪崩 设置相同的过期时间 解决设置时间的随机值
缓存击穿 热点key过期 解决方案设置分布式锁
15.多线程
16.异步编排
17.代码生成器
18.依赖,配置文件,启动类注解,网关,hosts文件,nginx
19.Java的三层结构创建
20.fliwk框架
21.补偿机制
22.分布式事务的特点
23.超时问题解决
24.服务器宕机如何解锁库存
利用延时队列+死信队列