-
Java文件上传核心是处理multipart/form-data请求,SpringBoot用MultipartFile快速实现,原生Servlet需ApacheCommonsFileUpload;须重命名文件、校验类型、限大小、隔离上传目录。
-
LongAdder比AtomicLong更快,因其采用分段累加+最终合并策略,通过base值与cells数组分散线程竞争,降低CAS自旋开销,吞吐量近似随CPU核心数线性增长。
-
JavaSoundAPI不提供回声效果内置类,需手动实现延迟线+反馈的DSP逻辑:用环形缓冲区对16位PCM样本延时衰减叠加,注意字节序、溢出及格式一致。
-
只有实现AutoCloseable或Closeable接口的类(如FileInputStream、BufferedReader、JDBC资源等)才能用于try-with-resources;close()在块结束时按声明逆序调用,异常会被压制,且不保证关闭成功或及时。
-
抽象类定义共性行为,具体类实现细节逻辑。通过abstract声明的抽象类封装公共属性和方法,含抽象方法强制子类实现,具体方法供继承复用,适用于“是什么”关系建模;具体类用extends继承并必须实现所有抽象方法,可重写方法表达特性,调用父类方法提升利用率;设计时应将稳定结构放入抽象类,易变行为设为抽象方法,结合接口实现多维扩展,遵循“共性提取、个性实现”原则,避免无意义使用,确保代码可维护与扩展。
-
安全调用System.exit()应限于命令行工具,Web服务须用ApplicationContext.close();System.getenv()优先于getProperty()读敏感配置;性能计时禁用currentTimeMillis(),改用nanoTime();arraycopy()比循环快且需注意参数顺序;System方法不可mock,需抽象封装。
-
多态基于方法重写和动态绑定,运行时根据实际对象调用方法。父类引用指向子类对象时,实例方法调用子类重写版本,属性和静态方法则不表现多态,如Animala=newDog();a.show()执行Dog的show,a.name取Animal的name,a.print()调用Animal的静态方法。多态提升代码扩展性,实现“编译看左边,运行看右边”。
-
MAVEN_OPTS未生效的主因是设置位置错误或被覆盖:Linux/macOS需在~/.bashrc等配置文件中export,Windows需在IDE中单独配置,CI需在流水线脚本显式传入;参数应仅含JVM启动选项如-Xms1g-Xmx2g-XX:MaxMetaspaceSize=512m,禁用GC策略和Maven属性。
-
DCL单例不加volatile不是线程安全的,因对象构造可能被重排序,导致其他线程看到未初始化完成的实例;必须用volatile禁止重排序并保证可见性。
-
Java接口异常设计是契约的一部分,需区分检查型与非检查型异常:前者强制处理,适用于可恢复业务异常;后者用于编程错误;应封装底层异常为语义明确的自定义异常,避免滥用,配合文档与规范确保一致性。
-
String.lines()返回空流是因为原始字符串不含换行符(\n、\r\n、\r);它语义化分割且不保留终结符,而split()需手动匹配换行变体并可能产生空串。
-
实体类代表事物本身,承载状态与身份,如User、Order;行为类专注做事,提供算法或协调能力,如PaymentProcessor、DiscountCalculator。区分关键在职责:实体被持有,行为被使用。
-
类和对象是Java中面向对象编程的核心概念。类是模板,定义了属性和方法;对象是类的实例,具有具体的值和行为。类与对象的关系类似于剧本和演员:类是剧本,定义了角色的行为和特征;对象是根据剧本上演的具体演员。
-
绝大多数情况下catch块必须记录日志,但仅限真正处理并终结异常传播路径时;业务异常用warn,系统异常用error并保留完整堆栈;避免重复记录、截断堆栈及异步场景日志丢失。
-
先使用setx命令永久配置Java环境变量。确认JDK安装路径后,用setxJAVA_HOME设置根目录,再用setxPath添加%JAVA_HOME%\bin到系统Path,最后重新打开cmd验证java-version和javac-version输出。