-
线上压测需用CountDownLatch实现齐发式并发、CyclicBarrier支持多轮脉冲爆发、Semaphore控制瞬时并发上限,并须绕开直连生产库、未标识流量、监控缺失及无熔断等风险。181 收藏 -
LocalDate.plusDays计算订单过期时间完全可靠,前提是业务规则明确且不涉及时区、时间点或跨日营业逻辑;它仅做确定性日历天加法,适合“下单后N日内有效”场景,但需注意计时起点、节假日排除及过期判断时机等业务语义。265 收藏 -
synchronized通过monitorenter/monitorexit指令实现,锁信息存于对象头MarkWord;ReentrantLock依赖AQS和Unsafe的CAS/park等native方法,字节码仅体现为普通方法调用。299 收藏 -
使用StringWriter+PrintWriter是捕获异常堆栈为字符串最稳妥的方式,JDK1.4+兼容,自动处理cause链和suppressed异常,且不依赖第三方库。232 收藏 -
不能只用instanceof判断类型,因其破坏equals对称性;应使用getClass()确保同一具体类;ID为null时须用Objects.equals安全比较;忽略其他字段需严格依据业务契约;equals与hashCode必须一致且仅基于id。471 收藏 -
default方法是向后兼容的契约演进机制,用于在不破坏现有实现类的前提下为接口新增行为,但需设计时预留扩展意识,且无法解决参数或返回类型变更等破坏性改动。128 收藏 -
配置Java环境后需验证java和javac版本一致、JAVA_HOME指向JDK根目录、手动编译运行Main.java成功,再通过VSCode过渡理解classpath与package机制。190 收藏 -
Class.getResourceAsStream路径以/开头才从classpath根查找,否则按当前类包路径相对查找;文件需在src/main/resources下且构建后存在于jar顶层;返回null主因是路径错误、资源未进classpath或IDE缓存未刷新。115 收藏 -
SynchronousQueue无存储结构,size()恒为0,任务必须即时移交:有空闲线程则交付,否则立即创建新线程;offer()失败触发扩容,put()则阻塞等待配对线程。448 收藏 -
是的,TreeSet底层基于TreeMap实现,而TreeMap使用自平衡红黑树,保证有序性和O(logn)时间复杂度,但要求元素可比较且compareTo与equals逻辑一致。400 收藏 -
不能。static代码块仅在类首次主动使用时触发初始化,且受类加载与初始化阶段分离影响;常见陷阱包括路径错误、异常未处理、编码缺失;推荐容错初始化及改用懒加载等更可控方案。320 收藏 -
Java中Integer缓存池是享元模式的典型应用:通过预缓存-128~127范围内的Integer对象实现共享复用,valueOf()为工厂方法,newInteger()绕过缓存;该范围权衡内存开销与命中率,且仅对valueOf及自动装箱生效。379 收藏 -
线程池过大导致性能下降的主因是上下文切换开销激增。当线程数远超CPU核心数,频繁切换(1–5μs/次)吞噬大量CPU时间,吞吐不升反降;需据任务类型(CPU/I/O密集)合理设定线程数,避免盲目扩容。371 收藏 -
RecursiveTask与RecursiveAction的核心区别在于是否返回结果:RecursiveTask用于有返回值的任务(如归并排序需返回子数组),RecursiveAction用于无返回值的副作用操作;误用会导致编译失败或合并逻辑断裂。440 收藏 -
Java类加载过程包括加载、验证、准备、解析、初始化5个阶段:加载从字节流生成Class对象;验证确保字节码合规;准备为静态变量设默认值;解析将符号引用转为直接引用;初始化执行<clinit>方法赋值和静态块。333 收藏