- 博客(12)
- 收藏
- 关注
原创 如何写出一个真正能落地的好架构:从一个文件处理平台说起
不变量是无论发生什么都不能被破坏的规则。一个任务只能产生一次最终结果已取消任务不能重新成功迟到回调不能修改新任务失败不能发布半成品文件任务编号不能因为服务重启而变化超过并发上限时必须明确拒绝很多架构问题,不是因为代码能力不足,而是团队从来没有明确这些规则。如果不知道什么必须保持正确,就无法判断某个设计到底安全不安全。每份状态的唯一所有者是谁?模块之间的依赖方向是否清楚?外部技术细节是否泄漏到了业务层?失败是否可能留下半成品?迟到回调是否能修改已失效对象?
2026-08-10 18:32:37
174
原创 env与argv的区别与应用场景
argv指的是程序启动时收到的命令行参数。读取这些参数。在 Rust 里也可以通过 clap、std::env::args 等方式解析。env指的是环境变量。两者都能传配置,但语义不同。环境变量很方便,但方便不等于适合作为生产路径的核心来源。主程序通过 --workdir 明确工作目录主程序根据 workdir 推导 data/run/log主程序启动子进程时用 argv 传入必要路径子进程 argv 优先,env 只作为开发 fallback生产路径稳定多实例隔离清楚启动命令可读。
2026-06-25 17:51:05
376
原创 清理 C 盘 Temp 后软件打不开?问题原因和解决办法
清理 C 盘时,Temp 可以清,但不要直接全部清空。先关闭正在运行的软件只删除 7 天前的临时文件优先使用系统自带磁盘清理不手动删除系统目录清理后如果软件打不开,先重启电脑如果还不行,再修复 Temp 权限和 Explorer这次问题的核心原因就是:清理 Temp 太彻底,导致部分程序运行环境异常。以后按时间清理会安全很多。
2026-06-17 17:27:11
427
原创 后端架构中“一个设备四套ID“是过度设计吗?
数据库里叫user_idAPI 返回叫id或uid前端组件里又叫userId或recordId事件队列里可能变成actor_id"为什么不统一用一个 ID?"——这是我见过最频繁、也最危险的架构质疑。本文要说明:不是所有命名不一致都是坏事。真正的问题在于——你是否清楚每一层 ID 代表的生命周期边界。命名不一致是架构味道,但不是所有味道都是坏的。四层 ID 并存不是过度设计,混用才是 bug。清晰的命名边界,能让你的系统在三周后、三个月后、三年后,依然能让人一眼看懂数据是怎么流动的。
2026-06-09 11:19:43
495
原创 程序之间是怎么通信的?从 stdin、UDS、WebSocket 到消息队列
1. 用什么通道传?2. 用什么格式传?3. 怎么匹配请求和响应?stdin/stdout UDS Named Pipe TCP HTTP WebSocket gRPC MQTT 消息队列 共享内存 数据库JSON NDJSON JSON-RPC Protobuf 自定义二进制协议。
2026-06-05 19:02:43
456
原创 GitHub 常用命令及使用场景,一篇讲清楚日常开发怎么用
本文针对Git/GitHub初学者常见的困惑,整理了一套日常开发最实用的命令速查指南。文章首先区分了Git和GitHub的概念,然后按照开发场景分类讲解核心命令:基础操作(status/add/commit/diff/log)、分支管理(branch/checkout/switch)、远程协作(clone/fetch/pull/push)、合并策略(merge/rebase)以及冲突处理流程。特别强调了冲突解决的关键步骤:通过status定位冲突文件→识别冲突标记→合理合并代码→add标记解决→继续操作。最
2026-05-25 12:12:13
676
原创 Rust 项目里 Cargo.toml 依赖怎么写?path、git、crates.io 一次讲清
统一依赖版本,适合大型 monorepo,和「单个 path 依赖」目的一致,都是让多 crate 在同一棵树里协作。你在写项目 A(例如一个业务服务),想复用项目 B(例如一个公共库)里的类型和函数。相对 path 描述的是 仓库内部的目录关系,clone 到任何机器只要结构不变,路径就一样。很多人困惑的「我电脑上的文件夹放哪」「推 GitHub 要不要改路径」,都出在这三种方式的行为差异上。path 不依赖「先 push 库才能编」,但团队要通过 Git 同步目录里的文件。
2026-05-18 19:04:14
509
原创 Matter「取消订阅」为啥常常只取消了一半?
适合刚开始写 Matter 控制器 / 网关 / Node 侧封装 的同学:已经会「调订阅 API」,但发现 unsubscribe 之后心里不踏实——不知道设备侧 / 协议栈是不是真的停了。只取消业务层时:你在业务层把「不再转发」掐断,但 Matter 栈 ↔ 设备 之间那条订阅关系可能仍在(图中虚线表示「你以为停了,但底下可能还在」)。──────────►│◄────────(常见缺口)「理想取消」:业务层标记清掉 **并且** Matter 栈里对应订阅 **close()**,
2026-03-31 16:20:26
485
原创 多端点设备里「同一个能力块」该走哪个端点?
本文探讨了自动化测试中端点选择逻辑不一致的问题。现象显示测试用例期望默认选择最小端点编号,而实际代码却要求强制指定端点ID。分析指出核心矛盾在于代码实现逻辑不完整:前半部分排序端点似乎准备选择最小值,后半部分却直接禁止多端点情况。文章提出了两种解决方案:A方案实现自动选择最小端点并记录日志,B方案保持强制指定策略但需同步修改测试用例。关键建议在于团队需统一规则,确保代码实现、测试用例和文档描述三者一致,特别在分层架构中要明确各层职责。最后强调解决此类问题需要规范先行,完整实现后需通过边车测试和集成测试验证。
2026-03-30 13:38:21
540
原创 并行配网总失败?先把这三件事搞清楚(Matter 实践向)
摘要: Matter设备配网时,本地进程通信与设备Operational通信需区分处理,并行操作会放大超时、配置错误及资源竞争问题。常见误区包括混淆两条通信路径、盲目并行导致日志混乱、固定等待时间加剧干扰。建议:控制并发量、优先使用桥接模型减少独立实例、按链路动态设置超时及错峰重试。关键词:Matter、配网、并行、超时、桥接设备。
2026-03-30 13:30:41
403
原创 Matter 控制器 + Sidecar:三个容易误判为 Bug 的架构问题
你是否也遇到过这些情况:Sidecar(侧车进程)重启后,有的设备命令还能发,上报却没了;或者进程一挂,上层请求像「死等」;再或者文档里写了批量接口,线上还是一圈圈单次调用,IPC(进程间通信)照样堵?这类现象很多时候不是某一两行代码写错,而是产品语义、调用约定和实现假设没对齐。下面分三点说清楚思路,给同样做「主控 + 独立 Matter 进程」的同学参考。
2026-03-28 12:56:51
582
原创 网关 / 适配器里 Matter 状态怎么建模?节点 + 端点分桶的思路分享
做 Matter 网关或设备适配层时,很多人一开始都会把「一台设备」简化成「一个 ID + 一份状态」——上线单灯、单开关没问题,一旦遇到 Bridge(桥)、一排插座、多键开关 这类 多 Endpoint(端点) 设备,就会开始出现各种「状态乱跳」「明明另一个口开着却显示关」的现象。这篇文章不写具体代码实现,只聊 问题从哪来、思路怎么定、对上层的 API 怎么设计,给同样在堆 Matter 集成的同学做个参考。
2026-03-28 12:54:57
688
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅