JAVA
文章平均质量分 76
lzhfdxhxm
这个作者很懒,什么都没留下…
展开
-
Spring Cloud Gateway从注册中心自动注册配置路由信息
Spring Cloud Gateway的请求流程,使用的具体路由信息的匹配。从注册中心自动注册的路由信息的自定义配置,服务id(serviceId)和根路径一样时,报错404原创 2023-01-16 19:46:42 · 3187 阅读 · 0 评论 -
SpringBoot文件上传同时,接收复杂参数
SpringBoot上传文件,如果需要复杂参数(自定义对象接收前端参数),那么需要自定义消息转换器(如AbstractJackson2HttpMessageConverter),来支持contentType值是'application/octet-stream'类型的参数,并将其转换成目标格式;如果不需要复杂参数,只是String等类型,那么不需要自定义消息转换器;消息转换器是SpringBoot处理前端传输的数据,并转换成接口参数的类型的转换器,转换前、转换后还支持自定义插件处理。原创 2022-12-18 17:43:02 · 9249 阅读 · 1 评论 -
NoSuchMethodError、NoClassDefFoundError的常见原因和通用解决方式
java.lang.NoSuchMethodError,类加载机制、maven仲裁机制、Arthas查看运行时类,java.lang.NoClassDefFoundError: Could not initialize class com.xxx,构造方法、类初始化静态数据原创 2022-11-26 12:48:14 · 5557 阅读 · 0 评论 -
Spring Boot自定义注解+AOP,使用guava的RateLimiter实现接口的限流
Spring Boot自定义注解+AOP,使用guava的RateLimiter实现接口的限流。支持通过配置文件设置是否开启限流,限流的大小,以及超时时间原创 2022-07-31 15:49:51 · 1974 阅读 · 1 评论 -
创建文件,如果文件的上级(或上上级等)目录不存在,则先创建上级目录,再创建文件
如果直接使用targetFile.createNewFile();来创建文件,那么在targetFile的上级目录不存在的情况下,会抛出异常。parentFile.mkdirs();的作用是创建嵌套文件夹,因此如果上级目录的上级目录不存在,那么都会被一起创建。...原创 2022-07-19 20:44:05 · 644 阅读 · 0 评论 -
AOP高级特性,Advice Parameters,在拦截方法里配置参数、自定义注解对象等
以下这种多了target对象。也可以用pjp.getTarget()得到。通过JointPoint获取入参、当前对象、目标对象、注解等信息。因为定义在了入参里,可以直接使用对象。1.用于增加筛选符合条件的拦截对象;原创 2022-07-19 14:40:38 · 370 阅读 · 0 评论 -
RabbitMQ,手动ACK情况下,消费消息的时候出现异常,如何手动ACK或NACK
@RabbitListener里的errorHandler(实际是RabbitListenerErrorHandler)的方式来处理,并把spring-amqp的版本提升到2.1.7以上,消息消费出现异常之后,进行手动的ack或者nack原创 2022-07-07 11:27:20 · 5904 阅读 · 0 评论 -
Rest请求使用Jackson反序列化报错,Cannot deserialize instance of `java.lang.String` out of START_OBJECT toke
Rest接口,使用Jackson作为json转换器,后端接收请求的时候报错了,异常信息: 请求报文:异常信息是很详细、明确的, Cannot deserialize instance of `java.lang.String` out of START_OBJECT是说无法将字段,从START_OBJECT(Object类型,即对象)转换为String(字符串类型)(through reference chain: com.xxx.TradeDto["body"]->com.xxx.dto.FxsFsDto原创 2022-07-06 11:14:36 · 4387 阅读 · 0 评论 -
批量修改Jenkins的job任务配置,JenkinsClient、JenkinsServer
使用jenkins-client批量修改job任务配置原创 2022-03-29 17:00:27 · 1806 阅读 · 0 评论 -
请求路径不对,预检请求preflight返回404,导致真实请求返回CORS错误
目录环境信息问题描述解决方案解决思路解决方法不同的路径错误现象上下文路径不对chrome浏览器网络控制台火狐网络控制台第一个请求:真实请求第二个请求:预检请求preflight非上下文的路径不对chrome浏览器控制台第一个请求:预检请求preflight第二个请求:真实请求源码分析调用链CoyoteAdapter.javaMapper.javaCoyoteAdapter.java总结...原创 2021-10-26 20:25:13 · 3111 阅读 · 0 评论 -
mvel2报错:java.lang.VerifyError method: getKnownEgressType signature
mvel2:2.0.19异常信息:java.lang.VerifyError: (class: ASMAccessorImpl_3009129941634644382940, method: getKnownEgressType signature: ()Ljava/lang/Class;) Illegal type in constant pool调用的方法是org.mvel2.MVEL类的以下方法:public static Object executeExpression(O..原创 2021-10-24 19:57:45 · 2741 阅读 · 0 评论 -
slf4j、logback、log4j打印出的日志行号不正确,如何获取正确的行号(调用者类里的行号)
环境信息SpringBoot2.1.15.RELEASEslf4j:1.7.25logback:1.2.3说明系统使用的是slf4j+logback日志组合,而且为了系统的个性化需求,封装了自己的日志操作类Log.java,不是直接使用slf4j的API:private static Logger logger = LoggerFactory.getLogger(xxx.class);配置信息logback配置:logback.xml<...原创 2021-09-22 22:47:03 · 7512 阅读 · 3 评论 -
Spring Boot全局异常处理,包括404等异常
在Spring Boot、Spring MVC、Spring Cloud中,全局异常处理有多种处理方案:1.ErrorController方式2.@ControllerAdvice加上@ExceptionHandler方式全局异常处理实现方式1.ErrorController方式这种方式可以处理所有的异常信息方式1:实现ErrorController接口方式2:继承BasicErrorController类@Controllerpublic class MyError原创 2021-09-01 15:30:49 · 3288 阅读 · 0 评论 -
Spring Boot项目跳转到/error接口,比如遇到404等HTTP状态码
SpringBoot、SpringCloud、SpringMVC项目,使用tomcat容器,在404、500等错误之后,默认跳转到了BasicErrorController类的/error接口。BasicErrorController.java@Controller@RequestMapping("${server.error.path:${error.path:/error}}")public class BasicErrorController extends AbstractErrorC原创 2021-08-31 20:22:48 · 7897 阅读 · 3 评论 -
RequestContextHolder分析
RequestContextHolderRequestContextHolder原创 2021-08-30 21:54:14 · 384 阅读 · 0 评论 -
从request里获取客户端的ip
public static String getIpAddress(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-...原创 2021-08-30 15:58:19 · 916 阅读 · 2 评论 -
SpringBoot项目启动失败,Ambiguous mapping. Cannot map ‘xxxController‘ method
项目场景:提示:这里简述项目相关背景:例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)问题描述:提示:这里描述项目中遇到的问题:例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据APP 中接收数据代码:@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obtainMessage(READ_DATA, bytes,原创 2021-06-08 11:52:00 · 1599 阅读 · 1 评论 -
idea读取配置文件如ValidationMessages.properties中文乱码
环境信息:idea2021.1.1(注:如果是其它版本的idea,也可能会出现这个问题)SpringBoot2.1.15.RELEASE问题描述:ValidationMessages_zh_CN.properties、ValidationMessages_zh_CN.properties原创 2021-06-05 13:26:45 · 1696 阅读 · 4 评论 -
idea启动项目失败 YAMLException 中文文件编码格式
背景:idea2021.1.1(注:如果是其它版本的idea,也可能会出现这个问题)SpringBoot2.1.15.RELEASE原创 2021-06-05 13:06:17 · 2238 阅读 · 2 评论 -
Java 获取泛型的类型实例详解
Java 获取泛型的类型实例详解Java 泛型实际上有很多缺陷,比如不能直接获取泛型的类型,不能获取带泛型类等。以下方式是不正确的:①.获取带泛型的类的类型 1 Class lstUClazz = List<User>.class ②获取局部变量泛型的类型 1 2 3 4 5 6 7 8 9 10 11 12 13转载 2021-05-25 19:16:03 · 1044 阅读 · 0 评论 -
序列化和反序列化
摘要这里说的序列化、反序列化是针对数据结构和二进制之间的相互转换。比较常用的序列化协议有 hessian、kyro、protostuff序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没在框架之中;另一方面,它们会以其他更容易理解的概念出现,例如加密、持久化。然而,序列化和反序列化的选型却是系统设计或重构一个重要的环节,在分布式、大数据量系统设计里面更为显著。恰当的序列化协议不仅可以提高系统的通用性、强健性、安全性、优化转载 2021-05-24 21:45:41 · 353 阅读 · 0 评论 -
浅复制和深复制-以HashMap为例
1、简介In this tutorial, we'll explore the concept of a shallow vs deep copy of a HashMap along with several techniques to copy a HashMap in Java.We'll also consider some of the external libraries that can help us in specific cases.探索HashMap的浅复制(shallow原创 2021-05-24 10:52:43 · 3970 阅读 · 0 评论 -
package-info.java的作用
目录一、提供包级别的注释1.在idea里的体现:2.在Javadocs里的体现:二、提供包级别的注解三、提供包级别的友好类和变量1.在同一个包里能正常使用2.在别的包里就不能使用,包括子包也不能使用一、提供包级别的注释如在component包里放了package-info.java/** * 组件 */package com.xxx.component;在component.config包下放了package-info.java/** * 组.原创 2021-05-22 17:55:04 · 681 阅读 · 4 评论 -
JDK version和class file version(Class编译版本号)对应关系
JDK version和class file version(Class编译版本号)对应关系Java SE 19 = 63,Java SE 18 = 62,Java SE 17 = 61,Java SE 16 = 60,Java SE 15 = 59,Java SE 14 = 58,Java SE 13 = 57,Java SE 12 = 56,Java SE 11 = 55,Java SE 10 = 54,Java SE 9 = 53,Java SE 8 = 52,Java SE原创 2021-05-19 10:35:20 · 23580 阅读 · 0 评论 -
ThreadLocal的脏数据、内存泄露
背景:Spring-Boot2.0.8.RELEASESpring-Cloud2.0.4.RELEASEtomcat 8.5.37JDK 1.8项目使用ThreadLocal来传递参数,比如:请求数据、设置变量ThreadLocalParamsUtilpublic class ThreadLocalParamsUtil { private static final Log log = LogFactory.getLog(ThreadLocalParamsUtil.cla..原创 2021-04-14 00:19:56 · 756 阅读 · 1 评论 -
@FeignClient注解的接口,用@Autowired可能获取不到实例
背景:Spring-Boot2.0.8.RELEASESpring-Cloud2.0.4.RELEASEOpenFeign2.0.4.RELEASE启动类:package com.xxx.tfb;import java.sql.SQLException;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.camunda.bpm.spr...原创 2021-03-02 23:33:28 · 8626 阅读 · 9 评论 -
替换更新jar包里的文件(引用的jar文件等)java.lang.IllegalStateException: Unable to open nested compressed entry
在替换jar包里的文件的时候,用压缩工具打开(可以用winrar、好压,因为可以选压缩方式),将需要替换的文件拖进压缩包,此时要注意:更改压缩方式为存储!更改压缩方式为存储!更改压缩方式为存储!默认是标准。如果压缩方式不是存储,运行jar包会报错:java.lang.IllegalStateException: Unable to open nested compressed entr...原创 2020-03-04 18:09:03 · 1269 阅读 · 1 评论 -
注意项目名的中英文符号
java.lang.IllegalStateException: Request URI does not contain a valid hostname:背景:使用Eureka注册中心加Ribbon客户端负载均衡的时候,RestTemplate使用OkHttp,结果在访问服务端的时候,报错了,提示java.lang.IllegalStateException: Request URI do...原创 2020-02-23 22:14:43 · 500 阅读 · 0 评论 -
SpringBoot里的slf4j不起效果,SLF4J: Class path contains multiple SLF4J bindings
版本:springboot1.5.9.RELEASEspring-boot-starter-log4j1.3.8.RELEASE启动的时候报错:Connected to the target VM, address: '127.0.0.1:51078', transport: 'socket'SLF4J: Class path contains multiple SLF4J...原创 2020-01-29 12:27:30 · 744 阅读 · 0 评论 -
码云git新建仓库
步骤:1.在码云创建仓库,名称和本地项目名称一致。下面以AutoGenerator工程为例2.如果本地项目的文件太多,超过了20个,那么需要用命令的方式上传初始版本到仓库:2.1 新建一个空的文件夹里,如桌面/a;2.2 在a文件夹里右键,选择Git Bash Here。当然,这一步的前提是安装了git工具,并配置了环境变量。2.3 在码云上复制项目的路径2.4 在...原创 2020-01-18 23:36:38 · 1113 阅读 · 1 评论 -
转:五种方式让你在java中读取properties文件内容不再是难题
一、背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题。就借此机会把Spring+SpringMVC+Mybatis整合开发的项目中通过java程序读取properties文件内容的方式进行了梳理和分析,现和大家共享。二、项目环境介绍 Spring4.2.6.RELEASE...转载 2020-01-17 11:56:00 · 403 阅读 · 2 评论 -
IDEA使用MyBatis时报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
IDEA的Maven项目,使用MyBatis时报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):该错误是在mybatis中dao接口与mapper配置文件(同名xml文件)在做映射绑定的时候出现问题,就是接口与xml要么是找不到,要么是找到了却匹配不到。排查步骤:1.检...原创 2020-01-12 20:18:24 · 426 阅读 · 0 评论 -
C3P0连接报错java.lang.AbstractMethodError
java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.isClosed()Z is abstract使用的jar包版本是c3p0-0.9.1.2.jar从官网下载了c3p0-0.9.5.5.jar、mchange-commons-java-0.2.19.jar(依赖包...原创 2020-01-07 21:20:41 · 302 阅读 · 0 评论 -
IDEA部署tomcat,解决控制台乱码
1.idea的启动配置文件:解决tomcat在idea控制台中文乱码的问题在idea的安装目录下的bin/idea.exe.vmoptions文件和bin/idea64.exe.vmoptions文件添加-Dfile.encoding=UTF-8注意: 我用的是pojie版,-Dfile.encoding=UTF-8要在pojie的那个JetbrainsCrack-2.7-re...原创 2020-01-07 15:28:22 · 382 阅读 · 0 评论 -
IDEA启动web项目报错 Servlet [DispatcherServlet] in web application [] threw load() exception
报错信息:org.apache.catalina.core.StandardContext loadOnStartup严重: Servlet [DispatcherServlet] in web application [] threw load() exceptionjava.lang.ClassNotFoundException: org.springframework.web.ser...原创 2020-01-06 21:58:22 · 4552 阅读 · 0 评论 -
Spring AOP切面通过@AfterReturning获取返回参数时返回null
@AfterReturning如果和@Around一起使用,那么就需要给@Around的方法设置返回参数,因为@AfterReturning接收到的值其实是@Around返回的。如果@Around的方法没设置返回参数,有2种可能:1.@AfterReturning接收到的返回值为null2.如果目标方法的返回值类型不是封装类型如Integer,而是基本类型比如int,则执行会报错:...原创 2020-01-02 17:49:24 · 9537 阅读 · 4 评论 -
MyEclipse打开、导入项目等报错SECURITY ALERT:INTEGRITY CHECK ERROR
错误图片:关闭MyEclipse,将图片里的jar文件改成.txt文件结尾,然后启动myeclipse。等完全启动后,关闭MyEclipse。再将扩展名改回.jar,重启后就可以了。...原创 2019-12-17 20:11:37 · 304 阅读 · 0 评论 -
websphere缓存
使用was服务器,当出现改了web.xml、加了或改了jar包、添加了依赖包、改了jsp文件等不生效的时候,有可能就是因为was的缓存造成的。was缓存路径有多个:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/10Cell01/applications/${应用名}.ear/deployments...原创 2017-09-01 21:37:30 · 2586 阅读 · 0 评论 -
nohup命令
在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysqld_safe –user=mysql &。可是有很多程序并不想mysqld一样,这样我们就需要nohup命令,怎样使用nohup命令呢?这里讲解nohup命令的一些用法。nohup /root/转载 2017-09-01 22:10:28 · 6777 阅读 · 0 评论 -
Lucene5中的Directory
Directory即Lucene中对索引目录的一个抽象,体现到API上,它被设计为一个抽象类,类里面定义了一些抽象方法,如listAll列出目录下所有文件,deleteFile(String name) 根据文件名称删除索引文件,这个都是文件的基本操作,其中比较重要的一个接口方法是makeLock,为什么要为索引目录加锁?出于读写安全的考虑。 BaseDirectory是Directory的一个子...转载 2018-03-31 11:35:53 · 369 阅读 · 0 评论