-
必须用name()。因name()不可重写、值稳定且跨版本一致,而toString()可被重写,用于持久化会导致反序列化失败、数据错位及隐性崩溃风险。
-
PathMatcher不支持glob中命名变量如{env},需先用glob:logs/app-*.log匹配再用正则提取变量,或直接使用regex:方案配合完整路径正则匹配。
-
BitSet.cardinality()是Java中最直接、最高效的统计方法,它返回当前BitSet中置为true的位数。无需手动遍历,也不依赖外部库。cardinality()的行为和边界条件该方法内部使用稀疏位计数优化(如分段查表+Long.bitCount),时间复杂度接近O(1)——实际是O(有效字长数),但对绝大多数场景可视为常量级。注意以下几点:空BitSet(未set任何位)返回0即使高位索引很大(如set(1_000_000)),只要中间全
-
Java集合框架是统一管理数据的“通用收纳盒”,专注存储、安全访问和灵活替换;Collection与Map因设计目标不同而互不继承;选错实现类性能差10倍;遍历时修改需用Iterator.remove()或removeIf()避免ConcurrentModificationException。
-
不能只用e.printStackTrace()记录异常,因其输出到System.err、不可控且不支持结构化日志;应使用logger.error("msg",throwable)配合SLF4J+Logback/Log4j2,并注意MDC透传与上下文传递。
-
WebSocketServerProtocolHandler必须置于pipeline最前端,因其需处理原始HTTP升级请求;若前置解码器已将其转为FullHttpRequest,则握手失败并抛IllegalStateException。
-
Java调用OpenCV前必须确保System.loadLibrary("opencv_java455")成功,核心是native库(dll/so/dylib)路径正确、版本严格匹配、架构一致,且系统依赖完整;否则抛UnsatisfiedLinkError。
-
取模运算符%不用于计算总页数或判断末页,而专用于记录序号转页码(如Math.floor(index/pageSize)+1)和循环索引回环(如((i%n)+n)%n),总页数须向上取整,末页判断唯一安全方式是currentPage>=totalPages。
-
Java多态方法调用在运行时决定具体版本,根本原因是JVM通过invokevirtual指令结合对象头的klasspointer和类的虚方法表(vtable)动态查表定位方法入口。
-
变量封装需协同修饰符选择、方法设计与数据防护:private为起点但需配合构造器/setter强制初始化;getter/setter须含校验逻辑;返回可变对象需防御性拷贝;重构时应平滑过渡。
-
thenCompose()用于扁平化串联异步任务,避免CompletableFuture嵌套;它接收前序结果并返回新CompletableFuture,自动压平链式结构,而thenApply()无法解包导致类型错误。
-
HashedWheelTimer适合单机百万级轻量延时任务(如心跳检测),但不适用于订单关闭等强一致性场景,因其任务仅存JVM内存、不可持久化、无容错与状态协同能力。
-
异常链的核心价值在于重建可追溯的因果路径,通过显式关联(如raise...from)保留根因堆栈,解决异步调用中异常静默丢失、跨服务上下文割裂、日志监控信息不全及分层抽象失真等问题。
-
舍入模式须按业务逻辑选定,不可随意;HALF_UP适用于通用四舍五入场景,UP/DOWN分别表示远离/靠近零取整,UNNECESSARY用于精度校验。
-
Connection复用的是JDBCConnection对象而非物理TCP连接,节省三次握手等开销;其本质是池化管理带状态的连接实例,需同线程借还,避免跨线程共享、错误关闭或绕过池直连。