-
toArray()不带参数返回Object[],强转String[]会抛ClassCastException;应使用list.toArray(newString[0]),JVM自动分配精确大小,安全高效。392 收藏 -
增强for循环底层基于Iterator实现,编译后转为hasNext()和next()调用;遍历时修改集合结构会抛ConcurrentModificationException;安全删除须用iterator.remove()且需在next()后调用;ArrayList的Iterator性能优于LinkedList;CopyOnWriteArrayList不支持remove();自定义集合需正确实现Iterable与Iterator。118 收藏 -
Java多线程调试难源于并发环境的时间不可控性,需通过jstack定位死锁、增强日志可观测性、正确使用原子类及主动构造竞态条件来系统提升调试能力。181 收藏 -
String是引用数据类型,因为它是java.lang.String类的实例,对象存储在堆中,变量仅保存指向对象的引用地址,具备引用类型的全部特征。244 收藏 -
本文详解如何通过ApachePDFBox检测并提取PDF文档中每个页面可能嵌入的缩略图(Thumbnail),重点说明正确使用的COSName常量、API调用流程及常见误区。485 收藏 -
关键在于“定义得对”而非“少定义”:仅当需差异化处理、携带特定语义、跨模块传递上下文或含结构化字段时才自定义异常;其余复用标准异常。452 收藏 -
Arrays.stream()配合max()/min()可一行获取基本类型数组最值,但返回OptionalInt需用orElse()处理空数组,double数组需mapToDouble,小数组有装箱开销。455 收藏 -
Checkstyle插件不生效主因是模块未绑定、实时扫描未启用或版本不匹配;需确认Java语言级别、用绝对路径、重载配置、降级至8.36适配P3C,并统一各组件版本。119 收藏 -
Java的interrupt()仅设中断标志位,对阻塞线程需配合可中断方法(如sleep/wait)响应InterruptedException才能优雅中断;不可中断场景须用可中断替代方案或关闭资源破局。260 收藏 -
throw用于方法内抛出异常对象,立即中断执行;throws用于方法声明处声明可能抛出的异常类型,仅作提醒。前者抛一个异常,后者可声明多个,且只对受检异常有强制约束。430 收藏 -
Python用list模拟栈时,仅append()和pop()安全高效;Java应使用Deque而非Stack类;JavaScript须用push()/pop()而非unshift()/shift();手写栈需保证isEmpty()和size()为O(1)。403 收藏 -
Java执行顺序为:类加载时先父类后子类初始化static变量和块;new对象时先父类构造器、再本类实例块、最后构造器体;main方法非最先执行,其所在类static初始化可能早已完成;方法内语句自上而下执行,表达式按优先级与从左到右求值。197 收藏 -
Java分批应优先用subList或GuavaLists.partition,避免Stream.collect硬凑;需注意视图修改风险、空值校验及并发安全。454 收藏 -
try-with-resources中close()异常会被抑制而非覆盖主异常;主异常始终抛出,close异常可通过getSuppressed()获取;应主动检查处理被抑制异常,优化close实现以减少异常,并在必要时改用手动finally管理。202 收藏 -
标记整理算法是老年代碎片整理的标准实现路径,通过标记存活对象、计算新地址、移动并更新引用三步闭环,将存活对象紧凑排列至堆一端,生成连续空闲空间,从而高效支持大对象分配。280 收藏