-
AtomicReference的compareAndSet不能直接当锁用,因它仅保证单次CAS原子性、不阻塞线程、失败需手动重试;若无while自旋,一次失败即退出,无法锁住临界区。
-
在IDEA中一键切换Eclipse快捷键只需在Keymap设置中选择Eclipse预设方案,但部分快捷键如Ctrl+1(快速修复)仍为Alt+Enter且不可更改,Ctrl+Shift+F默认仅格式化选中块,Alt+Shift+R重命名需光标位于可重构元素上,且存在插件冲突、系统快捷键抢占、作用域限制及未点击Apply等常见失效原因。
-
Java字符串字面量在编译期确定并存于字符串常量池(JDK7+在堆中),自动入池;newString()在堆新建对象,不入池;intern()可手动入池并返回池中引用;编译期常量拼接入池,运行期拼接不入池。
-
异常链通过将底层异常作为原因嵌入新异常,实现错误信息的封装与追溯。在Java中,使用Throwable类提供的带cause参数的构造函数或initCause()方法,可在抛出业务异常时保留原始异常。例如,在Service层捕获SQLException后,可封装为UserServiceException并传入原异常,形成链条。打印堆栈时会自动显示“Causedby”层级结构,便于定位根因。自定义异常应提供publicMyException(Stringmessage,Throwablecause)构造函数并
-
IllegalArgumentException由方法作者负责抛出,用于拒绝逻辑非法的输入参数;需在方法开头校验并给出含参数名、实际值和业务范围的清晰错误信息,构造函数中尤其不可遗漏。
-
成员变量有默认值,基本类型为0、false或'\u0000',引用类型为null;局部变量无默认值,必须显式初始化。
-
当将@ExceptionHandler从控制器内移至@RestControllerAdvice类后响应格式异常,通常因多个全局异常处理器冲突导致优先级不足,需显式设置@Order保证执行顺序。
-
Java中MessageDigest生成SHA-256哈希结果长度不对,因digest()返回字节数组而非十六进制字符串,需用String.format或Hex.encodeHexString转换并补零至64位;实例不可复用,须reset()后才能再次update;字符串输入必须指定UTF_8编码。
-
用XSSF-SAX流式解析替代XSSFWorkbook,内存稳定几MB、速度提升3~5倍;关闭公式计算、跳过隐藏表、只读打开;解析后批量入库,1000~5000行flush一次。
-
MinorGC发生在年轻代,触发快、停顿短但频率高,由Eden区满触发,存活对象复制到Survivor区或晋升老年代;MajorGC非标准术语,实为老年代回收;FullGC是全局STW事件,扫描整个堆与元空间。
-
Java数组只有length字段,无length()方法;多维数组的length仅表示第一维大小;合法索引范围为0到arr.length-1。
-
本文介绍如何使用JavaStreamAPI从对象列表中提取某一字段(如名称),并将其转换为无重复的Set<String>,重点讲解map()的正确用法、类型安全实践及常见陷阱。
-
Java中Scanner读取数据需注意缓冲区残留和类型匹配:nextInt()等不消费换行符,后续nextLine()会返回空串;应在数值读取后加scanner.nextLine()清空缓冲区,或统一用nextLine()配合parseXxx()转换;hasNextXxx()用于循环读取;Scanner关联System.in时无需close()。
-
吞吐量优先应选ParallelGC,因其专为最大化吞吐量设计,全程STW但效率高、无协调开销;G1GC仅在兼顾吞吐与软实时停顿(≤200ms)时才适用。
-
会出事,JVM明确禁止“this引用逸出”,对象未初始化完就暴露引用会导致读取未初始化字段、NPE或逻辑错乱。