谷粒商城实战(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也可以,不用时间也行)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

抖店商家疑惑,自然流量突然下滑,为什么呢?

大家好&#xff0c;我是喷火龙。 很多的抖店商家会遇到一种情况&#xff0c;那就是自己店铺的流量好好的&#xff0c;不知道怎么的就突然没流量了&#xff0c;各方面的数据都断崖式的下降。 为什么会这样呢&#xff1f;原因有以下几点&#xff0c;大家可以检查一下&#xff0…

Typora配置自动上传图片到图床

Typora配置自动上传图片到图床 在多平台发布文章时&#xff0c;如果遇到图片不能导入的问题&#xff0c;推荐使用图床&#xff01;推荐使用阿里云或腾讯云&#xff0c;免费的不用考虑了&#xff01; PicGo下载 链接&#xff1a;夸克网盘分享 使用手册&#xff1a; PicGo is…

《python开发》cannot allocate memory in static TLS block-报错问题解决

阿丹&#xff1a; 今天在配置跑rasa训练的时候出现问题&#xff0c;找了国内论坛有解决的人&#xff0c;但是说的不明白。查阅了很多论坛之后发现了解决的方案。 https://github.com/keras-team/keras-tuner/issues/317 问题描述以及错误&#xff1a; 关键错误 &#xff1a;c…

升级最新版openssh-9.7p1及openssl-1.1.1h详细步骤及常见问题总结

近期因为openssh相继被漏洞扫描工具扫出存在漏洞&#xff0c;所以考虑升级操作系统中的openssh和openssl为最新版本&#xff0c;来避免漏洞风险。期间的升级过程及遇到的疑难问题&#xff0c;特此记录下来&#xff0c;供有需要的人参考。 本次目标是升级 openssh 为 9.7p1 版本…

ios v品会 api-sign算法

vip品会 api-sign算法还原 ios入门案例 视频系列 IOS逆向合集-前言哔哩哔哩bilibili 一、ios难度与安卓对比 这里直接复制 杨如画大佬的文章的内容&#xff1a; ios难度与安卓对比 很多人说ios逆向比安卓简单&#xff0c;有以下几个原因 1 首先就是闭源&#xff0c;安卓开源…

UIScrollView代理

场景&#xff1a; 想要监控某组件&#xff0c;可以通过addTarget&#xff0c;但是复杂一点的&#xff0c;如UIScrollView的滚动监听就需要通过代理来实现了。代理本质是官方定义好的协议&#xff08;接口&#xff09;&#xff0c;你只要用官方给出的API接口&#xff0c;就能实…

osg库的下载和安装

下载 下载地址:https://github.com/openscenegraph/OpenSceneGraph 安装 打开Cmake.exe,将上述下载的osg文件下的CMakeLists.txt文件拖入Cmake界面中。 在其路径下新建一个build文件 并配置cmake,点击Configure 修改如下几个选项 ACTUAL_3RDPARTY_DIR BUILD_OSG_EXAM…

Open vSwitch 数据包转发

一、数据包转发流程 Open vSwitch 数据包转发流程如下图所示&#xff0c;其中红色数字序号表示数据包转发的步骤顺序。 以下步骤为一个数据包通过 OVS 时的首次处理流程&#xff1a;&#xff08;步骤序号和图中序号一一对应&#xff09; OVS 从设备接口中获取数据包并交…

GitHub狂揽6700 Star,Python进阶必备的案例、技巧与工程实践

当下是 Python 急剧发展的时代&#xff0c;越来越多的人开始学习和使用Pyhon&#xff0c;而大家也遇到了各种问题。这份手册清晰、细致地介绍了 Python 代码应该遵循的编程风格&#xff0c;并解释了背后的原理和机制。 入门 Python 语言相对简单&#xff0c;但写出优雅的代码并…

营造科技展厅主题氛围,多媒体应用有哪些新策略?

长久以来&#xff0c;展厅作为线下向公众传递信息的窗口&#xff0c;其设计风格与内容主题紧密相连&#xff0c;展现出千姿百态的面貌。然而&#xff0c;随着数字多媒体技术的日新月异&#xff0c;展厅不再仅仅是传统的信息展示平台&#xff0c;而是成为了引领内容展示潮流的风…

技术积累1:Java容错机制

如何优雅地重试 原创 赵九文 字节跳动技术团队 2021-01-05 10:01 背景 在微服务架构中&#xff0c;一个大系统被拆分成多个小服务&#xff0c;小服务之间大量 RPC 调用&#xff0c;经常可能因为网络抖动等原因导致 RPC 调用失败&#xff0c;这时候使用重试机制可以提高请求的…

git获取的项目无法运行

一、Unsupported engine 问题&#xff1a;在使用命令npm install下载依赖项的时候就遇到了这个问题&#xff0c;有帖子说多试几次&#xff0c;其实这是提示node版本问题&#xff0c;版本的更新出现兼容性问题&#xff0c;多试几次也没用。 解决方案&#xff1a; 更新node.js的…

HiWoo Cloud数据采集监控系统

在数字化、智能化的浪潮中&#xff0c;企业如何高效地管理其设备、优化生产流程、提升运营效率&#xff1f;答案或许就隐藏在HiWoo Cloud——这款数据采集监控系统中。今天&#xff0c;就让我们一起走进HiWoo Cloud的世界&#xff0c;探索它如何助力企业实现数字化转型&#xf…

7 -力扣高频 SQL 50 题(基础版)

7- 产品销售分析 I select product_name,year,price from Sales left join Product on Sales.product_id Product.product_id;

matlab模拟太阳耀斑喷发

代码 function simulate_solar_flare% 参数设置gridSize 100; % 网格大小timeSteps 200; % 时间步数dt 0.1; % 时间步长% 初始化网格[X, Y] meshgrid(linspace(-5, 5, gridSize));Z zeros(size(X));% 设置耀斑初始位置和强度flareCenter [0, 0]; % 耀斑中心位置flareRad…

网络服务ftp实验

网络服务之ftp vsftpd的安装和配置 rpm -qc vsftpd #检查vsftpd安装包是否存在&#xff0c;存在即不需要安装 yum install -y vsftpd #yum 安装vsftpdcd /etc/vsftpd ls #切换到安装好vsftpd目录下查看文件cp vsftpd.conf vsftpd.conf.bak.20240604 #将vsftpd的…

9 个步骤内快速完成 SEO 审核

SEO审计对于提高网站在搜索引擎结果中的性能和可见性至关重要。这种系统评估涉及仔细检查各种元素&#xff0c;从关键字和页面优化到网站结构和页面速度等技术方面。在本指南中&#xff0c;我们将概述执行全面 SEO 检查器的 12 个基本步骤&#xff0c;帮助您确定优势、劣势和改…

一篇文章讲透排序算法之归并排序

0.前言 本篇文章将详细解释归并排序的原理&#xff0c;以及递归和非递归的代码原理。 一.概念 归并排序是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使…

消费者api编写教程

1.基本属性配置 输入new Properties().var 回车 //创建属性Properties properties new Properties();//连接集群properties.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG,"node1:9092,node2:9092");//反序列化properties.put(ConsumerConfig.KEY_DESERIALIZER_CL…

springboot配置

springboot配置 配置文件分类 springboot提供了多种属性配置方式 application.xml(只有老的spring项目使用)application.propertiesapplication.yml(或yaml) 优先级:properties>yml>yaml 配置文件 pom.xml★ 在Spring Boot项目中&#xff0c;pom.xml文件是Maven项目…