-
JDK15起默认禁用偏向锁,因其在多核高并发场景下收益为负:易触发STW撤销、内存开销大、短命对象导致初始化成本超收益,而轻量级锁+自旋已更优。
-
灰度化核心是用加权平均公式0.299×R+0.587×G+0.114×B逐像素计算亮度并截断至0–255,需注意通道顺序(RGB/BGR)、数组维度、批量读写及Alpha通道单独处理。
-
Lambda表达式是将单抽象方法接口的匿名类简化为简洁函数式写法的机制,适用于事件监听、线程任务和集合操作三类场景,需遵循无状态、单行优先、避免受检异常等原则。
-
Callable是支持返回值和受检异常的泛型接口,通过Callable<V>定义任务、submit()返回Future<V>获取结果,配合invokeAll()和超时处理可安全执行并收集多种类型异步任务。
-
AES加密必须显式指定完整转换字符串(如"AES/CBC/PKCS5Padding"),禁用ECB,CBC需随机IV,GCM需12字节IV和128位tag,密钥须严格匹配128/192/256位并正确派生,加解密opmode不可互换,GCM需调用updateAAD(),Cipher不可复用,密文必须Base64编码传输。
-
KeyGenerator生成对称密钥需严格遵循安全规范:调用JCE安全随机源、按标准算法(如AES-256、SM4、HmacSHA256)结构化生成,经getInstance→init→generateKey→getEncoded四步获取字节数组,并安全存储与脱敏使用。
-
不能准确获取对象大小,仅返回浅层大小(对象头、字段引用、对齐填充),不递归计算引用对象;依赖-javaagent启动代理,受JVM实现和参数(如UseCompressedOops)影响显著。
-
Java中用Map实现简单缓存的核心是使用ConcurrentHashMap存储键值对,并添加过期控制(如TTL时间戳校验)和容量限制(如LinkedHashMap+LRU),适用于低并发、非关键业务场景。
-
多数情况下不指定初始容量也能正常工作,但预估数据量时建议指定,如newArrayList(300);默认容量10,扩容为1.5倍并复制数组,频繁add会降低性能。
-
Files.createSymbolicLink()创建符号链接的关键在于目标路径的相对性或绝对性、可访问性及系统权限;目标路径为字符串,JVM不校验存在性,但访问时系统按该路径解析;需确保用户权限、文件系统支持(如非FAT32),且推荐用Paths.get()安全构造路径。
-
Session存购物车价格不准因商品对象被共享引用,需存不可变数据结构或深拷贝;BigDecimal计算须用字符串构造、统一scale和舍入模式;登录后应合并Session购物车至数据库并清空Session;高并发下需加锁或迁至数据库行锁。
-
Short.reverseBytes()是Java中用于翻转short类型(2字节)字节序的静态工具方法,它本身**不直接处理“变量重组”**,也不能自动适配跨平台字节序转换的完整逻辑。它的作用非常明确:将一个16位整数的高低字节互换。是否需要使用它、何时使用它,取决于你**已知的数据来源字节序与目标平台/协议期望字节序是否相反**。理解reverseBytes()的实际行为该方法只做一件事:输入一个short值(例如0x1234),返回其字节翻转后的short(即0
-
非侵入式运行时检测流式任务中长生命周期类的循环依赖,需结合Arthas监听、Actuator端点分析、JVM内存诊断及Spring三级缓存反射验证,并区分容器可解与不可解循环,最终固化为健康检查与监控指标。
-
使用Collections.emptyMap()等单例空集合可降低GC压力,因其返回JVM预创建的全局共享不可变实例,避免堆分配、减少MinorGC扫描与复制开销,并消除构造同步块等隐式成本。
-
异常转译是将底层技术异常(如SQLException)包装为语义明确的业务异常(如UserNotFoundException),保留cause链、暴露业务上下文、避免泄露技术细节。