-
Java集合主要解决数组灵活性差、功能单薄的问题,提供自动扩容、丰富操作方法、多种数据结构及泛型类型安全,适用于日常业务开发。
-
Record类在Java14+中天然适合作为微服务间DTO,具备不可变性、自动生成方法、语义清晰等优势;应作为数据契约共享,配合Jackson零配置序列化,并按场景拆分小而专的Record,不承载业务逻辑。
-
Wrapper链式调用失效因方法返回新实例而非原对象,属不可变设计;正确写法需链式调用或赋值,避免引用丢失。
-
equalsIgnoreCase要求调用对象非null,应将字面量放左边避免NPE;不支持locale-sensitive比较,Unicode特殊字符如é/É可能失败;性能优于toLowerCase+equals,因原生实现且短路优化。
-
只重写findClass而不重写loadClass,因为loadClass已实现双亲委派逻辑,直接重写会破坏委派导致ClassNotFoundException或LinkageError;findClass是安全钩子,负责定位字节码、读取为byte[]、调用defineClass定义类。
-
throw语句只能抛出Throwable或其子类的实例,如newIllegalArgumentException("msg"),不可抛出普通对象或null,否则编译失败或运行时抛NullPointerException;检查型异常需配合throws声明,运行时异常可不声明但建议注明。
-
Collectors.reducing提供三种重载形式:无初始值归约、带初始值归约、映射后归约,适用于求和、最值及自定义累积,提升Stream操作灵活性与可读性。
-
方法的返回类型和参数列表是方法签名的核心,决定输入输出;2.返回类型可为基本类型、引用类型或void,非void需用return返回对应值;3.参数需明确类型和名称,多个参数用逗号分隔且类型不可省略;4.参数名应具可读性,方法内作为局部变量使用;5.调用时传参类型必须匹配,否则编译错误。
-
使用try-with-resources可自动关闭JDBC资源,避免泄漏。Connection、PreparedStatement、ResultSet均实现AutoCloseable,可在try括号中声明,异常时自动关闭,无需手动调用close();若多个资源关闭抛出异常,主异常被抛出,其余异常被抑制,可通过getSuppressed()获取;建议确保JDBC驱动支持Java7+,避免在try-with-resources中重新赋值资源,不跨方法传递Connection,事务控制应在try块内完成,从而提
-
使用SocketChannel发起非阻塞TCP连接需四步:1.创建通道并设为非阻塞后调用connect();2.注册到Selector监听OP_CONNECT;3.就绪后调用finishConnect()确认结果;4.处理成功、失败或超时。
-
配置Java环境后需验证java和javac版本一致、JAVA_HOME指向JDK根目录、手动编译运行Main.java成功,再通过VSCode过渡理解classpath与package机制。
-
线程池任务抛出未捕获异常时会静默终止,需在ThreadFactory创建线程阶段设置UncaughtExceptionHandler;但该机制无法捕获吞异常、Future.get()和拒绝策略异常,应结合Callable+Future显式处理及日志监控增强可观测性。
-
toLowerCase()和toUpperCase()不修改原字符串,仅返回新字符串;需接收返回值,防范null/undefined及Unicodelocale差异,避免链式调用崩溃。
-
AlpineLinux的OpenJDK镜像因基于musllibc而非glibc,易导致native依赖报错、诊断工具缺失、时区/字符集异常、JVM内存配置失效及高并发下偶发超时,建议优先选用Debian基础镜像或严格验证兼容性。
-
synchronized的核心作用是保证同一时刻只有一个线程执行被修饰的代码,其锁对象依使用方式而异:实例方法锁this、静态方法锁Class对象、代码块可显式指定锁对象;它具备可重入性与内存可见性语义。