第七天业务题

本文介绍了项目中优惠券的功能,包括设置、获取方式(手动领取和兑换码)、使用规则以及防止多人和单人超领的并发控制措施。重点讲述了乐观锁和悲观锁的应用以及事务失效的常见场景。
摘要由CSDN通过智能技术生成

7-1 介绍一下你们项目中的优惠券功能
在我们的项目中优惠券的具体功能如下:
优惠券设置:商家可以自定义优惠券的优惠金额、数量、有效期、优惠券使用规则等。
优惠券获取:手动领取:就是展示在用户端页面,由用户自己手动点击领取,指定发放:就是兑换码模式,后台给优惠券生成N张兑换码,由管理员发放给指定用户
优惠券使用:在用户购买商品时,系统需要验证用户所使用优惠券的有效性。这包括检查优惠券是否过期、是否达到最低消费金额、是否适用于购买的商品等条件。
根据优惠券的类型,系统需要计算出用户享受的优惠金额或折扣,并在结算时自动扣减相应的金额。
以上就是我们项目中优惠券所实现的功能。


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

在我们的项目中优惠券超领分为:多人超领,单人超领
    多人超领:出现的原因主要是:多线程并行运行、多行代码操作共享资源,但不具备原子性
    要解决这种并发问题,方案基本就是加锁,锁一般可以分为:悲观锁、乐观锁
    在我们的项目中采用的是乐观锁来解决的,在每次提交前都判断一下已领优惠券数量是否大于总优惠券数量,大于才会对表中已领优惠券数量进行修改。
    单人超领:出现的原因主要是:并发场景下,实时查询的判断逻辑会存在失效问题
    对于读的操作,我们一般都是采用悲观锁,常见的有Synchronized、Lock
   在我们的项目中使用Synchronized,可以通过在领取优惠券代码块上加锁,锁用户id来解决此问题。


7-3 事务失效的场景有哪些

事务失效场景主要有这么几种:
    1、事务方法非public修饰
    2、非事务方法调用事务方法
    3、事务方法的异常被捕获
    4、事务异常类型不对
    5、事务传播行为不对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值