- 博客(28)
- 收藏
- 关注
原创 【RabbitMQ】幂等性,优先级队列和惰性队列
目录幂等性概念消息重复消费解决思路消费端的幂等性保障唯一 ID+指纹码机制Redis 原子性优先级队列使用场景如何设置优先级?消息生产者消费者惰性队列使用场景两种模式内存开销对比幂等性概念用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结
2022-02-02 23:33:22 2508
原创 【RabbitMQ】发布确认高级部分已经如何用Springboot实现效果
目录高级部分包括什么?发布确认 springboot 版本确认机制方案代码架构图修改配置文件添加配置类消息生产者回调接口消息消费者结果回退消息配置yml文件回调接口优化结果备份交换机代码架构图修改配置类报警消费者测试注意事项结果总结高级部分包括什么?在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何
2022-02-02 23:22:50 449
原创 【RabbitMQ】Springboot实现延迟队列+死信队列
目录死信的概念应用场景死信的来源延迟队列延迟队列概念延迟队列使用场景springboot实现代码架构图配置类生产者(在web界面输入消息)消费者结果问题和新需求延时队列优化代码架构图配置文件类代码消息生产者代码消费者存在的问题解决:安装延时队列插件代码架构图配置文件类代码消息生产者代码消费者结果总结死信的概念死信,顾名思义就是无法被消费的消息,字面意思可以这样理解一般来说,生产者将消息..
2022-02-02 23:02:03 7041 1
原创 【RabbitMQ】SpringBoot整合RabbitMQ实现五大模式
目录交换机:Exchange概念Exchanges 的类型直接(direct)主题(topic)标题(headers)扇出(fanout)绑定(bindings)springboot整合RabbitMQ一、简单模式二、工作模式三、订阅模式四、路由模式五、主题模式交换机:Exchange概念RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产 者甚至都不知道这些消息传递传递到了哪些队列中。...
2022-02-02 22:16:09 2326
原创 【RabbitMQ】 RabbitMQ的持久化、不公平分发和发布确认
目录RabbitMQ持久化概念队列实现持久化消息实现持久化不公平分发预取值发布确认发布确认的策略开启发布确认的方法单个确认发布批量确认发布异步确认发布(重点)如何处理异步未确认消息以上 3 种发布确认速度对比RabbitMQ持久化概念我们已经看到了RabbitMQ如何处理任务不丢失的情况,就是依赖于它的消息自动重新入队机制,但是如何保障当 RabbitMQ 服务停掉以后消 息生产者发送过来的消息不丢失。默认情况下 RabbitMQ ..
2022-01-30 21:33:31 836
原创 【RabbitMQ】消息应答--ack机制
目录消息应答概念自动应答消息应答的方法Multiple 的解释手动应答实现1.准备工具类2.生产者3.两个睡眠时间不同的消费者4.效果展示消息自动重新入队效果演示:消息应答概念消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会导致消息丢失。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。以及后续发送给该消费.
2022-01-30 20:25:24 7411
原创 [RabbitMQ--1] MQ简介
目录1.MQ 的相关概念1.1.什么是 MQ?1.2.为什么要用MQ?MQ的应用场景1.2.1.流量消峰:1.2.2.任务异步处理:1.2.3.应用解耦2.AMQP和JMS3.MQ 的分类1.ActiveMQ2.Kafka3..RocketMQ4..RabbitMQ4.RabbitMQ1.四大核心概念生产者交换机队列消费者RabbitMQ的工作原理1.MQ 的相关概念1.1.什么是 MQ?MQ(message qu.
2022-01-29 22:53:59 2912
原创 【Redis6--5】穿透,击穿,雪崩,分布式锁
目录1.缓存穿透1.1.问题描述1.2解决方案对空值缓存:设置可访问的名单(白名单):采用布隆过滤器:进行实时监控:2.缓存击穿2.1问题描述解决方案(1)预先设置热门数据:(2)实时调整:(3)使用锁:3.缓存雪崩3.1问题描述解决方案构建多级缓存架构:使用锁或队列:设置过期标志更新缓存:将缓存失效时间分散开:4.分布式锁4.1问题描述解决方案:使用redis实现...
2022-01-28 22:45:01 190
原创 【Redis6--4】Redis持久化,主从复制,哨兵,集群
目录1.Redis持久化之RDB1.1是什么1.2备份是如何执行的1.3Fork1.4RDB持久化流程1.5dump.rdb文件的备份1.6优势1.7劣势1.8总结2.Redis持久化之AOF2.1是什么2.2AOF持久化流程2.3AOF同步频率设置2.4Rewrite压缩1.是什么:2.重写原理,如何实现重写3.重写流程2.5 优势2.6劣势.
2022-01-28 22:27:10 1644
原创 【Redis6--3】Redis中事务_锁机制_秒杀
目录1.Redis_事务_锁机制_秒杀1.1.Redis的事务定义1.2.Multi、Exec、discard1.3.事务的错误处理1.4.为什么要做成事务1.5.事务冲突的问题案例1.6.解决方式1.6.1悲观锁(效率较低)1.6.2.乐观锁(redis中使用较多)1.6.3.乐观锁的执行---WATCH key [key ...],unwatch1.7.Redis事务三特性1.单独的隔离操作2.没...
2022-01-28 21:47:42 158
原创 [Redis6--2] Redis的五大数据类型和三种新数据类型
目录1.五大数据类型1.1.Redis键(key)1.2.Redis字符串1.3Redis列表(List)1.4.Redis集合(Set)1.5.Redis哈希(Hash)1.6.Redis有序集合Zset(sorted set)2.Redis中的三种新数据类型2.1.Bitmaps2.2.HyperLogLog2.3.Geospatial1.五大数据类型官网查看更详细的介绍1.1.Redis键(key)keys
2022-01-28 21:20:05 856
原创 [Redis6--1] NOSQL型数据库简介以及redis在Linux系统下安装
目录1.NoSQL数据库简介1.1技术发展1.2NOSQL型数据库1.3.NoSQL适用场景1.4.NoSQL不适用的场景2.Redis概述和安装2.1.概述2.2.应用场景2.2.安装(安装到VMware虚拟机中,借助Xshell和Xftp工具)1.NoSQL数据库简介1.1技术发展技术的分类1、解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN2、解决扩展性的问题:Struts、Spring、.
2022-01-27 22:54:42 265
原创 【springboot2--7】Junit5单元测试
目录1、JUnit5 的变化2、JUnit5常用注解3、断言1、简单断言2、数组断言3、组合断言4、异常断言5、超时断言6、快速失败4、前置条件5、嵌套测试6、参数化测试1、JUnit5 的变化Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库JUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。JUn..
2022-01-22 18:23:46 3185
原创 【springboot2--6】数据访问-springboot整合mybatis和mybatis-plus
目录1.整合mybatis1.在pom文件中添加start2.在yml文件中进行配置3.创建mapper4.在mapper文件中写sql5.在service层测试2.整合mybatis-plus1、什么是MyBatis-Plus2.修改pom文件3.创建mapper4.创建service层5.实现功能6.实现分页功能的插件1.整合mybatis 详细操作可以参考mybatis官网https://github.com/mybatis...
2022-01-21 23:30:50 1338
原创 [springboot2--5] 异常处理和web原生组件注入(Servlet、Filter、Listener)
目录1.异常处理1.默认规则2、定制错误处理逻辑2.Web原生组件注入(Servlet、Filter、Listener)1.使用Servlet API2.DispatchServlet 如何注册进来?3、使用RegistrationBean1.异常处理1.默认规则默认情况下,Spring Boot提供/error处理所有错误的映射 对于机器客户端,它将生成JSON响应,其中包含错误,HTTP状态和异常消息的详细信息。对于浏览器客户端,响应一个“ whitelab
2022-01-21 23:03:17 178
原创 [springboot2-4] 拦截器和文件上传
目录1.拦截器1.HandlerInterceptor 接口,创建一个类实现HandlerInterceptor接口2.配置拦截器 --将拦截器注册到容器中3.拦截器原理和执行顺序2.文件上传1.页面表单2.文件上传代码3.自动配置原理--文件上传自动配置类MultipartAutoConfiguration-MultipartProperties1.拦截器 拦截器通常用来检查用户是否登录,未登录则不能访问其他页面1.HandlerInter...
2022-01-20 22:55:05 1029
原创 【Springboot2--3】请求参数的处理,常用的注解
目录1.请求映射1.REST的使用与原理2 普通参数与基本注解1.1、注解:1.请求映射1.REST的使用与原理@XXXmapping (getmapping,postmapping等)Rest风格支持(使用HTTP请求方式动词来表示对资源的操作) 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户...
2022-01-19 23:11:10 1504
原创 [SpringBoot2--2] SpringBoot的特点和容器功能
目录1.SpringBoot的特点1.1 依赖管理1.2 自动装配2.容器功能2.1 组件添加2.2 原生配置文件引入2.3配置绑定1.SpringBoot的特点1.1 依赖管理父项目做依赖管理依赖管理 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-.
2022-01-18 22:40:18 330
原创 [SpringMVC小练习]使用全注解开发实现一个RESTFUL风格的简单CRUD案例
案例简介:尽量将SpringMVC的功能进行实现,来开发一个crud案例未使用数据库而是将数据存入集合中(主要为了连续springmvc的技术而其他从简)使用到的技术:Spring,SpringMVC,maven等前端技术:一点点html,一点点vue,一点点thymeleaf实现一个简单的框架目录准备0.配值maven1.创建前端的页面2.创建dao(以具体的类代表数据库存储数据)3.创建实体类对象(bean)4.创建webinit作为web工程的初始化类,代替we
2022-01-16 22:52:33 583
原创 【spring笔记-5】AOP相关内容
1.什么是AOP?即面向切面编程,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高开发效率也就是说不通过修改源代码的方式,增加主干功能中的新功能AOP底层原理1.AOP底层使用动态代理有两种情况的动态代理:1.有接口的情况,使用JDK动态代理创建接口的代理对象2.没有接口的情况,使用CGLIB动态代理创建当前类的子类的代理对象AOP(术语)1.连接点:一个类中可以被增强的方法,这些方法成为连接点
2022-01-11 22:35:23 187
原创 【Spring笔记-4】IOC操作bean管理--基于注解
1.Spring针对Bean管理中的创建对象提供注解1.@Component2.@Service (一般用于service层)3.@Controller(一般用于web层)4.@Repository(一般用于dao层)上面的四个注解功能是一样的,可以混用步骤:1.引入依赖2.开启组件扫描<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/
2022-01-11 18:28:38 138 1
原创 【Spring笔记3】
1.工厂bean(FactoryBean)在Spring中存在两种类型的bean,一种是我们自己创建的普通类型bean,另一种是工厂bean① 普通类型bean:在配置文件中,class属性中定义的bean类型就是返回的类型② 工厂bean:在配置文件中,class属性定义的bean类型可以于返回类型不同 1.创建一个类,实现FactoryBean接口 2.实现接口中的方法,在实现的方法中定义返回的类型public class myBean impl...
2022-01-10 21:23:09 1949
原创 【Spring笔记2】XML文件实现IOC操作bean管理
1.什么是bean管理(指的是两个操作)①.Spring创建对象②.Spring注入属性DI:依赖注入:就是注入属性,是IOC中的一种具体实现两种注入属性的方式 1.使用set方法注入<!--创建对象并注入属性--><!--常用的属性id:唯一的标识class:创建对象所在类的全路径name:作用与id相同,但是可以加特殊符号(目前使用不多)创建对象的时候,默认使用无参的构造方法完成对象的创建--><bean id="bo...
2022-01-09 23:19:35 164
原创 【踩坑笔记】解决Java操作MySQL8版本中与Batch相关的操作
亲测有效!!!!搞了1个小时终于弄好了,如果有不对的地方请指出,防止带偏大家我们在使用java操作数据库,,如果使用的MySQL版本为8(此处以8.0.27为例),可能会出现的问题1.驱动,使用java连接MySQL8.0.27需要下载下面的驱动下载mysql-connector-java-8.0.11.jarhttps://dev.mysql.com/downloads/file/?id=4770582.java连接数据库(连接的数据库名为test,若数据库名称不同自行在url中进项修改)
2021-12-31 15:10:33 1562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人