-
静态工厂方法是用publicstatic方法创建实例,比new更灵活清晰,可复用对象、返回子类型、推断泛型,命名如of()、valueOf()等表达语义,需私有构造器并合理封装逻辑。
-
统一错误响应的核心是用标准结构(ResponseResult)封装异常信息,含code、errorCode、message等字段,配合@ControllerAdvice全局处理,分层设计错误码并联动日志与监控。
-
使用addAll或StreamAPI可合并多个Set。先创建新Set,调用addAll逐个添加其他Set元素,自动去重;或用Stream.of结合flatMap和collect收集为新Set。示例:merged.addAll(set1)添加内容,或Stream方式函数式合并。注意类型一致、有序性选择LinkedHashSet、排序用TreeSet。原始集合不被修改。addAll直观,Stream更灵活现代。
-
本文介绍在二进制数组中,允许最多将k个0翻转为1的前提下,求解「最长连续1子数组长度」的同时,统计所有能达成该最大长度的不同翻转方案数量的高效算法,时间复杂度O(n),空间复杂度O(1)。
-
Spring事件默认同步执行,@EventListener不加@Async仍运行在主线程和同一事务中,导致阻塞、事务回滚、异常传播;真解耦需显式配置带线程池的ApplicationEventMulticaster并确保@Async方法满足Bean代理、非private/static、非this调用等条件。
-
Java类中的成员变量和方法的定义方式分别是:成员变量定义在类中、方法外,通常包含访问修饰符、数据类型和变量名;方法由访问修饰符、返回类型、方法名、参数列表及方法体组成。2.构造方法用于初始化对象状态,其名称必须与类名相同、无返回类型、只能通过new调用一次,不同于普通方法。3.封装性通过私有化成员变量并提供公共getter/setter方法实现,提升了数据安全性、代码维护性和系统模块化程度。
-
putIfAbsent能避免覆盖已有数据,因为它仅在key不存在或对应value为null时才插入新值,且是原子操作;但HashMap版非线程安全,多线程须用ConcurrentHashMap,并确保value非null以防误判。
-
用createElement()创建并添加元素需三步:创建节点、设置内容/属性、插入到DOM;关键在插入位置与方式,推荐用DocumentFragment批量插入以提升性能。
-
组合比继承更安全,因其将依赖控制在接口层,避免子类过度耦合父类实现;继承仅适用于明确“is-a”关系且父类专为继承设计的场景,框架强制要求时除外。
-
动态修改核心线程数需明确setCorePoolSize()仅重定义后续创建规则:调大不立即建线,调小不中断运行线程;须配合prestartAllCoreThreads()预热、allowCoreThreadTimeOut(true)缩容回收,并接入配置中心、设置校验与监控告警。
-
从订单列表接口慢查询复盘 MyBatis nested select 的 N+1 风险,讲清 JOIN nested results、两段批量查询、分页 count 和上线检查。
-
Optional是明确表达“可能为空”意图的容器,适用于查找、解析等可能无结果的函数返回值,而非替代null或用于字段类型;应避免常见误用如Optional.of(null)、实体类中使用Optional、混淆map/flatMap等。
-
用带种子的Random分层抽样可复现组卷;多信号叠加检测+服务端心跳校验防作弊;时间同步需用服务端时间戳对齐。
-
Java的PreferencesAPI并不直接生成可读路径或用户可见的XML文件;其底层存储机制因操作系统而异(Windows注册表、macOSplist、Linux二进制文件),且路径经哈希处理,故出现“乱码目录”属正常行为,非错误——开发者应避免依赖文件系统路径,而应通过API读写键值。
-
IntelliJIDEA自动保存失效需检查三处:勾选“Savefilesonframedeactivation”和“Savefilesautomaticallyifidle”,并确认“Savefilesonbuild”已启用;插件冲突(如Metals、Lombok)可能干扰保存;外部进程(如Maven编译、DevTools)重写文件导致“文件已更改”提示。