java教程技术文章
-
自旋锁不能直接用while(true)因会吃满CPU且无内存可见性保障,需用volatile或AtomicReference等保证happens-before;应避免手写普通布尔变量循环,推荐AtomicReference/Integer表示状态,解锁用set()或lazySet()而非compareAndSet()。415 收藏 -
@Override不参与泛型擦除,仅作编译校验;重写是否成立取决于擦除后方法签名是否一致:参数擦除为上界(无界则Object),返回类型需满足协变规则,否则编译报错。351 收藏 -
计数数组法可在O(n)时间内找出众数,适用于值域集中且可控的整型数组;通过映射元素到索引累加频次,再扫描计数数组获取最大频次对应值,支持负数偏移与多众数扩展。147 收藏 -
ClassLoader.getResourceAsStream不接受前导斜杠,路径应为“config/app.properties”形式;加“/”会导致返回null,因其默认从classpath根查找,无需且不支持斜杠。144 收藏 -
SplitPackage本质是多个模块导出同一包名,违反JPMS唯一性约束;必须通过module-info.java精准控制包归属、仅允许一个模块导出该包,其余模块移除或重命名同名包,禁用exports同名包,必要时用opens限定反射访问。314 收藏 -
用Stream.generate配合limit生成固定长度随机验证码,核心是通过无限流生成预定义字符集中的随机字符,再截取拼接;推荐ThreadLocalRandom(一般场景)或SecureRandom(高安全场景),并可剔除易混淆字符提升可读性。393 收藏 -
Java中用int[]inDegree记录各节点入度,初始化为0后遍历边递增对应下标;配合队列实现Kahn算法:入度为0者入队,出队后对其后继入度减1并入队新零入度节点,最终序列长度等于n则成功。346 收藏 -
答案是开发简易Java图书管理系统需先明确需求,设计Book和BorrowRecord类,用ArrayList存储数据,实现增删改查、借阅归还功能,并通过序列化实现数据持久化。276 收藏 -
应为每个业务模块创建独立Phaser实例并命名空间化phase标识,封装阶段为含模块名、序号、语义标签的PhaseToken,切面按模块声明式注册,跨模块协同通过事件或状态桥接实现。282 收藏 -
main方法必须声明为publicstaticvoid,JVM仅识别该签名;Maven标准结构简化构建;推荐用CommonsCLI解析参数;需显式用System.exit控制退出码。102 收藏 -
MinIO连接失败主因是服务未启动或监听地址错误;默认仅监听localhost:9000,需用--address显式绑定IP;客户端endpoint须为完整无路径URL;bucket需显式创建且命名合规;SpringBoot需统一OkHttp版本。347 收藏 -
线程池submit异常默认被FutureTask静默捕获,必须调用get()才能解包;应统一通过工具方法unwrapExecutionException、映射原始异常为带上下文的BusinessError,并配合超时控制与回调兜底。427 收藏 -
任务执行漏斗通过三级阻塞队列实现流量缓冲、分拣与节流:第一级入口缓冲承接洪峰,第二级按优先级分组调度,第三级令牌桶或SynchronousQueue控制输出速率,并协同解决唤醒丢失、背压传导和生命周期一致性问题。493 收藏 -
BigDecimal.divide抛ArithmeticException的常见原因有四:一是除零;二是未指定精度和舍入模式导致无限小数;三是指定了UNNECESSARY舍入但结果无法精确表示;四是divideToIntegralValue在无法整除时部分JDK版本异常。348 收藏 -
SpringBoot中注解数组属性(如@RequestMapping.value)仅用于静态路由声明,不接收运行时批量参数;批量参数应通过@RequestBody、@RequestParam等独立接收。235 收藏