Java实现库存数量冻结_高并发场景-订单库存防止超卖

亿级流量java高并发与网络编程实战

99.1元

(需用券)

去购买 >

88f3a98f5855ccbb27b58fef79063145.png

背景

在电商系统中买商品过程,先加入购物车,然后选中商品,点击结算,即会进入待支付状态,后续支付。

过程需要检验库存是否足够,保证库存不被超卖。

场景一:买家需要购买数量可以多件

场景二:秒杀活动,到时间点只能购买一件

目的

防止相同用户重复下单

检查库存准确数量

防止扣错库存数量

扣库存时性能效率提升、不阻塞用户

点赞再看,关注公众号:【地藏思维】给大家分享互联网场景设计与架构设计方案

掘金:地藏Kelvin https://juejin.im/user/5d67da8d6fb9a06aff5e85f7

主要解决手段

利用redis的incr、decr的原子性做操作

redis的lpush、rpop的原子性做操作,但是这个只能一个一个的扣,但不能原子地同时扣多个

sql乐观锁

交互流程

主要环节:购物车->结清->支付

本文讲述结清时,扣库存环节,分布式系统产生订单环节后续文章再详细分析。

备注:挺推荐使用https://www.processon.com/在...

一、防止重复

利用redis分布式锁

用分布式锁,是为了防刷、防止同一个用户同一秒里面把购物车里的商品进行多次结算,防止前端代码出问题触发两次。

利用Jedis客户端编写分布式锁

String result = jedis.set(lockKey, requestId, SET_IF_NOT_EXIST, SET_WITH_EXPIRE_TIME, expireTime);

lockKey是redis的Key,为用户id+商品id+商品数量组成,这样同一秒中只能有一次处理逻辑。

requestId是redis的value,实际是当

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码主要是用来训练一个名为CenterFusion的目标检测模型,使用了DDDet(一个基于PyTorch的目标检测框架)。其中: - export CUDA_DEVICE_ORDER=PCI_BUS_ID export CUDA_VISIBLE_DEVICES=0,1:设置使用哪些GPU进行训练。 - cd src # train:进入src目录下进行训练。 - python main.py:运行main.py文件,即训练脚本。 - ddd:指定使用的模型是DDDNet。 - --exp_id centerfusion:设置训练实验的名称为centerfusion。 - --shuffle_train:在每个epoch开始前,打乱训练集的样本顺序。 - --train_split mini_train:使用mini_train作为训练集。 - --val_split mini_val:使用mini_val作为验证集。 - --val_intervals 1:设置每隔1个epoch进行一次验证。 - --run_dataset_eval:在训练过程中进行数据集的评估。 - --nuscenes_att:使用nuscenes属性进行训练。 - --velocity:使用速度信息进行训练。 - --batch_size 24:设置batch size为24。 - --lr 2.5e-4:设置学习率为2.5e-4。 - --num_epochs 60:设置训练的总epoch数为60。 - --lr_step 50:设置学习率下降的epoch数。 - --save_point 20,40,50:设置保存模型的epoch数。 - --gpus 0:设置使用的GPU编号为0。 - --not_rand_crop:不使用随机裁剪。 - --flip 0.5:进行数据增强时,以0.5的概率进行翻转。 - --shift 0.1:进行数据增强时,以0.1的概率进行平移。 - --pointcloud:使用点云数据进行训练。 - --radar_sweeps 3:设置雷达扫描数为3。 - --pc_z_offset 0.0:设置点云高度偏移量为0.0。 - --pillar_dims 1.0,0.2,0.2:设置pillar的尺寸为1.0*0.2*0.2。 - --max_pc_dist 60.0:设置点云距离的最大值为60.0。 - --load_model ../models/centernet_baseline_e170.pth:加载已经训练好的centernet_baseline_e170.pth模型。 - # --freeze_backbone \:注释掉的代码,原本可以冻结骨干网络,使得训练更加稳定。 - # --resume \:注释掉的代码,原本可以从已经训练好的模型继续训练。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值