java教程技术文章
-
基于掩码的IP地址解析核心是将IP和掩码转为四段整数数组,逐段按位与运算得出网络地址;需校验每段0–255合法性,支持点分十进制与CIDR两种输入格式,同网段判定即比较网络地址数组是否完全一致。431 收藏 -
Java整数字面量默认为int类型,超2147483647必须加L;浮点字面量默认double,float需加f;后缀影响泛型推断、方法重载和编译期检查。431 收藏 -
String.length()返回char个数,String.codePointCount()返回Unicode码点数;因UTF-16中代理对(如emoji、部分汉字)占2个char,故二者结果可能不同。430 收藏 -
标记清除算法导致老年代内存碎片的核心原因是只回收垃圾对象而不移动存活对象,使空闲空间离散分布;老年代对象长期存活、数量多且体积大,无法采用复制算法,只能就地标记清除,最终因缺乏连续空间而频繁触发FullGC甚至OOM。430 收藏 -
Java数组是引用类型,声明需明确元素类型和维数,推荐写法为int[]array;初始化分静态(如int[]arr={1,2,3})和动态(如int[]arr=newint[5])两种;访问越界抛ArrayIndexOutOfBoundsException。430 收藏 -
虚拟线程适合大量阻塞型任务,但它不会自动增加数据库连接等稀缺资源。本文从读者提问出发,说明虚拟线程不该再被线程池复用,连接池本身的并发边界,以及何时应使用 Semaphore。430 收藏 -
必须通过反射获取theUnsafe字段并setAccessible(true),JDK9+还需--add-opens参数;allocateMemory返回的地址需手动管理生命周期,重复free或越界访问将导致JVM崩溃。429 收藏 -
Java9起接口可用private方法抽取多个default方法共用逻辑,既复用代码又不暴露给实现类;它专用于接口内部封装校验、日志、格式化等重复行为,仅限本接口内default或static方法调用,不可被实现类访问或反射调用。429 收藏 -
推荐组合优于继承,因其更契合业务可变性与可控性:组合明确区分“拥有什么功能”和“是什么类型”,避免继承的脆弱基类、单继承限制、语义失真及封装泄露问题,支持运行时切换、易测试与高内聚。429 收藏 -
局部类通过编译器生成私有字段并构造时传入值或引用,将effectivelyfinal变量“搬家”到堆上与实例绑定共存亡;修改其指向对象内部状态可绕过final限制。428 收藏 -
文章 · java教程 | 2个月前 | Java · 异步编程 · 后端开发 · CompletableFuture · 接口聚合 · java 结果合并 completablefuture 并行调用 超时兜底
页面接口经常需要同时查询用户、订单、优惠等多个服务。本文按完整工作流拆解 Java CompletableFuture 如何做并行调用、独立超时、异常兜底、统一 DTO 合并和最终检查。428 收藏 -
Java 25 的 StructuredTaskScope 仍是预览 API,适合把一次请求拆成多个并发子任务,再以结构化的 join、失败传播和超时边界收拢结果。本文用商品详情聚合场景拆开 open、fork、join、TimeoutException 和预览编译参数。428 收藏 -
线程池submit异常默认被FutureTask静默捕获,必须调用get()才能解包;应统一通过工具方法unwrapExecutionException、映射原始异常为带上下文的BusinessError,并配合超时控制与回调兜底。427 收藏 -
WeakHashMap用于变量元数据缓存的核心优势是自动解耦生命周期,避免内存泄漏:键对象失去强引用后条目自动失效,值需自主管理,不适用于长期配置场景。426 收藏 -
Arrays.hashCode()对一维数组内容深度哈希,确保相同元素顺序和值产生一致哈希;二维及以上数组须用Arrays.deepHashCode();自定义类需重写hashCode()与equals()且基于不可变字段;推荐封装为final不可变键类并深拷贝数组。426 收藏