乐观锁 悲观锁

资源锁住 其他人进不去 乐观锁 明显 

秒杀100件 其中: 库存数量>= 抢到的数量

并发强卷 很多人并发强卷 

强到的数量>=库存数量 (超卖现象)  [乐观锁应用 (性能影响不大)]

则判断条件里面 性能高  安全系数低

添加版本字段 问题一 : 超发(总体)优惠卷:

// 3.校验库存:已发行数量[IssueNum] >= 库存总量[totalNum],则抛出异常:BadRequestException("优惠券库存不足")
        if (coupon.getIssueNum()>=coupon.getTotalNum()){
            throw new BadRequestException("优惠券库存不足");
        }

更新数据库里面的结果数据: 多线程并发操作 :发一个 +1  而where  则可以控制发放数量

 int result = couponMapper.updateByCounpyId(coupon.getId());
            if (result == 0) {
                throw new BizIllegalException("领卷失败!");
            }
   @Update("update coupon set issue_num = issue_num + 1 WHERE id = #{couponId} and issue_num+1<=total_num")

 一个一个执行: 悲观锁 效率低

问题二: 个人超领: 锁 : 尽量精确 

/*锁 1.要放到事务外面 方法的调用加锁 因为事务有限制 
2.可以好多人进来  锁定的是同一个人的同时间方法 不是所有人*/

//127 字符串.intern 变作常量池 synchronized 锁

动态代理 aop 容器管理的才可以进行事务 操作  但是脱离的话一定不能进行事务方法调用

问题3:方法内部调用事务失效问题 获取代理对象

this 是

代理对象是  所以要调用方法的时候 应该获取代理对象: 

@EnableAspectJAutoProxy(exposeProxy = true)启动类: 接口暴露
// aopcontext 是代理接口 然后处理的是usercouponservice 强转 
IUserCouponService userCouponService = (IUserCouponService) AopContext.currentProxy();
userCouponService.CheckAndCreateUserCopons(coupon,userId,null);

 集群:问题4: 服务集群部署下jdk锁失效的问题

三个服务器 三个锁边做一把锁 超领

redisson redis setnx mylock 111 (设置一个key myload 如果不存在则 value设置成功)   增加互斥性:

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值