业务优化

项目要点

spring本地tomcat的war包与war exploded包的区别:

war包是个压缩包,war exploded包是解压后的文件夹。

购物车设计:

redis使用hashmap结构(不是用json格式的hashmap,而是redis的hashmap),可以使用原子操作改变产品数量,并拆分购物信息到另一个hashmap,减少冗余也提高并发。
(String:HashMap)=(用户名:(产品id:产品数量))
(String:String)=(产品id,产品信息)

订单重复处理设计:

正确:同一个用户重复调用生成订单的接口,在redis存放一个2s的键值对(key,value),key可以是(用户名,value)可以设置0。可以做一下加锁的操作,用setnx(setIfAbsent)实现单体锁。

错误:同一个用户重复调用生成订单的接口,在redis存放一个2s内过期的键值对(key,value),key可以是(用户名,value)可以设置1(随便设置),在redis里有这个键值对的情况,该用户不可以提交订单。该方案未考虑并发情况,并发情况下出现两个请求生成订单到redis同时发现没有键值对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值