-
Arrays.asList()返回固定长度List,不可增删;因其实现类未重写add/remove,调用抛UnsupportedOperationException;基本类型数组会被整体当作单个元素,应改用包装类型或Stream处理。
-
Iterator遍历不一定比for循环慢,性能取决于集合类型和JVM优化:ArrayList上for快10%~20%,LinkedList上Iterator更优;HashMap遍历时entrySet()比keySet()+get()快2.3倍;Stream.forEach()纯遍历更慢,仅适合链式操作或并行。
-
JavaScript中不存在try_catch_finally语法,正确写法是独立的try{}catch(e){}finally{}结构;catch需手动判断异常类型;finally总会执行但可能覆盖返回值;应谨慎使用,避免滥用和空捕获。
-
单线程场景应优先选TreeMap,ConcurrentSkipListMap因并发设计导致构造重、插入慢20%~30%、size()为O(logn)遍历操作;多线程高频写+排序需求时才适用后者。
-
FileNotFoundException不仅表示文件未找到,还涵盖路径不存在、权限不足等场景;应优先用Files.exists()和Files.isReadable()主动检测,而非依赖异常类型判断。
-
应避免在消息消费循环中动态创建捕获外部变量的Lambda,因其引发堆逃逸和GC压力;优先使用方法引用、静态委托或预编译委托,并将预处理逻辑分层解耦为解码、标准化、分发三阶段。
-
OperatingSystemMXBean.getFreePhysicalMemorySize()返回操作系统当前完全未被使用的物理内存字节数,Linux对应MemFree,Windows/macOS则包含可快速回收内存,与JVM堆内存无关。
-
ByteArrayInputStream是Java中基于字节数组的内存输入流,构造时复制数组确保安全,支持标准InputStream方法及mark/reset(readlimit无实际限制),适用于单元测试、协议解析等中小数据量场景。
-
JDK21的RecordPatterns支持多层嵌套record的直接解构,但要求每层均为record类型,不支持class或非record的sealed实现类;编译和运行需启用预览特性,且IDE和依赖需同步配置。
-
CheckedException仅强制编译期检查,实际风控效果弱;真正有效的风险控制在于异常可恢复性判断、上下文决策能力及拦截点前移(如Optional、Builder校验、熔断重试等)。
-
接口常量默认publicstaticfinal,用于行为契约但易导致职责模糊;类常量可用不同访问修饰符,更适合封装和维护。现代Java推荐使用专用常量类、枚举、私有静态常量或配置文件管理常量,以提升代码清晰度与可维护性。
-
IDEA打开Java源码需先确认是否为标准Maven/Gradle项目,否则仅作普通文件夹处理;无构建文件时可手动创建Module或补最简pom.xml/gradle配置以支持依赖解析与代码功能。
-
必须让每个策略实现类返回唯一type值,因为Spring自动注入的Map<String,StrategyInterface>默认key是Bean名(如aliPayStrategy),而业务路由需要语义化key(如"ALI"),需通过getRouteKey()等方法暴露业务标识,并在@PostConstruct中手动构建routeKey→Bean映射。
-
requiresstatic表示编译期必需、运行时可选的模块依赖,用于隔离调试模块:编译时保障类型检查,运行时不加载、不报错,结合DEBUG=false可实现编译期裁剪与构建阶段物理隔离。
-
调用confirm()函数可弹出标准确认对话框并返回布尔值:true表示用户点击“确认”,false表示点击“取消”或关闭;它是浏览器原生方法,接受字符串提示文本,常用于删除、提交等需二次确认的场景,但样式和按钮文字不可定制,现代开发推荐使用UI库的模态框替代。