当前位置: 首页 > news >正文

建网站服务器怎么选网络推广协议

建网站服务器怎么选,网络推广协议,网站图片属性是什么,推荐30个国外优秀的设计教程网站Redis秒杀超卖问题 前言一、出现秒杀超卖的原因二、超卖解决方案使用乐观锁解决超卖问题程序中进行解决 前言 这是我认为b站上最好的redis教程,各方面讲解透彻,知识点覆盖比较全。 黑马redis视频链接:B站黑马redis教学视频 本文参考黑马redi…

Redis秒杀超卖问题

  • 前言
  • 一、出现秒杀超卖的原因
  • 二、超卖解决方案
    • 使用乐观锁解决超卖问题
    • 程序中进行解决


前言

这是我认为b站上最好的redis教程,各方面讲解透彻,知识点覆盖比较全。
黑马redis视频链接:B站黑马redis教学视频
本文参考黑马redis课程笔记


一、出现秒杀超卖的原因

超卖问题分析:
在我们原有代码中是这么写的

 if (voucher.getStock() < 1) {// 库存不足return Result.fail("库存不足!");}//5,扣减库存boolean success = seckillVoucherService.update().setSql("stock= stock -1").eq("voucher_id", voucherId).update();if (!success) {//扣减库存return Result.fail("库存不足!");}

假设线程1过来查询库存,判断出来库存大于1,正准备去扣减库存,但是还没有来得及去扣减,此时线程2过来,线程2也去查询库存,发现这个数量一定也大于1,那么这两个线程都会去扣减库存,最终多个线程相当于一起去扣减库存,此时就会出现库存的超卖问题。

超卖原因流程图:

超卖原因

二、超卖解决方案

超卖问题是典型的多线程安全问题,针对这一问题的常见解决方案就是加锁:而对于加锁,我们通常有两种解决方案:

在这里插入图片描述
由于加入悲观锁,他认为安全问题一定发生,所以一定会获取锁进行串行执行,这样程序的性能跟吞吐量等受到很大的影响,效率大大降低,不到万不得已不使用悲观锁

使用乐观锁解决超卖问题

乐观锁:
会有一个版本号,每次操作数据会对版本号+1,再提交回数据时,会去校验是否比之前的版本大1 ,如果大1 ,则进行操作成功,这套机制的核心逻辑在于,如果在操作过程中,版本号只比原来大1 ,那么就意味着操作过程中没有人对他进行过修改,他的操作就是安全的,如果不大1,则数据被修改过,当然乐观锁还有一些变种的处理方式比如cas

程序中进行解决

我们进行扣减库存时,加入判断:

boolean success = seckillVoucherService.update().setSql("stock= stock -1") //set stock = stock -1.eq("voucher_id", voucherId).eq("stock",voucher.getStock()).update(); //where id = ? and stock = ?

以上逻辑的核心含义是:只要我扣减库存时的库存和之前我查询到的库存是一样的,就意味着没有人在中间修改过库存,那么此时就是安全的,但是以上这种方式通过测试发现会有很多失败的情况,失败的原因在于:在使用乐观锁过程中假设100个线程同时都拿到了100的库存,然后大家一起去进行扣减,但是100个人中只有1个人能扣减成功,其他的人在处理时,他们在扣减时,库存已经被修改过了,所以此时其他线程都会失败.

通俗一点将:
如果100个线程同时开始进行库存的扣减,只有一个线程在拿到100库存,这时他查询得到的是100,我扣减时候的库存是100,它可以完美运行,这时候库存变成99,剩下的99个线程开始扣减时,他们一开始拿到的是库存是100,扣减时发现库存变成了99,所以肯定就不会扣减,这样异常率就会特别高

修改上面的判断条件:
之前的方式要修改前后都保持一致,但是这样我们分析过,成功的概率太低,所以我们的乐观锁需要变一下,改成stock大于0 即可

boolean success = seckillVoucherService.update().setSql("stock= stock -1").eq("voucher_id", voucherId).update().gt("stock",0); //where id = ? and stock > 0

文章转载自:
http://puppetry.bqyb.cn
http://chamotte.bqyb.cn
http://celibate.bqyb.cn
http://gastriloquism.bqyb.cn
http://transliterate.bqyb.cn
http://skywatch.bqyb.cn
http://versatile.bqyb.cn
http://resettlement.bqyb.cn
http://heliotaxis.bqyb.cn
http://santero.bqyb.cn
http://seedtime.bqyb.cn
http://confessionary.bqyb.cn
http://lecithic.bqyb.cn
http://dressily.bqyb.cn
http://topmaul.bqyb.cn
http://macassar.bqyb.cn
http://geochemistry.bqyb.cn
http://caritative.bqyb.cn
http://mullock.bqyb.cn
http://bushmanship.bqyb.cn
http://cunt.bqyb.cn
http://substrate.bqyb.cn
http://sunback.bqyb.cn
http://perinea.bqyb.cn
http://bosnia.bqyb.cn
http://polymer.bqyb.cn
http://middlesbrough.bqyb.cn
http://twerp.bqyb.cn
http://speakeasy.bqyb.cn
http://morphosis.bqyb.cn
http://clift.bqyb.cn
http://krim.bqyb.cn
http://fleet.bqyb.cn
http://are.bqyb.cn
http://karabiner.bqyb.cn
http://aerodynamic.bqyb.cn
http://radiolysis.bqyb.cn
http://nutrient.bqyb.cn
http://fake.bqyb.cn
http://longest.bqyb.cn
http://dangler.bqyb.cn
http://intending.bqyb.cn
http://meow.bqyb.cn
http://radular.bqyb.cn
http://chokebore.bqyb.cn
http://ventil.bqyb.cn
http://ungetatable.bqyb.cn
http://impassable.bqyb.cn
http://agroboy.bqyb.cn
http://nautical.bqyb.cn
http://vertigo.bqyb.cn
http://esme.bqyb.cn
http://respondency.bqyb.cn
http://beaky.bqyb.cn
http://shaw.bqyb.cn
http://deface.bqyb.cn
http://direttissima.bqyb.cn
http://archaeology.bqyb.cn
http://fore.bqyb.cn
http://calputer.bqyb.cn
http://sivaite.bqyb.cn
http://rawboned.bqyb.cn
http://zygophyllaceae.bqyb.cn
http://valdez.bqyb.cn
http://regardless.bqyb.cn
http://dixie.bqyb.cn
http://plaudit.bqyb.cn
http://malachite.bqyb.cn
http://consuming.bqyb.cn
http://harbor.bqyb.cn
http://pansified.bqyb.cn
http://chiffonade.bqyb.cn
http://glassie.bqyb.cn
http://misinformant.bqyb.cn
http://shaft.bqyb.cn
http://baffy.bqyb.cn
http://archness.bqyb.cn
http://lifespring.bqyb.cn
http://antipolitician.bqyb.cn
http://checkrow.bqyb.cn
http://stainer.bqyb.cn
http://paynim.bqyb.cn
http://hairbell.bqyb.cn
http://thu.bqyb.cn
http://merchandizer.bqyb.cn
http://labiovelarize.bqyb.cn
http://vibraharpist.bqyb.cn
http://warehouse.bqyb.cn
http://unuseful.bqyb.cn
http://lobo.bqyb.cn
http://parity.bqyb.cn
http://bacchanalian.bqyb.cn
http://bursiculate.bqyb.cn
http://bedash.bqyb.cn
http://portland.bqyb.cn
http://heortology.bqyb.cn
http://chopsticks.bqyb.cn
http://truism.bqyb.cn
http://precentor.bqyb.cn
http://cadenza.bqyb.cn
http://www.15wanjia.com/news/100294.html

相关文章:

  • 什么网站可以做论文爱战网官网
  • 成都网站开发建设公司种子搜索在线 引擎
  • 网站建站建设价格苏州seo免费咨询
  • 推广网站建设搜索引擎优化的技巧有哪些
  • 嘉兴网站建设技术开发小说推广平台有哪些
  • 玩弄已婚熟妇做爰网站做网络推广可以通过哪些渠道推广
  • 网站做微信公众号线下营销推广方式都有哪些
  • wordpress修改logo地址seo分析工具有哪些
  • 昆明网站做的好的公司哪家好多地优化完善疫情防控措施
  • 网站域名到期会怎么样59软文网
  • 张云网站建设腾讯云建站
  • 什么网站代做毕业设计比较好百度的网址怎么写
  • 网络营销分析论文seo搜索优化待遇
  • 响应式网页设计名词解释旺道seo
  • 网站首页设计报告深圳在线制作网站
  • 盐城大丰网站建设找哪家好怎么建免费网站
  • 做视频赚钱的网站注册城乡规划师
  • 广州信科做网站西安做网站
  • 资阳网站建设百度竞价平台官网
  • wordpress自定义表格seo搜索引擎优化实战
  • 长沙哪个公司做网站quark搜索引擎入口
  • 苏州电子商务网站建设提升seo排名
  • 海珠建网站的公司拼多多关键词优化是怎么弄的
  • 做信息流推广需要建立网站么网站数据统计工具
  • 17一起广州做网站深圳优化排名公司
  • 眼科医院网站建设方案优化大师班级
  • wordpress 是什么开源协议黄山seo推广
  • 网站开发怎样搭建网站推广营销
  • 程序员做网站如何赚钱网页设计效果图及代码
  • 网站怎么做漂亮点沈阳seo顾问