- 博客(121)
- 资源 (2)
- 收藏
- 关注
原创 麦谷芯™ (MachCore) 应用开发教程 6:一台设备中多台电脑主从机的设置
这篇教程介绍了麦芯应用开发中一台设备连接多台电脑设置主从机的步骤,涵盖确保网段一致、设置从机固定 IP、检查网络连通性、统一 redis 版本、修改从机 redis 配置、配置从机防火墙规则、配置主从机信息等内容。
2025-02-03 21:26:00
1028
原创 麦谷芯™(MachCore)应用开发教程5 --- 工位和晶圆传输
麦谷芯™平台通过配置文件驱动模式,解决半导体设备开发中因工位差异导致的重复编码难题,将传统3周/机型的开发周期缩短至2天。
2025-02-03 20:52:57
664
原创 软件之禅(十一) 消息
我认为消息分为以下三种:* 情形1,只发送不关心是否收到,即广播消息,类似于网络通讯的IP协议和Redis的频道消息 * 情形2,发送消息并确保客户端一定收到 *情形3,发送消息并确保客户端并执行指定的任务,典型的就是函数调用
2024-03-30 20:50:40
371
原创 麦谷芯™(MachCore)应用开发教程4 --- 文件系统
类似其他操作系统,麦芯也内置一个文件系统。麦芯文件系统使用Redis发布/订阅模式来实现消息的传递。麦芯文件系统中的每个文件就是一个频道,消息发布者将文件改变消息发布到这个文件频道,订阅到这个频道的订阅者可以接收文件改变消息。
2024-03-30 17:35:40
477
原创 软件之禅(九)对象分类(Classify)
在面向对象设计原则中,有一条原则就是组合优先于继承。显然,上述组合的方法更合理,组合的软件模型即为桥接模式。当然,也不能说第一种方法完全不对,在性能敏感场合,第一种模式结合template可以获得非常好的性能
2024-01-22 14:40:00
415
原创 麦谷芯™(MachCore)应用开发教程1 --- 设备应用操作系统软件
麦谷芯™致力于给设备厂商提供一个开发工具和平台,让客户快速高效的开发自己的专用设备软件,给客户创造价值。
2024-01-10 10:51:24
977
1
原创 软件之禅(七)面向对象(Object Oriented)
从第一性原理,找出领域中最本质的元素,在此之上构建整个软件模型和框架。综上可以看出,这个抽象分析能力才是人与人产生差距的地方。
2023-11-11 12:00:24
364
原创 软件之禅(五)Input 出场
过程有些复杂,为什么简单的一个赋值需要绕这么大的弯子?答案是,这三个基类 Ouput、Input 和 Data 可以在不必知道派生类的情况下进行交互。Ouput、Input 和 Data 以及后续基本类本质上是桥接模式(bridge pattern),在我看来,所有架构都可以看做桥接模式或桥接模式的变体。这篇文章我们引入新的概念,即输入(Input)。同样我们也需要做个设计,封装后续的变化。AfcQtEdit 既是 Output 也是 Input,故需要同时继承 Output 和 Input。
2023-06-12 11:03:59
330
原创 软件之禅(四)用观察者模式连接 Data 和 Output
所以,这个字符串观察类应该从 Output 继承。下面是类图,图中 AfcQtEdit 是观察类,DataString 是字符串主题类。正如上面提到的,这样的设计达到了解耦的目的。后续主题和显示是独立发展的。比如,Output 可以增加对 MFC 甚至浏览器的支持,而 Data 无需进行任何修改。为了将 Data 和 Ouput 解耦,我们这里的 Data 和 Ouput 是使用观察者模式来交互。Data 是主题,Ouput 是观察者。在QT 的对话框中添加如下代码。黄国强 2023/06/09。
2023-06-09 23:09:48
155
原创 软件之禅(三) 0,1,n
我们认为,事物分三种情形,分别是不存在、存在一个和无数个。用面向对象来描述,即为空对象(Null Object)模式,单例(Singleton)模式和组合(Composite)模式。
2023-06-02 12:03:02
145
转载 git 提交类型(type)(转)
revert: 恢复(Revert a commit),是把这次提交的修改给还原。. git: 添加或修改. gitignore 文件[不可见]. publish: 发布新版本[新版本]. Chore: 构建过程或辅助工具的变动。. cl: 对 CI 配皿文件和脚本的更改。. config: 修改配置文件(配置). docs: 添加 l 更新文档。. tag: 发布版本/添加标签。. format: 格式化代码。. patch: 添加重要补丁。. feat: 引入新功能.。. file: 添加文件。
2023-05-31 16:28:40
630
原创 软件之禅(二)数据类和输出类
“架构反映需求,设计封装变化”。继续前文说到 switch 存在的问题。这里 switch 就是提醒你这里是个变化点,需要用面向对象的方法做个设计。
2023-05-24 10:59:43
144
原创 软件之禅(一)Hello,World!
这段代码问题很大的,这种 switch 里面套 swtich 的代码最大的问题是无法维护。我们先从输出开始分析,输出有很多形式,比如,显示器,打印机,磁盘,扬声器,网络等等。这个原理因为马斯克而广为所知,马斯克对于事物的认知远高于常人,这和他经常用“第一性原理”分析事物分不开的。个人打算写一个系列文章,试图用第一性原理来把我自己掌握的知识梳理一遍,看看是否能更深入的认识软件的本质。" 是内部字符串数据。而数据也有很多形式,比如,上面的是字符串,还有整形数,浮点数,图像等等。黄国强 2023/5/19。
2023-05-19 10:52:18
374
原创 什么是时序
PC端做设备控制软件,有一个核心概念叫做时序,这里分享一下我的认识。先看代码。// 时序函数1void sequence1(int& step){switch(step):{ case 0: // do something step++; break; case 1: // do something step++; brea...
2021-10-14 14:51:59
7716
1
原创 C++ Follow Me(4): 封装
C++ Follow Me(4): 封装黄国强 2007-3-30 C++与C最大的不同,就在于C++可以将数据和操作数据的函数放在一起,变成一个独立的物体。即,类(class)。典型的好处就是调用一个函数不用传很多参数了。 但对于很多人来说,把哪些函数和数据放在一个类中,却是个大问题。事实上,在我们周围,设计不良的类比比皆是。 在上一篇中,我们从职责的角度解决了如何得到...
2020-04-08 15:57:53
244
原创 C++ Follow Me(3): 类的产生(下):从职责中提取
C++ Follow Me(3): 类的产生(下):从职责中提取黄国强 2006-12-21 在C中,软件可以认为是函数的集合。我们一般是从功能中来提取函数并将之模块化。与C不同的是,C++程序是由一系列类组成。所以按功能来获得类的出发点是不对的。那么,我们应该从什么角度才能得到我们所需的类了?答案正如标题所述,从职责中提取。 职责(responsibility)和功能(fu...
2020-04-08 15:56:33
252
原创 C++ Follow Me(2): 类的产生(上):从封装函数开始
C++ Follow Me(2): 类的产生(上):从封装函数开始黄国强 2006-11-29 C++ Follow Me(1)中对面向对象的必要性作了一些叙述,如果C程序员应该怎样才能成长为一个C++程序员呢?我这里就介绍一个方法可供有兴趣的朋友参考。 比如,我现有一个用C写的复杂函数。首先它有很多函数参数,而且函数内部存在很多局部变量。现在我们对他进行重构。下面为例子代码...
2020-04-06 17:17:08
276
1
原创 C++ Follow Me(1): 你面向对象了吗?
C++ Follow Me(1): 你面向对象了吗?黄国强 2006-7-12 传统的C的编程方式是以函数为中心的编程方式,换句话,整个程序就是函数的集合。有人要问,这有什么问题吗?当然没有问题。在面向对象技术出现之前,用过程式的设计方法依然构建出很多出色的系统,甚至有的现在还在运行。 那么我们为什么还需要向面向对象的方法转变呢?一个很现实的问题就是经济方面的问题。用面向对象...
2020-04-05 00:16:10
212
原创 C++代码的组织
C++代码的组织黄国强 2010-2-23军队编制:一个 师包括五到六个团;一个 团配有三个营;一个 营配有四个连左右;一个 连由三个排组成;一个 排由三个班组成;一个 班大约由十名战士;同样我们的代码也需要编制,我是这样定义代码编制的。一个主程序包括10个(或以下)DLL(动态链接库);一个DLL包括10个(或以下)namespace(名字空间);一个namespace包含...
2020-01-24 13:05:18
1231
1
原创 一次成功的重构实践4 - 万物皆对象
一次成功的重构实践4 - 万物皆对象黄国强 2019/3/25 前文说到所有IO卡可以抽象成三个函数。如下是重构前的代码,打开三色灯的红灯。// 头文件#define RED_LIGHT 0x00,0x00,0x03 // 三色灯的红灯// cpp 文件 BitOn(RED_LIGHT); // 点亮红灯 这里用到了宏,即红...
2019-03-25 16:35:02
365
原创 一次成功的重构实践3 - 抽象的艺术
一次成功的重构实践3 - 抽象的艺术黄国强 2019/2/7 抽象能力的培养非常重要。所谓抽象即抓住事物的本质规律,透过现象看本质。一个程序员工作多年,写代码的技术都会掌握。但是如果想做架构,缺乏抽象能力是不行的。 这就好比工匠和艺术家,前者只能做到是技艺纯熟,不断重复自己。艺术家往往可以表达人类普遍情感,探索客观世界的规律。比如,物理学上补色原理就是印象派画家最...
2019-02-07 10:58:39
357
原创 一次成功的重构实践2 - 架构设计的目的
一次成功的重构实践2 - 架构设计的目的黄国强 2019/1/27 华为老总任正非在1月9日在杭州研究所业务汇报会上的讲话:表示在软件工程能力提升上,我们最缺乏的是对宏观架构有清醒认识的人才。建立公司是一个架构;建立公司的利益体系也是一个架构;任何产品都是架构第一;软件重构一定要从宏观架构入手。 这段话蛮应景的,正好总结了我去年的工作。不过话说华为这么个大公司...
2019-01-27 10:26:33
482
1
原创 一次成功的重构实践1 - 概述
一次成功的重构实践1 - 概述黄国强 2019/1/20很长时间没写blog了,原因很简单,工作基本上遇不到问题,因而思考少了,自然也没有写东西的动力。这次年会之所以拿到了公司特殊贡献奖,是因为去年将原先的软件架构重写,使公司软件发生了有目共睹的巨大变化。在这里总结一下重构过程。重构前与重构后的解决方案比较:图中是原先的解决方案和现在解决方案的比较,从中可以看到,整个解决方...
2019-01-20 11:27:20
587
原创 用行为将对象归类
用行为将对象归类黄国强 2017/12/19学习C++从封装开始。那么封装什么呢?当然是封装数据还有操作这些数据的函数。由于经常封装数据,很多开发者会默认建立这个观念,即:封装就是封装数据。事实上这个观念是错误的。举一个地铁闸机的例子。闸机有两种状态,可以通过和不可以通过。有两种设计方案。设计方案1:class CGate{public: CG
2017-12-22 10:10:25
385
原创 Microsoft Visual Studio 调试监控器(MSVSMON.EXE)未能启动
Microsoft Visual Studio 调试监控器(MSVSMON.EXE)未能启动,关掉防火墙,问题解决。
2017-10-25 16:37:55
5980
原创 从ACE难学说起
从ACE难学说起 黄国强 2005年01月12日 ACE很难学,这是得到公认的。主要因为两个方面原因导致的。一是因为网络软件开发非常困难。二是因为ACE这个非常庞大的体系很难掌握。这个体系共有30多位核心开发者开发,全世界共有1700多人作出了贡献。在学习ACE之前,推荐掌握下列基础知识:深入掌
2017-10-01 00:07:33
582
原创 人月神话-软件开发现状
人月神话-软件开发现状黄国强 2005年03月5日 人月神话的作者Frederick P. Brooks Jr这样说到“所有软件活动包括根本任务--打造构成抽象软件实体的复杂概念结构,次要任务-使用编程语言表达这些抽象实体,在空间和时间限制内将他们映射成机器语言。” 这句话我
2017-10-01 00:06:01
833
转载 远程调试(转)
*假设调试机IP 192.168.0.182 远程机IP 192.168.0.161*远程机为调试机分配权限,使调试机可以使用远程桌面登陆到远程机器上(这样调试起来方便)。调试机上安装visual studio .net 2003共享调试机上的Visual Studio上的远程调试目录(以机器为例)C:\Program Files\Microsoft Visual Studio
2017-09-30 23:53:46
263
转载 windows 多线程编程防止死锁的几点经验 (转)
windows 多线程编程防止死锁的几点经验 (转)1) 不要在线程函数体内操作MFC控件,不要再线程里面调用UpdateData函数更新用户界面,而应该尽量采用发送消息的方式,在主线程的消息响应函数中操作控件;2)不建议采用SendMessage往主线程发送消息,因为它是同步的,阻塞的,可以考虑采用PostMessage代替;3)线程退出时
2017-08-21 10:35:56
618
转载 对VSS数据库历史版本删除
对VSS数据库历史版本删除(转)操作:1、作一个备份,做什么事情,这个最重要。以后大家要查历史版本,就用这个库了。2、使用VSS Administrator,Archive->Archive Projects3、Archive Wizard第一步,选中$这个Project4、Archive Wizard第二步,选中“Delete Data permanently”这个选项5
2015-05-06 16:48:42
2713
原创 ACE_INET_Addrconnect: address not available 问题的解决
ACE_INET_Addrconnect: address not available 问题的解决黄国强 2015/2/4这几天要写一个多机通讯的程序,所以看了ACE。1 问题背景ACE版本 6.1.9Win7 x64MS VS20082 遇到的问题 打开 ace\ACE-6.1.9\ACE_wrappers\examples\APG\Reactor 中的例
2015-02-04 14:36:07
3240
原创 boost 1.83版本编译备忘
boost 1.54版本编译备忘 黄国强 2013-9-10从boost官网上下载了1.54版本的压缩包,解压到本地磁盘。我把它解压到这里D:\boost_1_54_0。从控制台进入D:\boost_1_54_0目录中,输入命令 bootstrap根据编译器和32位64位目标程序选择下面四个命令之一启动编译程序。1 vc2010编译器编译32位目标程序从Vi
2013-09-10 10:13:45
2181
原创 我眼中的MVC模式(2) --- 变体 MOVE
我眼中的MVC模式(2) --- 变体 MOVE黄国强 2012-7-17看了文章 “MVC已过时,MOVE时代来临?”[1]后,感觉是MVC的一个变体,参照之前的一篇文章“我眼中的MVC模式”[2],我改了一下。实质上就是去掉了 View 对 Model 的引用。这是文章[1]中的原图:下面这张是按照我自己的发明的类图方法画的。参考文章[1] ht
2012-07-17 09:38:46
1398
原创 最近遇到了 manifest 的相关问题的记录
最近遇到了 manifest 的相关问题的记录黄国强 2012-3-271 问题出现每日构建一切正常,发布的程序也正常运行,直到有一天出现编译错误。mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file 根据网上查来的资料做出下列调整:将
2012-03-27 10:58:56
2059
redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库
2023-10-18
FlashDriveCardTester是一款U盘性能检测工具 主要作用就是帮助用户检查U盘的情况,通过检测U盘的健康状态再决定
2023-10-14
tensorflow-gpu-2.4.0rc3-cp38-cp38-win-amd64
2021-01-08
HtmLayoutSDK.zip
2020-07-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人