-
数组实现拓扑排序的核心是用inDegree[]记录各节点入度、successors[]存储后继列表,结合队列执行Kahn算法,按依赖关系确定执行顺序,适用于轻量级调度场景。
-
hasNextBigDecimal()不适合财务校验,因其仅做基础词法识别,不检查科学计数法、小数位数、非负性、无穷值及非法字符;应先用正则预检再安全解析。
-
IntelliJIDEA默认支持自动导包,需开启Auto-import并配置相关选项:勾选“Addunambiguousimportsonthefly”和“Optimizeimportsonthefly”,确保依赖正确加载(如Maven/Gradle项目已识别),输入类名后按Enter即可自动导入;遇同名类时通过补全列表或启用“Showimportpopup”手动选择。
-
synchronized代码块应只包裹真正需要互斥的语句:锁对象推荐privatefinalObjectlock,避免用this或可变对象;禁放IO、耗时计算、外部调用等无关操作;细粒度锁需权衡死锁与开销。
-
里氏替换原则(LSP)是设计契约,要求子类对象可无损替换父类对象:前置条件不得强化、后置条件不得弱化、行为与副作用须一致;违反案例包括正方形继承长方形、企鹅继承鸟类等;践行要点为优先抽象/接口、避免重写公开方法、用模板方法、明确契约文档、执行子类替换测试。
-
UUID.randomUUID()直接生成符合RFC4122的安全version4UUID,基于SecureRandom,自动设置version和variant位,无需手动处理格式或替换短横线。
-
MemoryView的Diff列反映断点间对象净增减量,非单位时间分配速率,因其无时间戳且不记录分配总数;需用JFR、dotMemory等专业工具测速率。
-
响应式编程中“假性死结”本质是判空逻辑不当导致数据流静默终止或背压失衡,而非真死锁;表现为日志无报错、Subscriber收不到onComplete/onError,但上游已发数据,根源在于null穿透、filter空终止、flatMap内返回null等未对齐流生命周期的空值处理。
-
catch(Exceptione)会吞掉RuntimeException(如NullPointerException)和受检异常(如IOException),但二者处理意图不同:运行时异常应暴露修复,而非静默忽略;错误吞咽导致空指针后继续执行、堆栈丢失、事务不回滚等严重问题。
-
克鲁斯卡尔算法在骨干网建设中用于构建无环连通的最小生成树,通过边权建模真实成本(如租用费、审批周期、共沟风险等),结合并查集动态判断连通性以规避逻辑环路,并输出带部署约束注释的链路清单。
-
Java中HashMap底层数据存储在私有table数组中,反射应访问table而非entrySet;需通过反射获取Node[]数组及其中Node的key、value、next等字段,但受JDK版本影响大,仅建议用于调试或性能分析。
-
Optional.filter()用于条件性保留单个值:值存在且满足Predicate时返回原Optional,否则返回empty;它不遍历集合,不改变泛型类型,且在empty时不执行Predicate。
-
目标是为不同集合类型、数据规模和操作性质划定推荐路径与禁用红线,而非单纯追求性能;例如10万级ArrayList用for循环合理,而同量级LinkedList禁用for循环;当热点方法占比超40%且无状态依赖时,需配套静态检查规则拦截高危写法。
-
关键字是Java中具有特殊含义的保留字,如class、public;标识符是开发者自定义的名称,用于命名变量、类等,如HelloWorld。1.关键字全为小写,数量固定;2.标识符可含字母、数字、_、$,不可数字开头;3.二者区别在于关键字是语法组成部分,标识符是自定义名称。
-
静态方法属于类而非实例,不参与运行时动态绑定,因此不能被重写;2.子类定义同名静态方法时发生方法隐藏,调用时机由引用类型在编译阶段决定;3.如示例所示,Parentp=newChild()调用p.display()输出"Parentstaticmethod",因引用类型为Parent;4.应通过类名调用静态方法以避免混淆,确保代码清晰。