-
<textarea>用于多行文本输入,替代单行<input>;通过rows和cols设置默认尺寸,推荐用CSS(如width、min-height、resize)增强响应式体验;支持placeholder、maxlength、required、autofocus等属性提升可用性。
-
单一职责原则(SRP)指一个类应仅有一个引起它变化的原因;如Order类应只管订单数据,计算、开票、通知等职责需按变化动因拆分为OrderCalculator、InvoiceGenerator、NotificationService等独立类。
-
5个2026年初高更新、深度强、无广告的纯Java学习平台:自学精灵(way2j.com)按职业阶段组织实战内容;how2j.cn提供渐进式手把手教程与可运行Maven工程;javaj.cn全免费聚合资源并配套即用工程;并发编程网(ifeve.com)专注Java底层硬核主题;baeldung.com是英文但权威的“问题-解法”型参考站。
-
必须使用GraalVMJDK(22.3+)并手动安装native-image工具,验证java-version含“GraalVM”字样;SpringBoot3项目需启用SpringAOT和native-maven-plugin,显式声明反射、资源等配置,构建时需调大内存与超时参数。
-
Thread.dumpStack()是Thread类的静态方法,用于立即向System.err输出当前线程的完整堆栈跟踪,不依赖异常、不抛出异常、不中断执行,专为轻量级调试设计。
-
volatile失效并非语法失效,而是因误用(如循环缓存变量、误信字段可见性)或JIT将未观测的volatile读移出循环所致;排查需验证代码语义、JIT行为及运行时环境。
-
ThreadLocal在切面中取不到值,本质是线程切换导致上下文未传递:Controller设值后若经@Async、CompletableFuture、DubboFilter等触发线程切换,切面运行在新线程,而ThreadLocal不跨线程,故get()返回null。
-
DCL单例不加volatile不是线程安全的,因对象构造可能被重排序,导致其他线程看到未初始化完成的实例;必须用volatile禁止重排序并保证可见性。
-
Double.isInfinite()仅能检测已产生的无穷大结果,无法预防除零问题;因浮点除零不抛异常,但后续用Infinity或NaN易引发隐性错误,故须在除法前校验除数是否为零。
-
学生类和课程类应作为独立实体设计,通过Enrollment关系类建模多对多关联;ID统一用String;选课需校验存在性、重复性、容量等;退课与查询应维护courseToStudents、studentToCourses等内存索引以实现O(1)操作。
-
不能在遍历中直接调用集合的remove()方法,因为会触发ConcurrentModificationException;必须使用Iterator.remove()或removeIf(),二者均通过同步modCount机制保证安全。
-
答案:Java中应优先使用try-with-resources确保数据库资源及时释放。该机制自动关闭实现了AutoCloseable接口的资源,避免了finally块中冗长的关闭逻辑和潜在异常覆盖问题,提升代码安全性与可读性。
-
信号量(Semaphore)用于控制并发访问资源的线程数量,通过acquire()获取许可、release()释放许可,确保最多指定数量的线程可同时执行,适用于限流与资源池管理。
-
Optional.or()提供惰性、可组合的备选值获取机制,接收Supplier<Optional<T>>,仅在为空时调用并返回Optional,支持链式操作与多级fallback。
-
Region管理堆是为了应对大内存、多核、低延迟场景下的根本矛盾:解决大堆停顿不可控、适配NUMA架构、支撑并发回收、灵活匹配对象生命周期异构性。