-
submit()返回Future可获取结果或取消任务,execute()无返回值且异常易静默;shutdown()等待任务自然完成,shutdownNow()尝试中断并清空队列;CachedThreadPool易因无限建线程导致OOM。
-
应初始化计数器为0,循环条件设为retry_count<max_retries,成功时break,失败时计数器自增,避免末尾判断导致多试一次或初始化错误。
-
Java9起支持接口中privatestatic方法,用于封装仅限接口内部静态方法复用的工具逻辑,避免重复代码、增强内聚性且不破坏封装。
-
绝大多数“找不到类”问题源于类路径配置错误,需依次检查模块依赖(Scope为Compile)、源码/资源目录标记、输出路径设置,刷新Maven/Gradle依赖,核对运行配置的module选择及JDK版本匹配。
-
ProtocolException:HTTP表明请求违反HTTP协议规范,常见于手动设置请求头/体、setDoOutput(true)未配setDoInput(false)、误设Content-Length或Transfer-Encoding、空body却启用输出、或Android端响应行不合规。
-
G1通过将堆划分为2048个可动态角色的Region实现精细化回收,停顿时间目标为软约束并依赖历史数据预测,MixedGC基于各Region存活率而非老年代整体使用率触发,配置不当易引发FullGC或性能下降。
-
JavaScript的%是求余而非取模,导致负数索引错误;应使用((i%n)+n)%n映射到[0,n)区间,注意防御n=0和浮点索引。
-
单纯用System.currentTimeMillis()配合Random无法绝对保证唯一性,因毫秒级时间戳在快速调用或时钟回拨时易重复,需叠加随机数和进程/线程标识;推荐组合时间戳+6位随机数+PID,或直接使用Files.createTempFile、UUID等更可靠方案。
-
Gradle项目需显式配置Java17:Gradle7.0+用java{version=JavaVersion.VERSION_17},旧版用sourceCompatibility='17'与targetCompatibility='17',并确认org.gradle.java.home指向正确JDK路径。
-
<p>Java中生成[min,max]闭区间随机整数最推荐用Random.nextInt(max-min+1)+min或ThreadLocalRandom.current().nextInt(min,max+1),避免重复创建Random实例。</p>
-
反射的核心价值是“运行时解耦”,通过字符串动态决定行为,支撑Spring、MyBatis等框架;Class获取方式(Class.forName、obj.getClass、类.class)在类加载时机、异常和适用场景上差异显著;调用私有成员需setAccessible(true),但受SecurityManager限制;泛型已擦除,final字段修改可能无效;性能损耗大,必须缓存Method。
-
clear()不一定快,因其对大ArrayList会逐个置null以助GC,引发暂停抖动;应据场景选newArrayList()、trimToSize()、ThreadLocal或ArrayDeque等替代方案。
-
双重检查锁通过两次判空和volatile保证线程安全与性能,避免多线程下重复创建实例,同时实现懒加载。
-
不能直接用substring()提取路径参数,因为路径参数位置不固定,需用indexOf()动态定位分隔符并处理边界(如-1检查)、多段路径层级、查询参数/锚点剥离及大小写兼容性等问题。
-
将long类型序列化为字符串是最稳妥的解法,因JavaScript数字精度限制(±9007199254740991),而Javalong最大值远超此范围,直接传数字会导致ID被四舍五入;推荐全局配置Jackson将Long转字符串,或字段级用@JsonSerialize或@JsonFormat注解。