自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 springdoc文档不显示

二、如何配置都正确的情况下,访问doc.html不显示接口文档,那么在配置文件中添加。一、使用Tag注解,接口文档会显示中文和类名,解决办法:使用@Api(tag)

2024-02-28 17:34:09 408 1

原创 Caused by: org.elasticsearch.action.search.SearchPhaseExecutionException报错解决

kibana报错Kibana server is not ready yet解决

2022-11-11 12:16:50 3207

原创 mac m1使用docker安装zookeeper无法启动

mac m1使用doker安装zookeeper后启动报错

2022-08-23 20:21:26 1148

原创 RabbitMQ在生产中的实际应用

怎么确保消息的可靠性要确保消息的可靠性,主要从这两方面去确认消息成功到达Exchange消息成功到达Queue如果这两步中任一步骤出现问题,那么消息就没有成功送达,此时我们可能要通过重试等方式去重新发送消息,多次重试之后,如果消息还是不能到达,则可能就需要人工介入了。经过上面的分析,我们可以确认,要确保消息成功发送,我们只需要做好三件事就可以了:确认消息到达 Exchange。确认消息到达 Queue。开启定时任务,定时投递那些发送失败的消息。生产者保证消息可靠先来看第一步,确认

2022-04-06 19:38:12 1442

转载 Mac下终端工具iTerm2安装与配置

下载及安装补充一些关于shell的介绍:Mac系统默认使用dash作为终端,但是新的Mac系统已经默认使用zsh.查看方法:可以自行查看系统当前 shell$ cat /etc/shells/bin/bash/bin/csh/bin/dash/bin/ksh/bin/sh/bin/tcsh/bin/zsh以及切换shellchsh -s /bin/zshchsh -s /bin/bash其中,bash的配置文件是 -/.bash_profilezsh的配置文件是-/.zs

2022-01-07 14:16:46 1700

原创 Mac下使用item2建立远程连接

最近工作中经常要给厂商部署我们的服务,而这个过程要经常连接它们的服务,无论是通过堡垒机连接还是vpn,而自己用的是iterm2,所以这里记录下这个工具怎么连接,主要2种方式:机器信息不会变的情况在iterm2中选择profile,然后新建一个profile,在Command这里选择command shell,然后我们找一个目录,建一个sh文件,内容如下#!/usr/bin/expectset PORT 端口号set HOST 地址set USER 用户名set PASSWORD 密码sp

2022-01-07 13:51:40 1382

原创 Postgresql按天、周、月、年统计信息

– 当天select distinct to_char(created_time,‘yyyy-mm-dd’),count(status) from diku_mod_combine_catalogue.task where to_char(created_time,‘dd’)=to_char(CURRENT_DATE,‘dd’)group by to_char(created_time,‘yyyy-mm-dd’)order by to_char(created_time,‘yyyy-mm-dd’)–

2021-08-13 18:01:59 1869 1

原创 java并行流下集合线程安全和线程并发修改问题

最近工作中有个需求是这样的:将postgresql中的字段取出来,这个字段是以jsonb数组存储的,使用java将它转换为JSONArray后,需要将其中每个对象中属性值中包含空字符串的替换为下划线。因为JSONArray实现了List接口,因此直接使用了parallelStream.foreach遍历。看了结果,发现有的属性中包含空字符串的并没有替换成下划线。debug后发现并行环境下,出现了线程安全问题。然后把parallelStream去掉,但是因为在遍历过程中对集合进行了remove和add操作

2021-07-29 16:47:48 837

原创 spring bean的循环依赖

spring注入模型按照spring的官网介绍:DI exists in two major variants: Constructor-based dependency injection and Setter-based dependency injection.意思就是依赖注入有两种主要的变体:基于构造函数的依赖注入和基于setter方法的依赖注入而在spring中,注入模型有以下4种,源码在AutowireCapableBeanFactory中/** * Constant that

2021-07-16 15:45:54 106

原创 spring bean的生命周期

单例池spring容器:spring中各种组件组合在一起的,是一个抽象的概念而我们获取的bean是从单例池中获取的,单例池也是spring容器的一部分,这个单例池是singleObjects,它是一个map在前面说spring容器的扫描原理的时候,我们知道,当执行完refresh方法中的invokeBeanFactoryPostProcessors(beanFactory);后,会将bean扫描进容器bdmp中。测试环境现在有两个测试类A和B,它们都加了注解@Componentpublic

2021-07-12 10:13:03 141

原创 spring容器扫描原理

深入解析invokeBeanFactoryPostProcessors方法前面简单说了invokeBeanFactoryPostProcessors方法,现在来彻底搞懂这个方法。实现子类BeanDefinitionRegistryPostProcessor的执行时机首先有一个A类,,它实现了BeanDefinitionRegistryPostProcessor这个接口:@Componentpublic class A implements BeanDefinitionRegistryPostPro

2021-07-08 16:02:43 494 1

原创 bean的基石beanDefinition

什么是Spring框架Spring是一个轻量级的开发框架,旨在提高开发人员的开发效率以及系统的可维护性。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML配置,基于注解的配置,基于Java的配置。Spring的7个模块Spring Core:核心类库,提供IOC服务Spring Context:提供框架式的Bean访问方式,以及企业级功能;Spring AOP:AOP服务Spring DAO:对JD

2021-07-08 15:54:43 95

原创 apm中关于类加载器(Tomcat和json)的坑

在开发apm链路追踪项目的时候遇到一些坑,比如采集http应用性能时找不到目标类httpservlet,使用fastjson输出出现类加载器的问题。在Tomcat类加载模型中,AppClassLoader下还有commonclassloader,它下面又有webclassloader,子类加载器可以访问父类,而父类是不能访问子类的,所以当出现父类加载器加载的类去访问子类加载器加载的类的时候就会报错出现这种问题的解决办法之一就是将子类加载器中的类打包到父类加载器模块中,比如父类加载器中加载的类访问不到j

2021-06-22 16:00:58 139

原创 使用runners来检查当前是否运行junit测试类

在项目中编写单元测试类的时候,很多地方需要用到token,而这个token是启动web项目才会生成的。所以为了动态获取token,就编写了一个http工具类来根据写死的url地址注入bean来生成,但是这样就会导致每次启动web项目的时候都会去执行,而我想要的是只在测试的时候去解析。那怎么办呢?就是根据线程堆栈信息来判断当前是否存在junit这条线程,如果存在,那么再执行解析方法。public static boolean isRunningTest() { StackTraceElem

2021-04-13 10:27:41 220

原创 Rabbitmq报错:无限循环以及Payload value must not be empty

进入使用rabbitmq实现延迟队列的时候,报了两个错:1.无限循环抛出以下异常Caused by: org.springframework.amqp.AmqpException: No method found for class [B原因是@RabbitListener不能修饰类,但是以前在实现简单模式的时候是可以的,解决办法就是将它放在方法上。2.报错:Payload value must not be empty查百度后是说在方法参数前面加上@Payload注解。...

2021-04-12 14:16:21 2437

原创 nginx线上排查错误:open() “/usr/share/nginx/html/xxx failed以及no live upstreams while connecting to upstream

因为做了一个秒杀的项目,所以需要使用jmeter压测,请求是50000个,如果是单击压测的话会出现很多error,原因就是单机的负载是有限的。所以使用nginx来做负载均衡,将请求转发到多个服务上。但是压测的时候发现仍然出现很多错误,这就很不正常了,进入nginx目录下的logs目录,查出error.log文件,其中出现了大量如下从错误日志:一、2021/04/02 09:19:25 [error] 22#22: *249 open() "/usr/share/nginx/html/seckill/d

2021-04-07 11:28:52 8069

原创 dubbo学习笔记(8):注册中心源码剖析

核心流程前面在服务暴露与引用分析的时候,我们是基于直连的方式,没有使用注册中心,这就需要将url写死,这显然不符合我们的实际开发。实际开发中,rpc的核心流程应该是这样的:代理协议有了注册中心后,就引出了RegistryProtocol这个概念,它继承了Protocol,但是它并不具备远程通信的能力,所以在它内部代理了一个Protocol,所以它是一个代理协议。通过下图来看看它和注册中心,DubboProtocol的关系此时的url就类似于下面这种"zookeeper://192.168.6

2021-03-28 23:12:10 253 1

原创 dubbo学习笔记(7):服务暴露与引用

功能架构首先通过一张图来了解整个功能架构下面是rpc的核心流程服务暴露首先分析服务暴露的过程,通过源码来理解通过协议的方式来暴露服务: String urlText="dubbo://127.0.0.1:20880/cxylk.dubbo.UserService?timeout=6000"; // 暴露服务测试 @Test public void exportTest() throws IOException, IOException { Dub

2021-03-28 23:01:44 271

原创 dubbo学习笔记(6):dubbo服务治理

控制后台监控中心搭建dubbo-admin就是后台服务,不过这里使用旧版本,也就是2.6以前的。它包括:控制后台,监控中心,简单注册中心。而新版的话是控制后台,控制后台包含了服务节点和前台,采用了前后端分离,但是不太稳定。下载:目前是到github上的dubbo-admin模块下载分支0.2.0的代码下载完后进入dubbo-monitor-simple目录,使用以下命令打包:mvn clean -Dmaven.test.skip=true package打包之后会生成一个target目录,在该

2021-03-28 22:44:57 112

原创 dubbo学习笔记(5):远程传输协议和序列化

RPC协议在一个典型的RPC使用场景中,包含了服务发现、负载、容错、网络传输、序列化等组件,其中RPC协议就指明了程序如何进行网络传输和序列化。也就是说一个RPC协议的实现就等于一个非透明的远程调用实现。通过下面一张图来理解:RPC协议组成分别说下每个部分的作用:1.地址:服务提供者的地址和端口2.运行服务:用于网络传输实现,常用的服务有:nettyminaRMI服务servlet容器(jetty、Tomcat、Jboss)3.报文编码:协议报文编码,分为请求头和请求体两部分

2021-03-20 17:55:30 655

原创 mybatis学习笔记(2):一级缓存

一级缓存一级缓存是在执行器BaseExecutor中实现的。具体的来说就是PerpetualCache,它的缓存功能依靠一个HashMap实现。为什么这里不用线程安全ConCurrentHashMap呢?因为SqlSession和Executor本来就不是跨线程的,这里用ConCurrentHashMap也是多此一举。public class PerpetualCache implements Cache { private final String id; private Map<

2021-03-20 17:48:04 207

原创 实现InitializingBean接口并且在重写方法中无法使用ConCurrentHashMap

由于需要做一个抢单业务,所以想在SpringBoot初始化完成后把未被抢单的任务查出来,然后通过一个本地缓存标记来判断当前任务是否被抢,如果被抢,就不去交互数据库。这里的本地缓存使用ConcurrentHashMap实现,当前类实现InitializingBean接口,并且重写afterPropertiesSet方法,然后在该方法中将数据放入缓存。但是在启动过程中就会报错无法创造当前类的bean,当我把ConcurrentHashMap换成HashMap后就不会报错了,网上搜索也没有答案。但我又想使用Co

2021-03-19 15:17:31 177

原创 mybatis学习笔记(1):Executor执行器

Mybatis执行流程各执行器之间的关系SimpleExecutor简单执行器,也是mybatis默认的执行器CachingExecutorCachingExecutor就是常说的二级缓存,它实现了Executor执行器,然后在内部委托了Executor,这样,它不仅可以使用Executor中的所有方法,还能自己进行扩展,添加自己的功能,这种设计模式就是装饰器模式。public class CachingExecutor implements Executor { private fi

2021-03-18 20:09:00 181

原创 dubbo学习笔记(4):dubbo调用机制和容错策略

先通过一张图来了解大概的关系远程调用机制基本过程:客户端向服务端发送参数,并等待获取结果。如果调用过程出错则需要对异常进行处理。dubbo默认是使用同步调用的,还支持异步调用、并行调用、广播调用。同步调用对远程接口方法调用就属于同步调用。原理:向远程服务端发送参数后,整个线程将会阻塞,知道服务端将结果返回。dubbo远程调用传输是由专门的IO线程(非阻塞)完成的,调用线程把结果传递给IO线程后,会构建一个CompletableFuture,并通过它阻塞当前线程去等待结果返回,当服务端返回结

2021-03-17 17:15:15 803

原创 dubbo学习笔记(3):dubbo负载均衡算法

负载均衡dubbo支持的几种负载均衡算法一共有5种:算法名称配置值随机+权重random轮询+权重roundrobin最短响应short est response最少连接least active一致性哈希consistent hash权重默认为100public interface Constants { ... String WEIGHT_KEY = "weight"; int DEFAULT_WEIGHT = 10

2021-03-09 20:16:16 630

原创 dubbo学习笔记(2):注册中心zookeeper与redis

redis注册中心服务发布/dubbo/{服务名}/providers {提供者url1}: {有效期} {提供者url2}: {有效期}服务订阅/dubbo/{服务名}/consumers {订阅者url1}: {有效期} {订阅者url2}: {有效期}⼀个注册中⼼存储了多个服务、每个服务对应多个提供者和订阅者。每个服务的提供者的URL 作为接⼝map中的⼀个Key,与之对应的value 就是该提供者的有效期。有效期通常只有30 秒,dubbo通过⼀个维护线程,每隔30更新该时间。发布/订

2021-03-09 20:06:32 751

原创 dubbo学习笔记(1):dubbo与springboot集成

配置传递服务端设置超时时间超时时间配置为1000ms,但是睡眠了1110ms,然后启动服务端。客户端不做任何更改,然后启动客服端后访问服务,比如在命令端输入curl命令来访问接口地址。这时服务端并不会报超时异常,但是客服端会报超时异常org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer进入docker启动的zk客户端,进入bin目录,输入zkCli.sh

2021-03-09 19:50:33 122

原创 关于@Autowired无法注入静态字段的问题

由于一个方法被多个类所使用,所以为了重构代码,就该方法单独放在一个类中,那么为了方便调用,这个方法就不可避免的成为静态方法。而在该方法中又需要引入一个service来调用其方法,所以需要注入service方法字段。并且为了能在静态方法中调用,该字段就必须为静态字段但是当使用@Autowired主键注入的时候,就报空指针异常,换@Resource注解注入注解提示该注解不能加在静态字段上。解决办法很简单,新建一个非静态的set方法,然后将@Autowired注解加在方法上就可以了。每天记录一下代码异常。。

2021-03-09 17:36:46 414

原创 Mybatis多表查询字段映射不到实体类属性

今天使用查询语句多表查询的时候,查询字段始终映射不到实体类属性。下面是sql语句。 <select id="searchTaskByUser" resultMap="BaseResultMap"> select t.id,t.name,title,cip,la.name as language,li.name as literatureTypes,publisher,status,salary,insti.username,insti.org,end_task_time from t

2021-03-09 14:56:19 1597 1

原创 swagger日期参数校验不通过的解决办法

如果前端需要传入一个Date类型的参数来查询,比如createdTime,如果按swagger给的日期参数,那么是会报错的。解决办法就是在参数上面加上:@JsonFormat(timezone="GMT+8", pattern="yyyy-MM-dd")比如我的参数是封装在vo里面的,那么就在vo中的日期参数上面就上就好了。...

2021-03-04 10:51:42 1282 1

原创 关于@GetMapping注解不能和@RequestBody注解一起用的问题

前几天犯了一个低级错误,在使用@GetMapping的接口上面使用了@RequestBody注解来传递参数,导致参数校验一直不通过,报RequestBody missing的错误。特此记录下

2021-03-03 16:42:17 1108 1

原创 dubbo连接zookeeper报错Caused by: java.lang.IllegalStateException: zookeeper not connected

今天刚接触的时候使用dubbo连接zookeeper的时候报错,明明服务器开启了zookeeper服务的,最后想到可能是连接超时,所以将timeout属性设置大些 RegistryConfig registryConfig=new RegistryConfig("zookeeper://192.168.63.128:2181"); registryConfig.setTimeout(10000);//设置超时时间 serviceConfig.setRegist

2021-03-02 23:16:14 629

原创 OpenSSL SSL_connect: Connection was reset in connection to github.com:443

使用git push时出现下列错误fatal: unable to access 'https://github.com/likuisuper/Java-Notes.git/': OpenSSL SSL_connect: Connection was reset in connection to github.com:443解决方法git config --global http.sslVerify false

2021-03-01 09:11:44 344

空空如也

空空如也

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

TA关注的人

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