java教程技术文章
-
Properties.load(Reader) 使用调用方已经解码好的字符,load(InputStream) 则按 ISO-8859-1 解释每个字节。读取 UTF-8 中文配置时,应使用 InputStreamReader 显式指定 UTF-8,并注意 Unicode 转义、store 配对和流关闭责任。229 收藏 -
从异常中的模块与包名入手,区分 exports、opens 和读取关系,给出 Java 反射 setAccessible 失败的诊断代码与最小修复方案。227 收藏 -
JTable 开启排序后,复选框状态容易因为视图行号和模型行号混用而错位。本文用一个可运行的 Swing 表格拆开索引转换、状态保存、刷新重建和验收方法。226 收藏 -
从 plain、opaque、acquire/release 到 volatile,梳理 Java VarHandle 的内存序选择方法,并用发布协议验证共享数据可见性。226 收藏 -
Java HttpClient 没有直接的 multipart 表单构造器,需要自己处理 boundary、CRLF、文件段和长度。本文给出可计算长度的拼接方案,并说明大文件如何改用可重复创建的流式请求体。225 收藏 -
Java 25 的 ScopedValue 适合在明确的动态作用域内单向传递不可变上下文;ThreadLocal 仍适合可变的线程本地状态,但在线程池任务结束时必须 remove。本文用最小代码和选择表说明两者在任务边界、嵌套绑定和子任务继承上的区别。225 收藏 -
Java record pattern 如何拆解嵌套数据?本文用订单、地址和金额示例说明 instanceof、switch、null 边界及泛型嵌套模式的写法。223 收藏 -
Spring AI 2.0 的 ToolSearchToolCallingAdvisor 会按会话索引工具。本文从工具全量暴露的排查现场出发,说明 session ID、工具索引和 ChatClient 之间的边界,并给出 Java 配置示例与核对清单。221 收藏 -
从 G1 GC 日志的事件行、Eden/Survivor/Old/Humongous 区域变化和阶段耗时入手,区分 Young、Mixed、Full GC 与 evacuation failure,建立暂停原因的分析顺序。221 收藏 -
Java 模式 switch 不会让 null 自动落入普通类型模式。本文用 case null 和 case null, default 说明空值分支、default 兜底及非法组合边界,并给出一组最小反向验证清单。220 收藏 -
Java HttpResponse.BodyHandlers.ofInputStream() 会在响应头到达后提供 InputStream,适合逐块处理大响应。本文说明固定缓冲区读取、状态码判断、EOF 与 close 的边界,并对比常用 BodyHandler 的选择方式。220 收藏 -
Java StructuredTaskScope 的 close 必须由 scope owner 调用。本文说明关闭时如何取消未完成子任务、等待线程结束,以及如何用 try-with-resources 处理线程归属、中断响应和嵌套结构边界。220 收藏 -
文章 · java教程 | 4星期前 | 并发 · Java · CompletableFuture · java 异步编程 completablefuture CompletionStage minimalCompletionStage
服务内部需要控制 CompletableFuture 的完成权,但直接返回它会让下游拥有过多操作面。本文用 minimalCompletionStage 建立只读编排边界,并说明 toCompletableFuture、异常与取消的适配位置。219 收藏 -
Java Optional 链式调用里,map 适合把当前值转换成普通值,flatMap 适合连接本身就返回 Optional 的查询。本文从返回类型入手,说明怎样避免 Optional>、怎样让空值传播保持清晰,以及在哪个边界收敛成默认值或异常。 219 收藏 -
Java Files.probeContentType 返回 null 并不等于文件损坏,而是当前文件类型探测器无法确定 MIME 类型。本文区分 null 与 IOException,解释扩展名、平台和 FileTypeDetector 的影响,并给出上传场景的受控兜底策略。218 收藏