Go语言技术文章
-
Python httpx 的关键不是把 AsyncClient 写得更短,而是让同一个客户端覆盖合适的异步生命周期。本文从循环中新建客户端的常见问题出发,说明共享连接池、Limits 参数、并发任务和关闭时机。299 收藏 -
用 Python sqlite3 的 serialize 与 deserialize 在连接之间迁移内存数据库,说明 bytes 快照、事务状态、SQLite 编译能力和恢复连接生命周期的关键边界。497 收藏 -
用 ContextVar 保存请求范围内的 request_id,再通过 logging.Filter 统一写入 LogRecord。本文给出 asyncio 并发示例,并说明 token 恢复、默认值、Handler 过滤器和后台任务边界。471 收藏 -
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 收藏