![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
秒杀系统
程序鹏
希望在这里可以向IT界大佬学习前沿知识,也可以将自己的所得所学分享给别人。
展开
-
SpringBoot秒杀系统秒杀优化
文章目录什么是秒杀秒杀系统场景特点秒杀架构设计理念秒杀系统架构设计思路前端方案后端方案使用技术主要项目技术描述效果展示什么是秒杀 秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到。对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性,会吸引大量用...原创 2020-04-29 00:00:00 · 957 阅读 · 2 评论 -
SpringBoot秒杀系统实战01-项目框架搭建
SpringBoot理念:零配置只需要两步: 引入依赖 写入启动类 就可以跑起来,不需要其他繁琐的配置,不像之前学习SSM框架那样,需要配置若干bean。 1.新建Maven Project 2.选择quickstart 3.打开pom.xml文件,在相应位置添加依赖。 <parent> &...原创 2020-04-29 00:00:00 · 280 阅读 · 0 评论 -
SpringBoot秒杀系统实战02-优雅代码编写之封装json输出
搭建起了SpringBoot环境之后,那么就可以开启项目了,我们需要考虑优雅代码编写。我们知道MVC模式Controller类里面一般有两大返回值: rest api的json输出 页面 一般来说,服务端和客户端要做一个接口的约定。一般封装的json数据代表意义: { "code":0 //50010...原创 2020-04-29 00:00:00 · 246 阅读 · 0 评论 -
SpringBoot秒杀系统实战03-集成Thymeleaf做页面模板
文章目录Thymeleaf是什么?集成Thymeleaf1.引入依赖2.生成配置文件SpringBoot会默认找一个叫application.properties的文件。添加Thymeleaf配置项在resources目录下新建templates。新建hello.html页面Controller里面进行测试。Thymele...原创 2020-04-29 00:00:00 · 234 阅读 · 0 评论 -
SpringBoot秒杀系统实战04-集成Mybatis与druid
文章目录1.在pom.xml文件中添加pom依赖2.在application.properties添加mybatis配置项3.配置数据源和连接池druid4.引入jdbc和druid的依赖5.测试1.在pom.xml文件中添加pom依赖 <dependency> <groupId>org.myb...原创 2020-04-29 00:00:00 · 201 阅读 · 0 评论 -
SpringBoot秒杀系统实战05-数据库设计与对应的domain对象
数据库设计:商品表,秒杀商品表,订单表,秒杀订单,用户表 秒杀商品表和商品表分开。原因:每次秒杀活动都会操作数据库,修改秒杀商品的字段,因为每次秒杀时候。对应的秒杀时间段,秒杀实现,秒杀功能,价格等都不同,商品表不易于维护。而且,秒杀商品的个数和普通商品的个数是独立计算的,不同于普通商品的库存字段。 create table goods ( ...原创 2020-04-29 00:00:00 · 465 阅读 · 0 评论 -
SpringBoot秒杀系统实战06-安装与集成redis
文章目录1.Redis 安装2.集成Redis1.Redis 安装Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,...原创 2020-04-29 00:00:00 · 218 阅读 · 0 评论 -
SpringBoot秒杀系统实战07-通用缓存Key的设计与封装
为什么要这个通用缓存Key?当项目中的模块越来越多的时候,需要存的缓存也越来越多,比如商品Id,订单Id,用户id等,此时若是id出现重复,将给系统带来错误。那么使用KeyPrefix来更好的操作和管理缓存中对应的key。给不同模块的key带有一个前缀。不加前缀的情况: public <T> boolean set(Strin...原创 2020-04-29 00:00:00 · 305 阅读 · 0 评论 -
SpringBoot秒杀系统实战08-两次MD5加密设计
什么是MD5加密?漫画:什么是MD5算法?https://zhuanlan.zhihu.com/p/55841123转载自:程序员小灰 为什么做MD5?如果不做任何处理:那么明文密码就会在网络上进行传输,假如说恶意用户取得这个数据包,那么就可以得到这个密码,所有不安全。为什么做两次MD5?用户端:PASS=MD5(明文+固定Salt)...原创 2020-05-08 00:00:00 · 224 阅读 · 0 评论 -
SpringBoot秒杀系统实战09-使用两次MD5实现登录功能
两次MD5:用户端:PASS=MD5(明文+固定Salt)服务端:PASS=MD5(用户输入处理+随机Salt)登录界面: 数据库里面存的是做了两次MD5的用户密码与其对应的salt值 现在我们登录的时候,要去取得数据库里面对应用户的密码和salt值,然后后台接收了前端做了一次MD5的密码formPass,然后将这个formP...原创 2020-05-08 00:00:00 · 291 阅读 · 0 评论 -
SpringBoot秒杀系统实战10-JSR303参数校验+全局异常处理
文章目录JSR303参数校验全局异常处理JSR303参数校验 系统在登录的时候做了一个参数校验,也就是说每一个方法的开头都要去做一个校验,那么有没有更简洁的方法呢?那就是使用JSR 303 校验。 JSR 303 用于对Java Bean 中的字段的值进行验证,使得验证逻辑从业务代码中脱离出来。是一个运行时的数据验证框架,在验证...原创 2020-05-08 00:00:00 · 292 阅读 · 0 评论 -
SpringBoot秒杀系统实战11-分布式Session
文章目录分布式Session的几种实现方式Session Replication 方式管理 (即session复制)Session Sticky 方式管理缓存集中式管理业务逻辑Controller代码:MiaoshaUserService里面login和addCookie以及getByToken操作:优化我们的秒杀服务,实际...原创 2020-05-08 00:00:00 · 358 阅读 · 0 评论 -
SpringBoot秒杀系统实战12-商品列表页
文章目录1、先创建商品的服务类GoodsService ,注入GoodsDao2、创建GoodsDao3、前端goods_list.html页面代码:4、效果1、先创建商品的服务类GoodsService ,注入GoodsDao@Service public class GoodsService { public stati...原创 2020-05-08 00:00:00 · 288 阅读 · 0 评论 -
SpringBoot秒杀系统实战13-秒杀商品详情页+秒杀倒计时功能实现
文章目录秒杀倒计时:1、在GoodsController里面创建toDetail方法,接收详情页面的请求2、 前端页面处理逻辑3、goods_detail.html完整代码:怎么注入MiaoshaUser的实例参数在上一节中,我们已经实现秒杀商品的列表页的显示,其中可以点击每一个商品的【详情】查看具体的秒杀信息,那么我们这一节...原创 2020-05-08 00:00:00 · 1973 阅读 · 0 评论 -
SpringBoot秒杀系统实战14-秒杀功能的实现(秒杀业务逻辑处理)
文章目录1、 新建一个MiaoshaController,定义接收该秒杀请求的接口方法doMiaosha 先去设置数据库里面的秒杀时间 假设当前时间是2020-05-08 19:30:12 1.已经开始2.秒杀结束3.秒杀倒计时 所以我们去秒杀第一个商品: 在之前的goods_detail.html里面的秒杀按钮点击之...原创 2020-05-08 00:00:00 · 724 阅读 · 0 评论 -
SpringBoot秒杀系统实战15-订单详情页
秒杀成功后,会生成秒杀订单,然后和订单数据信息一起跳转至订单详情页面(order_detail.html) 根据orderStatus的值来判定订单的状态: 0 未支付 1 代发货 2 已发货 3 已收货 4 已退款 5 已完成 order_detail.html完整代码: <!DOCTYPE html>...原创 2020-05-08 00:00:00 · 461 阅读 · 0 评论 -
SpringBoot秒杀系统实战16-使用JMeter压测秒杀系统(秒杀接口的压测及结果)...
文章目录JMeter压测工具的使用1、添加一个线程组2、 设置1000个线程数,循环10次3、 添加Http请求默认值4、 新建一个Http请求5、新建一个聚合报告6、 启动项目秒杀接口的压测详细过程与结果:1、 启动系统,先生成1000个用户并且存储至数据库:2、 让每个用户登录到系统,并且生成与其对应token信息,将...原创 2020-05-08 00:00:00 · 1100 阅读 · 0 评论 -
SpringBoot秒杀系统实战17-页面优化技术(页面缓存+URL缓存+对象缓存)...
文章目录页面优化技术缓存特征:命中率页面缓存GoodsController里面的toListCache方法改造一下URL缓存思考缓存问题缓存穿透缓存雪崩解决方案:缓存一致性缓存 “无底洞” 现象页面优化技术1、 页面缓存+URL缓存+对象缓存 由于并发瓶颈在数据库,想办法如何减少对数据库的访问,所...原创 2020-05-08 00:00:00 · 359 阅读 · 0 评论 -
SpringBoot秒杀系统实战18-页面优化技术-商品详情页面静态化(前后端分离)...
文章目录页面静态化+前后端分离1. 常用技术AngularJS、Vue.js2. 优点:利用浏览器的缓存商品详情页静态化1、 为了在浏览器端进行缓存,以及控制缓存时间,在application.properties里面添加配置静态资源配置项:2、在static资源文件夹下面新建我们的静态资源页面文件,(我们以.htm格式结尾),这里...原创 2020-05-09 00:00:00 · 803 阅读 · 0 评论 -
SpringBoot秒杀系统实战19-秒杀静态化+订单详情静态化
文章目录秒杀静态化订单详情静态化解决超卖秒杀静态化 改造商品详情页面的点击秒杀的业务逻辑,我们调用js方法实现ajax异步发送消息,如果秒杀成功,那么直接由客户端去跳转详情页面 window.location.href="order_detail.htm?orderId="+data.data.id;func...原创 2020-05-09 00:00:00 · 373 阅读 · 0 评论 -
SpringBoot秒杀系统实战20-高并发秒杀接口优化
文章目录高并发秒杀接口优化1.商品库存数量预加载库存到Redis上2.收到请求后预减库存3.消息入队(并将用户信息和商品信息封装起来传入队列)redis多线程情况下是否安全?2、 在某一个类(DemoController)里面定义一个接收请求的方法。3、进入redis,设置GoodsKey:gs1这个键的值为10。4、发送请求,...原创 2020-05-09 00:00:00 · 1045 阅读 · 3 评论 -
SpringBoot秒杀系统实战21-高并发秒杀系统接口优化 RabbitMQ异步下单...
文章目录【秒杀系统的接口优化之异步下单】1.后端接收秒杀请求的接口doMiaosha。2.监控该消息队列,一旦有消息进入,从该消息中获取对象进行秒杀操作3.前端根据商品id轮询请求接口MiaoshaResult,查看是否生成了商品订单,后端处理秒杀逻辑,并向前端返回请求结果。【秒杀系统的接口优化之异步下单】 问题: 针对秒杀...原创 2020-05-09 00:00:00 · 461 阅读 · 0 评论 -
SpringBoot秒杀系统实战22-安全优化 秒杀接口地址隐藏
文章目录秒杀接口地址隐藏1、改造前端秒杀按钮,在发起请求之前,先去获取秒杀地址:2、 发起请求/miaosha/getPath去后端获取一个动态的秒杀地址path,然后前端在用这个path拼接在url(url : “/miaosha/” + path + “/do_miaosha”)上作为参数,再去发请求到后台开始我们的秒杀3、 服务端...原创 2020-05-09 00:00:00 · 498 阅读 · 0 评论 -
SpringBoot秒杀系统实战23-安全优化 数学图形验证码
秒杀接口地址的隐藏可以防止恶意用户通过频繁调用接口来请求的操作,但是无法防止机器人,刷票软件恶意频繁点击按钮来刷请求秒杀地址接口的操作。 高并发下场景,在刚刚开始秒杀的那一瞬间,迎来的并发量是最大的,减少同一时间点的并发量,将并发量分流也是一种减少数据库以及系统压力的措施(使得1s中来10万次请求过渡为10s中来10万次请求) 思路:...原创 2020-05-09 00:00:00 · 229 阅读 · 0 评论 -
SpringBoot秒杀系统实战24-安全优化 接口限流防刷
接口限流防刷: 限制同一个用户一秒钟或者一分钟之内只能访问固定次数,在服务端对系统做一层保护。 思路:利用缓存实现,用户每次点击之后访问接口的时候,在缓存中生成一个计数器,第一次将这个计数器置1后存入缓存,并给其设定有效期,比如一分钟,一分钟之内再访问,那么数值加一。一分钟之内访问次数超过限定数值,直接返回失败。下一个一分钟,数据重新从0开...原创 2020-05-09 00:00:00 · 455 阅读 · 0 评论 -
SpringBoot秒杀系统总结25- 项目的亮点和难点及问题解决(源码地址)...
文章目录【商城限时秒杀系统总结】源码地址:https://gitee.com/Cao_Kunpeng/Miaosha.git项目的亮点:项目难点及问题解决:1、使用JMeter做压测的时候开启5000个线程,系统跑不起来,出现异常2、使用了大量缓存,那么就存在缓存击穿和缓存雪崩以及缓存一致性等问题?3、大量的使用缓存,对于缓存服...原创 2020-05-09 00:00:00 · 4394 阅读 · 0 评论