# seckill-study
笔记:https://goinggoinggoing.github.io/2023/03/20/B站秒杀项目
项目来源:https://gitee.com/guizhizhe/seckill_demo ,原项目代码为最终结果,对前期一步步学习可能存在麻烦,因此本项目添加了一些中间过程接口,可以先看原项目的文档说明,在README-default.md也拷贝了一份
视频:https://www.bilibili.com/video/BV1sf4y1L7KE
### 接口说明
SekillController: 三个阶段
- doSeckill1: 对应到 **P43**, update排他+唯一索引实现秒杀(没有做order页面静态化)
- doSeckill2:对应到 **P53**, order界面静态化 + redis预减库存 + 内存标记 + MQ
- doSeckill :最终秒杀方案 一些安全上的优化
对应到发起请求界面static\goodsDetail.html 52~67行
### 页面说明
前后端结合项目,两种处理页面方式,二者对比可以看 static和templates下的orderDetail 页面
1. 前端页面在template下,通过controller返回访问,并`model.add添加数据`。`h:text="${goods.goodsName}"`区数据, 不可直接访问
2. 在static下的页面可直接访问,并在页面加载时ajax请求返回json数据,`$("#goodsName").text(goods.goodsName);`根据id注入数据。(相当于前后端分离)
在项目初始化搭建过程中,都是方法1,但到P39开始做页面静态化orderDetail 转到方法2,代码中直接是方法2
### 环境搭建
需要安装配置Mysql、Redis、RabbitMQ
**Mysql**: 建表语句 `sqldoc/创建t_user.sql`
**Redis**:本地安装,或者远程linux服务器直接docker装,不装项目起不来。
**RabbitMQ**:推荐RabbitMQ直接docker安装,两行直接搞定,不行再看看防火墙、安全组。(不安装也能学到P44)
```bash
docker pull rabbitmq
docker run \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123123 \
--name mq \
--hostname mq1 \
-p 15672:15672 \
-p 5672:5672 \
-d \
rabbitmq:3-management
```
访问http://localhost:8080/login/toLogin, 账号密码 1000 123456
### 注意事项
1.在该项目中核心就是秒杀的实现:不能超卖、不能重复抢
- 不能超卖在doSeckill1中通过update的排他性实现(乐观锁)。而在doSeckill2中通过redis预减库存(redis的原子性实现)
- 不能重复抢通过唯一索引实现,默认建表时没有添加,压测可以把用户加少点商品多一点就可以复现重复购买
2.优化不过就是把数据库的重复访问,能放到redis就放到redis;而如果访问redis太多了就再加一层内存标记
3.redis和mysql要么都在远程,要么都在本地,否则可能会出现redis缓存优化了但QPS没提升
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计&课设-网购秒杀系统,整体项目,基于 SpringBoot+Redis+RabbitMQ.zip
共125个文件
java:62个
js:11个
html:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 3 浏览量
2024-06-07
11:41:26
上传
评论
收藏 130.9MB ZIP 举报
温馨提示
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计&课设-网购秒杀系统,整体项目,基于 SpringBoot+Redis+RabbitMQ.zip (125个子文件)
bootstrap.css 143KB
bootstrap.min.css 118KB
bootstrap-theme.css 26KB
bootstrap-theme.min.css 23KB
layer.css 14KB
layer.css 5KB
glyphicons-halflings-regular.eot 20KB
loading-0.gif 6KB
loading-2.gif 2KB
loading-1.gif 701B
.gitignore 402B
redis-5.0.5.tar.gz 1.88MB
goodsDetail.html 10KB
orderDetail.html 5KB
login.html 4KB
goodsDetail.html 3KB
orderDetail.html 2KB
goodsList.html 1KB
hello.html 205B
secKillFail.html 200B
SeKillController.java 12KB
CookieUtil.java 8KB
GoodsController.java 7KB
TOrderServiceImpl.java 6KB
TUserController.java 5KB
TOrder.java 4KB
TUserServiceImpl.java 4KB
MQReceiver.java 4KB
AccessLimitInterceptor.java 3KB
MyTest.java 3KB
SeckillDemoApplicationTests.java 3KB
TGoods.java 3KB
TUser.java 3KB
MQSender.java 3KB
TSeckillGoods.java 2KB
RedisConfig.java 2KB
JsonUtil.java 2KB
UserArgumentResolver.java 2KB
RabbitMQTopicConfig.java 2KB
WebConfig.java 2KB
ITOrderService.java 2KB
LoginController.java 2KB
TSeckillOrder.java 2KB
RabbitMQHeadersConfig.java 2KB
TSeckillOrderServiceImpl.java 2KB
MD5Util.java 1KB
RespBean.java 1KB
ITUserService.java 1KB
GoodsVo.java 1KB
SwaggerConfig.java 1KB
RabbitMQDirectConfig.java 1KB
TOrderController.java 1KB
RabbitMQConfigFanout.java 1KB
RespBeanEnum.java 1KB
GlobalExceptionHandler.java 1KB
IsMobileValidator.java 1KB
TGoodsServiceImpl.java 997B
DemoController.java 981B
UserUtil.java 929B
IsMobile.java 876B
LoginVo.java 873B
ITGoodsService.java 815B
ValidatorUtil.java 766B
ITSeckillOrderService.java 637B
GlobalException.java 633B
TGoodsMapper.java 629B
TSeckillGoodsServiceImpl.java 627B
SeckillDemoApplication.java 510B
TSeckillGoodsController.java 488B
DetailVo.java 473B
AccessLimit.java 460B
TGoodsController.java 454B
TSeckillOrderController.java 444B
UserContext.java 444B
SeckillMessage.java 426B
OrderDeatilVo.java 419B
ITSeckillGoodsService.java 311B
TSeckillGoodsMapper.java 310B
TSeckillOrderMapper.java 310B
TUserMapper.java 295B
UUIDUtil.java 290B
TOrderMapper.java 274B
压测配置文件.jmx 15KB
jquery.min.js 82KB
bootstrap.js 68KB
bootstrap.min.js 36KB
layer.js 21KB
jquery.validate.min.js 21KB
additional-methods.min.js 17KB
md5.min.js 10KB
layer.js 3KB
messages_zh.min.js 1KB
common.js 1KB
npm.js 484B
stock.lua 211B
lock.lua 102B
bootstrap.min.css.map 529KB
bootstrap.css.map 380KB
bootstrap-theme.css.map 47KB
bootstrap-theme.min.css.map 25KB
共 125 条
- 1
- 2
资源评论
毕业小助手
- 粉丝: 2762
- 资源: 5583
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功