java教程技术文章
-
并行流不是把线程数调大就会变快。本文用同一批数据对比串行流与并行流,解释 ForkJoinPool.commonPool 的参与方式、任务粒度、共享资源和压测边界,帮助你在真实服务里做出可复核的选择。378 收藏 -
用一个三模块示例说明 Java ServiceLoader 如何通过 uses 与 provides with 在模块路径中注册并发现服务实现,同时给出编译、启动和空结果排查清单。378 收藏 -
Files.readString(path) 默认按 UTF-8 解码;文件实际编码不是 UTF-8 时,应使用带 Charset 参数的重载。本文从乱码根因、显式字符集写法和大文件边界三个方面给出可落地的选择方法。377 收藏 -
Java MethodHandles.Lookup 不是绕过权限的万能钥匙。本文用 privateLookupIn、findVirtual 和 lookupModes 拆开私有成员访问的调用链,并验证同模块、跨模块和模块未开放时的边界。376 收藏 -
介绍 Java 虚拟线程配合 Semaphore 限制数据库或外部接口并发的最小写法,覆盖许可数设计、中断、超时、异常释放和验证方法。376 收藏 -
Java 25 正式加入 import module 声明,可以按模块导入其导出的顶层类型,减少多个通配包导入。本文用 java.base 示例说明可见范围、命名冲突和 classpath 场景下的边界。373 收藏 -
Files.walk 返回的 Stream可能持有打开目录,遍历结束不代表资源已经及时释放。本文说明显式关闭的原因、正确写法,以及 IOException 与 UncheckedIOException 的处理边界。 373 收藏 -
Java Deflater 的 nowrap 参数决定是否保留 zlib 包装。本文对比 zlib 与 raw deflate 的数据边界、解压入口以及 GZIP、ZIP 的区别,帮助你正确匹配跨端压缩协议。373 收藏 -
在多任务操作系统中,每个运行的程序都是一个进程,用来执行不同的任务,而在一个进程中还可以有多个执行单元同时运行,来同时完成一个或多个程序任务,这些执行单元可以看做程序执行的一条条线索,被称为线程。操作系统中的每一个进程中都至少存在一个线程,当一个Ja va程序启动时,就会产生一个进程,该进程中会默认372 收藏 -
文章 · java教程 | 3星期前 | 数据校验 · api设计 · Java教程 · 参数校验 Java record API DTO Jakarta Validation 紧凑规范构造器 跨字段校验
Java Record 作为 API DTO 时,不要把所有校验都塞进构造器。本文按字段格式、Record 自身不变量、跨字段业务规则和外部依赖四类边界,说明紧凑规范构造器、Jakarta Validation 与应用服务各自适合承担什么校验。370 收藏 -
Java 25 StructuredTaskScope 可把一组相关子任务纳入同一生命周期:失败、调用方中断或整体超时时统一取消未完成任务,并通过中断协作完成收尾。370 收藏 -
Java Commons Codec 可以直接消费 InputStream 计算文件摘要,不必先把整个文件读入内存。本文比较 DigestUtils 的便捷入口、File/Path 重载和 MessageDigest 组合写法,给出大文件场景的选择清单。370 收藏 -
Java HttpClient WebSocket 的接收节奏由 request(n) 控制回调次数,而不是由 CompletionStage 自动限流。本文结合 WebSocket.Listener 说明 request、last、CompletionStage、关闭和异常处理的边界,并给出单次与有限批量申请的选择方法。370 收藏 -
ByteBuffer 写入完成后要先 flip 才能按有效数据读取。本文用具体状态值说明 position、limit、capacity 的变化,并区分 flip、rewind、clear 与 compact。368 收藏 -
Java模块化JAR适合运行部署与常规发布,JMOD主要服务编译和链接。用同一最小模块演示两种打包方式,说明java启动、jlink输入及本地文件封装的区别。368 收藏