java教程技术文章
-
ReentrantReadWriteLock适用于读远多于写的场景,通过读并行、写独占提升缓存类数据结构并发性能;需遵循双重检查、写锁降级及锁粒度分片等规范,读写比建议≥20:1。156 收藏 -
Collectors.averagingInt()仅计算整型字段算术平均值并返回double,不能直接生成财务报表;它适用于非金额类整数指标(如数量、天数),但不支持空流且存在浮点误差,财务场景应优先用BigDecimal配合自定义收集器。155 收藏 -
Java死锁需主动预防:统一按System.identityHashCode()升序加锁、用ReentrantLock.tryLock()实现超时与可中断、避免同步块内调用外部方法,同步块仅做数据操作。155 收藏 -
Java数组声明有int[]a和inta[]两种语法,语义相同但前者更推荐;初始化分静态(如String[]s={"a"})和动态(如newdouble[5]);访问越界抛ArrayIndexOutOfBoundsException,空引用访问抛NullPointerException。155 收藏 -
ServiceLoader是JDK原生SPI机制,通过META-INF/services/下接口全限定名配置文件加载实现类,懒加载、无参构造、不支持依赖注入,与Spring完全隔离,适用于简单插件场景。154 收藏 -
HashSet能自动去重,因其底层基于HashMap,元素作为key存储,依赖equals()和hashCode()保障唯一性;自定义类必须正确重写这两个方法,否则去重失效。154 收藏 -
模块化开发中变量暴露边界的本质是按需开放访问权限:包内用default实现高内聚协作,继承体系用protected+private控制能力边界,对外服务用public配合校验与防御性拷贝,再通过module-info.java二次过滤导出包。154 收藏 -
真正导致堆栈轨迹极度碎片化的是异步边界跨越叠加异常创建,而非闭包嵌套本身;应通过上下文透传、禁用无意义异常、结构化并发收编来解决。154 收藏 -
文章 · java教程 | 2个月前 | 工程化 · Spring Boot · junit · Java教程 · Testcontainers · java 集成测试 spring boot JUnit 5 Testcontainers
一篇 Java/Spring Boot 集成测试实战:用 Testcontainers 和 JUnit 5 让数据库、迁移脚本、约束和 CI 行为更接近生产,解决 H2 测试全绿但预发翻车的问题。154 收藏 -
getInterfaces()仅返回直接声明的接口,不递归获取父接口;接口调用时返回其直接extends的父接口;需手动递归+去重才能获得完整继承链;泛型信息丢失,须用getGenericInterfaces()获取。153 收藏 -
需结构化记录关键变量变更,涵盖操作人、时间戳、变量名与作用域、脱敏前后值及调用链标识,通过@AuditVariable注解+AOP实现轻量审计,并接入ELK日志体系与告警。153 收藏 -
答案:Java中通过Properties类和类加载器读取resources下的配置文件,如config.properties,使用InputStream加载并获取键值对,推荐ClassLoader方式确保JAR包内正常访问,注意处理文件缺失、编码及敏感信息存储问题,外部配置可用FileInputStream指定路径。153 收藏 -
最常见的幂等失效原因是拦截器未注册或注解未被Spring扫描到;需确保拦截器加@Component、启用CGLIB代理、注解含RUNTIME保留策略和METHOD目标,且避免this调用。153 收藏 -
函数式接口是仅含一个抽象方法的接口,可含任意默认方法、静态方法及Object类继承方法;@FunctionalInterface注解用于显式标识并触发编译器校验,非必需但推荐。153 收藏 -
不该用return-1或null表示失败,因错误码混淆控制流、易被忽略且缺乏上下文;应按场景选受检异常或RuntimeException,并设计含上下文、异常链的自定义异常。153 收藏