![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
微服务核心:SSM+SpringBoot2+设计模式+MQ
文章平均质量分 80
微服务核心:Spring5+SpringMVC+MyBatis+MyBatisPlus+SSM整合+SpringBoot2
前丨尘忆·梦
接受自己的不完美,我从来没有优秀过,也从来不曾放弃过!
展开
-
JUC基础
JUC,Java高并发原创 2022-10-23 12:17:17 · 639 阅读 · 1 评论 -
RabbitMQ:发布确认高级+其他知识点
文章目录1、发布确认高级1.1、发布确认SpringBoot版本1.1.1、确认机制方案1.1.2、代码架构图1.1.3、配置文件1.1.4、配置类1.1.5、生产者1.1.6、回调接口1.1.7、消费者1.1.8、结果分析1.2、回退消息1.2.1、Mandatory 参数1.3、备份交换机1.3.1、代码架构图2、RabbitMQ其他知识点2.1、幂等性2.1.1、消息重复消费2.1.2、解决思路2.1.3、消费端的幂等性保障2.1.4、唯一ID+指纹码机制2.1.5、Redis原子性2.2、优先级队列原创 2022-04-29 14:49:09 · 413 阅读 · 0 评论 -
RabbitMQ:死信队列+延迟队列
文章目录1、死信队列1.1、概念1.2、死信的来源1.3、死信实战1.3.1、消息TTL过期1.3.2、队列达到最大长度1.3.3、消息被拒2、延迟队列2.1、概念2.2、延迟队列使用场景2.3、整合SpringBoot2.3.1、添加依赖2.3.2、修改配置文件2.3.3、添加Swagger配置类2.4、队列TTL2.4.1、配置文件类2.4.2、消息生产者2.4.3、消息消费者2.5、延时队列优化2.6、RabbitMQ插件实现延迟队列2.6.1、安装延时队列插件2.6.2、实战1、死信队列1.1、原创 2022-04-28 21:16:59 · 1897 阅读 · 0 评论 -
RabbitMQ:发布确认+交换机
文章目录1、发布确认1.1、发布确认原理1.2、发布确认的策略1.2.1、开启发布确认的方法1.2.2、单个确认发布1.2.3、批量确认发布1.2.4、异步确认发布如何处理异步未确认的消息?1.2.5、以上3种发布确认速度对比2、交换机2.1、Exchanges2.1.1、概念2.1.2、Exchanges的类型2.1.3、无名Exchange2.2、临时队列2.3、绑定(bindings)2.4、Fanout2.4.1、简介2.4.2、实战2.5、Direct Exchange2.5.1、介绍2.5.2、原创 2022-04-27 21:26:45 · 1579 阅读 · 0 评论 -
RabbitMQ——Hello World
文章目录1、RabbitMQ四个核心概念1.1、四大核心概念1.2、各个名词介绍1.3、安装2、Hello World2.1、依赖2.2、消息生产者1、RabbitMQ四个核心概念RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是一个快递站,一个快递员帮你传递快件。 RabbitMQ 与快递站的主要区别在于,它不处理快件而是接收,存储和转发消息数据。1.原创 2022-04-25 21:38:26 · 376 阅读 · 0 评论 -
设计模式——行为型模式
文章目录1、迭代器模式介绍实现步骤 1步骤 2步骤 32、模板模式介绍实现步骤 1步骤 2步骤 33、策略模式介绍实现步骤 1步骤 2步骤 3步骤 44、命令模式介绍实现步骤 1步骤 2步骤 3步骤 4步骤 55、状态模式介绍实现步骤 1步骤 2步骤 3步骤 46、责任链模式介绍实现步骤 1步骤 2步骤 37、备忘录模式介绍实现步骤 1步骤 2步骤 3步骤 48、观察者模式介绍实现步骤 1步骤 2步骤 3步骤 49、访问者模式介绍实现步骤 1步骤 2步骤 3步骤 4步骤 510、中介者模式介绍实现步骤 1步原创 2022-04-25 10:37:37 · 257 阅读 · 0 评论 -
设计模式——结构型模式
文章目录1、适配器模式介绍实现步骤 1步骤 2步骤 3步骤 4步骤 52、组合模型介绍实现步骤 1步骤 23、装饰器模式介绍实现步骤 1步骤 2步骤 3步骤 4步骤 54、代理模式介绍实现步骤 1步骤 2步骤 35、享元模式介绍实现步骤 1步骤 2步骤 3步骤 46、外观模式介绍实现步骤 1步骤 2步骤 3步骤 47、桥接模式介绍实现步骤 1步骤 2步骤 3步骤 4步骤 51、适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合原创 2022-04-24 17:12:49 · 362 阅读 · 0 评论 -
设计模式——创建型模式
文章目录1、单例模式介绍实现步骤1步骤2单例模式的几种实现方式1、懒汉式,线程不安全2、懒汉式,线程安全3、饿汉式4、双检锁/双重校验锁(DCL,即 double-checked locking)5、登记式/静态内部类6、枚举2、工厂模式介绍实现步骤 1步骤 2步骤 3步骤 43、抽象工厂介绍实现步骤 1步骤 2步骤 3步骤 4步骤 5步骤 6步骤 7步骤 84、建造者模式介绍实现步骤 1步骤 2步骤 3步骤 4步骤 5步骤 6步骤 75、原型模型介绍实现步骤 1步骤 2步骤 3步骤 41、单例模式单例原创 2022-04-24 15:44:06 · 505 阅读 · 0 评论 -
SpringBoot——Junit5单元测试
文章目录1、JUnit5常用注解2、断言(assertions)2.1、简单断言2.2、数组断言2.3、组合断言2.4、异常断言2.5、超时断言2.6、快速失败3、前置条件(assumptions)4、嵌套测试5、参数化测试<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId>原创 2022-04-23 16:03:29 · 287 阅读 · 0 评论 -
SpringBoot——Web开发
文章目录1、SpringMVC自动配置概览2、简单功能分析2.1、静态资源访问2.1.1、静态资源目录2.1.2、静态资源访问前缀2.1.3、静态资源目录2.1.4、webjar2.2、欢迎页支持2.3、自定义 Favicon2.4、静态资源配置原理3、请求参数处理3.1、请求映射3.1.1、Rest使用与原理3.1.2、请求映射原理3.2、普通参数与基本注解3.2.1、注解1、SpringMVC自动配置概览https://docs.spring.io/spring-boot/docs/current/原创 2022-04-09 20:58:36 · 2161 阅读 · 0 评论 -
SpringBoot——配置文件
文章目录1、文件类型1.1、properties1.2、yaml1.2.1、简介1.2.2、基本语法1.2.3、数据类型1.2.4、示例2、配置提示1、文件类型1.1、properties同以前的properties用法。1.2、yaml1.2.1、简介YAML 是 “YAML Ain’t Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。非常适合原创 2022-04-09 11:30:12 · 121 阅读 · 0 评论 -
SpringBoot2——入门案例
文章目录1、系统要求1.1、maven设置2、HelloWorld2.1、创建maven工程2.2、引入依赖2.3、创建主程序2.4、编写业务2.5、测试2.6、简化配置2.7、简化部署1、系统要求Java 8 & 兼容 Java14Maven 3.3+idea1.1、maven设置镜像下载、项目编译jdk1.8<mirrors> <mirror> <id>nexus-aliyun</id>原创 2022-04-06 16:50:14 · 143 阅读 · 0 评论 -
SpringBoot2——了解自动配置原理
文章目录1、SpringBoot特点1.1、依赖管理开发导入starter场景启动器1.2、自动配置2、容器功能2.1、组件添加2.1.1、@Configuration1、SpringBoot特点1.1、依赖管理我们查看一下 pom.xml 文件中的项目依赖情况:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-par原创 2022-04-06 21:18:56 · 981 阅读 · 0 评论 -
算法设计与分析学习笔记之——算法引论
算法引论1、算法与程序通俗地来讲,算法是指解决问题的方法或过程。严格地来将,算法是满足以下性质的指令序列:输入:有零个或多个外部量作为算法的输入。输出:算法产生至少一个量作为输出。确定性:组成算法的每条指令是清晰的、无歧义的。有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。程序与算法有所不同。程序是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质(4)即有限性。例如操作系统,它是在无限的循环中执行的程序,因而不是算法。2、表达算法的抽象机制算法从非形式的自然原创 2020-09-19 16:53:07 · 871 阅读 · 1 评论 -
字节编码过滤器 CharacterEncodingFilter
字节编码过滤器 CharacterEncodingFilter文章目录字节编码过滤器 CharacterEncodingFilter1、CharacterEncodingFilter 的用法2、CharacterEncodingFilter 原理是 spring 内置过滤器的一种,用来指定请求或者响应的编码格式。在 web 开发中经常被从来使用。1、CharacterEncodingFilter 的用法<filter> <filter-name>CharacterEnco原创 2022-03-02 10:42:29 · 617 阅读 · 0 评论 -
HiddenHttpMethodFilter
HiddenHttpMethodFilter浏览器 form 表单只支持 GET 与 POST 请求,而 DELETE、PUT 等 method 并不支持,spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求,该过滤器为 HiddenHttpMethodFilter。HiddenHttpMethodFilter 的父类是 OncePerRequestFilter,它继承了父类的 doFilterInternal()原创 2022-03-02 10:54:48 · 682 阅读 · 0 评论 -
springMVC 请求响应流程
springMVC 请求响应流程文章目录springMVC 请求响应流程1、总体流程2、DispatcherServlet3、HandlerInterceptor 拦截器4、HandlerExceptionResolver 异常处理5、HandlerMethodArgumentResolver 参数解析器6、HandlerMethodReturnValueHandler 返回值解析器1、总体流程工作流程描述如下:用户向服务器发送请求,请求被 Spring 前端控制器 DispatcherSer原创 2022-03-02 10:24:15 · 437 阅读 · 0 评论 -
spring 配置文件 sqlSessionFactory
spring 配置文件 sqlSessionFactory文章目录spring 配置文件 sqlSessionFactory1、sqlSessionFactory 继承关系2、buildSqlSessionFactory 方法1、sqlSessionFactory 继承关系[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IBe4IAYv-1646191461215)(素材/sqlSessionFactory继承关系.png)]继承的接口:InitializingB原创 2022-03-02 11:24:45 · 1632 阅读 · 0 评论 -
web.xml配置——<context-param>
<context-param>1、格式定义<context-param> <param-name>contextConfigLocation</param-name> <param-value>contextConfigLocationValue</param-value></context-param>作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。param-name:设定上下文的原创 2022-03-02 09:22:33 · 1304 阅读 · 0 评论 -
SSM整合——查询功能
查询文章目录查询1、思路整理2、分页后台代码实现3、使用 Spring 单元测试测试分页查询4、搭建 BootStrap 分页页面5、显示分页数据6、返回分页的 JSON 数据1、思路整理访问 index.jsp 页面index.jsp 页面发送出查询员工列表请求EmployeeController 来接收请求,查出员工数据来到 list.jsp 页面进行展示URI:/emps2、分页后台代码实现在 index.jsp 开头引入 /emps 的请求:<jsp:forwar原创 2022-03-02 17:24:54 · 2503 阅读 · 0 评论 -
SSM整合——环境搭建
环境搭建1、功能点分页数据校验jquery 前端校验 + JSR303 后端校验ajaxRest 风格的 URI;使用 HTTP 协议请求方式的动词,来表示对资源的操作(GET:查询,POST:新增,PUT:修改,DELETE:删除)2、技术点基础框架——SSM(SpringMVC + Spring + MyBatis)数据库——MySQL前端框架——bootstrap 快速搭建简洁美观的界面项目依赖管理——Maven分页——pagehelper逆向工程——原创 2022-02-25 10:44:57 · 954 阅读 · 0 评论 -
SSM整合——修改
修改文章目录修改1、思路2、创建员工修改模态框3、回显员工信息4、Ajax 发送 PUT 请求更新1、思路点击编辑弹出用户修改的模态框(显示用户信息)点击更新,完成修改2、创建员工修改模态框把查询部门信息改为一个方法://查出所有部门信息并显示在下拉列表中function getDepts(ele) { //清空之前下拉列表的值 $(ele).empty(); $.ajax({ url:"${APP_PATH}/depts",原创 2022-03-04 11:30:27 · 508 阅读 · 0 评论 -
SSM整合——新增
新增文章目录新增1、思路2、Ajax 显示部门信息2、新增基本完成3、jquery 前端校验完成4、校验信息显示优化5、Ajax 校验用户名是否重复1、思路在 index.jsp 页面点击 “新增”弹出新增对话框去数据库查询部门信息,显示在对话框用户输入数据,并进行校验完成保存2、Ajax 显示部门信息<div class="modal fade" id="empAddModel" tabindex="-1" role="dialog" aria-labelledby="myM原创 2022-03-03 17:03:49 · 775 阅读 · 0 评论 -
SSM整合——总结
同时使用 maven 提供依赖管理和构建。原创 2022-03-04 15:53:38 · 157 阅读 · 0 评论 -
SSM整合——删除
删除文章目录删除1、思路2、删除单一员工3、批量删除3.1、全选、全不选3.2、删除功能完成1、思路单个删除URI:/emp/{id} DELETE2、删除单一员工//单个删除$(document).on("click", ".delete_btn", function (){ //1、弹出是否确认删除对话框 //alert($(this).parents("tr").find("td:eq(1)").text()); va原创 2022-03-04 13:11:40 · 425 阅读 · 0 评论 -
MyBatisPlus——插件
文章目录1、分页插件1.1、添加配置1.2、测试2、xml自定义分页2.1、UserMapper中定义接口方法2.2、UserMapper.xml中编写SQL2.3、测试3、乐观锁3.1、场景3.2、乐观锁与悲观锁3.3、模拟冲突3.4、乐观锁实现流程3.5、Mybatis-Plus实现乐观锁1、分页插件MyBatisPlus自带分页插件,只要简单的配置即可实现分页功能。1.1、添加配置在MybatisSqlSessionFactoryBean类中添加:<!--配置插件--><原创 2022-03-27 18:01:31 · 282 阅读 · 0 评论 -
MyBatisPlus——常用注解
文章目录1、@TableName1.1、问题1.2、通过@TableName解决问题1.3、通过GlobalConfig解决问题2、@TableId2.1、问题2.2、通过@TableId解决问题2.3、@TableId的value属性2.4、@TableId的type属性3、@TableField3.1、情况13.2、情况24、@TableLogic4.1、逻辑删除4.2、实现逻辑删除1、@TableName经过以上的测试,在使用MyBatis-Plus实现基本的CRUD时,我们并没有指定要操作的表,原创 2022-03-27 15:32:06 · 2996 阅读 · 0 评论 -
MyBatisPlus——条件构造器和常用接口
文章目录1、wapper介绍2、QueryWrapper2.1、例1:组装查询条件2.2、例2:组装排序条件2.3、例3:组装删除条件2.4、例4:条件的优先级2.5、例5:组装select子句2.6、例6:实现子查询3、UpdateWrapper4、condition思路一:思路二:5、LambdaQueryWrapper6、LambdaUpdateWrapper1、wapper介绍Wrapper : 条件构造抽象类,最顶端父类AbstractWrapper : 用于查询条件封装,生成 sql原创 2022-03-27 16:34:29 · 399 阅读 · 0 评论 -
MyBatisPlus——入门案例
入门案例文章目录入门案例1、创建数据库及表2、创建maven工程3、Spring整合MyBatis3.1、创建实体类3.2、创建MyBatis的核心配置文件3.3、创建mapper接口和映射文件3.4、创建jdbc.properties3.5、创建Spring的配置文件3.6、添加日志功能3.7、测试方式一:通过IOC容器方式二:Spring整合junit结果1、创建数据库及表CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET u原创 2022-03-27 13:33:26 · 1592 阅读 · 0 评论 -
MyBatisPlus——通用枚举
文章目录1、数据库表添加字段sex2、创建通用枚举类型3、配置扫描通用枚举4、测试表中的有些字段值是固定的,例如性别(男或女),此时我们可以使用MyBatis-Plus的通用枚举来实现。1、数据库表添加字段sex[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IKTeZpaq-1648381171986)(素材/增加字段sex.png)]2、创建通用枚举类型@Getterpublic enum SexEnum { MALE(1, "男"), FEM原创 2022-03-27 19:40:14 · 1340 阅读 · 0 评论 -
MyBatisPlus——基本CRUD
文章目录1、BaseMapper2、插入3、删除3.1、通过id删除记录3.2、通过id批量删除记录3.3、通过map条件删除记录4、修改5、查询5.1、根据id查询用户信息5.2、根据多个id查询多个用户信息5.3、通过map条件查询用户信息5.4、查询所有数据6、通用ServiceService CRUD 接口6.1、IService6.2、创建Service接口和实现类6.3、扫描组件6.4、测试查询记录数6.5、测试批量插入1、BaseMapperMyBatis-Plus中的基本CRUD在内置的原创 2022-03-27 14:44:05 · 568 阅读 · 0 评论 -
MyBatis——Sql 映射文件
Sql 映射文件MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。1、增删改的实现首先我们在接口中定义方法:import mybatis.Employee;public interface EmployeeMapper { public Employee getEm原创 2021-12-23 21:17:38 · 1064 阅读 · 0 评论 -
MyBatis——缓存机制
缓存机制文章目录缓存机制1、一级缓存1.1、一级缓存演示MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。缓存可以极大的提升查询效率。MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存。默认情况下,只有一级缓存(SqlSession 级别的缓存,也称为本地缓存)开启;二级缓存需要手动开启和配置,他是基于 namespace 级别的缓存;为了提高扩展性。 MyBatis 定义了缓存接口 Cache。我们可以通过实现 Cache 接口来自定义二级缓存。1、一级原创 2021-12-29 22:36:15 · 895 阅读 · 0 评论 -
MyBatis-Spring-SpringMVC 整合
MyBatis-Spring-SpringMVC 整合文章目录MyBatis-Spring-SpringMVC 整合1、整个 MyBatis 和 Spring:所有的 jar 包导入2、引入 MyBatis 之前的配置:mybatis-config.xml3、SpringMVC 配置文件的编写:spring-servlet.xml4、Spring 配置文件的编写:applicationContext.xml1、整个 MyBatis 和 Spring:所有的 jar 包导入Spring 核心包(IOC)原创 2022-03-01 13:17:34 · 510 阅读 · 0 评论 -
MyBatis——全局配置文件
全局配置文件文章目录全局配置文件1、属性(properties)2、设置(settings)1、属性(properties)这些属性可以在外部进行配置,并可以进行动态替换。例如:我们把数据库连接池的信息提取出来,放入到 jdbc.properties 配置文件当中去:jdbc.driver = com.mysql.jdbc.Driverjdbc.url = jdbc:mysql://10.150.104.5:3306/mybatisjdbc.username = rootjdbc.passw原创 2021-12-21 22:06:01 · 714 阅读 · 0 评论 -
MyBatis——简介
简介1、引言我们之前学习的关于数据库的工具包括:JDBC --> Dbutils(QueryRunner) --> JdbcTemplate:工具但 Spring 中的 JdbcTemplate 也只是一个工具,并不是一个框架(框架:整体解决方案)。执行数据库操作的一般流程如下:缺点为:功能简单;sql 语句编写在 java 代码里面;硬编码高耦合的方式。MyBatis:半自动,轻量级的框架MyBatis 把 SQL 的编写交给配置文件,实现 Sql 与 java 编码分离;原创 2021-12-17 16:46:55 · 715 阅读 · 0 评论 -
MyBatis——动态 sql
动态 sql1、环境搭建先创建一个 EmployeeMapperDynamicSQL 接口:package mybatis.dao;public interface EmployeeMapperDynamicSQL {}创建对应的 EmployeeMapperDynamicSQL.xml 的配置文件:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.or原创 2021-12-28 21:49:47 · 553 阅读 · 0 评论 -
MyBatis——逆向工程
逆向工程1、简介MyBatis Generator:简称 MBG,是一个专门为 MyBatis 框架使用者定制的代码生成器,可以快速的根据表生成对应的映射文件,接口,以及 bean 类。支持基本的增删改查,以及 QBC 风格的条件查询。但是表连接、存储过程等这些复杂的 sql 的定义需要我们手动编写。官方文档地址:https://mybatis.org/generator/2、导包mybatis-generator-core3、MBG 配置文件的编写<generatorConf原创 2022-03-01 15:15:53 · 395 阅读 · 0 评论 -
SpringMVC——@RequestMapping 注解
@RequestMapping 注解文章目录@RequestMapping 注解1、@RequestMapping 注解的功能2、@RequestMapping 注解的位置3、@RequestMapping 注解的 value 属性4、@RequestMapping 注解的 method 属性4.1、@RequestMapping 的派生注解1、@RequestMapping 注解的功能从注解名称上我们可以看到,@RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来,建立映原创 2022-02-21 16:42:38 · 295 阅读 · 0 评论 -
SpringMVC——拦截器
拦截器文章目录拦截器1、拦截器的配置2、拦截器的三个抽象方法3、多个拦截器的执行顺序3.1、源码分析1、拦截器的配置SpringMVC 中的拦截器用于拦截控制器方法的执行SpringMVC 中的拦截器需要实现 HandlerInterceptor<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8">原创 2022-02-23 17:39:40 · 91 阅读 · 0 评论