-
变量命名需准确表达意图,用小驼峰、完整词、语义化前缀(如is/has/can),禁用模糊缩写,保持上下文一致性,且命名决策应在编码之初完成。
-
URI与URL的本质区别在于:URI是统一资源标识符,URL是其子集且专用于定位资源;URI仅做语法解析和标准化,URL则支持打开网络连接。
-
filter用于筛选符合条件的元素,map用于转换元素类型或提取字段,二者常组合使用实现先筛选后转换的链式操作。
-
ThreadLocal的set()可能引发内存泄漏,根本原因是其ThreadLocalMap的key为弱引用而value为强引用,当ThreadLocal实例被回收后value仍滞留,尤其在线程池中长期存活线程下无法释放。
-
构造方法抛出异常会导致对象创建失败,即对象从未存在过;资源需显式清理,禁止调用可重写方法,受检异常须处理,Spring中将导致Bean创建失败。
-
转换流中非法字符处理取决于编码合法性与目标集支持性,主流策略包括忽略、替换、异常中断及自定义回调,需结合源头校验与工具文档综合应对。
-
MixedGC停顿预测精度高在高频交易中是错觉,因其基于稳定假设而无法应对脉冲式对象创建与晋升,导致预测失焦、GC频次激增、CPU被挤压、吞吐量断崖下跌。
-
SpringGraphQL默认仅暴露/graphql单一端点,无法通过spring.graphql.enabled=false类似配置全局禁用;实际应结合Web安全配置拦截请求,并可选禁用内省(introspection)以增强生产环境安全性。
-
private仅限声明它的类内部访问,禁止用于外部类和接口,但可用于内部类、静态嵌套类及枚举构造器;它实现基础封装,却非绝对安全,影响测试、序列化与反射使用。
-
最稳用CFR反编译插件:兼容Java17新特性,需禁用IDEA自带解码器;遇“Decompiledcodenotavailable”需检查module-info、混淆或JDK类配置;var丢失因编译未加-g:vars;空方法体是CFR对不支持字节码的兜底处理。
-
binarySearch返回负数说明未找到目标值,但可计算出应插入位置:-(返回值)-1;需注意工号类型(int/String)匹配及数组必须严格升序。
-
BootstrapMethodError根因是JVM运行时解析Lambda的invokedynamic指令失败,因方法缺失、权限不足、签名不匹配或泛型擦除冲突等导致引导(bootstrap)失败,属运行时绑定错误而非编译错误。
-
调用栈是JVM管理方法执行的核心机制,采用后进先出结构,每个线程拥有独立调用栈,由多个栈帧组成,每个方法调用对应一个栈帧,存储局部变量、操作数栈等信息,栈顶为当前执行方法;方法调用时创建栈帧并压栈,执行完毕后弹出,控制权交还调用者,递归过深易导致StackOverflowError;异常堆栈信息反映调用链,从上到下显示执行路径,帮助定位问题;调用栈空间有限,频繁调用影响性能,合理设计方法结构可提升代码健壮性与调试效率。
-
Callable与Runnable的核心区别在于:Callable有返回值且能抛受检异常,而Runnable没有;Callable需通过FutureTask或线程池提交获取Future,再调用get()获取结果,不能直接传给Thread构造器。
-
邮件传输需要SSL加密是因为数据在互联网上传输时容易被窃听或篡改,而SSL/TLS提供了保密性、完整性和身份验证三重保护。1.数据保密性:通过加密防止第三方读取邮件内容;2.数据完整性:确保邮件在传输中不被篡改;3.身份验证:确认连接的服务器真实可信。SMTPS与STARTTLS是两种主要的SSL配置方式,它们的区别在于加密建立的时间点和端口使用。1.SMTPS(隐式SSL)在TCP连接建立后立即进行SSL握手,使用端口465,通信全程加密;2.STARTTLS(显式SSL)先建立普通连接,随后通过命令升