自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 7min到40s:SpringBoot启动优化实践

然后重点排查这些阶段的代码。先看下。

2023-03-15 21:24:54 341

原创 SpringBoot2.x下使用log4j2打印JSON日志(支持ELK机制)

文章目录1. pom依赖1.1 替换日志依赖1.2 项目需要Jackson包,保证项目中包含jackson的依赖2. 修改代码2.1 打印pv日志类2.1.1 修改配置文件2.1.2 修改输出代码2.2 打印业务日志2.3 打印error日志3. 附录代码附录1:输出项目名称附录2:重写Log4jLogEvent源码附录3:完整的log4j2-spring.xml文件4. 推荐阅读默认情况下SpringBoot2.x采用的是logback打印日志,而log4j2性能优于logback。默认情况下log

2021-06-08 14:06:50 1837

原创 google的Guava Cache的使用(超详细)

文章目录1. 引入依赖2. 常用API2.1 创建缓存2.1.1 创建LoadingCache缓存2.1.2 创建Cache缓存2.2 创建缓存时的API2.2.1 基于大小的数据移除2.2.2 基于时间的数据移除2.2.3 基于引用的回收2.2.4 removalListener移除缓存时的监听2.2.5 recordStats开启统计功能2.3 操作缓存的API2.3.1 显式移除缓存2.3.2 维护缓存的API官方文档1. 引入依赖<dependency> <groupI

2021-06-03 11:54:31 7038 2

原创 es(4)—查询条件match和term

文章目录1. match和term的区别2. 实战分析2.1 数据准备2.2 倒排索引存储的值2.3 使用term查询text类型(不推荐)2.4 term查询keyword等类型的数据2.4 match查询text类型2.4 match的and操作2.5 match查询keyword类型3. match的底层转换在es的复杂查询中,比较常用的查询条件就是match和term了。那么他们有什么区别呢?1. match和term的区别match会进行分词,将分词后的field去倒排索引寻找文档;

2021-04-20 21:30:01 3249

原创 【RabbitMQ-9】@RabbitListener注解生效的源码分析

文章目录1. 读取注解配置1.1 后置处理器的核心方法1.2 读取注解信息2. 创建消费者线程2.1 创建MethodRabbitListenerEndpoint2.2 端点的注册2.3 监听容器的创建2.4 监听容器的启动2.5 总结3. 为什么将SimpleMessageListenerContainer对象加入到Spring容器便可以监听队列?为何配置@RabbitListener注解,对应的方法便可以消费MQ的消息?核心思想:读取注解的配置;根据配置去监听queue的信息(即创建消费者线

2020-11-19 16:01:39 1393

原创 一样的httpclient,不一样的解读

文章目录序1. HttpClient连接池分析1.1 MaxTotal和DefaultMaxPerRoute的区别2. SpringBoot集成HttpClient2.1 超时时间设置2.2 KeepAliveStrategy策略2.3 Connection eviction policy(连接逐出策略)2.4 HttpClient的重试机制2.5 设置个性化的请求参数2.6 HttpClient响应数据处理2.7 请求工具类附录:文章参考1. 官方文档2. 相关博客JAVA && Sp

2020-11-06 16:12:46 1156 1

原创 RabbitMQ消息确定机制(自动ACK和手动ACK)

文章目录1. 消息确定机制及其配置2. 自动确认和手动确认细节2.1 测试代码配置2.2 自动确认2.3 手动确认2.3.1 常用API2.3.2 代码案例3. 消息重回队列3.1 默认—消息nack后重回队头3.2 解决方案—消息重发送到队尾3.3 如何处理异常消息推荐阅读1. 消息确定机制及其配置RabbitMq消费者的消息确定机制:NONE:无应答,rabbitmq默认consumer正确处理所有请求。AUTO:consumer自动应答,处理成功(注意:此处的成功确认是没有发生异常)发出ac

2020-11-06 11:07:26 22862 1

原创 nginx(3)—访问静态文件

通过nginx可以将服务器的文件和目录对外暴露。1. 访问一个文件server { listen 80; server_name file.one.cn; access_log /Users/xiaoming/Documents/nginxlog/file.log main; error_log /Users/xiaoming/Documents/nginxlog/file-error.log debug_http;.

2020-08-21 10:54:03 242

原创 nginx(2)-到nginx请求如何映射url

文章目录1. nginx的常用命令:2. nginx实现路由的配置3. proxy_pass配置3.1 proxy_pass后有路径3.2 proxy_pass只是ip:端口1. nginx的常用命令:判断nginx的安装位置:whereis nginx;判断是否启动nginx:ps -ef|grep nginx;判断nginx是否是80端口:lsof -i 80;到达nginx的bin目录:cd /usr/local/nginx/sbin:4.1 启动nginx:nginx;4.2 关闭n

2020-08-19 17:07:58 492

原创 Java agent从0到1的踩坑过程

文章目录1. java agent技术简介2. Agent案例2.1 最简单的Agent案例2.1.1 代码2.1.2 打包方式2.1.3 生成jar包时,需要注意编译的JDK版本。2.2 复杂的Agent案例2.2.1 配置启动项2.2.2 生成jar包3. 推荐阅读1. java agent技术简介在JDK1.5之后,可以使用agent技术构建一个独立于应用程序的代理程序(即Agent)。可以用来协助监测、运行甚至替换其他JVM上的程序。使用它可以实现虚拟机级别的AOP功能。2. Agent案例

2020-08-17 17:38:35 520

原创 【SpringBoot2.x-3】使用Redis的bitmap实现布隆过滤器(Guava中BF算法)

1. 布隆过滤器1.1 布隆过滤器设计思想布隆过滤器(Bloom Filter,下文简称BF)是专门用来检测集合中是否存在特定元素的数据结构。它是由长度为m比特的位数组和k个哈希函数组成的数据结构。位数组均初始化为0,哈希函数可以将输入数据尽量的均匀散列。当插入一个元素时,将元素数据分别输入到k个哈希函数,产生k个哈希值。以k个哈希值作为位数组的下标,将其值置为1.当查询一个元素是否存在,将元素映射为k个哈希值,判断数组中各个哈希值对应值是否为1,若均为1,那么表示该元素很可能在集合中。为什

2020-08-12 14:26:11 1429

原创 【RabbitMQ-9】动态上线下线Consumer

若实现动态的上线下线Consumer,那么就不能使用@RabbitListener方式去声明消费者。1. 设计理念代码中只会存在一个监听类(这个类可以为每一个queue新增一个监听对象),动态的上线下线Consumer,本质上是将Queue加监听对象中。通过http通信来只能修改一台机器,但集群所有机器都要增加Consumer,需要使用广播模式通知到每一台机器。2. 功能实现在【RabbitMQ-8】SpringBoot2.x动态的创建Queue、Exchange、VirtualHost、.

2020-08-10 14:43:42 1922 2

原创 【SpringCloud-1】多个微服务情况下,本地启动服务debug解决方案

若使用SpringCloud微服务进行开发时,会存在多个微服务,这些微服务会注册到Eureka中。但是在本地debug时,需要启动一个本地Eureka服务,将idea启动的服务注册到Eureka服务中,一般我们debug项目是自己开发的项目(可能就是一个姓名),可能会借助其他人的微服务。将其他人的微服务注册到本地的Eureka。这就会导致我们只是debug一个项目。但是要本地启动多个微服务。解决方案:将本地需要debug的项目接入到测试环境的微服务体系中,但不在Eureka中注册(不能防碍测试环境正.

2020-08-10 10:12:20 3884

原创 【RabbitMQ-8】SpringBoot2.x动态的创建Queue、Exchange、VirtualHost、Binding

1 项目启动时,初始化MQ配置因为项目中可能存在多个MQ的连接,所以舍弃了yaml配置MQ的做法,而是在JAVA代码中声明CachingConnectionFactory连接工厂,去配置RabbitAdmin和RabbitTemplate。import com.tellme.entity.RabbitVirtualHost;import lombok.extern.slf4j.Slf4j;import org.springframework.amqp.rabbit.connection.Cachin

2020-08-07 17:37:38 1830 1

原创 【RabbitMQ-7】使用Redis实现分布式双端列表解决RabbitMq顺序消费

消费端要保证消费的顺序性。多个消息可能来源于一台机器,也可能来源于一个集群的多台机器,也可能来源多个集群。消费者如何去保证消息的有效性?可以借助"双端列表"的数据结构实现消息节点的有效性。场景:消息1到达后,直接进行消费;消息2到达后,在消息2的后继指针域中获取到消息1的key,去redis中进行查询:2.1 若消息1不存在,那么证明消息1未达到,消息2存储到Redis;2.2 若消息1存在且状态是已消费,那么消费者消费消息2,并且查询消息2的后继指针,查询消息3是否存在,若消息3存在,那么

2020-08-07 16:05:56 497

原创 【RabbitMQ-6】消费端获取消息(SpringBoot2.0版本)

文章目录1. 消费者ACK的模式1.1 消费者通过推(PUSH)方式获取消息1.1.1 配置RabbitListenerContainerFactory1.1.2 配置@RabbitListener1.1.3 @Payload和@Headers1.1.4 @RabbitListener和 @RabbitHandler1.1.5 序列化方式MessageConverter1.1.6 consumer端的异常处理1.1.7 手动确认-将异常信息放入死信队列1.1.8 保证消息的不丢失1.1.8 保证消息唯一性

2020-08-07 15:56:59 3164

原创 【RabbitMQ-5】-SpringBoot2.x 生产者保证消息不丢失(confirm配置)

文章目录1. 生产者不丢失数据1.1 开启事务模式1.2 confirm模式1.2.1 生产者消息丢失的情况1.2.2 生产者消息发送失败(网络异常)1.2.3 生产者消息发送失败(MQ服务器异常)消息的不丢失,在MQ角度考虑,一般有三种途径:生产者不丢数据MQ服务器不丢数据消费者不丢数据其余的方式是根据业务来说的,比如__消息落库__等等,这篇咱们就研究下MQ的机制。1. 生产者不丢失数据1.1 开启事务模式amqp事务仅仅适用于publish和ack,rabbitmq新增了

2020-08-07 13:51:02 966 2

原创 【RabbitMQ-4】拉模式和推模式

文章目录1. rabbitMQ的推模式和拉模式1.1 实时拉(pull)模式1.2. 批量拉取(pull)消息1. rabbitMQ的推模式和拉模式我们知道,消费者有两种方式从消息中间件获取消息:推模式:消息中间件主动将消息推送给消费者拉模式:消费者主动从消息中间件拉取消息推模式:将消息提前推送给消费者,消费者必须设置一个缓冲区缓存这些消息。好处很明显,消费者总是有一堆在内存中待处理的消息,所以效率高。缺点:是缓冲区可能会溢出。实现推模式:推荐的方式是继承DefaultConsumer基类,也可

2020-08-07 11:47:28 3450

原创 【RabbitMQ-3】连接池的配置

文章目录1. rabbitmq的connection连接池1.1 问题提出1.1.1 Connection对象管理以及性能1.1.2 Channel对象管理以及性能1.2 Spring AMQP线程池配置1.2.1 ConnectionFactory连接工厂1.2.2 消费发送和接收使用不同的Connectionjava NIO是IO的多路复用,Channel连接是TCP的多路复用。那么他们有什么关系呢?NIO是服务器开启一个线程,在内核中使用select()进行轮询管理一些socket,当socke

2020-08-07 11:34:22 3387 2

原创 【RabbitMQ-2】RabbitMQ的并发参数(concurrency和prefetch)

文章目录1. 环境配置2. prefetch属性3. concurrency属性4. prefetch和concurrency属性推荐阅读1. 环境配置版本信息:JDK:8SpringBoot 2.1.3.RELEASERabbitMQ消费端配置spring: rabbitmq: host: localhost port: 5672 username: guest password: guest listener: simple:#

2020-08-07 10:43:22 4981

原创 【RabbitMQ-1】SpringBoot2.x的集成

1. 环境配置环境:JDK8SpringBoot 2.1.3.RELEASE依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>2. 提供者配置配置文件:spring: rabbitmq: ho

2020-08-07 10:37:40 234

原创 【SpringBoot2.x-1】初始化方法汇总

SpringBoot—初始化方法大汇总1. CommandLineRunner、ApplicationRunner接口2. InitializingBean接口3. @PostConstruct接口4. init方法结论:构造器–>自动注入–>PostConstrut–>InitializingBean–>init方法–>CommandLineRunner接...

2019-09-04 18:45:56 1152

原创 Hystrix—请求合并

通常微服务架构中的依赖通过远程调用实现,**而远程调用中最常见的问题就是通信消耗与连接数占用。**在高并发的情况下,因为通信次数的增加,总的通信时间消耗会变得不那个理想。同时,因为对依赖服务线程池资源有限,将出现排队等待与响应延迟的情况。为了优化这两个问题,Hystrix提供了HystrixCollapser来实现请求的合并,以减少通信消耗和线程数的占用。1. 理论1. 请求合并的优点...

2019-09-04 18:26:20 317

原创 【SpringBoot2.x-2】Hystrix项目熔断

单纯的SpringBoot如何整合Hystrix1. SpringBoot如何整合Hystrix1.1 导入maven依赖1.2 配置文件1.3 如何使用2. Hystrix配置2.1 Hystrix配置的优先级2.2 CommandKey和CommandGroup2.3 详细配置2.3.1 Execution推荐阅读1. SpringBoot如何整合Hystrix1.1 导入maven依赖...

2019-09-04 15:46:09 1438

原创 压测工具——Apache JMeter(解压版)安装与使用

压测工具——Apache JMeter(解压版)安装与使用1. 安装2. 创建3. 使用1. 安装下载路径:链接:https://pan.baidu.com/s/1h1dr7sxmIhSol1k4egAHCg提取码:0pvq解压后,双击apache-jmeter-5.0\bin\jmeter.bat,启动项目。2. 创建创建线程组创建HTTP请求的取样器创建响应结...

2019-09-03 10:17:38 602

空空如也

空空如也

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

TA关注的人

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