11231

Posted jrri

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11231相关的知识,希望对你有一定的参考价值。

 1 def 下单():
 2     # 获取参数(前端或内存数据库)
 3     用户id=request.用户id
 4         if not 用户id:
 5             return 请登录
 6 
 7     if not all(地址, 支付手段, 商品id&购买数量[列表] )
 8         return 信息不全
 9     # 校验    
10     try:
11         获取地址,支付手段
12     except:
13         return 信息错误    
14 
15 
16     # 业务处理
17     # 拼接订单id, 及其内容
18     订单id = 年月日秒UUID+用户id
19     总数量 = 0
20     总价格 = 0
21     运费 = 0
22     支付方式 = 支付手段
23 
24     # 回滚点1
25     设置事务点1
26     try-事务:
27         创建订单 = (
28                 ...
29             )
30 
31         for 商品id,购买数量 in 商品id&购买数量[列表]:
32             try:
33                 查询商品id
34                 # !设置悲观锁
35                 (**悲观锁**) 锁定该商品字段.
36                 (**乐观锁**) 保存库存数
37             except:
38                 回滚节点1
39                 return 桑品不存在
40             通过商品id查询商品,得商品详情.
41 
42             查询商品库存.
43 
44             if 商品库存< 购买数量:
45                 回滚节点1
46                 return 商品库存不足
47 
48 
49             (**悲观锁**)
50             直接修改库存
51             (**乐观锁**)
52             重新查询商品, 判断库存数是否与之前一致.
53 
54             if 一致:
55                 更新修改库存
56 
57             else:
58                 重试
59                 if 重试次数>设定次数:
60                     回滚节点1
61                     return 
62 
63             总价格 += 商品小计
64 
65         重新保存订单数据(总价格=总价格)
66 
67     except:
68         回滚节点1
69         return 下单失败,请重试
70 
71     提交事务
72     # 返回结果
73     return 提交订单成功
74 
75 ### 锁的选择:
76 #  服务器性能较好或者并发较低时, 可以使用乐观锁, 能充分利用资源
77 #  反之, 使用悲观锁.

以上是关于11231的主要内容,如果未能解决你的问题,请参考以下文章

PAT Basic 1084

PAT 1084 外观数列python解法

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?