自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 RocketMQ源码系列(二):RocketMQ路由中心NameServer

这篇文章主要讲解RocketMQ路由管理、服务注册及服务发现机制。1、NameServer架构设计消息中间件的设计思路一般是基于主题的订阅发布机制,消息生产者(Producer)发送某一主题的消息到消息服务器,消息服务器负责该消息的持久化存储,消息消费者(Consumer)订阅感兴趣的主题,消息服务器根据订阅信息(路由信息)将消息推送给消费者(push模式)或者消息消费者主动向消息服务器拉取消息(pull模式),从而实现消息生产者与消息消费者的解耦。为了避免因消息服务器的单点故障导致的整个系统瘫痪,通常

2022-03-25 15:42:36 2259

原创 数据结构(一):数组

1、数组1.1、数组定义数组对应的英文是array,是有限个相同类型的变量所组成的有序集合,数组中的每一个变量被称为元素。以整型数组为例,数组的存储形式如下图所示。数组中的 每一个元素也有着自己的下标,只不过这个下标 从0开始,一直到数组长度-1。数组的另一个特点,是在内存中顺序存储, 因此可以很好地实现逻辑上的顺序表。数组在内存中的顺序存储,具体是什么样子呢?内存是由一个个连续的内存单元组成的,每一个内存单元都有自己的地址。在这些内存单元中,有些被其他数据占用了,有些是空闲的。数组中的每

2022-03-24 22:00:17 748

原创 RocketMQ源码系列(一):阅读源码前的准备

1、获取RocketMQ源码由于从GitHub上clone代码太慢,这里是从码云clone的。1.1、源码下载:git clone https://gitee.com/apache/rocketmq.gitIntelliJ IDEA打开源码的步骤:选择自己clone的源码目录,点击OK:源码导入成功后,如下图:执行Maven命令clean install,下载并编译依赖。1.2、源码调试如何在IntelliJ IDEA中启动NameServer、Broker,并编写一个消息发送与消

2022-03-21 14:01:56 2150

原创 【Eureka源码解析-2】eureka-server模块源码解析(一)

【Eureka源码解析-2】eureka-server服务端源码解析1、Netflix Eureka源码项目结构说明2、eureka-server模块源码刨析2.1、build.gradle文件2.2、web.xml文件2.3、启动类EurekaBootStrap解析2.3.1、initEurekaEnvironment()方法解析1、Netflix Eureka源码项目结构说明对核心模块简要说明:(1)eureka-client:这个就是指的eureka的客户端,注册到eureka上面去的一个服务

2021-12-02 15:09:22 419

原创 【Eureka源码解析-1】Eureka入门实战

Eureka源码解析——Eureka入门实战1、Eureka概述2、Eureka单机服务注册与发现的原理3、Eureka入门实战3.1、创建Eureka服务端项目3.1.1、依赖导入3.1.2、EurekaApplication启动类3.1.3、application.yml配置文件3.2、创建Eureka客户端项目(服务提供方)3.2.1、依赖导入3.2.2、ServerAApplication启动类3.2.3、application.yml配置文件3.3、创建Eureka客户端项目(服务消费方)3.3.

2021-11-29 14:14:45 321

原创 分布式系统如何保证接口幂等性解析

分布式系统如何保证接口幂等性解析1、简介2、保证接口幂等性常见方案1、简介接口幂等性,就是说一个接口,多次发起同一个请求,保证接口的结果是准确的。比如,订单系统调用支付系统进行支付,因为网络超时原因,订单系统发起了两次支付请求,因为负载均衡算法落在了不同的机器上,造成一个订单扣款两次,就尴尬了。保证幂等性主要是三点:对于每个请求必须有一个唯一标识。每次处理完请求之后,必须有一个记录标识这个请求处理过了。每次接受请求需要进行判断之前是否处理过。比如一个订单已经支付过了,就已经有了一条流水,如果

2021-11-21 20:05:14 314

原创 Java集合之List集合与核心源码解析

Java集合之List集合1、ArrayList、LinkedList、Vector异同点2、核心源码解析2.1、ArrayList核心源码解析2.1.1、ArrayList数据结构2.1.2、ArrayList的add(E e)方法2.1.3、ArrayList的get(int index)方法2.1.4、ArrayList的remove(int index)方法2.1.5、ArrayList的set(int index, E element)方法2.2、LinkedList核心源码解析2.2.1、数据结

2021-11-08 20:02:39 265

原创 SpringBoot项目中验证框架Validator完美实现

SpringBoot项目中验证框架Validator完美实现1、简介2、Validator常见注解清单3、校验案例实战3.1、校验实体3.2、校验Cntroller层实现1、简介Spring Boot支持JSR-303验证框架,默认实现是Hibernate Validator,项目中只要在Java Bean上放一些校验注解,就可以实现校验支持,杜绝通篇 if else 参数判断,而且这个校验是支持group的概念的,对于不同的group生效的校验不一样。这个很有用,因为对于增删改查等不同的操作,需要执行

2021-10-30 19:48:46 538

原创 Spring Boot项目中@Async注解实现方法的异步调用

Spring Boot项目中@Async注解实现方法的异步调用1、简介2、@Async实战2.1、定义AsyncController.java2.2、定义AsyncService.java3、@Async失效问题解决3.1、原因分析3.1、解决方式一3.2、解决方式二4、总结1、简介在公司项目的开发过程中,我们常常会遇到以下一些场景:1、当我们调用第三方接口或者方法的时候,我们不需要等待方法返回才去执行其它逻辑,这时如果响应时间过长,就会极大的影响程序的执行效率。所以这时就需要使用异步方法来并行执行我

2021-10-18 14:54:54 316

原创 Spring Boot工程中@RestControllerAdvice 统一异常处理

Spring Boot工程中@RestControllerAdvice 统一异常处理1、简介2、@RestControllerAdvice实战2.1、定义响应体结构信息2.2、定义返回值和对应code的信息1、简介互联网公司中,后端通常都会拆分成多个独立的微服务,这时候就会涉及每个服务返回给前端的数据格式不统一问题。下面就来实现一个比较常用的数据格式,统一所有服务的返回值格式。一般响应的数据格式包括如下几个部分:{ "code": 200,//响应编码 "message": "SUC

2021-10-18 10:36:14 506

原创 Java8之Optional理解

Java8之Optional理解1、简介2、Optional中方法说明3、Optional方法使用3.1、Optional对象创建3.2、Optional.get()方法(返回对象的值)3.3、Optional.isPresent()方法(判读是否为空)3.4、Optional.filter()方法(过滤对象)3.5、Optional.map()、flatMap()方法(对象进行二次包装)1、简介Optional 类是 Java 8 引入的一个很有趣的特性。Optional 类主要解决的问题是臭名昭著

2021-10-14 14:12:24 342

原创 Java8 Stream之筛选、归约、分组、聚合

JAVA 8新特性之OPTIONAL2、RabbitMQ的工作原理3、Spring整合RibbitMQ3.1、搭建SpringBoot环境(依赖导入)3.2、配置application.yml3.3、 配置RabbitConfig1、Optional 类是 Java 8 引入的一个很有趣的特性。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) 。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。2、在 J

2021-10-11 16:26:28 231

原创 SpringBoot配置文件中数据库密码加密

SpringBoot配置文件中数据库密码加密1、jasypt 加解密1.1、pom.xml依赖导入1.2、application.yml配置文件编写1.3、生成加密后的密匙测试用例1.4、数据源配置文件修改SpringBoot项目经常将连接数据库的密码明文放在配置文件里,安全性就比较低一些,尤其在一些企业对安全性要求很高,因此我们就考虑如何对密码进行加密。1、jasypt 加解密jasypt 是一个简单易用的加解密Java库,可以快速集成到 Spring Boot 项目中,并提供了自动配置,使用非常简

2021-09-28 19:18:29 413

原创 Springboot 整合elasticsearch 7.x

Springboot 整合elasticsearch 7.x1、依赖导入pom.xml2、编写application.yml配置文件3、创建ES对应的实体对象编写ElasticRepository接口插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入1、依赖导入pom.xml<?xm

2021-09-28 11:10:59 1715

转载 maven-assembly-plugin的使用详解

maven-assembly-plugin的使用详解1、maven 打包方式2、maven-assembly-plugin打包详解1、maven 打包方式maven-jar-plugin,默认的打包插件,用来打普通的project JAR包maven-jar-plugin,默认的打包插件,用来打普通的project JAR包maven-shade-plugin,用来打可执行JAR包,也就是所谓的fat JAR包maven-assembly-plugin,支持自定义的打包结构,也可以定制依赖项等

2021-07-05 18:14:31 8129 1

原创 LINUX中安装Nginx教程

LINUX中安装Nginx教程1、 去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3.、安装依赖环境4、解压,需要注意,解压后得到的是源码,源码需要编译后才能安装5、编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错6、在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件7、make编译8、安装9、进入sbin目录启动nginx10、 打开浏览器,访问虚拟机所处内网ip即可打开nginx默认

2020-12-24 14:24:30 101

原创 SpringBoot整合Mybatis-plus入门

SpringBoot整合Mybatis-plus入门1、简介2、Mybatis-plus特性3、SpringBoot整合Mybatis-plus3.1 导入依赖3.2 编写application.properties文件3.3 创建表3.4 创建实体对象3.5 编写UserMapper3.6 编写SpringBoot启动类3.7 测试4、BaseMapper 的CRUD操作4.1 插入数据4.2 ...

2020-05-01 14:49:44 512

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除