day07

7-1 介绍一下你们项目中的优惠券功能
优惠卷是指学生在付费买课的时候获取到优惠卷可已减免相应的金额,优惠卷的设计总共分为这么几个步骤
创建优惠卷--->发放优惠卷--->学生端使用优惠卷
1.优惠卷的发放有立即发放:优惠券立刻生效,直接出现在用户端页面供用户领取,定时发放:定一个发放开始时间,时间到期后才会进入出现在用户端页面
2.同时优惠券的领取方式也分两种,手动领取:就是展示在用户端页面,由用户自己手动点击领取和指定发放:就是兑换码模式,后台给优惠券生成N张兑换码,由管理员发放给指定用户。
3.学生端使用优惠卷时会 校验优惠券是否存在,校验当前领取时间是否在优惠券的发放时间范围内,校验优惠券的库存是否充足,校验优惠券的每人限领数量全部校验通过后,可以领取优惠券


7-2 你们项目中是如何防止优惠券超领的 

导致优惠卷超领的原因是:在领取优惠卷时首先会进行判断优惠卷的库存是否充足,然后再更新优惠卷的领取数量,在多线程并发访问的情况下往往库存还没来的及更新就会去判断库存数量逻辑导致优惠卷超领现象,解决方法如下:悲观锁:一种独占和排他的锁机制,保守地认为数据会被其他事务修改,所以在整个数据处理过程中将数据处于锁定状态:乐观锁:一种较为乐观的并发控制方法,假设多用户并发的不会产生安全问题,因此无需独占和锁定资源但在更新数据前,会先检查是否有其他线程修改了该数据,如果有,则认为可能有风险,会放弃修改操作
多人超领:我们最终采用的时每次提交前只要判断领卷总共字段是否小于库存字段数量即可。这样,只要领卷总共字段小于库存字段数量,不管有多少线程来执行,都会成功。
单人超领:我们采用synchronized来锁定代码解决单人超领的问题


7-3 事务失效的场景有哪些
事务失效是指在某些场景下事务无法进行回滚
1.事务方法非public修饰,@Transactional底层是AOP,AOP里面是动态代理,方法是私有方法的动态代理里面没有有暴力反射
2.非事务方法调用事务方法,应该用aop代理对象来调用事务方法,而非原始对象
3.事务方法的异常被捕获,当我们自己写了try,catch去捕获异常时,异常被我们解决了相当于没有异常了,事务就不会生效
4.事务异常类型不对@Transactional默认处理RuntimeException,其他异常解决不了,可以自己设置让其解决
5.事务传播行为不对,如果事务传播行为设置不正确,可能会导致事务失效。

    


Linux上项目部署的流程和对应命令。
项目中有多少个服务。项目访问量和并发量是多少,服务器几台。
Git如何进行主干分支开发、合并和冲突处理。
线上bug如何调试
项目中多线程的应用场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值