![](https://img-blog.csdnimg.cn/direct/07e06bf0d04d4e938f0f556cd33a6e1d.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
项目总结
文章平均质量分 75
项目总结
早睡早起啦
感谢关注,csdn已经不上线了,不会在更新了。 csdn都是个人在大二到大四期间学习的笔记,有些内容可能并不是正确的,请理解下,技术文章在掘金(持续更新) https://juejin.cn/user/4248168663101239,如果想咨询up的话技术/生活/未来规划,wx: hakusai22.
展开
-
秒杀商城项目----Sentinel实现接口限流
Sentinel实现系统限流和服务降级一. pom.xml导入依赖二. 配置Sentinel访问地址三. 接口上进行注解配置Sentinel来服务降级,限流四. 访问控制面板进行接口服务的限流和降级SpringCloud_Alibaba微服务学习—sentinel—流量卫兵(以前写的入门教程)一. pom.xml导入依赖二. 配置Sentinel访问地址三. 接口上进行注解配置Sentinel来服务降级,限流四. 访问控制面板进行接口服务的限流和降级...原创 2021-08-27 12:06:07 · 508 阅读 · 0 评论 -
秒杀商城项目----Dubbo+Zookeeper分布式秒杀系统模块分析
优化为分布式秒杀系统一. Seckill-cache——缓存模块①. RedisConfig_redis配置信息②. RedisPoolFactory_jedis连接池③. RedisLockImpl_Redis分布式锁服务实现(注册服务到Dubbo)④. RedisServiceImpl_redis服务实现(注册服务到Dubbo)⑤. application.properties配置二. Seckill-commons——公共模块①. 服务接口1. DLockApi——分布式锁接口2. RedisServ原创 2021-07-28 23:15:24 · 1120 阅读 · 0 评论 -
秒杀商城项目----Redis缓存和MySQL数据一致性分析
Redis缓存和MySQL数据一致性分析一. 分析一致性二. 经典的缓存模式①. Cache-Aside Pattern_旁路缓存模式1. Cache-Aside读流程2. Cache-Aside 写流程②. Read-Through/Write through_读写穿透1. Read-Through的简要流程2. Write through③. Write behind_异步缓存写入三. 操作缓存的时候,删除缓存呢,还是更新缓存?四. 双写的情况下,先操作数据库还是先操作缓存?五. 保持最终一致性①. 采原创 2021-06-26 20:49:07 · 1652 阅读 · 1 评论 -
秒杀商城项目----雪花算法(SnowFlake)
雪花算法一. 雪花算法①. 1bit②. 41bit,用来记录时间戳,毫秒级。③. 10bit-工作机器id,用来记录工作机器id。④. 12bit-序列号⑤. SnowFlake优点二. 算法实现(Java)一. 雪花算法SnowFlake算法生成id的结果是一个64bit大小的整数,它的结构如下图:①. 1bit1bit,不用,因为二进制中最高位是符号位,1表示负数,0表示正数。生成的id一般都是用整数,所以最高位固定为0。②. 41bit,用来记录时间戳,毫秒级。41位可以表示原创 2021-06-26 16:53:40 · 249 阅读 · 0 评论 -
秒杀商城项目-----Aop全局管理日志
Aop全局管理日志一. Aop配置类上注解控制二. 使用表达式_切点_Controller层的所有方法三. 前置通知_Controller层的所有方法调用前进行前置处理_日志打印四. 后置返回_Controller层的所有方法结果集_日志打印五. 上效果图AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和原创 2021-06-26 14:26:41 · 205 阅读 · 0 评论 -
秒杀商城项目-----自定义注解_接口限流防刷
自定义注解_接口限流防刷一. 新建自定义注解AccessLimit二. 自定义拦截器①. 根据token获取存储在cookie中的用户信息②. 根据token从redis中取user用户信息③. 将用户对象存储到ThreadLocal中④. 获取自定义的注解请求,自定义注解请求参数⑤. 获取请求的URI来拼接 缓冲的key⑥. 设置过期时间⑦. 限制固定时间内访问次数⑧. 大于设置的次数_后台返回访问【过于频繁状态信息】⑨. 疯狂的点击测试接口限流防刷的目的限制同一个用户一段时间之内只能访问固定原创 2021-06-26 14:12:52 · 235 阅读 · 0 评论 -
秒杀商城项目-----秒杀接口优化
秒杀接口优化一. 秒杀接口优化①. 系统初始化,把商品库存数量加载到Redis上面来②. 验证path,没有则非法请求③. 通过goodsId判断秒杀是否结束,失败直接返回,减少redis访问④. 判断缓存中是否已经有订单了⑤. 预减库存 redis库存减一,返回剩余库存⑥. 交给RabbitMQ进行处理,入队,通过队列把同步请求变为异步请求,减少等待时间⑦. RabbitMQ处理异步订单 ——【下一篇博客细讲】⑧. 前端接收到数据后,显示排队中,并根据商品id和用户id轮询请求服务器(200ms轮询一次)原创 2021-06-26 13:46:15 · 365 阅读 · 0 评论 -
秒杀商城项目-----数学图形验证码来进行限流和秒杀接口地址隐藏
数学图形验证码来进行限流和秒杀接口地址隐藏一. 数学图形验证码来进行限流①. 在商品详情页面加入验证码图片标签②. 使用Kaptcha验证码工具类③. 验证码接口④. kaptcha生成验证码图片⑤. 生成验证码表达式,ScriptEngineManager计算验证码表达式的值⑥. 验证验证码⑦. 点击验证码刷新⑧. 核对验证码,抛出异常二. 秒杀接口地址隐藏①. 点击按钮,请求秒杀路径②. 后台验证码和path随机生成,存入Redis缓存中,60秒③. path隐藏秒杀路径 开始秒杀④. 真正的秒杀接口逻原创 2021-06-25 21:06:50 · 436 阅读 · 0 评论 -
秒杀商城项目----秒杀页面和订单详情页面伪静态化
秒杀页面和订单详情页面伪静态化一. 秒杀页面和订单详情页面伪静态化①. application.yml 配置添加②. 新建静态资源页面文件(以.htm格式结尾)③. 改造商品列表页面(goods_list.html)里面的跳转逻辑④. 定义一个GoodsDetailVo类来专门给页面传值⑤. 一跳转到goods_detail.htm页面时,js初始化,调后端的接口请求数据渲染到页面⑥. 后台返回商品详细数据⑦. 浏览器测试秒杀页面和订单详情页面走本地缓存 304响应码本项目中只是简单的实现页面静态化:即原创 2021-06-25 20:05:33 · 812 阅读 · 1 评论 -
秒杀商城项目---- 页面缓存、对象缓存
页面缓存、对象缓存一. 页面缓存①. 将GoodsList商品列表进行缓存起来②. 商品信息前缀,过期时间设置③. 商品详细信息页面缓存二. 对象缓存①. 通过id获取缓存中的用户信息②. 通过token+Cookie前缀获取缓存中的用户信息③. 更新密码---保持缓存与数据库的一致性三. 缓存和数据库的一致性①. Cache Aside Pattern(旁路缓存)一. 页面缓存①. 将GoodsList商品列表进行缓存起来 //导入thymeleafViewResolver 解析器 @原创 2021-06-25 19:13:16 · 386 阅读 · 2 评论 -
秒杀商城项目----知识点总结
秒杀商城项目一. 封装Json输出二. 通用缓存Key的设计与封装三. 两次MD5实现登录功能四. 全局异常处理五. 加入缓存预热六. 订单号使用雪花算法生成,确保唯⼀性六. token+Redis实现分布式Session的实现六. 流量削峰应该怎么做七.乐观锁更新库存,解决超卖问题七. 页面缓存、URL缓存八. 对象级缓存Redis八. 页面伪静态化九. 秒杀的业务逻辑、接口的优化十. 使用rabbitmq异步下单十一. 秒杀接口地址隐藏十二. 使用数学图形验证码来进行限流十三. Redis 计数限流,接原创 2021-06-25 17:21:55 · 291 阅读 · 0 评论 -
秒杀商城项目----解决超卖问题
解决超卖问题一. 在SQL加上判断库存防止库存为负数二. 数据库加唯一索引防止用户重复购买三. Redis预减库存减少数据库访问,内存标记减少Redis访问三. 悲观锁 加同步代码块 效率低四. 乐观锁 Version版本 效率高一. 在SQL加上判断库存防止库存为负数可以简单的解决超卖的情况,但不能完全避免public interface MiaoshaGoodsMapper extends Mapper<MiaoshaGoods> { //更新数据库中减库存1 并且st原创 2021-06-25 17:21:25 · 813 阅读 · 2 评论 -
秒杀商城项目----全局异常处理和加入缓存预热,商品结束秒杀标记 Map
全局异常处理和加入缓存预热一. 全局异常处理二. 自定义异常三. 加入缓存预热一. 全局异常处理 当我们业务代码throw抛出异常信息时,异常拦截器进行判断异常的类型,将结果进行返回,并在控制台打印package com.xizi.miaosha.exception;import com.xizi.miaosha.enums.ResultEnum;import com.xizi.miaosha.util.ResultUtil;import com.xizi.miaosha.vo.Resu原创 2021-06-25 16:55:25 · 410 阅读 · 1 评论 -
秒杀商城项目----两次MD5加密+Redis缓存+Token实现分布式Session登录
两次MD5加密+Redis缓存+Token实现分布式Session登录一. 两次MD5加密①. 做MD5加密的目的②. 做两次MD5加密的目的③. 实现MD5两次加密功能二. 分布式Session的实现①. 产生的问题②. 解决的办法③. Threadlocal存储User对象④. 登录功能创建token,存入到Redis和cookies中⑤. 配置每次请求打到Controller层接口自动绑定User用户信息⑤. 自定义配置中添加UserArgumentResolver用户参数解析器⑤.访问接口测试t原创 2021-06-25 16:36:32 · 569 阅读 · 0 评论 -
秒杀商城项目----封装返回的ResultUtil结果集和Redis缓存Key设计,自定义Redis服务
封装返回的ResultUtil 结果集和通用缓存Key的设计与封装一. 全局结果集封装①. ResultUtil 结果集封装②. 返回结果对象信息实体类③. 状态码与提示信息的枚举类④. 支付状态枚举类二. Redis缓存Key的设计与封装①. 模板方法模式来进行封装1. 接口KeyPrefix2. 抽象类BasePrefix3. 商品前缀4. 用户前缀5. 秒杀订单前缀②. JedisPool配置一. 全局结果集封装①. ResultUtil 结果集封装package com.xizi.mia原创 2021-06-25 15:48:16 · 443 阅读 · 0 评论 -
预约挂号医院管理项目----service_statistics模块—数据统计
service_statistics模块一. application.properties配置二. 导包service_order模块三. Contoller层四. 启动类配置一. application.properties配置server.port=8208spring.application.name=service-statisticsspring.profiles.active=devspring.cloud.nacos.discovery.server-addr=112.74.16原创 2021-06-16 20:24:54 · 316 阅读 · 0 评论 -
预约挂号医院管理项目----service_task模块—定时任务管理
service_task模块一. application.properties配置信息二. 导包Rabbitmq_utils三. 定时任务_ScheduledTask四. SpringBoot取消数据源一. application.properties配置信息server.port=8207spring.application.name=service-taskspring.profiles.active=devspring.cloud.nacos.discovery.server-addr=1原创 2021-06-16 20:19:46 · 227 阅读 · 0 评论 -
预约挂号医院管理项目----封装Feign服务调用_搭建service-client模块
封装Feign服务调用_搭建service-client模块一. 导入相关的Jar包二. service-cmn模块接口_Feign服务调用方法三. service-hosp模块接口_Feign服务调用方法四. service-order模块接口_Feign服务调用方法五. service-user模块接口_Feign服务调用方法六. Feign模块概略图 使用Feign组件进行多模块的调用,将需要的其他模块接口方法在FeignClient接口中编写一. 导入相关的Jar包 <depend原创 2021-06-16 16:36:55 · 427 阅读 · 0 评论 -
预约挂号医院管理项目----service_order模块—订单管理
service_order模块原创 2021-06-16 16:13:07 · 985 阅读 · 0 评论 -
预约挂号医院管理项目----service_msm模块—短信服务
service_msm模块一. 配置文件和mapper扫描配置二. 导包_aliyun-java-sdk-core三. 自定义工具类①. 全局配置常量②. 随机数工具类四. Controller 层处理手机号发送短信五. Service层六. Rabbitmq发送短信的监听器_使用注解配置七. aliyun_短信服务msm_自己申请就好了一. 配置文件和mapper扫描配置# 服务端口server.port=8204# 服务名spring.application.name=service-m原创 2021-06-16 15:05:53 · 420 阅读 · 1 评论 -
预约挂号医院管理项目----service_OSS模块—对象存储
service_OSS模块一. 导包 aliyun-sdk-oss二. 配置文件application.properties三. 工具类__全局静态化常量四. Controller层 文件上传五. Service层六. aliyun_OSS管理一. 导包 aliyun-sdk-oss <dependencies> <!-- 阿里云oss依赖 --> <dependency> <groupId>原创 2021-06-16 14:02:10 · 240 阅读 · 2 评论 -
预约挂号医院管理项目----service_user模块—用户管理
service_user模块一. 配置application文件和配置Mapper扫注解描① . Mapper配置文件路径和接口扫描②. MySQL配置,Redis配置,Nacos配置,wx微信属性配置二. 工具类①. 微信属性常量设置--设置为全局静态变量②. HttpClient请求路径工具类--轮子直接复制粘贴三. Controller层①. 用户user管理的相关接口②. 对外开发的用户接口(手机号短信登录)③. 微信登录相关的接口④. 就诊人Patient管理的接口四. Service层①. 就诊原创 2021-06-15 21:19:41 · 438 阅读 · 0 评论 -
预约挂号医院管理项目----service_hosp模块—医院管理
service_hosp模块一. 配置和配置文件①. Nacos服务地址/ MySQL数据库连接/ Redis数据库连接/ MongoDB连接/ Rabbitmq连接②. mp分页插件配置③. logback日志配置二. Repository层处理MongoDB数据①. DepartmentRepository—科室接口②. HospitalRepository—医院接口③. ScheduleRepository—排班接口④. Repository层总结三. Controller层接口处理①. Depar原创 2021-06-15 15:18:32 · 1033 阅读 · 1 评论 -
预约挂号医院管理项目----Service-cmn模块—数据字典
Service-cmn模块Service-cmn模块一. 配置文件①. 分页配置文件②. application.properties配置文件③. logback日志配置文件二. 数据字典的接口 DictController①. 导入数据字典②. 导出数据字典接口③. 根据数据id查询子数据列表④. 根据dictcode和value查询三. SpringCache 缓冲的使用Service-cmn模块一. 配置文件①. 分页配置文件 分页配置文件@Configuration@Mapper原创 2021-06-13 15:23:42 · 679 阅读 · 0 评论 -
预约挂号医院管理项目总结
预约挂号医院管理项目----Model实体类模块预约挂号医院管理项目----Common模块预约挂号医院管理项目----Gateway模块原创 2021-06-13 12:15:05 · 620 阅读 · 0 评论 -
预约挂号医院管理项目----Model模块—实体类
Model实体类模块一. Model实体类模块①. 枚举类②. model实体类③. Vo实体类一. Model实体类模块①. 枚举类 比如 :订单状态枚举类package com.xizi.yygh.enums;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public enum OrderStatusEnum { UNPAI原创 2021-06-13 12:12:35 · 597 阅读 · 2 评论 -
预约挂号医院管理项目----Gateway模块
Gateway模块一. Gateway模块①. 全局配置跨域文件②.一. Gateway模块①. 全局配置跨域文件//处理跨域@Configurationpublic class CorsConfig { @Bean public CorsWebFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.addAllowedMethod("*"原创 2021-06-13 11:27:45 · 247 阅读 · 0 评论 -
预约挂号医院管理项目----Common模块
1.@ControllerAdvice 全局异常处理1. 使用 @ControllerAdvice 实现全局异常处理,只需要定义类,添加该注解即可定义@ControllerAdvice //处理全局异常注解public class GlobalExceptionHandler {2. @ExceptionHandler 注解用来指明异常的处理类型3. 即如果这里指定为 NullpointerException,则数组越界异常就不会进到这个方法中来。 @ExceptionHandle原创 2021-06-13 10:22:01 · 316 阅读 · 0 评论