-
main方法必须声明为publicstaticvoid,JVM仅识别该签名;Maven标准结构简化构建;推荐用CommonsCLI解析参数;需显式用System.exit控制退出码。
-
MinIO连接失败主因是服务未启动或监听地址错误;默认仅监听localhost:9000,需用--address显式绑定IP;客户端endpoint须为完整无路径URL;bucket需显式创建且命名合规;SpringBoot需统一OkHttp版本。
-
线程池submit异常默认被FutureTask静默捕获,必须调用get()才能解包;应统一通过工具方法unwrapExecutionException、映射原始异常为带上下文的BusinessError,并配合超时控制与回调兜底。
-
任务执行漏斗通过三级阻塞队列实现流量缓冲、分拣与节流:第一级入口缓冲承接洪峰,第二级按优先级分组调度,第三级令牌桶或SynchronousQueue控制输出速率,并协同解决唤醒丢失、背压传导和生命周期一致性问题。
-
BigDecimal.divide抛ArithmeticException的常见原因有四:一是除零;二是未指定精度和舍入模式导致无限小数;三是指定了UNNECESSARY舍入但结果无法精确表示;四是divideToIntegralValue在无法整除时部分JDK版本异常。
-
SpringBoot中注解数组属性(如@RequestMapping.value)仅用于静态路由声明,不接收运行时批量参数;批量参数应通过@RequestBody、@RequestParam等独立接收。
-
应避免使用java.util.Stack,改用ArrayDeque或LinkedList实现栈;Queue是接口,需选用合适实现类;优先使用offer()/poll()/peek()而非add()/remove()/element();迭代器不保证LIFO/FIFO顺序。
-
不能用System.nanoTime()准确测量invokedynamic生成时滞,因其仅能捕获首次调用总延迟,无法隔离类加载、字节码生成、方法句柄解析等JVM内部开销;应采用预热后测量、显式调用bootstrap方法计时或JVMTI/JFR等语义对齐工具。
-
Java枚举天然防反射创建实例,因JVM在native层硬编码限制枚举实例化;其序列化与线程安全由语言机制保障,无需readResolve或synchronized;但不支持延迟加载、依赖注入及继承,适用场景有限。
-
子类重写方法时,只能抛出父类方法声明的检查型异常或其子类,不可新增检查型异常,但可自由抛出运行时异常;若父类方法未声明检查型异常,子类也不得声明,以确保多态调用的安全性。
-
自定义异常能提升Java代码可读性和维护性,通过命名明确异常语义,如UserAlreadyExistsException;继承Exception或RuntimeException并封装错误信息;统一组织在exception包中,建立BaseBusinessException基类;结合枚举管理错误码;合理控制异常数量,在业务层主动抛出并包装底层异常,使错误处理更清晰可控。
-
必须调用setAccessible(true)才能反射调用方法,否则抛IllegalAccessException;需处理InvocationTargetException包装、参数类型匹配、模块化访问限制及Method缓存优化。
-
StringJoiner是Java8引入的专用于结构化字符串拼接的工具类,支持分隔符、前缀、后缀、空值定制、合并及长度统计,底层基于StringBuilder实现,轻量高效且线程不安全。
-
JavaSoundAPI无法直接剪辑音频,需手动计算帧数定位并读写PCM数据;仅原生支持WAV/AIF等格式,MP3/FLAC需第三方库;写入必须用WAV且AudioFormat严格一致。
-
企业级缓存须分层选用引用类型:强引用仅限核心上下文,软引用用于高价值可重建热数据,弱引用用于无重建成本临时数据,并需ReferenceQueue清理幽灵引用,叠加LRU/LFU限容及监控灰度。