-
公平锁按线程等待时间顺序分配锁,非公平锁允许插队;2.公平锁通过newReentrantLock(true)创建,保证FIFO,避免饥饿但性能较低;3.非公平锁为默认方式,直接尝试CAS获取锁,吞吐量高但可能引发线程饥饿;4.synchronized是非公平锁;5.非公平锁因高效成为默认推荐,选择取决于公平性与性能权衡。
-
CMS、G1、ZGC性能演进聚焦停顿可控性、大堆适应性、碎片治理:CMS“尽量少停”但碎片致FullGC不可控;G1实现“可设上限”停顿;ZGC迈向“几乎不停”。
-
peek是Stream的中间操作,用于调试时查看中间元素而不改变数据流。与map不同,peek不转换元素;与forEach不同,forEach是终止操作。常见误区是忽略Stream惰性求值,缺少终止操作时peek不会执行。使用peek可打印每步流转的元素,如过滤、映射前后的值,帮助定位问题。处理对象时可通过自定义输出关键字段提升可读性。注意事项:仅用于调试,避免修改状态,确保有终止操作,不依赖并行流中顺序。推荐结合日志框架使用,合理利用peek能显著提升Stream链式调用的可观察性与调试效率。
-
安全捕获异常关键变量需在异常发生现场提取:优先用自定义异常构造参数传入业务ID;避免反射、toString()等高危操作;集合只记size和前3元素;时间转ISO格式;MDC存简单类型上下文并及时清理。
-
Math.random()生成[0,1)的double,获取1~6随机整数应写为(int)(Math.random()*6)+1;Math.abs(Integer.MIN_VALUE)仍返回负值,可用Math.absExact()避免;2的n次方优先用1L<<n而非Math.pow(2,n)。
-
SQLException是checkedexception,因数据库操作天然不可靠,JDBC规范强制处理以避免静默失败;它不自动触发回滚,需显式调用rollback()或配置Spring的rollbackFor。
-
本文详解如何在Java中正确读取整数文件、自动过滤重复值与非法输入,并将唯一非负整数安全填入预分配数组,重点修复因变量作用域导致的重复判定失效问题。
-
CountDownLatch是Java中用于线程同步的工具,通过计数器实现一个或多个线程等待其他线程完成任务后再执行。初始化时设定计数值,每个任务完成后调用countDown()使计数减一,等待线程调用await()阻塞直至计数归零。适用于并行任务协调、服务启动依赖、数据加载聚合等场景。与CyclicBarrier不同,CountDownLatch为一次性使用,不可重置,适合“等待所有任务完成”的模型。使用时需注意将countDown()放入finally块防止遗漏,避免因异常导致计数不归零;建议使用带超
-
Java没有Character.isChinese方法,应使用Character.UnicodeBlock.of()判断CJK相关区块,覆盖扩展A/B区及兼容汉字,避免仅用0x4E00–0x9FFF范围。
-
accessOrder必须显式设为true才启用访问顺序,使get()或put()已存在key时将对应Entry移至链表尾部;默认false按插入顺序维护,LRU失效。
-
ForkJoinPool专用于可递归拆分的CPU密集型任务,如归并排序、树遍历、并行reduce;不适用于I/O多、不可分或耗时差异大的场景。
-
IntelliJIDEA中Lombok插件不生效需确认三件事:安装启用插件、开启AnnotationProcessing、构建工具中正确声明compile范围依赖;新版Lombok1.18.32与Jackson兼容问题需显式配置lombok.config;@Builder与@AllArgsConstructor同用易冲突,推荐@RequiredArgsConstructor+@Builder;单元测试中失效多因testclasspath缺失Lombok依赖或IDE缓存未更新。
-
IntelliJIDEA中配置JDK需协调项目SDK、模块SDK和语言级别:先在ProjectStructure→Project设置项目SDK及匹配的语言级别;再在Modules→Dependencies中确认或调整模块SDK;最后同步Maven/Gradle的编译插件版本,必要时清理缓存重启。
-
异常链是Java内置的cause机制,通过Throwable(String,Throwable)构造器自动构建Causedby:嵌套堆栈,用于跨层封装、补充业务上下文、受检转非受检三类场景,避免丢弃关键线索。
-
答案是通过拆分条件、使用变量、卫语句和括号提升可读性。将复杂条件封装为私有方法如isAdminEligible,使主逻辑清晰;用布尔变量命名中间结果,分离条件与行为;采用卫语句提前返回,减少嵌套层级;显式添加括号明确逻辑优先级,避免歧义;最终实现代码自解释,强调清晰优于简洁。