-
Collectors.maxBy和minBy需配合groupingBy使用,返回Optional类型,须用orElse等安全解包;可用collectingAndThen简化为非Optional值,并支持复合比较器。
-
SpringBoot的@Value注解仅对Spring容器管理的Bean生效;若模型类未被Spring托管(如直接new创建或非@Component类),属性注入将失败,导致值为null。SpringBoot的@Value注解仅对Spring容器管理的Bean生效;若模型类未被Spring托管(如直接new创建或非@Component类),属性注入将失败,导致值为null。在SpringBoot应用中,@Value注解的正常工作依赖于Spring的
-
JavaNIO的Channel是双向非阻塞的,必须配合Buffer使用,需正确调用flip()、clear()等方法管理position/limit/capacity;FileChannel支持随机定位,SocketChannel不支持;Selector要求Channel必须非阻塞,且close()与wakeup()存在线程安全依赖。
-
ConcurrentHashMap在JDK1.8后采用CAS+synchronized实现线程安全,以Node数组+链表/红黑树结构提升并发性能,通过synchronized锁单个桶节点实现细粒度控制,允许多线程在不同桶上并发写入,仅在哈希冲突时竞争,显著提高吞吐量;推荐使用putIfAbsent、computeIfAbsent、merge等原子方法避免显式同步,合理设置初始容量和并发等级以减少扩容开销,并注意复合操作需用内置方法保证原子性,防止竞态条件。
-
反射无法直接从泛型数组变量中提取组件类型,因运行时仅保留原始类型;仅字段声明、方法签名等编译期固化位置可获取完整泛型信息,局部变量和new表达式中的泛型数组则完全不可恢复。
-
Runtime.addShutdownHook实现优雅停机的核心是将线程池、数据库连接、文件流、网络通道及临时缓存等需手动管理的资源绑定到JVM关闭流程中,通过静态变量引用并在钩子内按序执行shutdown()、awaitTermination()、close()、flush()、clear()等清理操作,避免资源泄漏。
-
GZIPOutputStream用于网络传输前动态压缩数据流,需正确包装、调用finish()、确保接收端支持解压;适合文本等高冗余数据,对JPEG等已压缩格式无效;HTTP需设Content-Encoding:gzip,Socket需双方约定协议。
-
Java对象内存布局由对象头(MarkWord和ClassPointer)、实例数据区(字段重排序)和对齐填充三部分组成;数组对象额外包含4字节length字段;对象大小需满足8字节对齐,最小为16字节。
-
Java中(T[])newObject[n]必然抛ClassCastException,因泛型擦除使运行时只剩Object[],而数组协变性与JVM类型检查在赋值或首次按T[]使用时触发异常;安全方案是用List<T>、传模板数组或反射Array.newInstance。
-
Arrays.asList()将数组转为固定大小列表,返回的List不支持增删操作,修改会影响原数组,且不适用于基本类型数组。
-
nextLine()“跳过”输入是因为nextInt()等方法不消费换行符,导致nextLine()立即读到残留的\n而返回空字符串;正确做法是统一用nextLine()配合parseXxx()解析,或在nextInt()后加sc.nextLine()清除缓冲区。
-
Collections.nCopies()返回不可变视图列表,所有修改方法抛UnsupportedOperationException;它仅适合读取或传给可变集合构造器(如newArrayList<>(Collections.nCopies(n,e))),且元素为同一对象引用,不支持深拷贝。
-
本文详解Android中从子线程向主线程安全更新UI的正确方式,指出原代码因未及时刷新、无限忙循环及线程同步缺陷导致界面卡死,并提供基于runOnUiThread的优化实现与关键注意事项。本文详解Android中从子线程向主线程安全更新UI的正确方式,指出原代码因未及时刷新、无限忙循环及线程同步缺陷导致界面卡死,并提供基于`runOnUiThread`的优化实现与关键注意事项。在Android开发中,UI组件(如TextView
-
静态代码块在类加载时执行且仅一次,用于初始化静态资源;构造代码块在每次创建对象时执行,用于共用实例初始化逻辑。执行顺序为:静态代码块→构造代码块→构造方法。如示例所示,首次new时输出1.2.3,后续仅输出2.3。
-
allOf返回CompletableFuture<Void>,仅表示所有任务完成,不聚合结果;需保留原始CompletableFuture引用,逐一调用join()获取各值并处理异常。