-
Java中文件读写主要使用java.io包,根据需求选择字符流或字节流;处理文本文件可用FileReader/FileWriter逐字符操作,或BufferedReader/BufferedWriter按行高效读写;二进制文件则用FileInputStream/FileOutputStream配合缓冲数组复制;JavaNIO.2的Files类提供简洁API适合小文件操作;所有方式均需处理IO异常并确保资源关闭。
-
要实现PrintService对变量文档的异步打印控制,需解耦调度与执行,用ExecutorService或CoroutineScope管理后台任务,在onPrintJobQueued()中提交异步任务并保存PrintJob引用;每个PrintJob封装为可取消的PrintUnit,含元数据、状态、CancellationToken及回调;动态生成文档(如PdfDocument绘制)须在子线程完成并写入PrintDocument.getOutputStream();通过SparseArray<Pri
-
序列化是将内存中对象的状态转换为字节流以持久化或传输,反序列化则还原对象;必须实现Serializable接口标记允许序列化,子类继承时建议显式实现,非transient非static字段须可序列化,serialVersionUID需手动维护确保兼容性。
-
模板方法模式通过抽象类定义算法骨架,将可变步骤声明为抽象方法由子类实现,封装固定流程于final模板方法中,并提供可选钩子方法增强灵活性。
-
Object类是Java所有类的根父类,核心意义在于统一类型体系、提供基础行为契约、支撑运行时机制:实现“一切皆对象”、定义toString()等关键方法协议、支撑JVM异常处理与泛型擦除等底层功能。
-
NEW→RUNNABLE切换瞬时(微秒级),真实延迟源于OS调度、TLAB分配失败或Safepoint同步;监控需区分状态变更与执行延迟,结合日志时间戳、CPU指标、JFR事件及上下文动态告警,并通过消息队列、固定线程池或虚拟线程优化架构。
-
JIT通过运行时反馈重构代码以减少分支预测依赖,具体包括内联高频路径、删除冗余判断、重排条件顺序、插入分支提示、单态内联、转为cmov指令及优化代码布局。
-
断言不是环境切换开关,AssertionError用于暴露严重逻辑缺陷而非业务分支,-ea仅开启调试验证,不可用于生产与测试的差异化异常逻辑。
-
Java变量生命周期由类型、作用域和引用关系共同决定,并绑定JVM内存分区:基本类型局部变量存栈中,随方法进出而创建销毁;引用变量本身在栈、所指对象在堆;成员变量随对象存堆,静态变量存方法区/元空间;JVM还支持逃逸分析与活变量优化,使对象可提前被GC回收。
-
下界通配符(?superT)不适用于ExecutorService.submit(Callable<T>)场景,因其要求Callable具有确定返回类型以构造类型安全的Future<T>,而?superT无法满足函数式接口call()方法的具体返回类型要求。
-
必须用while而非if检查条件,因为notify()不保证唤醒线程立即获锁,且wait()返回后条件可能已被修改;if会导致虚假唤醒或竞态丢失,while可确保每次唤醒后重新验证状态。
-
BigDecimal.divide抛ArithmeticException的常见原因有四:一是除零;二是未指定精度和舍入模式导致无限小数;三是指定了UNNECESSARY舍入但结果无法精确表示;四是divideToIntegralValue在无法整除时部分JDK版本异常。
-
ThreadLocal不能直接new使用,因其值与线程绑定且线程复用时不自动清理,易致数据错乱或内存泄漏;须staticfinal声明、显式remove()、避免存大对象,异步场景推荐TransmittableThreadLocal。
-
Mixin必须与目标类结构严格匹配,方法、字段、构造器签名需完全一致;否则Jackson会退回到默认反射逻辑并报错。
-
模块化系统不能直接限制Unsafe操作,但能提高滥用门槛和可检测性:通过封装隐藏访问路径、显式声明opens权限、隔离专用模块、启用非法访问禁止策略,并用VarHandle等标准API替代。