-
方法重载匹配发生在编译期,依据编译时参数类型、数量和顺序确定调用版本,遵循三阶段规则:先精确匹配与基本类型提升,再装箱/拆箱,最后可变参数;null值易致歧义,泛型重载需避免擦除后签名冲突。
-
jstack-l<pid>是最轻量的死锁检测工具,必须加-l才显示锁关系,推荐配合-e连续执行2–3次;ThreadMXBean可程序化检测已形成的死锁,但无法捕获伪死锁。
-
ZXing默认黑底白图是因MatrixToImageWriter将0当白色、1当黑色,与内部0表空白/1表墨点逻辑相反;应显式传入MatrixToImageConfig(Color.BLACK.getRGB(),Color.WHITE.getRGB())。
-
MyBatisGenerator默认不生成Mapper接口方法,因targetRuntime默认为MyBatis3;应改为MyBatis3Simple或MyBatis3DynamicSql,并注意驱动版本、驼峰映射、插件绑定等配置。
-
掌握Java类设计需遵循SOLID原则并应用常见设计模式。首先,单一职责确保类功能明确,如UserRepository仅处理数据存取;开闭原则支持扩展而非修改,利于系统演进;里氏替换保证子类可无缝替代父类,避免行为异常;接口隔离通过拆分大接口提升灵活性,如分离查询与更新服务;依赖倒置通过抽象和依赖注入降低耦合。常用模式中,工厂模式统一对象创建,单例模式控制实例唯一性并保障线程安全,建造者模式简化复杂对象构造,策略模式实现算法动态切换,观察者模式构建松耦合事件机制。实践中应通过重构消除代码坏味道,阅读Spr
-
LinkedHashMap通过双向链表维护插入顺序,遍历时按插入顺序返回元素,适用于缓存、日志等场景;1.可用默认构造、指定容量、负载因子或从其他Map初始化;2.使用put插入、get访问,遍历顺序与插入一致;3.设置accessOrder为true可启用访问顺序,最近访问元素移至末尾,适合LRU缓存;4.重写removeEldestEntry方法并启用访问顺序可实现LRU缓存,如returnsize()>3;综上,LinkedHashMap在保持顺序的同时性能接近HashMap,是有序场景的理想
-
构造方法链通过this()实现构造方法间调用,提升代码复用与初始化一致性。1.this()必须位于构造方法首行;2.多用于重载构造中参数较少者调用参数多者;3.继承时子类需用super()调用父类构造,且this()与super()不可共存;4.应避免循环调用,集中初始化逻辑于全参构造;5.复杂场景可结合Builder模式优化设计。
-
Java版本选哪个才能在Mesa系统上跑起来Mesa系统(通常指基于OpenEuler/麒麟/统信等国产OS的定制发行版)对Java的支持不是“装了就能用”,关键看是否提供对应架构的JDK。x86_64没问题,但若Mesa运行在鲲鹏(arm64)、飞腾(loongarch64)或海光(x86_64兼容但需特定构建)上,jdk-17_linux-x64_bin.tar.gz这类通用包大概率启动失败——Illegalinstruction或直接报nosuchf
-
同步方法是用synchronized修饰的方法,确保多线程下同一时刻仅一个线程执行。实例同步方法锁当前对象(this),静态同步方法锁Class对象。如Counter类中increment()和getCount()通过同步保证count操作线程安全;MathUtils的静态方法doSomething()则锁定类。注意:同步降低性能,应缩小同步范围;不同对象的实例方法不互斥,静态与实例方法因锁不同也不互阻;异常时JVM自动释放锁。可改用同步代码块synchronized(this){...}细粒度控制,提升
-
ConcurrentLinkedQueue的head/tail非volatile,因一致性由节点next字段的volatile语义间接保证;tail允许滞后以减少CAS竞争,offer()必须先CASnext再CAStail防断链,poll()返回null表示需清理而非队列为空,迭代器弱一致不保证全量可见。
-
ZipOutputStream中文乱码因默认IBM437编码,JDK7u40+需显式指定UTF-8;读取时须过滤目录项并调用closeEntry;大文件应流式处理避免内存溢出;ZIP64影响旧工具兼容性。
-
不建议用异常控制正常业务流程,因性能开销大、掩盖设计问题;应将可预期失败转为返回值或状态码,异常仅用于真正意外场景,并需分层定义、规范日志与处理。
-
Future是异步结果占位符,不执行任务;get()会阻塞且需超时控制,异常包括ExecutionException、CancellationException、InterruptedException;isDone()/isCancelled()仅返回瞬时状态;无回调能力,推荐用CompletableFuture替代。
-
BufferedReader是Java中通过内部缓冲区提升字符流读取性能的包装类,需包装Reader实例(如InputStreamReader+FileInputStream),推荐显式指定UTF-8编码,优先使用try-with-resources和readLine()按行读取,避免混用读取方法及默认编码导致乱码。
-
ForkJoinPool适用于分治任务,基于工作窃取算法提升并行性能。通过RecursiveTask实现任务拆分与合并,如并行求和示例所示:大任务拆为子任务,一个fork异步执行,另一个compute直接计算,最后join汇总结果。关键要点包括合理设置阈值、避免阻塞操作、优先使用公共池及及时关闭资源。适用于归并排序、树遍历等计算密集型场景,不适用共享状态频繁更新或强依赖任务。掌握分治逻辑与粒度控制可显著提升吞吐量。