-
LocalDate.plusDays()语义上只支持加正数天数,负数虽可运行但属隐式兼容而非官方承诺;应改用minusDays()实现减法,以保证语义清晰、可读性强且避免静态分析警告。
-
高位泄漏指高优先级线程因上下文错置长期持有TraceContext/Span/MDC,导致内存增长、GC压力升高等问题;本质是ThreadLocal强引用锁死引发的带业务语义泄漏。
-
核心是ThreadLocal存键、取键、清键:因AbstractRoutingDataSource为单例,必须用ThreadLocal隔离线程上下文,否则线程复用会导致串库;determineCurrentLookupKey()需兜底返回默认key,remove()须在finally中调用防污染。
-
要启用SpringCloudConfig的配置加密功能,必须在ConfigServer端进行操作。1.引入必要的依赖:确保项目中包含spring-cloud-starter-config,若使用RSA加密还需添加spring-security-rsa;2.启用加密功能:在ConfigServer的配置文件中设置spring.cloud.config.server.encrypt.enabled:true;3.配置密钥:选择对称加密(通过encrypt.key指定密钥)或非对称加密(通过encrypt.ke
-
Character.isWhitespace()不能用于正则表达式中清理控制字符,因其仅判断单个字符是否为空白(如空格、换行等),不识别\u0000–\u001F等需清除的Unicode控制符;推荐直接用replaceAll("\\p{Cntrl}","")或更精确范围[\u0000-\u001F\u007F]。
-
复用CharsetEncoder实例、预估缓冲区大小、配置错误策略并避免新建对象是高性能编码的关键:使用ThreadLocal缓存编码器,按maxBytesPerChar()预分配ByteBuffer,用CharBuffer.wrap()零拷贝,设置CodingErrorAction容错。
-
AssertionError表示程序逻辑错误,不应被常规捕获;它继承自Error,仅用于开发/测试阶段的内部契约检查,启用需JVM参数-ea,生产环境禁用,正确做法是修复逻辑或使用IllegalArgumentException等业务异常。
-
分支结构中用==比较包装类特别危险,因其隐含自动拆箱,-128~127外或null时抛NPE,且null来源隐蔽导致延迟崩溃;应统一用Objects.equals、显式判空或getOrDefault避免拆箱。
-
Gson默认跳过Map中null值,需调用serializeNulls()才能输出null;Jackson对LinkedHashMap顺序无稳定保证,须确保使用LinkedHashMap实例且避免破坏顺序的操作;FastJson2反序列化泛型需TypeReference匿名子类,否则类型擦除导致嵌套LinkedHashMap。
-
强转不参与物流单切分,也不影响分支预测;物流单自适应切分依赖业务规则建模与约束求解,分支预测是CPU硬件机制,与物流逻辑无关。
-
-XX:+AlwaysPreTouch作用是JVM启动时预分配并映射全部堆内存物理页,避免运行时缺页中断;需配合-Xms=-Xmx使用,适用于延迟敏感、大堆及容器环境,但会延长启动时间。
-
Map的key必须重写equals()和hashCode(),因哈希表靠hashCode()定位桶、equals()判断键等价;若不重写,默认地址比较会导致相同逻辑对象被误判为不同key。
-
SecureRandom为什么比Random更适合加密场景因为Random是伪随机、可预测的线性同余算法,种子一旦暴露或被猜中,整个序列都能还原;而SecureRandom默认从操作系统采集熵(如/dev/urandom或Windows的BCryptGenRandom),输出不可预测、抗回溯,满足密码学强度要求。常见错误现象:用Random生成JWT密钥、APItoken、盐值(salt),导致系统被批量破解。使用场景包括:generateKeyPair()前的随
-
ThreadLocal通过为每个线程维护独立变量副本解决线程间数据污染,核心是“线程内单例”;需显式remove()避免内存泄漏,且子线程默认不继承其值。
-
Java模块化是全链路依赖与封装机制,强制声明模块名、依赖和导出,module-info.java为必需身份证;未声明则视为传统classpath代码,需严格遵循语法与路径规则。