-
单线程场景应优先选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和依赖需同步配置。
-
Java是否仍在运行需先执行java-version和javac-version验证;若提示命令不存在,可能已卸载或环境变量失效,须检查“应用和功能”中所有Java相关条目并卸载,再清理JAVA_HOME、Path、注册表JavaSoft项及磁盘残留文件夹。
-
SpringBoot接口版本控制的核心在于确保API在演进过程中支持不同版本的客户端,避免旧系统崩溃。1.URI路径版本控制通过在URL中嵌入版本号(如/api/v1/users),实现简单且对客户端友好,但可能导致路由配置膨胀;2.HTTPHeader版本控制利用自定义请求头(如X-API-Version)传递版本信息,保持URL简洁但需要客户端额外设置请求头;3.内容协商版本控制通过Accept头指定版本(如application/vnd.myapi.v1+json),符合HTTP规范但实现复杂;4.
-
final实例变量必须在声明时或每个构造器中显式赋值一次,且编译器静态检查所有路径;staticfinal在类加载时初始化,二者不可混淆,赋值遗漏任一构造路径即报错。
-
抽象方法的核心作用是强制子类实现特定方法,统一流程骨架并保留实现灵活性;需用abstract修饰、无方法体,所在类也须为abstract;不可为private或final,推荐public;常用于模板方法模式,配合钩子方法提升扩展性。
-
IntelliJIDEA是用Java编写的独立IDE,需先安装JDK17或21(LTS),再安装IDEA并手动配置ProjectSDK路径;启动失败或报错多因JDK版本不匹配、路径错误或架构不符,应检查java-version、SDK根目录及系统架构。
-
HashSet去重依赖HashMap的key唯一性,本质是通过hashCode()定位桶位置、equals()判断逻辑相等;自定义类必须重写二者以保证一致性,否则去重失效。
-
NumberFormatException本质是字符串无法构成合法数值字面量的硬性解析失败,需前置校验空值、空白及进制参数,推荐用NumberUtils.isCreatable()安全判断后再解析,溢出仍抛异常。
-
CheckedException仅强制编译期检查,实际风控效果弱;真正有效的风险控制在于异常可恢复性判断、上下文决策能力及拦截点前移(如Optional、Builder校验、熔断重试等)。
-
接口常量默认publicstaticfinal,用于行为契约但易导致职责模糊;类常量可用不同访问修饰符,更适合封装和维护。现代Java推荐使用专用常量类、枚举、私有静态常量或配置文件管理常量,以提升代码清晰度与可维护性。