-
非静态内部类隐式持有外部类强引用(this$0),易致内存泄漏;静态内部类无此引用,更安全高效。应优先使用静态内部类,需访问外部状态时显式传入WeakReference。
-
是,因readinessProbe未真实反映业务就绪状态:如initialDelaySeconds过小、未检查DB/Redis等依赖,或健康端点响应超时导致误判,使流量过早导入尚未完成初始化的新Pod。
-
Java21的记录类与模式匹配使switch处理嵌套对象更安全简洁:通过record定义不可变数据结构,结合类型+记录+列表模式及守卫条件,实现多层解构、null防御和编译期穷尽性检查。
-
<p>Java注释不会被编译进class文件;//和//在编译时被javac完全丢弃,仅Javadoc注释(/*/)供javadoc工具提取生成API文档,而注解是否进入字节码取决于@Retention策略。</p>
-
<p>-Xlog:gc是JDK9+替代-XX:+PrintGCDetails的标准做法,支持可控、可过滤、可重定向的GC日志,需显式指定输出路径与时间精度标签,生产环境推荐配置为-Xlog:gc:file=/data/logs/gc.log:time,uptime,level,tags:filecount=32,filesize=64m。</p>
-
size()方法返回集合当前元素个数,类型为int;它不表示容量或内存大小,时间复杂度O(1),并发集合弱一致,数组无该方法而用length字段。
-
答案是掌握Java循环结构需理解for、while和do-while的执行逻辑,for适用于已知次数的循环,其初始化、条件判断和更新操作集中,结构清晰。
-
AQS共享模式中state语义因同步器而异:Semaphore的state表示剩余许可数(越大越空闲),CountDownLatch的state表示待完成任务数(越小越接近释放线程),该差异决定tryAcquireShared返回逻辑及阻塞/放行时机。
-
线程转储是确认IDEA中程序“假死”的最快手段,需在运行或调试状态下触发:运行时点Run窗口的DumpThreads,调试时通过Debug窗口More选GetThreadDump;仅调试模式可捕获虚拟线程和Kotlin协程;查看dump时聚焦WAITING/TIMED_WAITING状态、主线程阻塞点及锁持有情况。
-
newDate()在2026年新项目中应彻底禁用:它是可变、非线程安全、语义模糊的遗留类,月份0起始、年份1900基准等设计反直觉且已弃用;应改用java.time包中的Instant、LocalDateTime等语义清晰、线程安全的类型。
-
答案:搭建Java开发环境需安装JDK、配置JAVA_HOME和Path变量、安装IDE并验证。首先下载JDK11或17,安装后设置JAVA_HOME指向安装路径,并将%JAVA_HOME%\bin加入Path;macOS/Linux在.zshrc中添加对应export命令并生效;通过java-version和javac-version验证;接着安装IntelliJIDEA或Eclipse,手动配置ProjectSDK确保识别JDK;最后创建HelloWorld项目测试运行,输出结果即成功。核心是JDK安
-
Lambda闭包重构长事务的核心是显式化、隔离化、快照化状态跃迁逻辑;通过捕获不可变上下文、状态机式Lambda链、策略参数闭包及规避共享变量陷阱,提升可维护性与可靠性。
-
重写equals()时必须同步重写hashCode(),且两者依据的字段严格一致;否则HashMap、HashSet等集合行为异常。推荐用Objects.hash()生成hashCode,避免手工计算。
-
ArrayList默认容量为0(JDK12+)或10(早期),size()始终为0直到add();add()末尾追加高效,set()需索引<size(),remove()移除元素导致O(n)移动;遍历时修改会抛ConcurrentModificationException。
-
orTimeout不会中断正在运行的异步任务,仅返回TimeoutException的新CompletableFuture,原任务继续执行;需配合可中断Callable、显式cancel(true)及响应中断的线程池才能实现真正熔断。