自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (10)
  • 收藏
  • 关注

空空如也

[asp.net core 1.1 供参考]SeckillPro.zip

描述:秒杀活动,模拟,架构:mvc+webapi+console+redis,netcore开发 static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Console.OutputEncoding = Encoding.GetEncoding("GB2312"); try { Console.WriteLine("是否开启处理抢购队列(Y):"); Console.ReadLine(); Console.WriteLine($"开启抢购任务监控中..."); var shopsKey = EnumHelper.EmDataKey.ShoppingHash.ToString(); while (true) { //匹配出QiangOrderEqueue_xxx格式的抢单队列keys var matchKey = $"{EnumHelper.EmDataKey.QiangOrderEqueue.ToString()}_*"; var matches = _redis.MatchKeys(matchKey).Result; var matchLen = matches.Count; if (matchLen <= 0) { continue; } //根据key获取对应的商品,并加载对应的商品抢单任务处理 foreach (var item in matches) { var itemArr = item.Split('_'); if (itemArr.Length <= 1) { continue; } var shopId = itemArr[1]; var shop = _redis.GetHashField<MoShopping>(shopsKey, shopId).Result; if (shop == null || _dicTask.ContainsKey(shop.Id)) { continue; } //加入排重任务dic _dicTask.Add(shop.Id, shop.Id); Task.Factory.StartNew(async b => { var equeueShop = b as MoShopping; var equeueKey = $"{EnumHelper.EmDataKey.QiangOrderEqueue.ToString()}_{equeueShop.Id}"; var sbTaskLog = new StringBuilder(string.Empty); try { sbTaskLog.AppendFormat("商品【{0}-{1}】,开启抢购队列处理;", equeueShop.Name, equeueShop.Id); Console.WriteLine(sbTaskLog); //监控队列key是否存在 while (await _redis.KeyExists(equeueKey)) { //获取队列 var qiangOrder = await _redis.GetListAndPop<MoOrderInfo>(equeueKey); if (qiangOrder == null) { continue; } //获取真实剩余库存 var equShop = await _redis.GetHashField<MoShopping>(shopsKey, equeueShop.Id.ToString()); if (equShop == null) { continue; } var sbLog = new StringBuilder(string.Empty); Stopwatch watch = new Stopwatch(); watch.Start(); try { #region 逻辑处理库存 sbLog.AppendFormat("用户:{0}抢购商品【{1}-{4}】当前库存:{2}件,抢购数:{3}件,", qiangOrder.UserId, equShop.Name, equShop.MaxNum, qiangOrder.Num, equShop.Id); if (equShop.MaxNum <= 0) { //无库存,直接抢购失败 qiangOrder.OrderStatus = (int)EnumHelper.EmOrderStatus.抢购失败; } else if (equShop.MaxNum < qiangOrder.Num) { //剩余库存小于抢购数量 qiangOrder.OrderStatus = (int)EnumHelper.EmOrderStatus.抢购失败; } else if (equShop.MaxGouNum < qiangOrder.Num) { //最大允许抢购数量小于抢购申请数量 qiangOrder.OrderStatus = (int)EnumHelper.EmOrderStatus.抢购失败; } else { //库存充足 equShop.MaxNum = equShop.MaxNum - qiangOrder.Num; //扣除当前抢购数量后,更新库存 var isOk = await _redis.SetOrUpdateHashsField<MoShopping>(shopsKey, equShop.Id.ToString(), equShop, false) > 0; if (!isOk) {

2020-06-02

省市区高校数据库MSSQL

省市区高校数据库MSSQL

2016-04-29

Amaze后台框架模版搭建

相比国外框架,Amaze UI 关注中文排版,根据用户代理调整字体,实现更好的中文排版效果;兼顾国内主流浏览器及 App 内置浏览器兼容支持。 mobile 轻量级,高性能

2015-12-22

C# 二维码生成DLL ThoughtWorks QRCode dll

C#利用QrCode.Net生成二维码(Qr码)

2014-08-22

jQuery 制作气泡形的图片画廊

炫酷效果,不一样的感觉,体验jquery 的强大 实现分类图片展示 个人相册,图片展示

2011-05-31

psd-简洁明朗企业网站

模版是用来参考的,你可以在此基础上进行更改!做出自己想要的!

2010-11-23

IT商城模版 ps 实现

Ps 模版 使用 photoshop 打开, 可在此基础编辑,通过切图 获取素材, 供参考!......

2010-10-21

asp.net 购物车

不错的参考! 可以实现购物车基本功能:在线购物、在线结算、在线充值、在线支付(未完成)

2010-07-24

commons-fileupload-1.2.1

实现上传下载功能 的jar 包! 我找了很久下了都不是jar 结尾的 为了方便大家使用,我共享了

2010-05-18

大学高校网站模板76845

psd 格式,使用 photoshop 打开

2010-03-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除