Lock 锁 使用注解形式实现 Redis 分布式锁
本文介绍了一种基于Redis的分布式锁实现,通过AOP切面和注解驱动,确保耗时操作的并发安全。核心包括加锁、续时和释放锁机制,使用定时线程池定期延长锁过期时间,防止任务未完成时锁提前释放,并提供了完整的代码示例和测试验证。
旧博客文章迁移分类
Lock 锁 本文介绍了一种基于Redis的分布式锁实现,通过AOP切面和注解驱动,确保耗时操作的并发安全。核心包括加锁、续时和释放锁机制,使用定时线程池定期延长锁过期时间,防止任务未完成时锁提前释放,并提供了完整的代码示例和测试验证。
Leak 泄漏 核心服务内存溢出,分析发现是File.deleteOnExit()方法导致内存泄漏。该方法将临时文件路径存入LinkedHashSet,直到JVM关闭才删除,造成内存累积。建议改用File.delete()立即删除文件。
Java序列化将对象转换为字节序列,用于持久化或网络传输。实现Serializable接口使JVM自动处理序列化。显示指定serialVersionUID确保类修改后反序列化兼容,避免版本不一致错误。
Copy 拷贝 本文介绍了Java中List的浅拷贝和深拷贝。浅拷贝只复制引用,导致源列表和目标列表共享对象,修改一个会影响另一个;深拷贝创建新对象并复制内容,使两者独立。文章提供了实现方法并通过测试验证了区别。
SpringBoot项目启动时提前加载数据或执行方法的五种方式:实现ServletContextAware或ServletContextListener接口;使用@PostConstruct注解或静态代码块;实现ApplicationRunner或CommandLineRunner接口。
在Java中,List集合可通过特定方法求交集、差集和并集:差集用removeAll,交集用retainAll;并集不去重用addAll,去重则先removeAll再addAll。这些操作会修改原List,而另一个List保持不变。
本文介绍了一个通用的Java树形结构工具类,通过反射机制将列表转换为树形结构,支持自定义id、parent和children字段名,适用于菜单、部门等多种场景,并提供了完整代码示例。
Config 配置 文章介绍了Spring配置文件中存储List和Map的方法。直接使用@Value读取会报错,可通过数组或EL表达式解决。数组配置简单但需转换;EL表达式用split()解析List/Set,JSON解析Map,更灵活。注意@Value与@AllArgsConstructor冲突。
Logging 日志 Java日志框架如log4j、logback等通过SLF4J门面统一接口管理,可灵活切换实现。使用时需正确配置依赖jar包(如slf4j-api及桥接包),避免多个StaticLoggerBinder冲突,解决日志输出问题。