Java 与 Spring
旧博客文章迁移分类
文章使用注解形式实现 Redis 分布式锁
本文介绍了一种基于Redis的分布式锁实现,通过AOP切面和注解驱动,确保耗时操作的并发安全。核心包括加锁、续时和释放锁机制,使用定时线程池定期延长锁过期时间,防止任务未完成时锁提前释放,并提供了完整的代码示例和测试验证。
文章记一次dump文件分析历程
核心服务内存溢出,分析发现是File.deleteOnExit()方法导致内存泄漏。该方法将临时文件路径存入LinkedHashSet,直到JVM关闭才删除,造成内存累积。建议改用File.delete()立即删除文件。
Java序列化和反序列化为什么要实现Serializable接口
Java序列化将对象转换为字节序列,用于持久化或网络传输。实现Serializable接口使JVM自动处理序列化。显示指定serialVersionUID确保类修改后反序列化兼容,避免版本不一致错误。
文章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注解详解,非常实用!
文章介绍了Spring配置文件中存储List和Map的方法。直接使用@Value读取会报错,可通过数组或EL表达式解决。数组配置简单但需转换;EL表达式用split()解析List/Set,JSON解析Map,更灵活。注意@Value与@AllArgsConstructor冲突。
文章一文讲尽门面日志slf4j和log4j、log4j2、logback依赖jar引用关系
Java日志框架如log4j、logback等通过SLF4J门面统一接口管理,可灵活切换实现。使用时需正确配置依赖jar包(如slf4j-api及桥接包),避免多个StaticLoggerBinder冲突,解决日志输出问题。