摘要: 1 单体synchronized的缺陷 synchronized是JVM内部锁 两者都进入了锁的内部,这个synchronized锁形同虚设,这是由于synchronized是本地锁,只能提供线程级别的同步,每个JVM中都有一把synchronized锁,不能跨 JVM 进行上锁,当一个线程进入被 阅读全文
posted @ 2025-04-15 17:00 kuki' 阅读(60) 评论(0) 推荐(0)
摘要: ArrayList ArrayList() 此构造函数用于创建一个初始容量足以容纳 10 个元素的空列表。 boolean add(E e) 此方法将指定元素附加到此列表的末尾。 E remove(int index) 此方法删除此列表中指定位置的元素。 阅读全文
posted @ 2025-04-15 16:54 kuki' 阅读(15) 评论(0) 推荐(0)
摘要: java.lang.string https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#intern-- intern public String intern() 返回字符串对象的规范表示。 Returns a canoni 阅读全文
posted @ 2025-04-15 15:35 kuki' 阅读(26) 评论(0) 推荐(0)
摘要: https://docs.oracle.com/javase/tutorial/essential/concurrency/locksync.html Another way to create synchronized code is with synchronized statements. U 阅读全文
posted @ 2025-04-15 15:20 kuki' 阅读(13) 评论(0) 推荐(0)
摘要: https://baomidou.com/guides/wrapper/#示例-3 gt gt 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的大于条件。 使用范围 QueryWrapper LambdaQueryWrapper UpdateWrapper L 阅读全文
posted @ 2025-04-15 14:47 kuki' 阅读(32) 评论(0) 推荐(0)
摘要: https://baomidou.com/guides/data-interface/#count count // 查询总记录数 int count(); // 根据 Wrapper 条件,查询总记录数 int count(Wrapper<T> queryWrapper); //自3.4.3.2开 阅读全文
posted @ 2025-04-15 14:40 kuki' 阅读(15) 评论(0) 推荐(0)
摘要: 解决一人一单的逻辑 乐观锁 乐观锁需要判断数据是否修改,而当前是判断当前是否存在,所以无法像解决库存超卖一样使用CAS机制, 但是可以使用版本号法,但是版本号法需要新增一个字段, 悲观锁 所以这里为了方便,就直接演示使用悲观锁解决超卖问题 加悲观锁的逻辑 1. 使用Mybatis-Plus判断各种字 阅读全文
posted @ 2025-04-15 13:03 kuki' 阅读(107) 评论(0) 推荐(0)
摘要: boolean flag = seckillVoucherService.update( new LambdaUpdateWrapper<SeckillVoucher>() .eq(SeckillVoucher::getVoucherId, voucherId) .eq(SeckillVoucher 阅读全文
posted @ 2025-04-15 12:48 kuki' 阅读(51) 评论(0) 推荐(0)
摘要: 涉及的表 tb_voucher:优惠券的基本信息,优惠金额、使用规则等 tb_seckill_voucher:优惠券的库存、开始抢购时间,结束抢购时间。特价优惠券才需要填写这些信息 voucher_id 主键 关联的优惠券... stock 库存 create time 创建时间 begin tim 阅读全文
posted @ 2025-04-15 12:38 kuki' 阅读(84) 评论(0) 推荐(0)
摘要: save // 插入一条记录(选择字段,策略插入) boolean save(T entity); // 插入(批量) boolean saveBatch(Collection<T> entityList); // 插入(批量) boolean saveBatch(Collection<T> ent 阅读全文
posted @ 2025-04-15 12:38 kuki' 阅读(12) 评论(0) 推荐(0)
摘要: setSql setSql 方法是 MyBatis-Plus 中用于构建更新操作的高级方法之一,它允许你直接设置更新语句中的 SET 部分 SQL。通过调用 setSql 方法,可以将一个自定义的 SQL 片段作为 SET 子句添加到更新语句中。 使用范围 UpdateWrapper LambdaU 阅读全文
posted @ 2025-04-15 12:27 kuki' 阅读(101) 评论(0) 推荐(0)
摘要: 条件构造器 eq eq 方法是 MyBatis-Plus 中用于构建查询条件的基本方法之一,它用于设置单个字段的相等条件。 使用范围 QueryWrapper LambdaQueryWrapper UpdateWrapper LambdaUpdateWrapper 方法签名 // 设置指定字段的相等 阅读全文
posted @ 2025-04-15 12:25 kuki' 阅读(14) 评论(0) 推荐(0)
摘要: Lambda Wrapper (LambdaUpdateWrapper): 包装 LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.set(User::ge 阅读全文
posted @ 2025-04-15 12:21 kuki' 阅读(34) 评论(0) 推荐(0)
摘要: Service Interface IService 是 MyBatis-Plus 提供的一个通用 Service 层接口,它封装了常见的 CRUD 操作,包括插入、删除、查询和分页等。通过继承 IService 接口,可以快速实现对数据库的基本操作,同时保持代码的简洁性和可维护性。 IServic 阅读全文
posted @ 2025-04-15 12:21 kuki' 阅读(83) 评论(0) 推荐(0)