-
G1中不存在“UpdateLogBuffer”标准术语,实指DirtyCardQueue;其压力需通过UpdateRS耗时、ProcessedBuffers数量及ExtRootScanning异常等间接指标判断,而非日志直接输出。
-
不能一起用——Logback和Log4j2互斥,SLF4J仅允许一个绑定生效;同时存在会触发警告并随机选其一,导致日志丢失或行为异常,须统一门面、单一实现。
-
HashSet通过组合HashMap实现,所有操作委托给内部map字段,add本质是map.put(e,PRESENT)==null,去重依赖HashMap的hashCode和equals协同判断,其他方法也全部代理。
-
final局部变量成为编译期常量需同时满足:声明即初始化、类型为基本类型或String、右侧为编译期可确定的常量表达式;否则仅为普通final变量,不可用于switchcase或注解值。
-
将目录(如bin)添加到PATH环境变量可使其中可执行文件全局可用,系统按PATH顺序查找命令;bin通常存放二进制文件、脚本或符号链接,遵循FHS规范,优先级和安全性需谨慎管理。
-
Java反射机制的核心是在运行时动态获取类信息并操作成员,包括通过三种方式获取Class对象、读写私有字段、调用任意方法、实例化对象,所有私有成员操作均需先调用setAccessible(true)。
-
内存中用链表模拟FAT,本质是动态管理块索引信息:每个节点含block_id、status和next_block,按需分配、避免空间浪费,并支持alloc串联、free合并及哈希加速查找。
-
maximumPoolSize是线程池应对突发流量的弹性缓冲上限,仅在corePoolSize满且workQueue满时触发创建非核心线程,达上限后任务走拒绝策略;需按IO/CPU密集型合理设定,并配合动态调节、有界队列与监控压测。
-
Arrays.asList()返回固定长度List,不可增删;因其实现类未重写add/remove,调用抛UnsupportedOperationException;基本类型数组会被整体当作单个元素,应改用包装类型或Stream处理。
-
Java中用byte[]位压缩实现图像掩码可提升性能,每个字节存8个二值像素,(x,y)对应byteIdx=(y×width+x)/8、bitOffset=(y×width+x)%8,读取用maskBytes[byteIdx]&(1<<bitOffset),写入用或运算。
-
用String.lastIndexOf("/")配合substring()可提取路径末尾文件名,但需处理无斜杠、末尾斜杠及Windows反斜杠;推荐使用Paths.get(path).getFileName()更健壮可靠。
-
Java8中用Stream和Lambda实现笛卡尔积的核心是flatMap+map嵌套:外层流遍历第一个集合,对每个元素用flatMap拉平第二个集合的映射结果,并在map中构造数组、List或DTO;支持任意类型、多集合及自定义对象,需注意空集合、基本类型流转换和内存溢出风险。
-
continue只跳过当前迭代剩余代码,不退出循环且不影响循环变量更新;for中i++在每次迭代结束时自动执行,即使用了continue也不会被跳过。
-
CompletableFuture.thenCombine用于并行执行两个异步任务并合并结果,要求两者均完成,通过BiFunction生成新结果;异常时默认短路,可用exceptionally或handle兜底;线程默认由第二个任务完成线程触发,推荐用thenCombineAsync+自定义线程池。
-
Iterator遍历不一定比for循环慢,性能取决于集合类型和JVM优化:ArrayList上for快10%~20%,LinkedList上Iterator更优;HashMap遍历时entrySet()比keySet()+get()快2.3倍;Stream.forEach()纯遍历更慢,仅适合链式操作或并行。