-
Lambda表达式通过函数粒度解耦行为,替代策略模式、回调依赖和匿名内部类,简化验证规则、事件监听、线程任务及Stream数据处理,提升灵活性与可维护性。
-
Linux搭建Java环境需安装JDK、配置JAVA_HOME与PATH环境变量、验证java-version及路径。推荐OpenJDK17/21,Ubuntu用apt,CentOS用yum/dnf,手动安装则解压至/opt/java并设权限,环境变量写入/etc/environment或/etc/profile,最后逐项验证生效。
-
Optional.or()提供惰性、可组合的备选值获取机制,接收Supplier<Optional<T>>,仅在为空时调用并返回Optional,支持链式操作与多级fallback。
-
foreach遍历时不能删元素,因迭代器校验集合version字段,修改会抛InvalidOperationException;应倒序for删List、先存key再批量删Dictionary,或用ToList()解耦操作。
-
ScheduledThreadPoolExecutor是Java中用于高效执行定时或周期性任务的类,支持多线程并发和灵活调度。它继承自ThreadPoolExecutor并实现ScheduledExecutorService接口,可通过newScheduledThreadPoolExecutor(n)创建实例,指定核心线程数。提供schedule()、scheduleAtFixedRate()、scheduleWithFixedDelay()等方法安排一次性或重复任务,并返回ScheduledFuture
-
Java启动时加载的JDK取决于PATH中首个java可执行文件所在路径,再反推其JDK根目录;JAVA_HOME不参与java命令调用,但被Maven等工具链直接读取。
-
Springfox3.x在SpringBoot2.6+需配置spring.mvc.throw-exception-if-no-handler-found:false且spring.resources.add-mappings:true,访问路径为/swagger-ui/;SpringBoot3.x不兼容Springfox,须迁移到springdoc-openapi。
-
必须用name()。因name()不可重写、值稳定且跨版本一致,而toString()可被重写,用于持久化会导致反序列化失败、数据错位及隐性崩溃风险。
-
数组实现拓扑排序的核心是用inDegree[]记录各节点入度、successors[]存储后继列表,结合队列执行Kahn算法,按依赖关系确定执行顺序,适用于轻量级调度场景。
-
compareAndExchange总返回当前值(无论是否成功),而compareAndSet仅返回布尔结果;前者支持响应式反馈(如获取实际版本号),后者仅指示成功与否。
-
ServiceLoader是JDK原生SPI机制,通过META-INF/services/下接口全限定名配置文件加载实现类,懒加载、无参构造、不支持依赖注入,与Spring完全隔离,适用于简单插件场景。
-
ServiceLoader.load不能用于运行时确定类型的“变量接口”,因其要求接口类型编译期已知;若需按字符串名动态加载,须绕过泛型限制、显式指定类加载器并手动校验类型,或改用SpringFactories等更灵活方案。
-
G1MixedGC的触发取决于堆总占用达IHOP阈值(默认45%)并完成并发标记,而非老年代单独占比;其回收Region数量由垃圾价值、停顿约束和空间压力动态权衡决定。
-
Comparable是类自身定义的唯一自然排序规则,要求compareTo与equals一致以避免TreeSet/Map异常;Comparator是外部独立的灵活比较器,支持同一类多种排序且无需修改源码。
-
Eden区是TLAB的母体而非后备,TLAB从Eden中划分,其稳定性依赖Eden足够大、结构健康;Eden过小会限制TLAB伸缩空间,导致频繁refill或fallback至共享区竞争分配。