01 2025 档案
摘要:本文介绍了 DAB协议实现的开发过程。由于设备认证需要,团队面临了开发 DAB 软件的紧迫任务。
项目初期,团队深入学习了 DAB 协议,整理出 28 个核心接口,并提出了改进建议,成功推动了协议的优化。随后,团队设计了两套实现方案,最终选择复用设备内部的 MQTT 服务,尽管带来了安全风险,但通过云端授权和超时关闭机制有效缓解了问题。
在技术选型上,团队选择了 Node.js 以缩短开发周期并复用现有功能。尽管 Node.js 版本成功支撑了多个设备的认证,但仍存在部分设备不支持 Node.js 以及跨部门协调复杂的问题。为此,团队开发了第二版 DAB,采用 C++ 实现,解决了 Node.js 的局限性,并通过适配层实现了多平台支持。
开发过程中,团队通过单元测试、灵活的部署策略和适配层设计,显著提升了开发效率和质量。尽管项目取得了成功,但仍存在一些遗憾,如嵌入进程的部署方式增加了安全依赖,以及与实践结合的时机较晚。
最终,DAB 的开发不仅解决了技术难题,还优化了团队协作和项目管理流程,为未来的设备自动化测试奠定了坚实基础。
阅读全文
摘要:HiJobQueue:一个简单的线程安全任务队列 概述 HiJobQueue 是一个线程安全的任务队列,用于在多线程环境中管理和执行异步任务。它的设计参考了 Cobalt 项目中的 JobQueue,并做了适当的简化。HiJobQueue 提供了任务推送(push)、任务弹出(pop)、队列退出(q
阅读全文
摘要:二十多年前,刚从大学毕业,对软件开发认识非常有限,掌握的技能也不多。 第一份工作 第一份工作是搭建一个BBS论坛,模仿当时流行的三夫户外论坛。 那时,对知识如饥似渴。由于买不起书,我常常去书店找到相关的ASP书籍,用钢笔将代码抄写在笔记本上,第二天再输入到电脑中。结合手头的书籍,认真学习ASP,虽然
阅读全文
摘要:在日常工作和学习中,我们经常需要快速访问某些功能或资源,例如打开常用网站、启动应用程序或执行特定命令。Linux 用户可以通过 alias 快速实现这些操作,但在 Windows 上缺乏类似的原生支持。本文将介绍如何使用 Python 开发一个 隐藏式文本输入框程序,模拟 Linux 的 alias
阅读全文
摘要:前言 这是我《回顾我的开发经历》系列的第二篇,聚焦于我与代码生成器的故事。从最初的简单工具到最终演变成一个功能强大的ORM框架,这段经历不仅让我在技术上得到了极大的提升,也让我深刻理解了重构、设计模式和系统架构的重要性。希望通过这篇文章,能为大家提供一些启发和思考。 初识代码生成器 工作几年后,我第
阅读全文
摘要:引言 简要介绍单例模式的定义和常见用途。 提出单例模式在实际开发中存在的问题,尤其是多线程环境下的复杂性。 说明本文将探讨单例模式的困境,并提供几种替代方案。 1. 单例模式的困境 1.1 多线程场景下的复杂性 问题: 多线程环境下,单例模式的实现需要考虑线程安全问题。 双重检查锁定(Double-
阅读全文
摘要:监听者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都会收到通知并自动更新。这种模式非常适合用于事件驱动的系统,例如 GUI 框架、消息队列等。
在本文中,我们将通过编写一个简单的监听者模式类 Observable,来学习如何实现这一设计模式。
阅读全文
摘要:1、用Mermaid画图 mermaid.md TyporaPortable.rar mermaid.zip 目录1 Mermaid是什么1.1 概述1.2 网址官网地址:Github地址:图形图形几种图形名字节点与无名字节点设置样式:style, classDef, class, :::线条图形连
阅读全文
摘要:一、缩小作用域 全局变量优化 检查全局变量是否可以设置为 static,使其仅在当前源文件内有效,避免全局污染。 函数作用域优化 检查函数是否可以设置为 static,使其仅在当前源文件内可见,减少外部误用的可能性。 函数位置调整 将函数从头文件移动到源文件内,使其对外部不可见,进一步降低误用风险。
阅读全文
摘要:1. Docker 服务管理 启动 Docker 服务 bash 复制 systemctl start docker.service 重启 Docker 服务 bash 复制 systemctl restart docker.service 查看 Docker 服务状态 bash 复制 system
阅读全文
摘要:重构是一个适合小步慢走(或快跑)的过程。除了在编码开始前和编码完成但未进行功能测试前,其他时间不适合进行大刀阔斧的重构。重构最好有单元测试作为保障,并且对重构的功能有充分了解。大的重构往往是通过一系列小的重构逐步浮现的,而且可能会出现反复。 1. 重构实践步骤 第一步:注释检查 是否利于阅读:注释应
阅读全文
摘要:1. 好的开发特征是什么 目标明确:清晰的目标是开发成功的基础。 标准清晰:明确的验收标准和规范,确保开发质量。 沟通高效:纵向和横向的高效沟通,确保团队协作顺畅。 紧盯目标:始终围绕目标开展工作,避免偏离方向。 关注价值:聚焦用户和业务价值,确保开发成果有意义。 质量内生:通过流程和工具确保代码质
阅读全文
摘要:一、什么是目标? 目标是团队或项目希望实现的最终结果,它应具备以下特点: 清晰性:目标应明确、具体,能够被所有参与者理解。 价值导向:目标应为用户或客户提供明确的价值。 可衡量性:目标应有明确的验收条件,能够衡量是否达成。 二、如何定义目标? 方法1:电梯三分钟演讲法 提炼核心价值:通过三分钟演讲,
阅读全文
摘要:一、编码前的重构思考 在编码前,通过以下步骤审视接口和设计,确保代码的可维护性和可测试性: 站在单元测试的角度审视接口: 思考是否需要将所有public和protected函数都暴露出来。 考虑是否违反正交性原则,避免函数过于复杂或依赖过多。 避免将不同场景的代码混在一起,确保代码的可测试性。 放置
阅读全文
摘要:一、什么是好的需求 需求的质量重于数量:需求并非越多越好,也并非越详细越好。一个好的需求应属于一系列关联需求的一部分,这些需求共同支撑一个发布版本,并为用户提供明确的价值。 验收条件:每个需求应有明确的验收条件,达到这些条件即视为需求完成。 可讨论与不可讨论的部分:需求应分为允许讨论(如具体实现方案
阅读全文
摘要:我的初步理解 1. 明确满意条件 定义任务的满意条件(验收条件),确保开发目标清晰可衡量。 2. 提供Checklist 制定Checklist,明确必填项和关键检查点,确保任务完成的完整性和一致性。 3. 需求与特性的关联 需求归属:明确当前用户需求属于哪个特性(Feature),并了解该特性下的
阅读全文
摘要:我的重构经历:编写代码生成器 概述 背景 多年前,我开发了一个基于C#的Windows程序——代码生成器,并在此后十多年间持续优化。该程序能够根据数据库表结构生成代码,并将结果显示在文本框中。最初是从同事那里接手的一个简单项目,经过不断扩展和重构,最终实现了通过数据库自动生成具备完整增删改查功能的网
阅读全文
摘要:当开发人员接到新任务后 1. 向上追溯(纵向拉齐) 1.1 首先提出的问题 这个任务针对的需求点是什么? 用户/客户是谁?他们有什么特点? 该需求为用户/客户提供了什么价值? 这个需求的满意条件是什么? 1.2 其次想到的是 这个需求属于哪个发布版本? 为什么这个版本需要开发这个需求? 这个版本的满
阅读全文