-
abstract类必须用abstract关键字声明且不可实例化,核心是表达“类不完整、须由子类补全”;含abstract方法则类必为abstract,反之不必然;abstract方法无方法体,仅public或protected合法;子类须实现全部abstract方法,否则自身也须声明为abstract;结合final模板方法可控制流程骨架。
-
JavaString不可变,trim()仅处理ASCII空白;split()默认丢弃末尾空串,负limit才保留;substring索引需防越界;大量拼接用StringBuilder;Unicode补充字符需用codePoint相关方法。
-
Thread.onSpinWait不能直接降低CPU耗电,因为它仅是向硬件发出轻量提示(如x86的PAUSE),不触发降频或关核等电源管理动作;是否节能取决于CPU微架构是否响应该提示,且必须配合volatile变量、无副作用循环及短时等待场景才有效。
-
非静态内部类能直接访问外部类私有成员但必须依附实例;静态内部类无外部实例引用,适用于纯工具逻辑;匿名内部类易致内存泄漏,应谨慎使用。
-
可通过ResultSet.getMetaData()获取元数据,按列索引(从1开始)调用getColumnCount()、getColumnName()、getColumnLabel()、getColumnTypeName()、getColumnType()等方法获取列数、列名、标签名、数据库类型名及JDBC类型码,并依映射关系转为对应Java类型。
-
Java模块系统中不存在“变量模块”,模块必须预先编译并包含合法module-info.class;动态挂载实为运行时创建新ModuleLayer加载已编译模块JAR,需经定位、解析、定义、激活四步,且模块图不可修改。
-
JAR是否含module-info.class决定其路径:有则必须放--module-path,无则只能放-cp;混用会导致类加载失败或模块解析错误。
-
nanoTime()仅提供纳秒级单调时钟,无法解析异构账单、识别业务语义或执行三流校验;有效对账需语义解析+动态规则引擎,nanoTime仅宜作性能诊断辅助。
-
本文介绍使用Mockito的spy与thenAnswer实现部分模拟(partialmock),精准控制被测方法内部调用的其他方法的行为,尤其适用于需自定义传入参数并返回预期结果的场景。
-
Future.get()会阻塞,推荐用带超时的get(timeout,unit)避免无限等待;isDone()+get()存在竞态问题,应避免;cancel(true)不保证立即停止线程,需任务主动响应中断;原生Future无回调能力,复杂异步应使用CompletableFuture。
-
URLDecoder和URLEncoder专用于application/x-www-form-urlencoded格式的参数值编解码,必须显式指定UTF-8,不可用于完整URL或路径编码;URLEncoder将空格转为+,非ASCII字符转为%XX,URLDecoder自动处理+和%XX并还原原始字符串。
-
WebSocket连接后收不到弹幕,主因是Session被意外关闭;需检查isOpen()、避免异步未发送、禁用轮询改用SimpMessagingTemplate;弹幕时间应服务端归一化为offsetMs;高并发广播改用CopyOnWriteArraySet;XSS防护须后端白名单过滤。
-
可行但需谨慎设计:用AQS的32位state低16位存写锁重入次数、高16位存读锁线程数,通过位掩码与CAS原子操作实现,严禁直接setState,须用compareAndSetState保证线程安全。
-
default是switch语句中捕获所有未被case匹配值的兜底分支,位置灵活但建议置末尾;需显式break防穿透;处理运行时未覆盖值,承担异常上报、降级、报错等健壮性职责。
-
企业级Java开发环境需统一JDK版本(如OpenJDK17LTS)、用SDKMAN!管理多版本;Maven为主构建工具,配置私有仓库镜像与依赖管理;IDEA标准化配置代码化;DockerCompose支撑本地中间件;JVM参数与调试预置,强调可控、可审计、可批量部署。