-
java.util.concurrent包的核心定位是提供可组合、线程安全、有明确语义的并发构建块,而非synchronized或wait/notify的语法糖;典型工具如ArrayBlockingQueue、ForkJoinPool等直接解决生产者-消费者、任务分治等场景。
-
compareAndSet不等于绝对线程安全,因其仅校验值是否变化而忽略修改过程,导致ABA问题;AtomicStampedReference通过版本号防ABA,AtomicMarkableReference仅适用于二元状态切换。
-
InheritableThreadLocal在线程池中“复用旧值”是因为线程复用导致继承逻辑不触发,且上一次任务的值未remove,造成上下文污染;其浅拷贝仅复制引用,加剧并发风险;修复需手动set/remove或改用TransmittableThreadLocal。
-
LocalDate和LocalTime线程安全且不可变,修改操作返回新实例;但需避免静态缓存、错误混用可变对象、误用局部时间计算耗时或跨时区场景,解析须指定格式器,数据库交互需JDBC4.2+支持。
-
Java中处理字符串多余空格需区分首尾与中间:trim()仅去首尾空白,replaceAll("\s+","")压缩中间连续空白为单空格;推荐组合使用trim().replaceAll("\s+","")或ApacheCommons的StringUtils.normalizeSpace()。
-
super用于访问被隐藏的父类实例变量或调用被重写的父类方法;子类同名字段时必须用super.变量名访问父类变量;重写方法中需复用父逻辑时必须用super.方法名();构造器中用super()调用父类构造器且须为第一行。
-
Java学生成绩排序需实现Comparable或提供Comparator;List用sort()或Collections.sort(),数组用Arrays.sort();并列名次需手动计算rank=i+1;大数据量优先就地排序。
-
String类是Java中处理文本的核心工具,具有不可变性。1.提供equals、equalsIgnoreCase进行字符串比较,startsWith、endsWith判断前后缀,contains检查子串,isEmpty和isBlank判断空或空白内容。2.charAt获取指定位置字符,indexOf和lastIndexOf查找子串位置,substring实现截取操作。3.replace和replaceAll支持字符或正则替换,trim、strip系列方法去除空白,format用于格式化输出。4.spli
-
多维数组是构建邻接矩阵最直接的工具,用n×n二维数组表示n个节点连接状态,需节点编号与索引对齐(0到n−1),区分图类型初始化,支持O(1)查边和O(n)度统计,但增删节点需重建矩阵。
-
使用Optional.ofNullable可清晰统一处理前端模糊查询参数的判空、去空格和转like模式逻辑,避免因空值导致全表扫描,提升代码可读性与可维护性。
-
读懂JDK8-XX:+PrintGCDetails日志的关键是抓住元空间变化、分代内存水位、GC事件类型与耗时三类核心信息,重点识别晋升异常、FullGC频繁、GC耗时突增、老年代持续上涨四类问题信号。
-
实现Runnable接口实现任务与执行者解耦:任务逻辑独立封装、可复用、易测试;Thread或线程池等执行者专注调度;支持灵活执行策略切换且不破坏继承体系。
-
答案:Java程序报“找不到主类”通常因类名不匹配、类路径错误或包结构问题导致。需确保文件名与公共类名一致且包含正确main方法;使用-cp指定类路径并包含当前目录;若类在包中,须按包结构存放文件并从根目录执行;注意IDE与命令行输出路径差异,确保class文件位置正确。
-
Java应用启动无日志输出,大概率因logback.xml未置于src/main/resources导致SLF4J退化为NOOP;需验证其是否在target/classes下、确认IDE中resources为资源根、打印Logger类名验证Logback生效,并注意Docker中路径权限与stdout重定向问题。
-
在Hibernate中,应优先采用带关联实体(LinkEntity)的双向一对多映射替代原生@ManyToMany,以保障模型可扩展性、数据完整性与业务灵活性。