java教程技术文章
-
InternalError是JVM内部严重故障信号,不可被捕获处理;其出现表明JVM状态已不可信,应通过诊断日志、版本升级、环境排查定位根源,而非业务代码干预。402 收藏 -
final字段必须在声明或构造方法中初始化且仅一次,编译器编译期强制检查并报错,禁止运行时修改;静态final需在静态块或声明时初始化,实例final绑定构造过程。402 收藏 -
当XML字符串被连续多次转义(如<)时,StringEscapeUtils.unescapeXml()仅执行单层解码;需循环调用直至无变化,或根据预期转义层数精确调用多次。402 收藏 -
基数排序适合处理固定长度的整数或字符串,按位分组计数、不比较大小,时间复杂度为O(d×(n+k));电话号码需清洗、统一为11位数字数组,再逐位进行稳定计数排序。402 收藏 -
ArrayDeque通过循环数组连续存储提升L2缓存命中率:CPU以64字节cacheline预取相邻数据,连续布局使一次预取覆盖多个元素;而LinkedList节点分散,频繁cachemiss导致性能下降30%~60%。402 收藏 -
Path.resolve用于解析路径片段为绝对路径,不构建映射但可配合对象实现变量→路径映射;推荐用resolve预计算paths对象,动态拼接时也应调用resolve而非字符串拼接。402 收藏 -
InetAddress.getLocalHost()不可靠,因依赖hosts/DNS配置,易返回127.0.0.1或抛UnknownHostException;应改用Runtime.exec("hostname")获取主机名、遍历NetworkInterface过滤回环地址获取真实IPv4。402 收藏 -
AQS是Java并发包中构建锁和同步器的底层框架,通过volatileintstate管理同步状态、CLH双向队列处理线程排队与唤醒,并提供独占/共享模式及模板方法(如tryAcquire),使开发者能定制同步语义而非直接同步变量。402 收藏 -
flatMap更适合处理嵌套Optional,因为它能将Optional<Optional<T>>“压平”为Optional<T>,而map会逐层包装导致嵌套;其参数必须返回Optional,否则编译失败,且在上游为空时自动短路,语义更精准。402 收藏 -
Array.newInstance()是Java反射创建数组的唯一标准方式,支持原始类型(用int.class等)和引用类型;原始类型必须传其Class实例(如int.class或Integer.TYPE),不可用Integer.class;可创建一维或多维数组,返回Object需强制转型。402 收藏 -
Java内存泄漏最常见原因是静态集合类长期持有短生命周期对象引用,如staticList/Map未及时清理,导致对象无法被GC回收,持续占用堆内存。402 收藏 -
能,抽象类可以且经常需要写构造方法;因为子类实例化时必须调用抽象父类构造方法以初始化父类状态,确保字段非默认值,并遵循JVM自上而下的构造链。401 收藏 -
finally在System.exit、致命错误、Thread.stop()、kill-9时完全不执行;finally中return会无条件覆盖try/catch的返回值;try-with-resources比手动finally更可靠,因编译器自动处理异常抑制且无需判空。401 收藏 -
Java集合对null支持不统一:HashMap等宽松派允许null,TreeMap等严格派因排序或并发歧义禁止null;Stream需filter或Optional处理null;推荐用emptyList、Optional、枚举替代null。401 收藏 -
接口应按调用方角色而非功能模块拆分,如LoginCapable、EmailCapable、ReportCapable;若实现类超1/3方法为空或抛异常,即违反接口分离原则,需及时重构。401 收藏