-
企业级开发中应优先用运行时异常表达业务规则和内部错误,受检异常仅用于第三方SDK、金融强契约场景等少数情况;基础设施层封装原始异常为运行时异常,应用层抛业务运行时异常,网关层统一处理并返回标准响应。
-
静态方法中使用this会编译失败,因this指向实例而静态方法属于类本身;其字节码无this参数,调用不依赖对象实例,访问实例成员必须显式传入对象引用。
-
final用于修饰类、方法、变量和参数,表示不可变。1.final类不能被继承,如String类,确保行为不被修改;2.final方法不能被重写,保证核心逻辑不变;3.final变量只能赋值一次,基本类型值不变,引用类型地址不变;4.final参数在方法内不能被重新赋值,常用于匿名内部类和lambda表达式。合理使用可提升代码安全性和可读性,尤其在多线程环境下保障初始化安全。
-
本文详解如何在SpringSecurity6+中正确配置/h2-console路径为permitAll(),解决因请求匹配失效、过滤器顺序或FrameOptions导致的自动跳转登录页问题,并提供安全注意事项与生产规避建议。
-
标记接口是无方法的类型标签,用于运行时识别并触发自定义序列化或克隆策略;它语义明确、零开销,优于注解和trait,但需配合手动类型检查使用。
-
Spliterator是集合向流框架暴露分割能力的底层契约,非直接调用API;需重写tryAdvance、trySplit、estimateSize、characteristics四方法,正确实现分割逻辑才能触发真正并行。
-
Float.floatToIntBits()是将float的IEEE75432位二进制表示直接解释为int位模式,不进行数值转换;它用于位级操作,如精确比较、序列化和哈希,区别于(int)f等数值映射。
-
LocalTime专为“几点几分”设计,勿混用LocalDateTime或字符串拼接;解析需指定格式如"HH:mm";跨日区间判断需先判start.isAfter(end),再用isAfter(start)||isBefore(end);数据库映射须匹配TIME类型,JSON序列化需@JsonFormat指定pattern。
-
匿名内部类不支持显式构造方法,但可通过实例初始化块实现动态初始化,如配置监听器、捕获外部变量、处理异常及控制执行顺序。
-
IntStream.range(1,5)输出1~4,因其为左闭右开区间(startInclusive,endExclusive),与List.subList()、String.substring()语义一致,易因误用导致数量偏差。
-
Stream.of适用于已知数量的零散对象,接收可变参数生成顺序流;误用会导致非空流、类型推导错误或数组未展开等问题,应据输入形态选用Stream.of、Arrays.stream或collection.stream()。
-
FileChannel不支持直接插入式修改,只能从指定position覆盖写入,需以rw模式打开、确保文件空间足够,并用force()保证落盘。
-
wait和notify必须在synchronized块中调用,否则抛IllegalMonitorStateException;需用同一锁对象、while循环检测条件、volatile或锁保护条件变量,优先用notifyAll(),禁用sleep轮询。
-
Queue接口是约定行为的契约,不保证FIFO但标准实现默认遵循;add()失败抛异常,offer()返回false更安全;poll()/peek()空时返回null,remove()/element()则抛异常;ArrayDeque适合单线程高性能,LinkedBlockingQueue和queue.Queue才用于多线程。
-
DateTimeFormatter的核心作用是格式化时间对象为字符串及解析字符串为时间对象,是Java8后线程安全的唯一推荐方案,替代了不安全的SimpleDateFormat。