
Java
文章平均质量分 52
mcatto
这个作者很懒,什么都没留下…
展开
-
easy-es Map类型字段序列化问题:Unexpected character (‘n‘ (code 110)):
此错误主要原因是:EntityInfoHelper中创建的NameFilter是一个匿名类,看上去主要功能就是过滤排除字段,但是针对Map类型字段就出现了问题,导致序列化时候Map的key字段变成了个null. 导致fastjson序列化后为{null:"value"}这种形式,insert报错。EntityInfoHelper中NameFilter过滤器代码如下:这个过滤器导致序列化Map类型字段时,获取的key当成类的字段属性处理,而类中没有名字为key的字段,所以过滤器过滤完后key变成了null。原创 2024-06-18 15:32:38 · 640 阅读 · 0 评论 -
SpringBoot Websocket Stomp 实现单设备登录(顶号) ①
当继承spring-messaging的stomp后,它封装的比较封闭,stomp有维护session会话列表,但是外部无法通过正常方式获取到,如果不想自己再维护一个可以尝试通过下面方式实现单设备登录功能。单设备登录方式直接使用websocket实现比较容易实现,通常自己维护session会话列表管理即可。本案例场景:同账号登录时,存在已在线通同账号,发送一个消息给在线账号告知顶号,然后将连接断开。单设备检测及消息发送。原创 2023-05-13 07:30:39 · 1114 阅读 · 0 评论 -
Mockito(mockito-inline ^3.4.0) mockStatic 模拟无参、有参静态方法调用
mockito自3.4.0后mockito-inline模块 支持mockStatic方法,模拟有参、无参静态方法调用,代替PowerMockito调用方式,简单使用用例原创 2022-07-05 14:58:22 · 7880 阅读 · 1 评论 -
Redisson (StringRedisTemplate.opsForList().leftPop(key, count) StackOverflowError
redisson-spring-boot-starter(3.16.8) opsForList().leftPop(key, count) StackOverflowError原创 2022-06-01 17:36:55 · 3810 阅读 · 0 评论 -
关于0宽度unicode字符 “zero-width-space“ “M-bM-^@M-^K“ <U+200B>
最近线上出现一个很有意思的问题,同一个账号登录系统,同样的条件,别人都可以查询到数据,当事人电脑就是查不到,起初怀疑过特殊字符但是在后台日志查看时(tail/grep)没发现有问题。最终发现还是因为粘贴复制操作导致的不可见字符,因为宽度为0,所以通过tail命令或者grep命令不展示并且很难发现,通过cat -A/-v或者less 可以看到特殊字符:cat -A/-v 看到特殊字符:M-bM-^@M-^Kless 看到特殊字符:<U+200B>该不可见字符是unicode字符的0原创 2021-12-13 17:24:30 · 1740 阅读 · 0 评论 -
Could not retrieve transation read-only status server
Caused by: java.sql.SQLException: Could not retrieve transation read-only status server at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084) ~[mysql-connector-java-5.1.30.jar:na] at com.mysql.jdbc.SQLError.createSQLException(S.原创 2021-12-08 17:06:24 · 12964 阅读 · 0 评论 -
jhat(Unrecognized magic number: 170..) jproflier(the selected snapshot does not have a valid..)
环境centos7 + java8 + tomcat8分析dump文件通过配置jvm的:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/xxx/xxx.dump或者通过jmap -dump:live,format=b,file=xxx.dump命令生成dump文件生成的dump文件比较大,所以在服务器上,通过tar -czvf error.dump.gz error.dump压缩dump文件,并拉取到本地(通过sz命令将压缩文件发送原创 2021-07-28 17:39:06 · 1727 阅读 · 0 评论 -
Response.sendRedirect 重定向Cookie丢失问题
场景: 本地启动springweb项目和react项目,域名都是localhost,springweb项目根路径/demo,react项目路径/react/index, react使用middlewareproxy代理接口请求到springweb项目上 springweb项目jsp页面(/demo/abc),iframe内嵌同域名下的react前端页面(/react/index),jsp跳转到内嵌的react页面时默认会携带cookie(因为同一个域名下),当react页...原创 2021-07-15 17:02:01 · 4252 阅读 · 0 评论 -
Shiro (http:/xxxxx/;JSESSIONID=xxxx) InvalidRequestFilter 400无法跳转到登录页问题
shiro: 1.6spring: 5.2访问:http://localhost:8080/demo/;JSESSIONID=655def62-75b3-4ab1-ae27-b7d0e42c431a时, 出现400错误页面,无法跳转到登录页。当浏览器本地cookie禁用或者部分链接跳转时,会默认加上 ;JSESSIONID= 参数传递cookie中存储的sessionId, 后端Filter过滤器会首先尝试从cookie中获取sessionId,获取不到时尝试解析uri连接(;/JSESSIO.原创 2021-05-27 13:16:50 · 2601 阅读 · 3 评论 -
Random SecureRandom 随机数生成阻塞问题
java.util.Random 生成随机数根使用系统时钟时间作为种子,采用线性同余生成算法生成随机数,由于使用时间作为种子因此攻击者如果知道系统时钟时间,可以寄计算并预测随机数生成内容,安全性低。因此推荐使用java.util.SecureRandom. 如果对于安全性要求不高,依旧可以使用Random, 生成速度比SecureRandom要快。java.util.SecureRandom 生成随机数使用系统随机数据作为种子,在linux系统中常见的随机数据取自/dev/random...原创 2021-05-12 15:15:10 · 1558 阅读 · 0 评论 -
jsp 页面加载缓慢问题(apache-tiles)
最近项目(ssm+jsp)中出现一个业务页面打开缓慢问题,经过排查,排除接口问题,接口返回ModelAndView整个流程耗时300ms左右,但是页面迟迟未能返回到浏览器,总耗时达到6s以上,测试环境更是达到180秒。问题排查工具:arthas (alibaba)经过排查发现:jsp页面中使用apache-tiles(这个东西apache已经声明退役了)标签,putAttribute,该标签最终由AbstractModelBody处理输出内容,会对内容进行replaceAll操作,该操作去除行头和行原创 2021-03-16 11:25:12 · 2756 阅读 · 0 评论 -
audio 标签 加载url 音频总时长及拖动条不能拖动 问题
H5的audio标签,在使用过程中,出现有些情况出现总时长,有些时候没有总时长的情况。有总时长:src是本地文件时,及使用云存储url地址时,显示总时长。<div id="audioDiv"> <audio id="aud" controls preload> <source src="a.wav" type="audio/wav"> </audio></div>无总时长:src地址是后台服务器读取音频文件后,回写的数原创 2021-02-05 18:42:35 · 5663 阅读 · 2 评论 -
Failed to specialize base type org.apache.shardingsphere.elasticjob.infra.yaml.config.YamlConfigurat
Failed to specialize base type org.apache.shardingsphere.elasticjob.infra.yaml.config.YamlConfiguration<org.apache.shardingsphere.elasticjob.api.JobExtraConfiguration> as org.apache.shardingsphere.elasticjob.tracing.yaml.YamlTracingConfiguration原创 2021-02-02 13:04:34 · 740 阅读 · 2 评论 -
SunCertPathBuilderException: unable to find valid certification path to requested target
背景:使用HttpClient4.5发送post请求,对方需要使用证书,需要本地安装证书,之后本地正常请求https,部署到centos后,安装证书,发送http请求报错:SunCertPathBuilderException: unable to find valid certification path to requested target证书安装:keytool -import -v -trustcacerts -alias spdbuat -file spdbuat.cer -原创 2021-02-01 17:09:59 · 2171 阅读 · 0 评论 -
java.lang.VerifyError: JVMCFRE090 new bytecode cannot create arrays; class=jdk/internal/reflect
最近一次jenkins部署运行springboot项目时出现如下错误:java.lang.VerifyError: JVMCFRE090Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method 'redisson' threw exception; nested exception is.原创 2020-12-02 13:43:44 · 859 阅读 · 0 评论 -
SSM项目改造SpringBoot webapp目录外部化 jsp 404 问题
近期接手一个陈旧的项目基于SSM,SpringMVCSpringMybatis实现的管理项目,没使用依赖管理。改造目标:SpringBoot + Maven,jar形式打包,非war形式,并且配置文件及webapp目录中的资源要外部化,通过maven-jar-plugin打包的jar为thin jar,jar包内不包含lib依赖及webapp。改造后通过assembly打包目录结构如下:改造后最大的问题就是webapp外部化jsp资源访问404问题:java -cp 形式启动,通过开启tr.原创 2020-08-19 17:35:13 · 556 阅读 · 0 评论 -
The number of capturing groups in the pattern segment ((path1|path2|path3)) does not match the...
java.lang.IllegalArgumentException: The number of capturing groups in the pattern segment ((path1|path2|path3)) does not match the number of URI template variables it defines, which can occur if capturing groups are used in a URI template regex. Use non-c.原创 2020-08-18 12:04:46 · 640 阅读 · 0 评论 -
Skywalking Illegal character in hostname at index
ERROR 2020-07-02 14:04:09:379 SkywalkingAgent-5-GRPCChannelManager-0 GRPCChannelManager : Create channel to apm-skywalking_oap:11800 fail. java.lang.IllegalArgumentException: Invalid host or port: apm-skywalking_oap 11800 at org.apache.skywalking.原创 2020-07-02 15:57:17 · 911 阅读 · 0 评论 -
Docker Unbuntu18 OpenJDK9 NPE FontConfiguration.getVersion (awt 字体库问题)
java.lang.NullPointerException: null at java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1288) .....在使用Docker容器运行springboot程序时,验证码请求需要使用到字体库,本机运行没有问题,放到服务器上在容器中运行出现...原创 2020-05-02 17:42:59 · 1269 阅读 · 2 评论 -
记:JVM参数 -Xss 导致的RedisAutoConfiguration StackOverflow问题
以下两个问题都是由于-Xss参数设置过小导致,刚开始一脸懵逼。异常1:RedissonAutoConfiguration (使用redisson锁时的自动配置类时出现的问题)2020-05-02 12:19:08 [main] ERROR o.s.boot.web.embedded.tomcat.TomcatStarter - Error starting Tomcat context....原创 2020-05-02 14:36:32 · 1231 阅读 · 1 评论 -
Gradle 多模块 xxx-xx.jar SKIP 依赖模块jar包问题
在使用Gradle多模块构建时,公共模块在执行jar 任务时,总是SKIP,导致build文件夹下无发生成jar文件。记录一下:公共模块的build.gradle中需要加入:jar.enabled=true才能正常的生成jar包。...原创 2020-05-01 22:33:43 · 791 阅读 · 0 评论 -
gradle jenkins the trustAnchors parameter must be non-empty
环境:gradle6.2.2 + jdk9 + jenkins2.204.5 + docker19.03.8服务器:aliyun ecs centos8核心错误:the trustAnchors parameter must be non-emptyjenkins服务器invoke gradle script报错如下:Caused by: org.gradle.internal....原创 2020-03-26 18:20:03 · 2978 阅读 · 0 评论 -
记:Idea20192.2 failed to create JVM. JVM Path: xxxxx
破解需要修改了:bin/idea64.exe.vmoptions 参数,导致启动报错:出现此原因提示是可能未设置环境变量,但是实际上已经设置了,后来发现是由于bin/idea64.exe.vmoptions文件格式问题导致的。bin/idea64.exe.vmoptions 默认格式为 UTF-8, 但是使用windows记事本打开修改后变成了UTF-8 BOM 格式。转为UTF-...原创 2020-03-18 11:19:19 · 2142 阅读 · 0 评论 -
logback 多实例 归档问题 无法自动删除.tmp文件问题
在使用slf4j的logback实现时,使用TimeBasedRollingPolicy根据时间滚动日志策略并使用RollingFileAppender进行日志滚动,多进程共用同一个日志文件时,会出现较多xxxxxx.tmp文件未删除的情况。出现tmp文件的条件: 使用TimeBasedRollingPolicy/RollingFileAppender配置,并启用压缩,并配置的<file...原创 2019-12-20 16:25:25 · 5482 阅读 · 2 评论 -
No appenders present in context [default] for logger [xxxxx]
使用logback时,由于配置缘故出现No appenders present in context [default] for logger [xxxxx]的问题,导致通过getLogger(class)获取到的logger没有打印日志。问题部分配置如下:STDOUT是ConsoleAppender省略了 <logger name="tom.vertx" level="debug" ...原创 2019-12-19 11:37:05 · 6833 阅读 · 0 评论 -
Failed to create a Maven project: '.../pom.xml' already exists
有点智障,idea在项目中创建子模块时,没有把输入的子模块名称自动追加到根目录后面,导致出现 Failed to create a Maven project: 'D:/idea-studyspace/vertx-demo/pom.xml' already exists in VFS,这种项目名称已存在的错误。记一下。...原创 2019-12-17 16:51:14 · 370 阅读 · 0 评论 -
Google ProtoBuf入门(Java)
ProtoBufgoogle内部开源的一个序列化工具,高效、序列化后占用字节小。主要用于网络传输、RPC调用等,减少带宽流量使用,提升响应速度。Java根据自己使用的系统,下载需要的proto工具,proto-releaseJava项目需要引入proto依赖,maven:maven-proto下面使用的的是windows系统:首先编写proto定义文件:(详细语法参照git...原创 2019-11-27 12:00:40 · 1636 阅读 · 0 评论 -
JVM Garbage Collector Summary
参考:oracle-java12-gctuningjava8-vm-guidesopenjdkzgczgc-pdf原创 2019-11-20 20:05:42 · 195 阅读 · 0 评论 -
spring-boot2集成influxDB
自spring-boot 2.0开始,spring-boot-autoconfigure提供了influxdb的简单集成实现类InfluxDbAutoConfiguration. 该类生效条件为@ConditionalOnClass(InfluxDB.class),所以只要引入influxdb-java依赖,就会自动生效。compile group: 'org.influxdb', name...原创 2019-11-06 16:52:41 · 4497 阅读 · 3 评论 -
spring-boot(rabbitmq) Failed to check/redeclare auto-delete queue(s)
2019-10-14 16:08:05 [AMQP Connection 10.210.1.20:5672] WARN com.rabbitmq.client.impl.ForgivingExceptionHandler - An unexpected connection driver error occured (Exception message: Socket closed)2019...原创 2019-10-14 16:32:59 · 26761 阅读 · 4 评论 -
JVM常用参数及常见垃圾回收器
(不全面, 参数在jdk每个版本中都有废弃和调整,具体要参考官网最新的文档, 内容比较有点多,不放吃个茶叶蛋慢慢看)JVM的常用运行参数VM Arguments说明 (有些参数加上以后,jvm报错, 可以调整一下顺序,再次运行) -XX:+/-flag 表示 +启用某个功能 -禁用某个功能 -verbose:gc 打印GC简要信...原创 2018-01-27 17:07:23 · 663 阅读 · 0 评论 -
JVM性能分析常用命令和工具
JVM性能分析常用命令及工具 linux上系统命令: uptime 查看系统启动时间, 内存/cpu使用情况等信息 top 查看系统资源占用情况 pidstat 查看指定进程/线程的信息(如果没有需要额外安装) ...原创 2018-01-30 19:58:47 · 634 阅读 · 0 评论 -
Java 静态多分派&动态单分派
分派发生在编译期和运行期,编译期的分派为静态分派,运行期的为动态分派。编译期是根据对象声明的类型来选择方法,运行期是根据对象实际类型来选择方法。术语: 宗量(JVM虚拟机) , 什么是宗量, 方法调用者和方法参数被称为宗量.(后面理解分派需要)静态类型: 一个对象在声明时的类型称为静态类型,静态类型再编译器编译时可知. 如 Animal a = new Dog(), 静态...原创 2018-01-11 20:52:59 · 2748 阅读 · 5 评论 -
SSL/TLS 单双向认证代码示例
采用SSL/TLS形式的安全链接,能防止数据传输过程中被截获修改等问题。SSL算法简短说明: 对称加密算法:DES 3DES AES 客户端和服务端使用同一个密钥对消息进行加密解密。 非对称加密算法:RSA, 生成公钥和私钥,采用公钥加密,私钥解密。客户端和服务器端各自持有自己的私钥证书,相互信任对方的证书(证书都导入到了对方的私钥仓库) 速度上,对称加密算法比非对...原创 2017-12-15 11:49:13 · 4004 阅读 · 0 评论 -
Java 泛型擦除
泛型擦除指:在编译器存在泛型类型,由代码指定的类作为该泛型的实际类型,当处于运行期时,该类型将不再存在,所以在运行期内的代码将无法获得泛型的具体类型信息,类型信息仅存在于Class实例中。同一个泛型在运行时期,具体相同的运行时类,不管他们泛型对应的实际类型是什么,他们的运行时class是相同的。如:List l1 = newArrayList(); List l2 =原创 2016-04-15 16:09:21 · 556 阅读 · 0 评论 -
JeeSite mybatis 升级3.4.0 foreach问题
由于为了能在批量插入之后获取到自增id,所以之前用的mybatis需要升级,批量返回的在3.3.1之后才开始支持。 但是升级之后,会有一些问题,对于覆盖重写的类如Configuration等出现的错误,是缺少参数,new一个参数放进去就可以了。但是后来发现之前用的foreach报错了,报错内容为:There is no getter for property named原创 2016-09-23 15:30:00 · 3095 阅读 · 0 评论 -
Shrio : This subject is anonymous - it does not have any identifying principals and
使用shrio,集成到springmvc后,访问带有@RequirePermission注解的方法,This subject is anonymous - it does not have any identifying principals and authorization operations require an identity to check ag...原创 2016-11-24 11:23:37 · 12696 阅读 · 2 评论 -
ckeditor+ckfinder 由于文件系统的限制,该请求不能完成
由于服务器到期,需要将原项目移动到新的服务器,但是新服务器上上传文件出现:由于文件系统的限制,该请求不能完成的错误。 造成这种原因的情况很多,网上多数是因为配置路径不对或者上传目录没有操作权限所致,但是我都试了一下都不行。这个问题的错误代号是104在FileUploadCommand中多出引用。但是FileUploadCommand类没有将Exceptio原创 2016-10-17 18:17:12 · 6355 阅读 · 3 评论 -
Java 锁介绍
参考:整的不好不如看这个 --> 对象头-锁JVM中的锁机制 每个对象都有一个对象头mark 4个字节(32位) mark主要存放: 对象的hash, 锁信息, 垃圾回收标记, 对象年龄 指向锁记录的指针 指向monitor的指针(synchronize...原创 2018-01-30 19:55:43 · 361 阅读 · 0 评论 -
Java NIO详细教程
很详细哦转载 2018-01-25 09:55:04 · 228 阅读 · 0 评论