2.19 复习记录
#牛客AI配图神器#LC:前K个高频元素 LRU 二叉树直径
黑马点评:①使用乐观锁CAS解决库存超卖问题(版本号,分段锁)(更新数据可用乐观锁)
②使用synchronized解决一人一单问题
1.对UserId进行toString().intern()加锁
2.注意先synchronized再开启事务
3.注意封装方法调用后Spring事务的作用范围,使用AopContext获取代理对象
4.集群部署时,由于有多个JVM,JVM自带的锁会失效。
③使用redis的set nx ex获取锁,del释放锁方案来实现分布式锁
④业务阻塞可能导致del释放其他线程的锁,使用UUID+ThreadID标识锁,删除时先get判断再del
⑤由于get和set分两步且操作的是同一数据库,故需要添加事务,redis自带的事务不具备传统意义上的原子 性,所以使用lua脚本实现一行代码完成操作,确保原子性
八股:复习redis事务特性,Java并发编程&JUC
黑马点评:①使用乐观锁CAS解决库存超卖问题(版本号,分段锁)(更新数据可用乐观锁)
②使用synchronized解决一人一单问题
1.对UserId进行toString().intern()加锁
2.注意先synchronized再开启事务
3.注意封装方法调用后Spring事务的作用范围,使用AopContext获取代理对象
4.集群部署时,由于有多个JVM,JVM自带的锁会失效。
③使用redis的set nx ex获取锁,del释放锁方案来实现分布式锁
④业务阻塞可能导致del释放其他线程的锁,使用UUID+ThreadID标识锁,删除时先get判断再del
⑤由于get和set分两步且操作的是同一数据库,故需要添加事务,redis自带的事务不具备传统意义上的原子 性,所以使用lua脚本实现一行代码完成操作,确保原子性
八股:复习redis事务特性,Java并发编程&JUC
全部评论
接offer
相关推荐
点赞 评论 收藏
分享