最新文章

旧文也有春天

Java 与 Spring

旧博客文章迁移分类

使用注解形式实现 Redis 分布式锁 封面 文章

使用注解形式实现 Redis 分布式锁

本文介绍了一种基于Redis的分布式锁实现,通过AOP切面和注解驱动,确保耗时操作的并发安全。核心包括加锁、续时和释放锁机制,使用定时线程池定期延长锁过期时间,防止任务未完成时锁提前释放,并提供了完整的代码示例和测试验证。

魚的部落阁
记一次dump文件分析历程 封面 文章

记一次dump文件分析历程

核心服务内存溢出,分析发现是File.deleteOnExit()方法导致内存泄漏。该方法将临时文件路径存入LinkedHashSet,直到JVM关闭才删除,造成内存累积。建议改用File.delete()立即删除文件。

魚的部落阁
文章

Java序列化和反序列化为什么要实现Serializable接口

Java序列化将对象转换为字节序列,用于持久化或网络传输。实现Serializable接口使JVM自动处理序列化。显示指定serialVersionUID确保类修改后反序列化兼容,避免版本不一致错误。

魚的部落阁
List复制:深拷贝和浅拷贝用法及区别 封面 文章

List复制:深拷贝和浅拷贝用法及区别

本文介绍了Java中List的浅拷贝和深拷贝。浅拷贝只复制引用,导致源列表和目标列表共享对象,修改一个会影响另一个;深拷贝创建新对象并复制内容,使两者独立。文章提供了实现方法并通过测试验证了区别。

魚的部落阁
文章

SpringBoot启动时让方法自动执行的几种实现方式

SpringBoot项目启动时提前加载数据或执行方法的五种方式:实现ServletContextAware或ServletContextListener接口;使用@PostConstruct注解或静态代码块;实现ApplicationRunner或CommandLineRunner接口。

魚的部落阁
文章

java 两个list的交集 并集 差集 去重复并集

在Java中,List集合可通过特定方法求交集、差集和并集:差集用removeAll,交集用retainAll;并集不去重用addAll,去重则先removeAll再addAll。这些操作会修改原List,而另一个List保持不变。

魚的部落阁
文章

Java 基于反射的通用树形结构工具类

本文介绍了一个通用的Java树形结构工具类,通过反射机制将列表转换为树形结构,支持自定义id、parent和children字段名,适用于菜单、部门等多种场景,并提供了完整代码示例。

魚的部落阁
SpringBoot中的@Value注解详解,非常实用! 封面 文章

SpringBoot中的@Value注解详解,非常实用!

文章介绍了Spring配置文件中存储List和Map的方法。直接使用@Value读取会报错,可通过数组或EL表达式解决。数组配置简单但需转换;EL表达式用split()解析List/Set,JSON解析Map,更灵活。注意@Value与@AllArgsConstructor冲突。

魚的部落阁
一文讲尽门面日志slf4j和log4j、log4j2、logback依赖jar引用关系 封面 文章

一文讲尽门面日志slf4j和log4j、log4j2、logback依赖jar引用关系

Java日志框架如log4j、logback等通过SLF4J门面统一接口管理,可灵活切换实现。使用时需正确配置依赖jar包(如slf4j-api及桥接包),避免多个StaticLoggerBinder冲突,解决日志输出问题。

魚的部落阁

输入关键词搜索已发布文章