-
Collections.nCopies返回不可变列表,仅存储一个元素引用以节省内存,适用于创建重复元素的固定视图,如测试数据、默认值初始化或流操作,但不支持增删改操作。
-
Java中实现后量子密码算法(PQC)是应对未来量子计算威胁的重要举措,尽管PQC标准尚未最终确定,但通过BouncyCastle等工具进行实验性探索,有助于理解其性能、集成难度和迁移复杂性。1.引入BouncyCastle依赖:在Maven或Gradle项目中添加bcprov-jdk15on和bcpqc-jdk15on模块;2.注册BouncyCastle安全提供者,确保JCA/JCE框架识别其算法;3.选择合适的PQC算法如Kyber(用于密钥封装)或Dilithium(用于数字签名);4.使用PQC
-
启用UseContainerSupport可让JVM正确读取cgroup内存限制,避免OOM;JDK8u131+/9+默认开启,旧版需显式添加并打补丁;须配合-m设置容器内存限制及-XX:MaxRAMPercentage等参数才能生效。
-
LockSupport.park()为什么线程没反应?它根本不会“挂起线程”——park()只是检查当前线程的许可(permit)是否为1,是就消费掉并立即返回;否则阻塞。没有“主动挂起”的语义,只有“等待许可”。常见错误是调用park()前没确保许可可用,结果线程直接卡住。许可是二值的:0或1,不可叠加(多次unpark()只保留一次效果)park()不响应中断,但会设置线程的中断状态(Thread.interrupted()为true)如果线程已中断后调用park(
-
JobRunr默认使用SLF4J作为日志门面,其日志级别不由框架自身控制,而是由底层绑定的SLF4J实现(如Logback或Log4j2)统一管理;只需在项目中引入对应实现并配置即可灵活调整。
-
Java接口不能继承类是语法强制限制,因接口仅能extends其他接口,不可extends类或implements任何类型,否则编译报错“interfaceexpectedhere”,且JVM字节码层面不支持该继承关系。
-
开闭原则的核心是“对扩展开放、对修改关闭”,即通过接口/抽象类隔离变化点,新增功能只需添加实现类或子类,不修改原有稳定代码;常用策略模式、模板方法、依赖注入等实现。
-
本文介绍如何在SpringJPA中实现灵活、可扩展的动态条件分页查询,避免传统if-else组合爆炸问题,通过JPQL参数占位符或CriteriaAPI实现“仅对非空字段生效”的过滤逻辑。
-
Java集合框架核心思想是接口与实现分离:先定义功能契约(如Queue的add、remove、size),再由不同类(ArrayDeque、LinkedList等)灵活实现,支持无缝替换、协作开发和按需优化。
-
无符号右移(>>>)将整数二进制位序列整体右移,高位恒补0,不考虑符号位,使负数转为非负大整数;需基于补码理解,注意类型提升、移位量取模及不可用于取绝对值。
-
File的length()和lastModified()可获取文件大小(字节)和最后修改时间戳(毫秒),但需先用exists()和isFile()校验有效性;推荐使用Files.size()和Files.readAttributes()替代以获得异常提示和更多属性。
-
HashSet通过hashCode和equals方法实现去重,添加元素时先比较哈希值再判断相等性,自定义类需重写这两个方法;String等内置类型已默认实现,可直接去重;注意HashSet无序、允许一个null、非线程安全,大量数据去重性能优越。
-
main方法必须用static修饰,因为JVM启动时尚未创建任何对象,需直接通过类名调用入口方法;static方法属类级别,随类加载即就绪,无需实例、this或参数,符合“类加载→静态初始化→执行main”的固定启动流程。
-
默认Propagation.REQUIRED导致嵌套方法共享事务,内层异常会标记整个事务rollbackOnly,外层catch无法阻止回滚;REQUIRES_NEW可隔离事务,NESTED仅依赖数据库savepoint且不可靠。
-
Scanner可通过useDelimiter()方法用正则表达式自定义分隔符,需注意双重转义、空token处理及nextXXX()的类型校验;推荐先用next()获取字符串再手动解析。