-
扩容无需重算hash值,因容量恒为2的幂次方,新索引仅取决于原hash在新增bit位的值;JDK1.8用e.hash&oldCap快速提取该位,0则留原索引,非0则原索引+oldCap。
-
接口定义行为契约,抽象类提供共用实现。通过接口实现多继承行为,定义“能做什么”;抽象类封装共有属性与方法,解决“是什么”和“如何部分实现”。典型模式如List与AbstractList,接口规范标准操作,抽象类实现通用逻辑,开发者可选择完全自定义或继承抽象类重写必要方法,兼顾扩展性与复用性。
-
答案是通过SpringBoot搭建后端、设计Note数据模型、使用HTML/JS开发前端界面,并结合JPA实现持久化,逐步构建支持增删改查的在线笔记本应用。
-
最稳妥的批量重命名方式是逐个调用Files.move()并捕获IOException,传入StandardCopyOption.REPLACE_EXISTING,路径用Path类型,中文路径需统一JVM编码为UTF-8,并添加进度反馈与中断机制。
-
根本原因是生命周期不一致和变量捕获机制:局部变量存于栈,方法结束即销毁,而匿名内部类对象在堆中可能长期存活,JVM需通过值拷贝确保其引用的局部变量稳定;final或effectivelyfinal强制该值不可变,避免副本与原始值不一致。
-
使用Java创建任务提醒应用,核心功能包括任务管理与定时提醒。2.设计Task类封装标题、描述、截止时间与完成状态,用LocalDateTime处理时间。3.任务存储于List中,通过ObjectOutputStream序列化实现持久化。4.利用ScheduledExecutorService每分钟检查到期任务,触发控制台或系统通知提醒。5.提供命令行菜单支持增删改查及标记完成,Scanner读取输入并处理日期格式异常。6.程序启动时加载本地数据,关闭前保存,可扩展Swing/JavaFX界面提升体验。
-
Prototype泄漏主因是开发者误将有状态对象交由Spring管理且未管控生命周期,导致对象堆积、引用滞留、GC不及时而OOM。
-
Method类不涉及“权限逃逸”,本质是反射访问控制;动态调用需三步:获取Method对象、准备目标实例与参数、执行invoke;非public方法须调用setAccessible(true),参数类型须严格匹配,异常需分层捕获。
-
能,Java9+接口中支持private方法,用于复用default或static方法的公共逻辑,避免重复代码,但不可被实现类访问或重写,且不能与static同时使用。
-
Java日程提醒核心是可靠触发、时间准确、防重复,首选ScheduledExecutorService;需正确计算首次延迟、保存ScheduledFuture用于取消、解析自然语言时间、落地通知方式并持久化未触发任务。
-
Dubbo默认用Netty而非JDK原生NIO,因其具备成熟的连接管理、内存池、背压控制和TLS集成能力,而JDKNIO在高并发长连接场景下易出现连接重置或堆外内存溢出;Netty吞吐量高30%~60%,P99延迟低2~5ms。
-
多态的核心价值在于分离业务逻辑与具体实现,使系统扩展时无需修改原有代码。例如支付场景中订单模块只依赖Payment接口,新增银联支付只需实现该接口;数据访问层同理,切换数据库只需提供新DAO实现类;策略切换和测试也因多态变得灵活可控。
-
DateTimeFormatter.parse()抛DateTimeParseException主因是格式模式与输入字符串严格不匹配;LocalDateTime.format()不输出时区因类型本身无时区;转Instant需先转LocalDateTime再指定时区;YYYY为周基年,yyyy为日历年,跨年场景易出错。
-
答案:Java中线程死锁因相互持锁等待导致程序停滞,可通过JConsole、jstack或ThreadMXBean检测;预防需统一锁顺序、使用tryLock、减小锁粒度、采用并发工具类,并在设计时分析锁依赖,结合规范编码与监控降低风险。
-
CopyOnWriteArrayList通过写时复制实现线程安全,读操作不加锁、效率高,适用于读多写少、允许数据稍有过期的场景,但写操作需复制整个数组,性能开销大,适合监听器列表、配置缓存等低频更新场合。