Go语言技术文章
-
typing.Protocol 可以围绕消费者需要描述可替换依赖。本文用两个标题查询实现说明小协议、显式注入与签名兼容,并区分静态检查、运行时成员检查和业务语义保障。236 收藏 -
用一个可移植的进程池小工具说明 Python multiprocessing 中 spawn 与 fork 的资源继承、平台差异、代码写法和选择边界。322 收藏 -
Python 3.11 引入的 StrEnum 适合承载接口中的稳定字符串值。本文从 name 与 value 的区别出发,演示 json.dumps 序列化、枚举类调用反序列化,以及严格编码器和未知值场景下的处理边界。393 收藏 -
更新配置、缓存或导出文件时,不要直接以 w 模式覆盖正式文件。本文用 pathlib.Path 和 tempfile 在目标目录先写临时文件,完成关闭后再 replace,说明失败清理、跨文件系统、Windows 句柄与持久化边界。268 收藏 -
Python 3.15 延迟导入的启动收益需要按入口测量。本文比较普通导入、函数内导入与显式 lazy import,提供新进程测量示例,并说明首次使用成本、异常时机和版本兼容取舍。133 收藏 -
Python 3.15 的 profiling.sampling 同时支持 wall-clock 和 cpu 采样。本文从观测目标、命令组合和生产排障场景说明两种模式的取舍,并提醒统计采样、短脚本和版本匹配的边界。138 收藏 -
Java 线程池队列一直变长,通常不是把容量调得更大就能解决。本文用有界队列、最大线程数和 CallerRunsPolicy 组成简单背压,并说明拒绝策略、指标与任务类型的取舍。311 收藏 -
Java GC 日志不能只看最大耗时。本文以 JDK 25 HotSpot/G1 为例,说明统一日志采集、GC 编号关联、暂停与并发阶段区分,以及安全点、CPU 时间和分配压力的判读边界。306 收藏 -
用 ValueSource、CsvSource 和 MethodSource 组织 JUnit 5 参数化测试输入,覆盖单值、表格与动态对象场景。110 收藏 -
Java record 和 Lombok @Data 都能减少数据类样板代码,但它们表达的对象契约不同。本文从不可变语义、访问器、继承、框架绑定和迁移成本比较两种方案,并给出 DTO、配置对象与领域实体的选择规则。422 收藏 -
Gradle configuration cache 不复用时,先用 help 区分配置阶段和任务阶段,再根据问题报告修复 Project、监听器、外部进程和任务状态依赖;暂时无法迁移的任务只做局部 opt-out。281 收藏 -
Jackson 多态 JSON 需要稳定类型字段和明确子类型映射。本文用通知对象的往返示例说明 Id.NAME 的用法,区分缺失类型、未知类型、集合泛型和旧数据迁移边界。126 收藏 -
Java Maven BOM 可以把一组相关依赖的版本集中到一个 POM,再由项目通过 dependencyManagement 和 import 引入。本文用原创示例说明 BOM 的写法、子模块声明、effective POM 排查,以及多个 BOM 重叠时的显式覆盖边界。279 收藏 -
文章 · java教程 | 3天前 | Java · 异常处理 · try-with-resources IOException Java InputStream.transferTo Java 字节流复制 OutputStream
用 Java InputStream.transferTo 把输入流复制到 OutputStream,理解返回字节数、流关闭责任、IOException 与部分写入边界,并给出文件、响应流和进程流的处理方式。455 收藏 -
BigDecimal 的 equals 同时比较数值和 scale,所以 1.0 与 1.00 可能被判定为不同对象;compareTo 只比较数值。本文用金额判断、集合键和输入构造说明两者的边界。499 收藏