-
在VSCode中调试Java项目需正确配置.vscode/launch.json,推荐通过运行视图齿轮图标自动生成基础配置;须安装ExtensionPackforJava,多模块或Maven/Gradle项目应确保在根目录打开且已编译。
-
Fastjson1.2.68+默认禁用autoType引发拒绝或ClassNotFoundException,需显式白名单开启;Jackson静默失败因字段不可见或无参构造器缺失;日期格式、并发性能差异需统一配置与复用实例。
-
可用removeAll和retainAll提取增删元素:新增为newArrayList(listB).removeAll(listA),删除为newArrayList(listA).removeAll(listB);需注意保序、避副作用、处理重复元素及类型可比性。
-
核心线程数需依任务类型设定:CPU密集型≈CPU核数+1,IO密集型为CPU核数×2~4,混合型应拆分线程池;须动态获取核数、监控线程状态并合理配置拒绝策略。
-
Integer.valueOf()在-128~127范围返回缓存实例,超范围才new;自动装箱调用valueOf,拆箱调用intValue();null调用intValue()抛NPE,需判空;缓存边界与空安全是高频陷阱。
-
复制算法提升Survivor区空间利用率的核心是高效回收与合理分配,通过控制对象存活率、优化复制节奏、动态调整区大小来减少碎片和避免提前晋升。
-
throw用于方法体内实际抛出异常对象并中断执行,throws用于方法声明末尾声明可能抛出的异常类型以告知调用者;前者后接异常实例,后者后接异常类名,可多个逗号分隔。
-
Java泛型是编译期类型检查机制,非语法糖;擦除后运行时无泛型信息,故禁用newT()、instanceofT、T.class及泛型异常捕获。
-
super是编译期确定的直接父类成员访问入口,不触发多态、不绕过访问控制;调用构造器须首行且唯一;访问字段和方法均为静态绑定;内部类中A.super特指外围类方法调用。
-
Java中ExecutorService需通过Executors工厂方法或手动构建ThreadPoolExecutor创建;常用方式包括newFixedThreadPool(固定线程数、无界队列)、newSingleThreadExecutor(单线程串行)、newCachedThreadPool(弹性线程、SynchronousQueue)和newScheduledThreadPool(定时任务);自Java9起推荐显式构造ThreadPoolExecutor以控制参数。
-
Java中new创建对象是JVM协调类加载、内存分配、初始化等多步骤的完整流程:先检查并加载类,再在堆中按指针碰撞或空闲列表等方式分配内存(优先TLAB),接着零值初始化、设置对象头,最后执行构造方法并赋引用。
-
FileNotFoundException在Java中因文件不存在或权限不足被抛出,需用try-catch处理。应优先捕获该异常再捕获IOException,结合File类的exists()和canRead()方法预判文件状态,并使用try-with-resources自动管理资源,提升程序健壮性。
-
本文介绍如何在Spring应用启动阶段,通过BeanFactoryPostProcessor或InitializingBean实现对配置文件中引用的Bean名称是否存在于预定义枚举中的自动化校验,避免运行时因Bean不存在导致的NoSuchBeanDefinitionException。
-
Spring无法直接注入抽象类,因为抽象类不能实例化;应通过具体实现类(如AServiceImpl)注入,或改用接口定义契约并让实现类注册为Bean。
-
基本类型数组不能直接转为List,因泛型不支持原始类型;Arrays.asList(int[])将整个数组视为单个元素,返回长度为1的List;正确方式是用Stream.boxed().collect()或包装为Integer[]后调用asList。