-
Git不忽略已跟踪的.class文件,需用gitrm-r--cached.清除缓存;Maven依赖问题源于未提交pom.xml或含system路径;IDEA未识别Git根目录需在项目根目录打开;单元测试代码必须提交,但生成物要忽略。
-
ProcessBuilder不能直接执行含管道、重定向或通配符的shell命令,因其不经过shell解析;需显式调用/bin/sh-c(Linux/macOS)或cmd/c(Windows),并将完整命令作为单个字符串参数传入,同时注意及时读取输入输出流以防阻塞。
-
本文详解在Java中通过AWSS3上传ZIP文件时,因Content-Type设置不当导致下载缺失.zip扩展名、被浏览器误识别为文件夹的问题,并提供完整的修复方案与最佳实践。
-
单例模式确保类唯一实例,饿汉式类加载时创建,线程安全但可能浪费资源;懒汉式首次调用创建,节省内存但需处理线程安全,推荐双重检查锁定实现。
-
Math.log()返回自然对数(ln),非常用对数(log₁₀);需用Math.log(x)/Math.LN10或封装log10函数;Math.exp()是计算e^x的最优方式,比Math.pow(Math.E,x)更准更快;log与exp互为反函数但浮点下存在微小误差。
-
CompletableFuture更适合佣金计算场景,因其天然支持有依赖的异步链路(如关系查询→规则加载→金额聚合),具备组合、扇出、异常穿透和超时控制能力,而纯线程池易导致卡死、超时和资源泄漏。
-
必须用哑节点,因为删除头节点时需统一前驱;快指针先走n+1步,使慢指针停在倒数第n个节点前驱;循环条件为while(fast!=null),最后执行slow.next=slow.next.next并返回dummy.next。
-
isEmpty()更适合实时监控容量,因其时间复杂度低、无副作用、并发下更稳定,而size()在部分集合(如懒加载代理、ConcurrentHashMap.keySet())中可能触发计算、返回估算值或引发N+1查询。
-
Java对象关联靠字段引用实现,一对一用单个对象字段,一对多用集合字段,多对多双方均持集合或引入中间实体;getter/setter不建立关联,关键在字段是否真实赋值;依赖、聚合、组合仅语义不同,代码层面均为字段持有。
-
排查JAX-WS(尤其是CXF)泛型故障的关键是:泛型运行时擦除导致WSDL类型定义缺失或分片,需检查wsdl:import是否因targetNamespace不一致引发分片、统一接口与实现类的@WebServicetargetNamespace、避免裸泛型而改用包装类或数组,并通过SoapUI验证类型解析有效性。
-
Java程序入口点必须是publicstaticvoidmain(String[]args),其中public、static、void、main和String[]args缺一不可;其他等效写法虽合法但不推荐,常见错误包括缺少static、返回类型非void、参数类型或数量错误等。
-
CMMException是Java2D中因颜色管理失败抛出的运行时异常,非处理工具,常由ICC文件损坏、颜色空间不兼容、缺失CMM实现等引发,需捕获并针对性降级或预校验。
-
Java中实现线程同步锁的核心目的是保证多线程访问共享资源时的数据一致性和线程安全,主要通过synchronized关键字、ReentrantLock、volatile关键字及Condition条件变量等方式实现;其中synchronized用于方法或代码块的自动加锁,ReentrantLock提供可中断、可重入、超时获取等更灵活的显式锁控制,volatile确保变量可见性但不保证原子性,适用于状态标志场景,而Condition配合ReentrantLock可实现精准线程通信;选择同步方式需根据实际需求权
-
优先选择组合而非继承,因继承导致类耦合紧、脆弱基类问题频发;组合通过接口隔离依赖,提升可替换性与可测性,且避免状态泄露;接口default方法不可替代继承,仅适用于无状态逻辑。
-
包装类用于将基本类型转为对象,支持自动装箱拆箱、字符串与数值转换及类型间转换。Java为每种基本类型提供对应包装类,如Integer、Double等,位于java.lang包。自动装箱允许基本类型直接赋值给包装类变量,反之则为拆箱。字符串转基本类型用parseXxx()方法,如Integer.parseInt("123");转包装类对象可用valueOf(),该方法对-128~127的Integer值有缓存优化。基本类型转字符串可通过String.valueOf()或toString()方法。数值类型间转