全部文章
按时间浏览学习笔记、项目经验与生活思考。
如何实现 MySQL 删除重复记录并且只保留一条
文章介绍题库系统处理重复试题的SQL方法:使用GROUP BY和HAVING识别重复数据;通过子查询删除多余项,保留一条;注意MySQL更新限制;提供单字段和多字段操作示例及优化建议。
文章面试官:谈谈你对ThreadLocal的理解?
ThreadLocal是Java中提供线程局部变量的工具,可实现线程间的数据隔离。每个Thread内维护一个ThreadLocalMap,以ThreadLocal为键、局部变量为值。使用时需及时调用remove方法,避免因Entry键弱引用回收而值未回收导致的内存泄漏。适用于线程内数据传递与事务管理场景。
文章记一次dump文件分析历程
核心服务内存溢出,分析发现是File.deleteOnExit()方法导致内存泄漏。该方法将临时文件路径存入LinkedHashSet,直到JVM关闭才删除,造成内存累积。建议改用File.delete()立即删除文件。
Java序列化和反序列化为什么要实现Serializable接口
Java序列化将对象转换为字节序列,用于持久化或网络传输。实现Serializable接口使JVM自动处理序列化。显示指定serialVersionUID确保类修改后反序列化兼容,避免版本不一致错误。
文章导致MySQL索引失效的几种常见写法
本文总结了MySQL索引失效的常见情况:单个索引中,使用!=、类型不一致、函数、运算符、OR连接不同字段、模糊前缀%、NOT IN/EXISTS、IS NULL会导致失效;复合索引遵循最左匹配原则,最左字段使用!=会致整个失效。建议合理建索引,保持字段类型一致,避免NULL值。
文章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字段名,适用于菜单、部门等多种场景,并提供了完整代码示例。