![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringBoot实战
HenkelQAQ
这个作者很懒,什么都没留下…
展开
-
(5)SprintBoot 2.X JSR303 参数校验 + 全局异常处理
1. JSR303简介JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。此实现与 Hibernate ORM 没有任何关系。 JSR 303 用于对 Java Bean 中的字段的值进行验证。Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证...原创 2019-08-03 23:36:28 · 410 阅读 · 0 评论 -
(16)SprintBoot 2.X 接口限流防刷
(16)SprintBoot 2.X 接口限流防刷1. 接口限流防刷1.1 思路1.2 技术细节2. 代码实现2.1 拦截器注解的引用 @AccessLimit(seconds=5, maxCount=5, needLogin=true)2.2 @AccessLimit注解的实现2.3 缓存Key前缀,可以设置有效时间2.4 注解能够生效,必须要配置拦截器AccessInterceptor2.4...原创 2019-08-05 18:28:58 · 631 阅读 · 0 评论 -
(15)SprintBoot 2.X 数学公式验证码
(15)SprintBoot 2.X 数学公式验证码1. 使用数学公式验证码1.1描述1.2 好处1.3 实现细节2. 代码实现2.1 前端代码2.1.1 前端页面代码2.1.2 前端逻辑代码2.2 Controller层 返回验证码图片接口2.3 MiaoshaService层 生成验证码图片2.4 Controller层,当前端点击秒杀按钮后,进入获取秒杀地址业务逻辑,首先进行验证码验证,成...原创 2019-08-05 13:30:45 · 486 阅读 · 0 评论 -
(14)SprintBoot 2.X 秒杀地址隐藏
(13)SprintBoot 2.X 秒杀地址隐藏1. 实现思路1.1 每次点击秒杀按钮,才会生成秒杀地址,秒杀地址不是写死的,是从服务端获取,动态拼接而成的地址。2.代码实现2.1 前端代码2.2 Controller层获取秒杀地址2.3 MiaoshaService层2.4 Controller层 验证path后进行秒杀逻辑业务处理1. 实现思路1.1 每次点击秒杀按钮,才会生成秒杀地址,...原创 2019-08-04 23:51:46 · 306 阅读 · 0 评论 -
(13)SprintBoot 2.X 使用RabbitMQ实现高并发秒杀接口优化
(12)SprintBoot 2.X 使用RabbitMQ实现高并发秒杀接口优化1. 高并发秒杀接口优化思路:减少数据库访问1.1具体实现流程:1.2 技术实现细节:本地标记 + redis预处理 + RabbitMQ异步下单 + 客户端轮询1.2.1 细节描述:2.代码实现2.1 系统初始化,把商品库存数量加载到Redis2.2 RabbitMQ队列的实现2.2.1 MQConfig,使用Dir...原创 2019-08-04 22:20:44 · 542 阅读 · 0 评论 -
(12)SprintBoot 2.X 集成RabbitMQ
12)SprintBoot 2.X 集成RabbitMQ1. pom.xml中添加依赖2. application.properties中添加配置3. 4种交换机模式实现(Direct、Topic、Fanout、Headers),[具体原理参考1](https://blog.csdn.net/WilsonSong1024/article/details/81536171),[具体原理参考2](ht...原创 2019-08-04 18:27:13 · 138 阅读 · 0 评论 -
(11)SprintBoot 2.X 页面优化技术(页面静态化,前后端分离)(二)秒杀静态化+订单详情静态化
(11)SprintBoot 2.X 页面优化技术(页面静态化,前后端分离)(二)秒杀静态化+订单详情静态化1.秒杀静态化1.1 改造商品详情页面的点击秒杀的业务逻辑,我们调用js方法实现ajax异步发送消息,如果秒杀成功,那么直接由客户端去跳转详情页面1.2 修改MiaoshaController,通过json返回给我们的前台,秒杀成功则返回订单信息,不成功返回相应的数据信息2. 订单详情静态...原创 2019-08-04 17:06:07 · 218 阅读 · 0 评论 -
(10)SprintBoot 2.X 页面优化技术(页面静态化,前后端分离)(一)商品详情静态化
(10)SprintBoot 2.X 页面优化技术(页面静态化,前后端分离)1.为什么使用页面静态化?2. 代码实现2.1 application.properities中引入依赖2.2 改变goods_list.html的跳转商品详情页方式2.3 修改后端GoodsController接收商品详情页的请求的接口2.4 页面静态化后的goods_detail.htm1.为什么使用页面静态化?...原创 2019-08-04 15:34:04 · 579 阅读 · 0 评论 -
(9)SprintBoot 2.X 页面优化技术(页面缓存+对象缓存)
(9)SprintBoot 2.X 页面优化技术(页面缓存+URL缓存+对象缓存)1.页面优化技术1.1 页面缓存+URL缓存+对象缓存1.2 页面静态化,前后端分离1.3 静态资源优化1.4 CDN优化2.缓存特征2.1 命中率2.2 最大空间2.3 淘汰策略3.缓存问题3.1 缓存穿透3.2 缓存雪崩3.3 缓存一致性3.4 缓存 “无底洞” 现象4.项目应用4.1 页面缓存4.2 URL...原创 2019-08-04 14:38:21 · 405 阅读 · 0 评论 -
(8)SprintBoot 2.X 秒杀功能的实现(秒杀业务逻辑处理)
(8)SprintBoot 2.X 秒杀功能的实现(秒杀业务逻辑处理)1.秒杀业务逻辑1.1 前端点击秒杀按钮进入秒杀业务逻辑1.2 秒杀业务逻辑2. 代码实现2.1 MiaoshaController的实现2.2 MiaoshaService的实现2.3 减库存的实现2.3.1 GoodsService2.3.2 GoodsDao2.4 下订单的实现2.4.1 OrderService2.4.2...原创 2019-08-04 11:50:55 · 219 阅读 · 0 评论 -
(7)SprintBoot 2.X 自定义参数解析器
(7)SprintBoot 2.X 自定义参数解析器1.为什么引入参数解析器2.代码实现2.1 HandlerMethodArgumentResolver接口2.2 创建一个UserArgumentResolver类2.3 注册解析器2.4 业务逻辑代码的使用1.为什么引入参数解析器想办法在直接在controller的请求的方法上面直接注入MiaoshaUser(用户的信息),直接通过方法的...原创 2019-08-04 10:46:11 · 561 阅读 · 0 评论 -
(6)SprintBoot 2.X 基于Redis的分布式session
1.基本原理Session的作用Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息。客户端在第一次访问服务端的时候,服务端会响应一个sessionId并且将它存入到本地cookie中,在之后的访问会将cookie中的sessionId放入到请求头中去访问服务器,如果通过这个sessionid没有找到对应的数据那么服务器会创建一个新的sess...原创 2019-08-03 16:28:02 · 177 阅读 · 0 评论 -
(4)SprintBoot 2.X 通用Redis缓存Key的封装
1.为什么要对缓存Key进行封装?当Redis存在大量的缓存引用时会导致一个问题,缓存key冲突,不能识别不同模块中的缓存(如相同的用户id和商品id不做任何修改,直接作为Redis的可以,就可能会导致key冲突)解决:利用一个抽象类,定义BaseKey(前缀),在里面定义缓存key的前缀以及缓存的过期时间从而实现将缓存的key进行封装。让不同模块继承它,这样每次存入一个模块的缓存的时候,加...原创 2019-08-03 15:25:36 · 433 阅读 · 2 评论 -
(17)SpringBoot 2.X 高并发秒杀系统总结
(18)SpringBoot 2.X 高并发秒杀系统总结1.系统介绍2.开发环境和工具3.开发技术4.秒杀优化方向5.项目亮点5.1 使用分布式Seesion,可以实现让多台服务器同时可以响应。5.2 使用redis做缓存提高访问速度和并发量,减少数据库压力,利用内存标记减少redis的访问5.3 使用页面静态化,加快用户访问速度,提高QPS,缓存页面至浏览器,前后端分离降低服务器压力5.4 使用...原创 2019-08-07 17:26:24 · 1514 阅读 · 0 评论