山て
身体和灵魂总有一个要在路上
HttpClient 长连接不是永久连接:DNS、连接池与安全重试的工程边界 HttpClient 长连接不是永久连接:DNS、连接池与安全重试的工程边界
复用 HttpClient 可以减少连接开销,却不能自动解决 DNS 切换和业务重复提交。本文从连接池的生命周期出发,设计超时、并发和重试预算,解释安全方法与幂等的区别,并讨论响应流和 Cookie 隔离问题。
2026-10-18
WPF 批量数据为什么卡顿:从 Dispatcher 队列到 MVVM 更新预算 WPF 批量数据为什么卡顿:从 Dispatcher 队列到 MVVM 更新预算
后台线程生成数据很快,界面仍可能被成千上万次通知拖住。本文拆解 Dispatcher、集合通知与虚拟化的不同成本,用限量批处理和过期结果隔离设计可取消的数据导入流程,并给出可复现的性能验证方法。
2026-10-18
C# 有界 Channel:把背压、故障传播与优雅停止设计成一个协议 C# 有界 Channel:把背压、故障传播与优雅停止设计成一个协议
采集速度超过处理速度时,增加队列长度只能推迟故障。本文以测量数据流水线为例,推导容量与延迟的关系,区分停止接收、排空和强制中止,给出有界 Channel 的故障传播方案与验证方法。
2026-10-18
C# 读取 JSON 配置:反序列化之后,还需要验证什么 C# 读取 JSON 配置:反序列化之后,还需要验证什么
以 .NET 8 客户端配置为例,明确未知字段、缺失字段、null 与重复键的策略,把输入转为不可变的已验证快照,并分析热加载失败保留旧值、并发顺序和 URI 业务验证的边界。
2026-10-16
C# 异步编程:把等待、取消和超时处理清楚 C# 异步编程:把等待、取消和超时处理清楚
从 HTTP 下载的完整生命周期出发,分析协作式取消、总期限、流式响应、资源所有权与竞态分类,并用可控故障场景验证超时是否真正覆盖底层工作。
2026-10-16