谷粒商城实战(031 业务-秒杀功能2)

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强

总时长 104:45:00 共408P

此文章包含第315p-第p318的内容


秒杀上架

定时上架功能

@EnableAsync 异步
@EnableScheduling 定时调度
@Configuration 配置类
在这里插入图片描述
创建上架定时任务类和方法
在这里插入图片描述

在这里插入图片描述

在秒杀配置类里添加@EnableFeignClients 来开启Feign 使其具备Feign远程调用功能
然后创建一个调用优惠商品系统服务的Feign
在这里插入图片描述

计算3天的信息 使用LocalDate和LocalDateTime
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

格式化日期
在这里插入图片描述

@RableField(exist=false)这个注解代表这个字段不在数据库中存在 ,这个字段只是用来做临时封装
在这里插入图片描述
在这里插入图片描述
设置redis秒杀活动的前缀
在这里插入图片描述

由于我们调用的redisTemplate是String类型的 所以不能用List<Long>格式
stringredistemplate是用json序列化机制 而redistemplate是用jdk的序列化机制 所以存进redis会发生乱码
在这里插入图片描述

缓存活动信息
List<Long>格式改成List<String>格式
在这里插入图片描述
在这里插入图片描述
记得设置redis过期时间

设置秒杀前缀
在这里插入图片描述

将sku信息存到redis里
在这里插入图片描述
添加远程Feign接口
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
这里的方法名可以修改 因为上面已经有路径了 所以改名也没事,也可以调到远程的那个方法
在这里插入图片描述

在这里插入图片描述

添加商品随机秒杀码

在这里插入图片描述

随机码是为了在秒杀开始的时候才会暴露,否则知道了action地址 会有脚本攻击
在这里插入图片描述

设置分布式信号量

如果100万的请求过来 只有100个库存,我们在这个信号量设置为100,有通过的请求减一 然后再放行查数据库等操作,如果压根就没减掉,则不需要后续操作,直接打回

在这里插入图片描述
引入redis
在这里插入图片描述

redis配置类
在这里插入图片描述

设置商品信号量的前缀
在这里插入图片描述
在这里插入图片描述

测试上架

在这里插入图片描述

改bug

改成String类型
在这里插入图片描述

改成skuid
在这里插入图片描述
也改成skuid
在这里插入图片描述

查看redis信息

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

幂等性处理

这里每次调用都会添加,需要发现如果存在就不添加
在这里插入图片描述
在这里插入图片描述
加分布式锁逻辑
在这里插入图片描述
添加锁名称
在这里插入图片描述
不管成功与否都要解锁 所以使用try-finally
建议(这锁粒度有点大 应该配合ID加锁)
在这里插入图片描述

代码判断
这里前面加锁了,所以已经是原子性的了
在这里插入图片描述
判断是否存在信号量
在这里插入图片描述

判断这个sku是否存在
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这里不用判断第三个库存,他俩是一体的
在这里插入图片描述

如果多场次的数据都有同一个商品 这里会找不到 所以我们要给这三个都加上场次
建议(秒杀场次key其实直接用ID也可以,不用时间也行)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

408数据结构-图的存储与基本操作 自学知识点整理

前置知识&#xff1a;图的基本概念 图的存储必须完整、准确地反映顶点集和边集的信息。根据不同图的结构和算法&#xff0c;采用不同的存储方式将对程序的效率产生相当大的影响&#xff0c;因此选取的存储结构应适合于待求解的问题。 图的存储 邻接矩阵法 所谓邻接矩阵存储&a…

了解m4s格式

正常在hls V7 和 DASH中都会使用m4s存放数据。他们使用fmp4的方式来存放信息&#xff1a; fmp4格式 &#xff1a; 一、hls V7介绍 1. 包含的文件&#xff1a; 2. prog_index.m3u8中 指明了 init.mp4与 上面各个.m4s文件的关系&#xff0c;具体内容为&#xff1a; 其中init.mp…

[数据集][图像分类]轮胎纹理识别裂纹和正常轮胎分类数据集1028张2类别

数据集类型&#xff1a;图像分类用&#xff0c;不可用于目标检测无标注文件 数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;1028 分类类别数&#xff1a;2 类别名称:["cracked","norma…

容器技术基础理论与常用命令:必知必会,效率翻倍!

如何利用容器技术提升你的工作效率&#xff1f;掌握基础理论和常用命令是必不可少的&#xff0c;本文将为你全面介绍容器技术&#xff0c;并教你必知必会的技能&#xff0c;让你工作、学习效率翻倍&#xff0c;对于网络安全工作者也是必不可少的技能&#xff01; 0. 引言 学习…

【Mac版】Java生成二维码

软件版本 IntelliJ IDEA&#xff1a;2023.2 JDK&#xff1a;17 Tomcat&#xff1a;10.1.11 Maven&#xff1a;3.9.3 技术栈 servlet谷歌的&#xff1a;zxing 生成普通的黑白二维码在二维码中间添加一个小图标 github开源项目&#xff1a;qrcode qrcode开源项目的内部是基于z…

一些关于深度聚类以及部分对比学习的论文阅读笔记

目录 资料SwAV问题方法方法的创新点为什么有效有什么可以借鉴的地方聚类Multi-crop 代码 PCL代码 Feature Alignment and Uniformity for Test Time Adaptation代码 SimSiam 资料 深度聚类算法研究综述(很赞&#xff0c;从聚类方法和深度学习方法两个方面进行了总结&#xff0…

STL中stack的使用

目录 一、stack类介绍和使用 stack类介绍 stack类定义 stack类常见构造函数 stack数据操作 empty()函数 top() pop() 和 push() 函数 size()函数 swap()函数 一、stack类介绍和使用 stack类介绍 1.stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下…

Python 关于字符串格式化

在Python中&#xff0c;字符串格式化有以下几种方法&#xff1a; 1.可以使用字符串的str.center(width), str.ljust(width), 和 str.rjust(width)方法来实现字符串的居中、左对齐和右对齐操作。 居中对齐&#xff1a; text "Python" centered_text text.center(10…

华为S5700交换机版本升级步骤

在用一台华为交换机。由于需要做目的镜像接口&#xff0c;在配置过程中超过一个双向流量观察口就会报错。从官方文档查到可以升级版本解决。记录一下升级过程。 首先确定设备型号S5700-28C-EI&#xff0c;版本&#xff1a; s5700ei-v100r005c01spc100。一定仔细阅读官方文档。明…

springboot基本使用十一(自定义全局异常处理器)

例如&#xff1a;我们都知道在java中被除数不能为0&#xff0c;为0就会报by zero错误 RestController public class TestController {GetMapping("/ex")public Integer ex(){int a 10 / 0;return a;}} 打印结果&#xff1a; 如何将这个异常进行处理&#xff1f; 创…

寺庙小程序-H5网页开发

大家好&#xff0c;我是程序员小孟。 现在有很多的产品或者工具都开始信息话了&#xff0c;寺庙或者佛教也需要小程序吗&#xff1f; 当然了&#xff01; 前面我们还开发了很多寺庙相关的小程序。 今天要介绍的是一款寺庙系统&#xff0c;该系统可以作为小程序、H5网页、安…

springboot实现文件上传功能,整合云服务

文章目录 这是springboot案例的,文件上传功能的拆分,本篇将带大家彻底了解文件上传功能,先从本地存储再到云存储,全网最详细版本,保证可以学会,可以了解文件上传功能的开发文件上传功能剖析进行书写一个小的文件上传文件上传的文件三要素首先表单提交的方式要是 post方式,第二个…

Leetcode 剑指 Offer II 080.组合

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个…

vue2+antv/x6实现er图

效果图 安装依赖 npm install antv/x6 --save 我目前的项目安装的版本是antv/x6 2.18.1 人狠话不多&#xff0c;直接上代码 <template><div class"er-graph-container"><!-- 画布容器 --><div ref"graphContainerRef" id"gr…

国际荐酒师(香港)协会受邀出席广州意大利国庆晚宴

2024年5月30日&#xff0c;意大利驻广州总领事馆举办的2024年意大利国庆招待会及晚宴&#xff0c;庆祝意大利共和国成立。此次晚宴旨在促进中意两国之间的文化交流与合作。国际荐酒师&#xff08;香港&#xff09;协会受主办方邀请参与了这一重要活动。 国际荐酒师&#xff08;…

内核调度客制化利器:SCHED_EXT

一、前言 今年年初&#xff0c;宋宝华老师发表了一篇对2023年内核技术总结的文章《熠熠生辉 | 2023 年 Linux 内核十大技术革新功能》。有兴趣的伙伴可以点击蓝色字体链接回顾。 文章提及的10个技术中&#xff0c;与CPU任务调度器核心相关的内容&#xff0c;一共有两个&#xf…

痛心!2岁女童被从17楼推下坠亡,凶手疑是未成年

一起又一起的案件&#xff0c; 如同一部沉重的史诗&#xff0c; 无声地述说着一个共同的真理&#xff1a; 严惩恶魔&#xff0c;实则是在庇护着无数纯真的心灵&#xff0c;守护着更多的孩子。 因为每一起案件的背后&#xff0c;都隐藏着一个个令人心碎的故事。 01 近日&#xf…

python编程:实现对数据库中图片文件的查看及比对

当谈到图像查看和管理时,我们往往会使用一些工具软件,比如Windows自带的照片查看器或者第三方工具。那如果你想要一个更加强大和定制化的图像查看器呢?这时候就需要自己动手写一个程序了。 C:\pythoncode\new\ShowSqliteImage.py 这里我们将介绍一个使用Python和wxPython编写…

FPGA-ARM架构与分类

ARM架构&#xff0c;曾称进阶精简指令集机器&#xff08;Advanced RISC Machine&#xff09;更早称作Acorn RISC Machine&#xff0c;是一个32位精简指令集&#xff08;RISC&#xff09;处理器架构。 主要是根据FPGA zynq-7000的芯片编写的知识思维导图总结,废话不多说自取吧 …

【Python内功心法】:深挖内置函数,释放语言潜能

文章目录 &#x1f680;一、常见内置函数&#x1f308;二、高级内置函数⭐1. enumerate函数&#x1f44a;2. eval函数❤️3. exec函数&#x1f4a5;4. eval与exec 中 globals与locals如何用☔4-1 globals 参数&#x1f3ac;4-2 locals 参数 ❤️5. filter函数&#x1f44a;6. z…