-
persistence.xml在现代SpringBoot项目中基本不用,因其被自动配置接管,不仅不生效还可能干扰初始化,仅适用于纯JavaEE或传统SpringXML项目。
-
用TimeUnit和Thread.sleep()实现指数退避重试,初始延迟100ms、5次上限、加±10%抖动,用System.nanoTime()超时,白名单判断可重试异常(如SocketTimeoutException),穿透getCause(),恢复InterruptedException状态,避免SpringRetry与Resilience4j冲突。
-
SoftReference缓存常失效因JVM默认策略激进:每MB剩余堆空间仅保留1秒软引用存活期,且受GC算法和参数影响;应调参-XX:SoftRefLRUPolicyMSPerMB、配合ReferenceQueue清理、或改用Guava/Caffeine等带淘汰策略的缓存。
-
空catch块会吞噬异常导致问题不可见,应记录日志、明确静默理由或抛出异常,配合静态检查工具拦截。
-
IntelliJIDEA默认编码需统一设为UTF-8:全局与项目编码均设UTF-8,勾选Transparentnative-to-asciiconversion,编译参数加-encodingutf8;Java源文件须存为UTF-8withoutBOM;SpringBoot控制台乱码需改终端编码或配置logging.charset;properties文件加载须显式指定UTF-8编码。
-
jstack-l<pid>可快速抓取线程快照并识别死锁,输出中出现“Found1deadlock.”即表明检测到循环等待导致的死锁,但仅覆盖synchronized和JUC显式锁,不包括StampedLock、外部资源锁等。
-
根本原因是Scanner默认以空格和换行符为分隔符,遇空行或末尾换行易耗尽输入流;用next()前未校验hasNext()会抛NoSuchElementException;推荐hasNextLine()+nextLine()逐行读,注意nextInt()后需额外nextLine()清除换行符,并显式指定UTF-8编码。
-
方法重载发生在同一类中,通过参数列表不同实现静态绑定;方法重写发生在子类继承父类时,要求方法签名相同并实现动态绑定。
-
MarkDirectoryasExcluded仅影响IDEA索引与代码辅助,不改变Maven/Gradle编译行为;需同步在构建脚本中排除(如Gradle的sourceSets.exclude或Maven的maven-compiler-plugin配置)才能真正避免编译。
-
本文介绍如何使用Java的Scanner类高效读取文本文件中每行开头的整数,自动跳过行内注释及剩余字符,并将结果输出或存入数组,避免因next()或nextLine()混用导致的解析错乱。
-
本文详解如何将外部文本文件中的整数序列按指定行列结构(如2500×100)加载到Java二维数组中,避免手动赋值或索引越界,确保数据顺序准确、代码健壮可复用。
-
Object.clone()默认是浅拷贝,只复制基本类型和String,引用类型共享地址;深拷贝需手动递归克隆或序列化反序列化,且Cloneable仅为标记接口。
-
Java中要避免死循环,因其会导致线程持续占用CPU、程序假死、接口超时等;主因包括循环条件恒真、变量未更新、浮点精度误差及并发可见性问题;可通过CPU监控、jstack分析、日志断点和静态扫描定位;预防需优先用for循环、设明确出口与计数保护。
-
Java方法重写触发动态绑定需满足:非private/static/final的实例方法,且子类有签名一致的重写方法,JVM运行时通过vtable查表调用。
-
本文介绍如何利用OfficeScripts+PowerAutomate实现Excel数据的自动图表生成、截图导出及邮件发送,全程无需人工干预,适用于Java等外部程序输出数据后的端到端可视化交付。