- 博客(50)
- 收藏
- 关注
原创 Wireshark抓包分析工具
Packet Details:分层解析(Frame → Ethernet → IP → TCP → HTTP);Packet List:所有包列表(时间、源/目的、协议、长度、信息);Packet Bytes:原始十六进制 + ASCII 内容。弹出窗口显示 双向完整通信内容。除安装路径外,其他默认即可。3. 复现问题后,停止抓包。2. 使用捕获过滤器抓包。5. 深入分析单个数据包。右键任意相关数据包;
2025-12-20 23:25:26
537
原创 Arthas内存泄露排查
Arthas是一款开源的Java诊断工具,支持在不重启应用的情况下进行JVM诊断。主要功能包括:实时查看JVM状态(线程/内存/GC)、动态追踪方法调用、监控对象实例、生成堆转储、反编译线上代码等。通过简单命令即可完成CPU飙高排查、内存泄漏分析、方法监控等常见问题定位。典型使用场景如排查WebSocket内存泄漏:通过vmtool检查对象实例、watch追踪创建过程、ognl查询内存使用情况,最终生成heapdump进行深入分析。安装仅需执行curl命令即可快速部署使用。
2025-12-20 23:09:51
381
原创 Maven打包
摘要:Maven项目编译报错排查发现未install相关jar包到本地仓库,需执行module或整体install。Maven生命周期包括validate、compile、test、package、verify、install和deploy等阶段,其中install将打包后的jar安装到本地仓库。另一启动错误是jar包外层存在重复公共jar包,导致beanName冲突引发注入失败。建议检查依赖管理,避免重复jar包问题。
2025-12-18 20:20:55
293
原创 Netty基于SpringBoot实现WebSocket
NIO是Java提供的面向块的I/O操作的一种方式,NIO引入了几个新的抽象概念,如Buffer、Channel和Selector,它们共同作用以提高I/O效率,特别是在处理大量并发连接时。Netty是构建在Java NIO之上的一个强大的网络编程框架,它通过其灵活的Channel机制支持多种协议,包括WebSocket,能够高效地开发出高性能的网络应用程序,简化了NIO的使用,同时提供了对WebSocket等现代网络协议的支持。NettyWebSocketServer:Netty 服务的生命周期管理器。
2025-12-18 20:08:32
1244
原创 apache.poi XSSFWorkbook创建失败,空指针
摘要:使用Apache POI导出Excel时,XSSFWorkbook报空指针异常而HSSFWorkbook正常。经排查发现XSSFWorkbook依赖XML解析库xmlbeans,而项目中存在多个xmlbeans版本冲突。通过在dependencyManagement中显式指定xmlbeans版本为5.0.3,并统一POI相关依赖版本为5.2.3,解决了类加载问题。关键点在于确保xmlbeans依赖唯一且正确加载,避免因版本冲突导致的初始化失败。
2025-12-10 22:29:17
295
原创 SpringBoot 项目 JNI 接口无法注入Bean
JNI库加载时机:在 SpringBoot 应用启动时通过System.loadLibrary("xxx") 加载本地库,这个操作往往发生在main方法或某个@Configuration类的静态块中,一旦加载完成,C++代码就可能立即注册回调函数,并在后续被触发。:在SpringBoot项目中,需要用到JNI接口调用一段由 C++写的高性能模块,该模块在执行过程中,需要回调 Java 层的某个业务服务Bean,去注入这些业务Bean的时候报错,空指针注入失败。
2025-12-10 22:28:34
304
原创 错误:找不到或无法加载主类 @C:\Users\AppData\Local\Temp\idea_arg_file223456232
在跑单元测试时候切换JDK之后运行项目,报错:找不到或无法加载主类 @C:\Users\AppData\Local\Temp\idea_arg_file223456232。Run/Debug Configurations–>选择项目–>Modify options–>Shorten command line->选择JAR manifest。经排查,是因为运行项目指令过长导致的,当命令行长度超过 32768 个字符时,idea就会报这个错。运行参数选择短命令行运行:Shorten command line。
2025-11-24 22:52:44
395
1
原创 UCA+CLDR多语言排序
UCA(Unicode排序算法)是Unicode标准定义的全球化文本排序框架,需结合CLDR实现语言特定的排序规则。示例展示了基于icu4j库的Java实现:通过SortReq接收排序请求(包含地区标识、待排序对象列表和排序字段),在SortServiceImpl中使用Collator按指定语言规则排序。RestController暴露/sort接口,支持按不同语言环境对数据进行正确排序。该方案解决了国际化应用中的多语言排序需求。
2025-11-24 22:52:26
144
原创 SpringBoot项目实现国际化
或ReloadableResourceBundleMessageSource来加载.properties文件,ReloadableResourceBundleMessageSource可以读取外部文件,使用file:格式。AcceptHeaderLocaleResolver: 默认Resolver, 根据HTTP请求头的Accept-Language头信息来解析Locale。核心是通过MessageSource接口,它根据当前用户的区域信息,从配置的资源文件(.properties)中加载对应的文本信息。
2025-11-05 20:08:46
329
原创 KMP算法
KMP算法是一种高效的字符串匹配算法,通过预处理模式串构建next数组来避免不必要的回溯。其核心思想是利用已知匹配信息跳过无效比较,时间复杂度为O(n+m)。算法步骤包括:1)计算模式串的next数组,记录各位置的最长相等前后缀;2)进行匹配时,若字符不匹配则根据next数组回退模式串指针。示例展示了如何计算next数组和匹配过程,最终在文本串中找到模式串的起始位置10。KMP相比暴力匹配显著提高了效率,特别适合处理重复模式的长文本匹配。
2025-10-24 23:31:32
966
原创 Start application catch exception
项目启动报错 Start application catch exception [org.springframework.beans.factory.BeanCreationException]: Error creating bean with xxx: Injection of resource dependencies failed;
2025-09-17 16:47:45
187
原创 OSI七层模型和TCP/IP协议簇
摘要:OSI七层模型将网络通信分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,每层有特定功能。TCP/IP四层模型更简化:通信链路层(合并物理/数据链路)、网络层、传输层和应用层(合并会话/表示/应用层)。主要区别在于分层合并和协议差异,如TCP/IP更强调IP协议的基础作用。两种模型都采用分层架构,下层为上层提供服务。
2025-08-14 08:22:29
940
原创 TCP三次握手
TCP三次握手通过交换初始序列号确保双方收发能力正常,使用SYN/ACK标志位建立可靠连接。三次握手可避免资源浪费和错误连接,保证数据传输顺序性。四次挥手过程通过FIN/ACK标志位有序释放连接,客户端经历TIME_WAIT状态确保服务器收到最终确认。该机制有效解决了网络延迟、丢包等问题,是TCP可靠传输的核心机制。
2025-08-14 08:15:19
895
原创 MAT分析内存泄露
Java内存泄漏示例分析 这段代码展示了一个典型的内存泄漏场景: 静态List持续添加LargeObject实例 LargeObject每个实例占用1MB内存 由于静态List生命周期与程序一致,导致对象无法被GC回收 使用MAT分析堆转储文件时,通过DominatorTree可以清晰看到holderList持有大量LargeObject实例,这解释了为何内存持续上涨。解决方案是及时清理不再需要的对象引用。
2025-07-27 23:06:37
329
原创 内存泄漏问题排查
摘要:项目发现某功能页面在静态拷机时内存持续增长。通过JConsole监控内存曲线,使用jmap/jcmd导出堆内存快照,MAT分析发现两处内存泄漏:JNI回调方法未释放局部引用,以及静态Map强引用过多导致阻塞。解决方案包括修复泄漏代码,并优化JVM参数:启用G1垃圾回收、字符串去重,调整堆占用率阈值(25%)、最大停顿时间(100ms)、Survivor区比例(6:1)等参数,提升内存管理效率。通过jstat监控GC频率,重点关注YGC/FGC次数及耗时。
2025-07-27 23:01:06
667
原创 Junit @Test error: Consider defining a bean of type ‘com.xxx‘ in your configuration
junit
2025-04-16 11:47:19
147
原创 ConcurrentModificationException
ConcurrentModificationException、SerializationUtils.clone
2025-01-20 16:55:14
191
原创 IDEA Maven项目构建异常:org.codehaus.plexus.component.repository.exception.ComponentLookupException
IDEA导入新的maven项目报错:org.codehaus.plexus.component.repository.exception.ComponentLookupException & 无法访问 org.springframework.boot.SpringApplication。将项目JDK设置为1.8,Maven版本降为3.6.3之后,重新build成功。Maven配置文件中profile 设置的compile版本:JDK1.8;settings-Maven配置版本:3.8.8;
2024-09-20 14:16:39
445
原创 Linux下文件下载中文乱码问题
经排查,文件输入输出流都指定了utf-8的编码格式,IDE的File Encodings也都是utf-8,Linux编码格式也是utf-8,怀疑是不是包上传的时候也有其他地方设置了编码格式,最后发现MobaXterm中设置有问题,Font charset改为ANSI后正常,如下图所示。先查看是否是utf-8:#locale,不是的话,修改/etc/default/locale文件,改为utf-8后,执行#source /etc/default/locale使其生效。
2024-09-16 22:46:29
713
1
原创 设计模式(二): 原型模式
深拷贝则是创建一个新对象,并且递归地复制原对象的所有属性,包括引用类型的属性。对于引用类型的属性,深拷贝会创建这些属性的新实例,使得新对象与原对象在内容上完全相等,但在内存中是完全独立的。浅拷贝是指创建一个新对象,这个新对象的属性与原对象的属性相同,但对于引用类型的属性(如数组、对象等),新对象的属性仍然指向原对象的引用类型属性的内存地址。ConcretePrototype:具体原型,实现了原型接口中的方法,负责创建自己的克隆对象。
2024-05-09 14:02:50
419
原创 服务器上运行报错:no main manifest attribute
分析原因可能因为没找到要加载的主类,查看MANIFEST .MF文件,确实没有Start-Class和Main-Class,所以打包出现了问题,然后进一步分析,查看包大小,比其他正常包要小不少,接着去看该module下pom.xml文件中检查,发现在打包时候添加了<classifier>标签,如下所示,将<configuration>标签注释掉刷新maven,重新将该module打包,问题解决。服务器上运行jar包时报错:no main manifest attribute...
2024-05-09 11:31:56
2095
原创 MyBatis mapper 接口中使用@Select注解编写动态sql
需要注意的是,sql中用like时候,不能直接写like'%#{name}%',会报错Parameter index out of range。
2024-05-06 22:52:44
684
2
原创 Redis RDB error
经排查,原因是内存空间不足,在/etc/sysctl.conf文件末添加"vm.overcommit_memory = 1" ,然后重启即可。(设置为1后,对于内存的申请请求,内核不再做任何检查,直到物理内存用完)
2024-05-05 22:00:23
382
原创 常用转义字符
转义字符 意义 ASCII码(十进制) \a 响铃(BEL) 007 \b 退格(BS),将当前位置移到前一列 008 \f 换页(FF),将当前位置移到下页开头 012 \n 换行(LF),将当前位置移到下一行开头 010 \r 回车(CR),将当前位置移到本行开头 013 \t 水平制表(HT),跳到下一个TAB位置 009 \v 垂直制表(VT) 011 \\ 代表一个
2024-04-05 16:32:48
245
1
原创 The supplied data appears to be in the Office 2007+ XML. Excel导入报错
导入.xlsx文件时报错提示:The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSFSHEET instead of HSSF)
2024-03-26 15:45:38
2452
原创 BadSqlGrammarException,sql语法错误问题
获取某列表时报错:org.spring framework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: Java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax;排查原因,发现实体类属性名group为sql关键字,导致查询时候该字段作为语法中的group了,而不是对应表字段,故重命名实体类属性名即可。
2024-03-20 10:11:37
719
1
原创 MySQL ERROR The table ‘mysql/mydata/3306/tmp/xxx‘ is full
MySQL ERROR The table 'mysql/mydata/3306/tmp/xxx' is full
2023-08-06 21:43:03
1256
原创 GC overhead limit exceeded
在这一行,创建了一个过百的数组,每个数组放1000的元素,但是使用后没有清空,也就一直没有被释放,导致一直占用内存。
2023-07-09 22:54:48
327
1
原创 项目启动时候报错: Disconnected from the target VM,address:“127.0.0.1: xxxxx“ ,transport:‘socket’
项目启动时候报错: Disconnected from the target VM,address:"127.0.0.1: xxxxx"
2023-02-21 22:18:20
14536
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅