![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
秒杀项目
高并发秒杀
Rsingstarzengjx
热爱技术,对新技术充满好奇心。
展开
-
Java秒杀系统7.4 使用拦截器做通用限流
2.实现流程Prehandle: 拦截器AccessInterceptor 中,前置处理:preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 1.调用getUser 获得登录用户,将获得的用户通过UserContext 设置用户,通过han...原创 2020-02-26 23:00:06 · 354 阅读 · 0 评论 -
Java秒杀系统7.3 接口限流防刷
1.1分钟限制5次1.新建AccessKey ,五秒钟之内只能访问5次。获取reqeust.getRequestURL();判断次数是否是超过5次,如果次数超过5次返回,如果次数没有超过5次则返回访问太频繁。前端代码:function getMashaPath() { $.ajax({ url:"/miaosha/path", type:"...原创 2020-02-25 22:53:41 · 390 阅读 · 0 评论 -
Java秒杀系统7.2 数学表达式图形验证码
1.设计思路前端页面在立即秒杀 按钮旁边添加img 标签显示验证码,添加input标签用于用户填入验证码。img 标签添加onclick时间用户按下调用refreshVerifyCode(),在refreh VerifyCode()中发送ajax 请求携带goodsId和时间Date()controller: 创建BufferedImge 获得maioshaService.crea...原创 2020-02-25 17:37:03 · 397 阅读 · 0 评论 -
Java秒杀系统7.1隐藏地址
1.隐藏地址实现思路/** * 秒杀地址隐藏 * 先去请求接口获得秒杀地址 * 1.接口带上PathVarible参数 * 2.添加生成地址的接口, * 3.秒杀收到请求的时候先验证Pathvarible * *点击秒杀---触发onclick事件---请求服务端地址getMashaPath() * -----发...原创 2020-02-16 20:17:26 · 450 阅读 · 0 评论 -
Java秒杀系统-6.5秒杀接口优化
主要的优化思路:减少数据库访问 ,同步下单改成异步下单。1.系统初始化,把库存商品数量添加到redis 中。 // 系统初始化---保存每个商品的库存 @Override public void afterPropertiesSet() throws Exception { List<GoodsVo> goodsVoList =goods...原创 2020-02-11 14:08:13 · 248 阅读 · 0 评论 -
Java秒杀系统-0.4 bug 记录
1. 时区问题原来 mysql 设置:spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/miaosha?useUnicode=true&characterEncoding=UTF-8&serverTi...原创 2020-02-06 22:40:52 · 229 阅读 · 1 评论 -
Java秒杀系统5.7-静态资源优化
1.JS/CSS 压缩,减少流量。2.多个JS.CSS组合,减少连接数。3.CDNCDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分...原创 2020-02-07 15:02:27 · 179 阅读 · 0 评论 -
5.6-订单详情静态化,解决超卖问题
1. 可以使用拦截器@NeedLogin,判断输入的long orderid 是否为空。2.定义订单模块5004XXpublic static CodeMsg ORDER_NOT_EXIST =new CodeMsg(500215,"订单不存在");获取商品id ,按照id 获得商品。填入OrderDetailVo3.@Select 按照Id 查询。4.getOrd...原创 2020-02-07 14:52:14 · 376 阅读 · 0 评论 -
Java秒杀系统-5.4商品详情页面静态化
1.为什么要先更新数据库?先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。我不知道为什么这么多人用的都是这个逻辑...原创 2020-02-04 08:11:38 · 229 阅读 · 0 评论 -
Java秒杀系统-5.0-页面缓存+URL 缓存
1.实现步骤页面缓存适合: 变化不大的场景,比如商品列表 先创建一个对商品的前缀,用于存入redis中GoodsKey getGoodsList=new Goodkeys(60,"gl");https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/reference/htmlsingle/ 查找不到。https://doc...原创 2020-02-03 12:04:07 · 490 阅读 · 0 评论 -
Java秒杀系统-4.1 JMeter 压测 4.2 自定义变量
不止代码4.1 jmeter压测线程组新建http 请求。 QPS: Throughput :1秒17请求设置 线程数1000 倍数 10:linux 下输入top 命令 系统负载load averagemsql 占用资源4.2 自定义变量1.@Controller@RequestMapping("/user")...原创 2020-02-02 17:35:34 · 201 阅读 · 0 评论 -
Java秒杀系统-3.8 订单详情页
秒杀订单详情页包含OrderInfo 的(订单价格order.goodsPrice,下单时间orderInfo.createDate,orderInfo.status,收货人,收货地址)order_detail.html: 商品图片img th:src="@{${goods.goodsImg}}"下单时间${"#dates.format(orderInfo.createDate,...原创 2020-01-31 17:37:21 · 292 阅读 · 0 评论 -
Java秒杀系统-2.8-分布式session
1.秒杀服务实现类对传入的LoginVo 判断合法性,密码校验,保存查询出的MiaoShaUser,用户的UUID 保存在Cookie 和redispackage com.zengjx.miaosha.service.impl;import com.zengjx.miaosha.controller.LoginController;import com.zengjx.miaosha...原创 2020-01-26 17:09:38 · 222 阅读 · 0 评论 -
Java秒杀系统-2.7-Jedis redis.clients.jedis.exceptions.JedisConnectionException:问题解决
1.application.properties#thymeleafspring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.suffix=.htmlspring.thymeleaf.cache=falsespring.thymeleaf.content-type=text/htmlspring.thymelea...原创 2020-01-26 11:23:06 · 478 阅读 · 0 评论 -
Java秒杀系统-1.5 linux 安装redis
1. 上传redis 压缩包2.解压3.移动到 local 目录下重命名为redis4. make 编译 4 表示4个cpu ,加快编译。5.make install6.vi 修改redis 的配置文件 redis.conf7.默认只允许 bind 127.0.0.1 改为 分布式 bind 0.0.0.08.端口...原创 2020-01-25 21:29:08 · 214 阅读 · 0 评论 -
Java秒杀系统-1.1-数据库表
1. 数据库执行脚本/*SQLyog Enterprise v12.09 (64 bit)MySQL - 5.5.40 : Database - miaoshi**********************************************************************//*!40101 SET NAMES utf8 */;/*!40101 S...原创 2020-01-25 19:56:15 · 299 阅读 · 0 评论 -
Java秒杀系统-2.4-jsr303参数校验
1.导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency> 2.IsMobile...原创 2020-01-24 14:30:52 · 162 阅读 · 0 评论 -
Java秒杀实战-2-5异常处理
1.实现思路1.1 创建 GlobleExceptionHandler ,用注解@ControllerAdvice,@ResponseBody 修饰,@ExceptionHandler(value=Exception.class) 定义处理哪种异常,传入参数HttpServletRequest request ,Exception e ,判断传入的异常类型instacneof Glo...原创 2020-01-23 12:35:46 · 234 阅读 · 0 评论 -
Java秒杀系统-3.9-秒杀流程实现
1.前端 :前端点击goods_detail 的立即秒杀,提交action=“/miaosha/do_miaosha” 的表单。提交的参数为商品的goods.id。2. controller: 2.1秒杀用户添加到model,如果用户为null,则跳转到login 页面。通过GoodsService判断s商品GoodsVo库存stock是否大于0,如果否,则返回errmsg ,Co...原创 2020-02-01 22:17:53 · 1024 阅读 · 0 评论 -
Java秒杀系统-2.5-异常拦截
1.定义异常类继承于RuntimeException.package com.zengjx.miaosha.exception;import com.zengjx.miaosha.result.CodeMsg;public class GlobalException extends RuntimeException{ private static final long se...原创 2020-01-24 15:21:55 · 224 阅读 · 0 评论