-
Collections.synchronizedMap仅保证单个方法原子性,无法解决复合操作竞态条件;遍历时必须手动同步,否则抛ConcurrentModificationException;相比ConcurrentHashMap,其全表锁性能差且不支持高并发。
-
Java反射可通过getGenericType()等方法获取字段、方法参数、返回值及父类继承关系中声明的泛型实参,但局部变量和new表达式中的泛型信息因类型擦除无法获取。
-
Java注释分//、/.../和/.../三类://用于单行,不跨行且不可在字符串内;/.../支持多行但禁止嵌套;/.../为Javadoc注释,需紧邻声明且含标准标签。
-
Java反射无法真正修改final字段:编译期常量被内联,staticfinal字段在JDK9+模块化下不可写,非staticfinal字段虽可临时覆盖但受JIT优化和线程可见性影响,生产环境严禁使用。
-
Java数组反转有原地和新建两种方式:原地反转用双指针交换,空间复杂度O(1),修改原数组;新建反转创建新数组逆序复制,保留原数据,适合需隔离的场景。
-
IDEA里file.encoding和console.encoding必须一致Java源文件读取、编译、运行时控制台输出,三者编码不统一是乱码最常见原因。IntelliJIDEA默认可能用系统编码(比如Windows的GBK),但项目源码是UTF-8,结果编译时字面量被错误解码,运行时又用GBK解console输出——中文直接变???或方块。进File→Settings→Editor→FileEncodings,把GlobalEncoding、
-
IDEA启动慢或报OutOfMemoryError需区分平台JVM(影响IDE自身)和项目JVM(影响运行代码),平台参数在Help→EditCustomVMOptions修改,项目参数在Run→EditConfigurations→VMoptions设置;Gradle构建OOM则需配置gradle.properties中的org.gradle.jvmargs。
-
@Deprecated是提示性注解,不中断编译仅触发警告,IDE标黄是主动解析实现;它不影响运行时路由或权限控制,需配合逻辑拦截、版本路径和文档说明才能真正停用接口。
-
使用System.arraycopy合并数组前须确保类型兼容且目标数组长度足够,否则抛异常;拼接时第二段拷贝起始位置应为第一段长度,避免覆盖;基本类型数组不可与包装类混用。
-
Java多态数组用父类或接口类型声明,可存储不同子类对象,运行时自动调用对应子类重写方法;支持统一管理、灵活扩展,但不可直接调用子类特有方法,需instanceof判断后转型。
-
选择合适的Java镜像并编写Dockerfile是部署核心,推荐使用openjdk:17-jre等LTS版本,通过dockerbuild构建镜像,dockerrun运行容器,并可结合多阶段构建、JVM参数优化和HEALTHCHECK提升稳定性。
-
单例持有ActivityContext会导致其无法被GC回收而引发OOM;正确做法是使用ApplicationContext或WeakReference,并避免在单例中缓存View、Dialog等生命周期敏感对象。
-
javac是Java源码编译的唯一标准入口,将.java编译为.class字节码;需严格匹配包结构路径,常见错误包括命令未找到、参数不兼容、包不存在、中文乱码及javac/java混淆。
-
本文详解ApacheHttpClient5AsyncClient中设置JSON和multipart请求体的关键要点,重点解决SimpleRequestBuilder.setBody()对复杂实体无效、BasicAsyncEntityProducer丢失boundary等典型问题,并提供可直接复用的生产级代码示例。
-
Collections.synchronizedList是Java中将普通列表转为线程安全的工具方法,通过同步关键操作保障单个方法的线程安全,但复合操作和迭代需手动加锁,适用于读多写少场景,高并发下性能较低,建议根据需求选用CopyOnWriteArrayList等更高效方案。