-
Java项目需在pom.xml中添加pulsar-client3.3.0(或3.0.8+)依赖,支持BatchReceive及Java17+;serviceUrl须与Pulsar服务端advertisedAddress严格一致;subscriptionName须全局唯一且subscriptionType按场景选型;务必显式调用.close()释放资源。
-
module-info.java是CI/CD中模块治理的起点,通过显式声明依赖、强化编译期检查、支持模块图验证、实现增量构建与测试聚焦、支撑SBOM生成及安全扫描,将运行时问题提前至编译阶段拦截。
-
BST不支持二进制寻址,但可将查找路径映射为二进制编码(0左1右);该编码依赖树形结构,仅反映逻辑路径,用于日志、序列化等,需边查边记,无直接计算公式。
-
Selector监控通道I/O就绪状态而非变量,需非阻塞通道注册并正确管理SelectionKey:注册时设兴趣事件与attachment,select后用Iterator遍历并remove已处理key,业务逻辑须交由线程池执行。
-
IntelliJIDEA中Lombok插件不生效需确认三件事:安装启用插件、开启AnnotationProcessing、构建工具中正确声明compile范围依赖;新版Lombok1.18.32与Jackson兼容问题需显式配置lombok.config;@Builder与@AllArgsConstructor同用易冲突,推荐@RequiredArgsConstructor+@Builder;单元测试中失效多因testclasspath缺失Lombok依赖或IDE缓存未更新。
-
ForkJoinPool专用于可递归拆分的CPU密集型任务,如归并排序、树遍历、并行reduce;不适用于I/O多、不可分或耗时差异大的场景。
-
accessOrder必须显式设为true才启用访问顺序,使get()或put()已存在key时将对应Entry移至链表尾部;默认false按插入顺序维护,LRU失效。
-
Java没有Character.isChinese方法,应使用Character.UnicodeBlock.of()判断CJK相关区块,覆盖扩展A/B区及兼容汉字,避免仅用0x4E00–0x9FFF范围。
-
CountDownLatch是Java中用于线程同步的工具,通过计数器实现一个或多个线程等待其他线程完成任务后再执行。初始化时设定计数值,每个任务完成后调用countDown()使计数减一,等待线程调用await()阻塞直至计数归零。适用于并行任务协调、服务启动依赖、数据加载聚合等场景。与CyclicBarrier不同,CountDownLatch为一次性使用,不可重置,适合“等待所有任务完成”的模型。使用时需注意将countDown()放入finally块防止遗漏,避免因异常导致计数不归零;建议使用带超
-
本文详解如何在Java中正确读取整数文件、自动过滤重复值与非法输入,并将唯一非负整数安全填入预分配数组,重点修复因变量作用域导致的重复判定失效问题。
-
SQLException是checkedexception,因数据库操作天然不可靠,JDBC规范强制处理以避免静默失败;它不自动触发回滚,需显式调用rollback()或配置Spring的rollbackFor。
-
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)。
-
安全捕获异常关键变量需在异常发生现场提取:优先用自定义异常构造参数传入业务ID;避免反射、toString()等高危操作;集合只记size和前3元素;时间转ISO格式;MDC存简单类型上下文并及时清理。
-
peek是Stream的中间操作,用于调试时查看中间元素而不改变数据流。与map不同,peek不转换元素;与forEach不同,forEach是终止操作。常见误区是忽略Stream惰性求值,缺少终止操作时peek不会执行。使用peek可打印每步流转的元素,如过滤、映射前后的值,帮助定位问题。处理对象时可通过自定义输出关键字段提升可读性。注意事项:仅用于调试,避免修改状态,确保有终止操作,不依赖并行流中顺序。推荐结合日志框架使用,合理利用peek能显著提升Stream链式调用的可观察性与调试效率。
-
CMS、G1、ZGC性能演进聚焦停顿可控性、大堆适应性、碎片治理:CMS“尽量少停”但碎片致FullGC不可控;G1实现“可设上限”停顿;ZGC迈向“几乎不停”。