-
DuplicateFormatFlagsException与日志模板重复无关,它仅在调用String.format()等底层格式化方法且格式串中出现重复标志(如"%00d")时抛出;日志框架使用自定义解析,重复占位符不会触发该异常。
-
@ConditionalOnProperty专为配置驱动开关设计,比自定义@Conditional更安全简洁:内置matchIfMissing、havingValue、多值匹配等健壮支持,避免NPE、类型误判、Bean冲突等问题,且语义清晰、易维护、官方推荐。
-
使用String.format("%.2f",3.14159)可保留两位小数并返回字符串;2.System.out.printf("价格:%.2f元%n",19.876)直接格式化输出并换行;3.DecimalFormatdf=newDecimalFormat("0.00")可灵活控制小数位和千分位,适合复杂格式需求。
-
NegativeArraySizeException表明数组长度为负,需在new前校验:如assertn>=0或if(n<0)throwIllegalArgumentException;捕获该异常无意义,因属逻辑错误而非可恢复异常。
-
应优先使用Map.getOrDefault(key,defaultValue)替代手动判空,它能统一处理key不存在或值为null的情况并返回默认值,避免NPE、简化代码;但需区分“未配置”和“显式null”时例外。
-
局部变量天然线程安全,应通过参数传递、ScopedValue和虚拟线程将共享状态转为线程独占的局部数据流,读操作无锁,写操作归集异步处理。
-
Java类设计核心是职责分离:extends表“是什么”,implements表“能做什么”;优先组合、接口、final修饰与构造器安全,严守里氏替换原则。
-
可行,但需将非模块化JAR放模块路径使其转为自动模块,按推断名(如fastjson)声明requires,并用--module-path编译运行;反射访问需opens,SPI需uses,命名模糊时用jdeps验证。
-
验证阶段首先校验Class文件魔数是否为0xCAFEBABE、主版本号是否在JVM支持范围内,未通过则抛出ClassFormatError或UnsupportedClassVersionError并终止加载。
-
UUID.randomUUID()直接生成符合RFC4122的安全version4UUID,基于SecureRandom,自动设置version和variant位,无需手动处理格式或替换短横线。
-
DatagramSocket无需connect()即可发包,发送目标由DatagramPacket携带,必须用含地址和端口的四参构造器;receive()需设超时避免阻塞,bind()前应调用setReuseAddress(true)解决端口占用。
-
Files.walkFileTree()配合SimpleFileVisitor统计文件夹总大小的核心是重写visitFile()累加文件大小,通过AtomicLong线程安全计数,visitFileFailed()控制异常跳过,比Files.walk()更稳健可控。
-
Java中无法重写addSuppressed()来处理关闭异常,因其是Throwable类的final方法,仅存储抑制异常而不执行逻辑;正确做法是在close()中捕获并决策、避免抛出检查异常、利用getSuppressed()分析抑制异常、实现幂等close(),或分离close()与显式释放方法。
-
Java环境配置完成后IDE仍提示无JDK,通常是路径未手动指定、版本不兼容、缓存冲突或环境变量未被IDE正确继承所致,需依次检查JDK路径配置、IDE版本支持范围、启动JRE一致性、系统环境变量加载方式及清除IDE缓存。
-
目标是为不同集合类型、数据规模和操作性质划定推荐路径与禁用红线,而非单纯追求性能;例如10万级ArrayList用for循环合理,而同量级LinkedList禁用for循环;当热点方法占比超40%且无状态依赖时,需配套静态检查规则拦截高危写法。