<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[专注于前沿技术的探索与实践，热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长～]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/zhxup606</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; zhxup606]]></copyright><item><title><![CDATA[在半导体制造的后道工序中，半导体测试机与分选机或探针台的自动化协同，是整个封测厂（OSAT）上位机系统（EAP / Tester Controller / ATE-MES）的核心]]></title><link>https://blog.csdn.net/zhxup606/article/details/164368706</link><guid>https://blog.csdn.net/zhxup606/article/details/164368706</guid><author>zhxup606</author><pubDate>Sun, 13 Sep 2026 15:55:52 +0800</pubDate><description><![CDATA[事务锁覆盖物理全周期：机械压合/下针→→信号触发→→测试完成→→读取 Bin→→抬针/抬压头，必须在一个不可分割的SemaphoreRedlock事务内完成。EOT / Handshake 强制幂等：利用组装全局唯一 ID，所有来自硬件的中断与响应均需经过防重屏障（Redis / 内存 HashSet），防止 Bin 码映射错位。硬件资源全局 ID 线性化：将探针台、测试头、分选机压头、打磨垫分配唯一递增 ID，死锁预防机制在 C# 代码底层自动升序排序后取锁，保证系统 24/7 零死锁运行。]]></description><category></category></item><item><title><![CDATA[ASP.NET Core DI 源码深度解析]]></title><link>https://blog.csdn.net/zhxup606/article/details/164168773</link><guid>https://blog.csdn.net/zhxup606/article/details/164168773</guid><author>zhxup606</author><pubDate>Sun, 13 Sep 2026 15:54:55 +0800</pubDate><description><![CDATA[设计点体现收益CallSite 树把创建逻辑变成可缓存、可编译的计划高性能 + 可验证延迟实现（Realized）第一次用时才编译启动快，按需优化缓存位置枚举用统一方式表达三种生命周期代码简洁清晰Visitor 模式轻松支持多种执行后端强校验选项把错误尽量前移到启动时ASP.NET Core DI 虽然功能不如 Autofac、DryIoc 等第三方容器丰富（不支持属性注入、中间件式装饰器、复杂子容器等），但它在性能、简单性、与框架深度集成、AOT/裁剪友好。]]></description><category></category></item><item><title><![CDATA[在多台工控机/上位机（SCADA / MES / 调度系统）协同运行的场景中，单机内存锁（如 `SemaphoreSlim`）无法跨节点生效]]></title><link>https://blog.csdn.net/zhxup606/article/details/164368233</link><guid>https://blog.csdn.net/zhxup606/article/details/164368233</guid><author>zhxup606</author><pubDate>Sun, 13 Sep 2026 15:48:55 +0800</pubDate><description><![CDATA[在多台工控机/上位机（SCADA / MES / 调度系统）协同运行的场景中，单机内存锁（如）无法跨节点生效。例如，当系统存在时，若两台工控机同时向同一个 PLC 发送写指令（如“启动输送带”或“配方下发”），极易引发指令冲突或重复执行。引入，配合，可以确保全集群在同一时间仅有一个上位机节点能操作特定设备，并有效防止高频重复请求。]]></description><category></category></item><item><title><![CDATA[在工业上位机控制系统中，当一个工序（或Worker线程）需要同时独占多个机械机构]]></title><link>https://blog.csdn.net/zhxup606/article/details/164368558</link><guid>https://blog.csdn.net/zhxup606/article/details/164368558</guid><author>zhxup606</author><pubDate>Sun, 13 Sep 2026 15:48:46 +0800</pubDate><description><![CDATA[在工业上位机控制系统中，当一个工序（或Worker线程）需要（例如：同时锁定“搬运机械手”和“下料位定位气缸”）时，如果不同Worker获取锁的顺序不一致，极易发生。死锁一旦发生，上位机线程挂起，下位机机构停在半空中，整个流水线瞬间瘫痪。]]></description><category></category></item><item><title><![CDATA[C# 记录类型（Record）与结构体（Struct）的区别详解]]></title><link>https://blog.csdn.net/zhxup606/article/details/163799970</link><guid>https://blog.csdn.net/zhxup606/article/details/163799970</guid><author>zhxup606</author><pubDate>Sun, 13 Sep 2026 15:48:39 +0800</pubDate><description><![CDATA[/ 普通结构体set;set;// 记录类（最常用）// 位置记录// 记录结构体// 完整写法init;init;init;维度struct类型值类型引用类型值类型默认相等值相等（需完善）值相等（自动）值相等（自动）with 表达式不支持支持支持继承不支持支持不支持堆分配通常无有通常无推荐不可变可选强烈推荐强烈推荐主要用途高性能小数据值对象、DTO、领域模型高性能 + 记录语法一句话总结想要值类型性能→ 用struct或想要。]]></description><category></category></item><item><title><![CDATA[MediatR 中的错误处理详解]]></title><link>https://blog.csdn.net/zhxup606/article/details/163800076</link><guid>https://blog.csdn.net/zhxup606/article/details/163800076</guid><author>zhxup606</author><pubDate>Sun, 13 Sep 2026 15:48:10 +0800</pubDate><description><![CDATA[场景推荐处理方式参数验证失败FluentValidation + ValidationBehavior 抛 ValidationException业务规则失败返回Result<T>ErrorOr<T>资源不存在返回 Result 或抛 NotFoundException系统级异常（DB、网络）抛异常，由全局中间件处理统一日志与监控领域事件处理失败记录日志 + 继续执行其他 Handler（最终一致性）API 返回将 Result 映射为 HTTP 状态码。]]></description><category></category></item><item><title><![CDATA[Result 模式的具体实现深入探讨]]></title><link>https://blog.csdn.net/zhxup606/article/details/163800093</link><guid>https://blog.csdn.net/zhxup606/article/details/163800093</guid><author>zhxup606</author><pubDate>Sun, 13 Sep 2026 15:47:57 +0800</pubDate><description><![CDATA[Result 模式的具体实现可以非常简单，也可以做得非常强大。显式表达成功/失败强制调用方处理错误支持函数式组合（Map、Bind、Match）错误信息结构化自己实现一套轻量 Result 是理解该模式的最好方式；实际生产中优先使用ErrorOr或，能显著提升开发效率和代码质量。完整可复制的 Result + Error 源码文件ErrorOr 的实战对照示例与 MediatR Pipeline 深度结合的写法支持本地化错误消息的扩展。]]></description><category></category></item><item><title><![CDATA[PLC 快照（Snapshot）机制详解]]></title><link>https://blog.csdn.net/zhxup606/article/details/164428102</link><guid>https://blog.csdn.net/zhxup606/article/details/164428102</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 17:27:49 +0800</pubDate><description><![CDATA[PLC 通讯中断超过 1 秒（连接断开）连续 3 次轮询失败（地址配置错误、超时等）轮询线程被阻塞（如 GC、文件 IO 等）轮询间隔被设置为较大值（如 500ms，则过期阈值为 1500ms）工业上位机开发中，快照过期是安全保护机制，业务层应将该状态视为“不可操作”，触发报警或等待恢复，而不是忽略继续执行。]]></description><category></category></item><item><title><![CDATA[“重新开批再上料“ 报 PLC快照已过期的根因分析]]></title><link>https://blog.csdn.net/zhxup606/article/details/164428149</link><guid>https://blog.csdn.net/zhxup606/article/details/164428149</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 17:24:55 +0800</pubDate><description><![CDATA[问题根因解决方案快照过期PLC 状态切换期间读操作失败写入后等待快照恢复部分地址读取异常增加重试机制过期阈值过小1秒有效期在写操作密集时不适用动态调整阈值或使用指数退避用户体验差报错后需手动重试自动重试 + 友好的状态提示核心建议写入关键命令后，主动等待快照恢复（方案 1）业务层增加智能重试（方案 3）监控快照状态，提前预警（健康监控）优化写操作，减少 PLC 切换时间（方案 4，需 PLC 程序配合）]]></description><category></category></item><item><title><![CDATA[PLC 快照逻辑详解]]></title><link>https://blog.csdn.net/zhxup606/article/details/164428847</link><guid>https://blog.csdn.net/zhxup606/article/details/164428847</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 17:22:05 +0800</pubDate><description><![CDATA[问题根因解决方案快照频繁过期过期阈值过小（3×轮询）放宽至 5×轮询，最小 3 秒网络抖动导致误判无重试机制增加 3 次重试，每次等待 500ms快照健康状态不可见无健康监控增加连续无效计数和日志异常后快照停止更新异常处理不完善完善 PublishPollingFailureSnapshot工业现场追求的是可靠而非实时。快照机制应优先保证数据一致性，允许适当的延迟，但绝不能在数据不完整时让业务继续执行。]]></description><category></category></item><item><title><![CDATA[高性能生产者-消费者模式（Power Cycle 示例）]]></title><link>https://blog.csdn.net/zhxup606/article/details/162956362</link><guid>https://blog.csdn.net/zhxup606/article/details/162956362</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 10:39:53 +0800</pubDate><description><![CDATA[以下是一个的高效实现：一个线程（模拟仪器采集），另一个线程（分析、计算、记录），使用现代 C# 内存管理技术，尽量做到。]]></description><category></category></item><item><title><![CDATA[LabVIEW 前端界面、程序框图以及底层的字节切片/协议拼接逻辑（`TX DATA PARSE`、指令 `0002`、以及各种乘 10、公式转换等）]]></title><link>https://blog.csdn.net/zhxup606/article/details/162149527</link><guid>https://blog.csdn.net/zhxup606/article/details/162149527</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 10:37:24 +0800</pubDate><description><![CDATA[LabVIEW 前端界面、程序框图以及底层的字节切片/协议拼接逻辑（、指令0002、以及各种乘 10、公式转换等），这里为你抽象并编写一套完整的。由于底层通讯最终是通过网络连接（IP:，端口:5000）以字节流形式发送给主控板，在 C# 中最优雅的实现方式是，并编写对应的。]]></description><category></category></item><item><title><![CDATA[在 C# 中，十进制（Decimal）和十六进制（Hexadecimal）之间的相互转换非常简单]]></title><link>https://blog.csdn.net/zhxup606/article/details/162149542</link><guid>https://blog.csdn.net/zhxup606/article/details/162149542</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 10:37:06 +0800</pubDate><description><![CDATA[转换方向核心方法示例10 进制 ➔ 16 进制➔"FF"10 进制 ➔ 16 进制 (补位)➔"00FF"16 进制 ➔ 10 进制➔25516 进制 ➔ 10 进制 (安全)适合处理用户输入的十六进制字符串。]]></description><category></category></item><item><title><![CDATA[详细解析以及对应的完整 C# 实现代码]]></title><link>https://blog.csdn.net/zhxup606/article/details/162149554</link><guid>https://blog.csdn.net/zhxup606/article/details/162149554</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 10:36:47 +0800</pubDate><description><![CDATA[以下是该逻辑的详细解析以及对应的完整 C# 实现代码。]]></description><category></category></item><item><title><![CDATA[将一段由空格分隔的十六进制或十进制字符串（这里看数值是 ASCII 字符对应的数值或者直接是文本数值]]></title><link>https://blog.csdn.net/zhxup606/article/details/162149631</link><guid>https://blog.csdn.net/zhxup606/article/details/162149631</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 10:35:25 +0800</pubDate><description><![CDATA[将一段由空格分隔的十六进制或十进制字符串（这里看数值是 ASCII 字符对应的数值或者直接是文本数值，依据图2输入，第一个提取出54转换为数字为54吗？54是子字符串，实际上代码用了（String Subset 节点：参数是 offset 和 length）。字符串节点1: offset = 0, length = 1.（其实看图，有连线常数：第一个是 0 和 1；第二个是 1 和 1；第三个是 2 和 1；第四个是 1 和 3。等一下，仔细看常数框：第1个：上面是0，下面是1。]]></description><category></category></item><item><title><![CDATA[在C#中，当面对需要同时控制、读取或初始化多个硬件驱动的场景时，`Parallel.ForEach` 是一个非常强大的工具]]></title><link>https://blog.csdn.net/zhxup606/article/details/162149641</link><guid>https://blog.csdn.net/zhxup606/article/details/162149641</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 10:34:36 +0800</pubDate><description><![CDATA[在C#中，当面对需要同时控制、读取或初始化多个硬件驱动的场景时，是一个非常强大的工具。硬件操作（如通过串口、网口、USB或PCIe进行通信）通常伴随着等待时间（I/O绑定）或高密度的状态解析（CPU绑定）。使用多线程并行处理可以大幅缩短总执行时间。下面为您详细拆解的核心概念、硬件驱动场景下的注意事项，并提供一个完整的生产级 Demo。]]></description><category></category></item><item><title><![CDATA[完整的方案与示例代码，按照“命令模式 + 执行器 + 可插拔解析器”抽象通信功能，满足高效、可维护、可扩展的需求。设计要点先列出，然后给出必要的代码文件（可直接复制到项目）]]></title><link>https://blog.csdn.net/zhxup606/article/details/162174748</link><guid>https://blog.csdn.net/zhxup606/article/details/162174748</guid><author>zhxup606</author><pubDate>Sat, 12 Sep 2026 10:33:58 +0800</pubDate><description><![CDATA[•	要实现全部 Form1 的按钮功能，只需为每个下位机交互实现一个 ICommand（或把复杂功能拆为多个子命令），并在连接后注册到 Executor。•	如需支持异步流水线、并发不同优先级命令、重试与指数退避、队列限流，可在 CommandExecutor 内增加策略（中间件链：重试、metrics、auth）。•	抽象命令（ICommand）：每个与下位机的动作为一个命令对象，包含构建请求与解析响应的逻辑（或可注入解析器）。•	可测试：命令可单独单元测试（传入假的驱动）。说明与后续扩展建议（简短）]]></description><category></category></item><item><title><![CDATA[WpfPowerTester示例代码的更详细版本，增加了详细的中文注释，确保代码清晰易懂]]></title><link>https://blog.csdn.net/zhxup606/article/details/151231778</link><guid>https://blog.csdn.net/zhxup606/article/details/151231778</guid><author>zhxup606</author><pubDate>Fri, 11 Sep 2026 20:29:47 +0800</pubDate><description><![CDATA[示例代码的更详细版本，增加了详细的中文注释，确保代码清晰易懂。代码基于 Prism 8.x 和 .NET 8.0，涵盖依赖注入、模块化设计、事件聚合、MVVM 模式、区域导航和 SQLite 数据库支持，适配 Power Tester 的热瞬态测试需求。项目结构保持不变，分成多个项目以提高维护性和扩展性，支持多页面切换（主页面、日志页面、测试程序维护页面、系统设置页面），并适配触摸屏界面。：2025年9月5日，晚上10:10（香港时间）。]]></description><category></category></item><item><title><![CDATA[我将基于前述 **WpfPowerTester** 示例代码，提供更详细的数据库设计，包含完整的表结构、字段说明、索引设计、SQL 语句、数据访问层实现，以及如何在 Prism WPF 项目中集成数据]]></title><link>https://blog.csdn.net/zhxup606/article/details/151231836</link><guid>https://blog.csdn.net/zhxup606/article/details/151231836</guid><author>zhxup606</author><pubDate>Fri, 11 Sep 2026 20:29:27 +0800</pubDate><description><![CDATA[示例代码，提供更详细的数据库设计，包含完整的表结构、字段说明、索引设计、SQL 语句、数据访问层实现，以及如何在 Prism WPF 项目中集成数据库操作。以下设计以 SQLite 为基础，满足 Power Tester 热瞬态测试系统的需求，支持器件管理、测试结果、日志记录和系统设置，并确保扩展性和维护性。以下是数据库服务的实现，包含详细的中文注释，集成到前述 Prism WPF 项目中。以下是 SQLite 数据库的详细表结构，包含字段、类型、约束和用途说明。存储系统配置参数，如测试参数、硬件设置。]]></description><category></category></item><item><title><![CDATA[基于前述 **WpfPowerTester** 项目，我将详细阐述 MVVM（Model-View-ViewModel）设计模式在该项目中的实现，结合 Prism 框架、依赖注入、模块化设计、事件聚合]]></title><link>https://blog.csdn.net/zhxup606/article/details/151231939</link><guid>https://blog.csdn.net/zhxup606/article/details/151231939</guid><author>zhxup606</author><pubDate>Fri, 11 Sep 2026 20:29:15 +0800</pubDate><description><![CDATA[项目，我将详细阐述 MVVM（Model-View-ViewModel）设计模式在该项目中的实现，结合 Prism 框架、依赖注入、模块化设计、事件聚合、区域导航和数据库支持。设计将满足 Power Tester 热瞬态测试系统的需求，支持多页面切换（主页面、日志页面、测试程序维护页面、系统设置页面）。以下是基于前述项目的 MVVM 实现，更新了部分代码以支持更详细的数据库设计，并添加了详细的中文注释。（参考前述数据库设计，略）。（参考前述数据库设计，略）。]]></description><category></category></item></channel></rss>