自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 Qt的Widgets项目

此时可看到这个项目的汇总信息,还可以使用版本控制系统,可直接单击“完成”按钮完成项目的创建。本质上就是GCC(GNU Compiler Collection,GNU编译器套件)。你刚才的 OPC UA Viewer 用的就是 qmake + .pro 文件。QMainWindow = 主窗口(带菜单工具栏)优点:跨平台、功能强、所有大项目都用它。✅ 中心部件区域(放树、表格、面板)✅ 状态栏(Status Bar)最基础、最简单、干干净净的窗口。✅ 菜单栏(Menu Bar)✅ 工具栏(Tool Bar)

2026-04-02 14:14:20 382

原创 qt模块学习记录

【代码】qt模块学习记录。

2026-04-02 11:44:16 229

原创 QT6.11社区版+OPC UA控件之环境搭建

目前qt自带的版本为。

2026-04-02 10:46:52 169

原创 产生式控制系统

冲突化解(resolve conflict):在可用的规则中,选择应该执行其中的哪一条(which rule to “fire”)• 选择离上次使用最久(least recently used)的规则:给不同的规则平等。每回合对动态数据库的改变很小,上一回合前提满足的规则在新的回合很可能依然满足。很多规则的一些前提条件是相同的,单独检查每条规则的每个前提条件会导致重复计算。• 如果满足一组条件的数据是满足另一组条件的数据的子集,则这组条件。• 选择匹配最近被创建或更改的数据的规则:让系统关注刚刚在做的;

2026-03-23 10:24:44 315

原创 产生式表示法

领域知识主要是经验性的(如诊断故障、审批贷款、下棋策略)。规则经常变化,需要频繁更新知识库。系统需要向用户解释推理过程(“为什么你拒绝了我的贷款申请?”)。不需要严密的数学证明,但需要快速的反应和决策。

2026-03-20 16:43:07 362

原创 一阶谓词逻辑表示法

我们需要一阶谓词表示法,是因为:命题逻辑太傻:无法概括规律,无法处理关系,导致知识库冗余且愚蠢。高阶逻辑太疯:表达能力过强导致计算机无法在有限时间内完成推理。一阶谓词逻辑刚刚好:它拥有变量和量词,能用有限的规则描述无限的世界(解决了表达力问题)。它限制量词仅作用于个体,保留了可计算性(解决了可行性问题)。它提供了严密、自然、通用的框架,是连接人类智慧与机器计算的黄金桥梁。

2026-03-20 11:31:10 362

原创 Python中一种简洁、高效的构建字典的方式

字典推导式(Dictionary Comprehension)是 Python 中一种简洁、高效的构建字典的方式。它允许你用一个表达式从可迭代对象(如列表、元组、集合等)中快速生成字典,替代了繁琐的 for 循环。以下是它的完整语法结构和基础到进阶的学习例子。

2026-03-20 09:19:56 176

原创 EDA 最常用的所有 pandas 函数

df.groupby(‘列名’)[‘数值列’].agg([‘mean’,‘max’,‘min’]) # 分组多统计。df[‘列名’] = df[‘列名’].astype(‘float’) # 转类型。df.isnull().sum() / len(df) *100 # 空值百分比。df.isnull().sum().sum() # 总空值数。df.groupby(‘列名’).sum() # 分组求和。df.groupby(‘列名’).size() # 分组计数。

2026-03-19 08:46:29 245

原创 Pandas 数据结构DataFrame案例

def p(obj, title=“输出”, line_len=60):# 打印标题# 打印分隔线# 打印内容print(obj)# 打印底部分隔线。

2026-03-18 14:54:21 13

原创 python的print()函数例子

print(“谋事在人”, end=" | “)print(“成事在天”, end=” | ")print(“有生命便有希望”)

2026-03-18 14:23:47 444

原创 行为型模式:⑩①访问者模式(Visitor Pattern)

对比维度C语言实现C++语言实现接口定义结构体+函数指针抽象基类+纯虚函数(多态)双分派实现手动类型判断+函数指针调用多态+具体元素参数(自动匹配)内存管理手动+递归销毁智能指针(shared_ptr)+虚析构,自动管理访问者状态全局变量模拟私有成员变量封装类型安全依赖手动指针操作,风险高编译期类型检查+纯虚函数约束,类型安全封装性结构体成员直接暴露,封装性一般private成员+getter,封装性强扩展性新增访问者需绑定函数指针;新增元素需修改所有访问者。

2025-11-27 11:17:18 239

原创 行为型模式:⑩模板模式(Template Pattern)

对比维度C语言实现C++语言实现接口定义结构体+函数指针(模拟抽象方法)抽象基类+纯虚函数(强制子类实现)模板方法特性普通函数(通过结构体绑定,流程固定)非虚函数(不可重写,流程强制固定)可变步骤约束依赖编程规范(函数指针需绑定)编译期强制(纯虚函数必须实现)继承模拟结构体复用+函数指针绑定类继承+多态(天然支持)封装性结构体成员直接暴露,封装性一般protected/private访问控制,封装性强扩展性新增具体模板需绑定函数指针新增子类仅需实现纯虚函数类型安全。

2025-11-27 11:17:03 390

原创 行为型模式:⑨策略模式(Strategy Pattern)

对比维度C语言实现C++语言实现接口定义结构体+函数指针抽象基类+纯虚函数(多态)内存管理全局静态策略实例+上下文手动智能指针(unique_ptr)自动管理,RAII原则策略切换直接修改上下文的策略指针调用方法,转移智能指针所有权类型安全依赖手动指针操作,风险高编译期类型检查+多态,类型安全封装性策略实现与接口在同一结构体,封装性一般策略实现隐藏在子类中,私有成员不可访问,封装性强扩展性新增策略需定义结构体+函数指针,手动绑定新增策略仅需继承抽象基类,实现纯虚函数。

2025-11-27 11:16:47 488

原创 行为型模式:⑧状态模式(State Pattern)

对比维度C语言实现C++语言实现接口定义结构体+函数指针抽象基类+纯虚函数(多态)内存管理静态状态实例+环境类手动智能指针(unique_ptr)自动管理,RAII原则状态切换直接修改环境类的状态指针环境类提供模板方法,封装切换逻辑类型安全依赖手动指针操作,风险高编译期类型检查+多态,类型安全封装性状态和环境的成员直接访问,封装性一般私有成员+,封装性强扩展性新增状态需定义结构体+函数指针,手动绑定新增状态仅需继承抽象基类,实现纯虚函数代码可读性。

2025-11-26 09:28:20 537

原创 行为型模式:⑦观察者模式(Observer Pattern)

依赖倒置原则:主题依赖观察者抽象,观察者依赖主题抽象,不依赖具体实现;开闭原则:新增主题或观察者,无需修改现有代码;单一职责原则:主题管状态管理和通知,观察者管自身业务处理,各司其职。

2025-11-26 09:28:03 294

原创 行为型模式:⑤中介者模式(Mediator Pattern)

单一职责原则:中介者管交互,同事管自身业务,各司其职;开闭原则:新增同事或交互规则,无需修改现有代码;依赖倒置原则:同事和中介者均依赖抽象,不依赖具体实现;迪米特法则(最少知识原则):同事仅与中介者通信,不与其他同事直接交互,减少依赖。

2025-11-26 09:27:46 394

原创 行为型模式:④迭代器模式(Iterator Pattern)

单一职责原则:聚合管存储,迭代器管遍历,各司其职;开闭原则:新增聚合或遍历方式,无需修改现有代码;依赖倒置原则:客户端依赖抽象迭代器 / 聚合,不依赖具体实现。

2025-11-25 09:25:26 327

原创 行为型模式:③解释器模式(Interpreter Pattern)

开闭原则:新增文法规则(如运算符)时,仅需新增表达式类,无需修改现有代码;单一职责原则:每个表达式仅负责自身的解释逻辑,解析器负责构建语法树,上下文负责存储状态;组合原则:非终结符表达式通过组合子表达式形成复杂结构,本质是组合模式的应用。

2025-11-25 09:24:58 879

原创 行为型模式:⑥备忘录模式(Memento Pattern)

封装原则:备忘录的状态仅允许发起人访问,外部(包括管理者)不可修改;单一职责原则:发起人管业务 + 状态读写,备忘录管状态存储,管理者管备忘录管理;开闭原则:新增状态或扩展备忘录时,无需修改管理者,仅需调整发起人和备忘录。

2025-11-24 21:22:39 1028

原创 行为型模式:②命令模式(Command Pattern)

开闭原则:新增命令无需修改现有代码;单一职责原则:命令负责封装请求,接收者负责执行操作,调用者负责管理命令;依赖倒置原则:调用者依赖抽象命令,不依赖具体命令和接收者。

2025-11-24 18:08:28 953

原创 行为型模式:①责任链模式(Chain of Responsibility Pattern)

单一职责原则:每个处理者仅处理自身职责内的请求;开闭原则:新增处理者或调整链结构无需修改现有代码;依赖倒置原则:客户端依赖抽象处理者,不依赖具体处理者。

2025-11-24 17:59:19 1140

原创 结构型模式:⑦代理模式(Proxy Pattern)

开闭原则:增强目标对象功能时,无需修改目标类,仅需新增代理类;依赖倒置原则:客户端依赖抽象接口,不依赖具体目标类或代理类;单一职责原则:目标类负责核心逻辑,代理类负责访问控制和功能增强,职责清晰。

2025-11-19 08:16:11 869

原创 结构型模式:⑥享元模式(Flyweight Pattern)

1.单一职责原则:享元负责存储内部状态和处理核心逻辑,工厂负责缓存和创建,职责清晰;2.开闭原则:新增享元类型时,仅需新增具体享元类,工厂无需大幅修改;3.最小内存原则:通过共享内部状态,将对象数量从 “N 个” 减少到 “M 个”(M 为内部状态的种类数)。

2025-11-19 08:15:49 723

原创 结构型模式:④装饰模式(Decorator Pattern)

1.组合优于继承:装饰器通过组合持有组件,而非继承,降低耦合;2.开闭原则:新增职责只需新增装饰器,无需修改原组件和现有装饰器;3.接口一致:装饰器与被装饰对象实现同一接口,确保客户端透明操作。

2025-11-18 23:55:26 391

原创 结构型模式:⑤外观模式(Facade Pattern)

1.最少知识原则:客户端只需了解外观,无需了解子系统内部组件;2.单一职责原则:外观负责协调子系统,子系统负责自身功能,职责清晰;3.开闭原则:扩展子系统时(如新增组件),只需修改外观,无需修改客户端和现有子系统。

2025-11-18 23:55:04 338

原创 结构型模式:③组合模式(Bridge Pattern)

1.开闭原则:新增组件类型(叶子 / 容器)无需修改现有代码,仅需实现抽象接口;2.单一职责:叶子专注于自身业务(如文件的显示),容器专注于子组件管理(添加 / 移除 / 遍历);3.依赖倒置:客户端依赖抽象组件(Component),不依赖具体实现(File/Folder)。

2025-11-17 10:11:20 903

原创 结构型模式:②桥接模式(Bridge Pattern)

1.将类的 “抽象部分” 与 “实现部分” 解耦,通过 “组合关系”(桥接)替代 “继承关系”,使两者可以独立扩展、互不影响:1.1抽象部分:定义上层逻辑(如 “产品类型”:普通手机、游戏手机),持有实现部分的引用;1.2实现部分:定义底层具体实现(如 “品牌”:华为、苹果),提供统一接口供抽象部分调用;2.核心本质:用 “对象组合” 替代 “多层继承”,避免因两者组合导致的 “类爆炸”(例如不用桥接时,需定义华为普通机、华为游戏机、苹果普通机、苹果游戏机等大量子类)。实现关键要点1.接口模拟:用

2025-11-17 09:42:06 533

原创 结构型模式:①适配器模式(Adapter Pattern)

解决接口不兼容问题:将一个类(或结构体)的接口转换成客户端期望的另一个接口,使得原本因接口不匹配而无法协同工作的类(或结构体)能够一起工作。适配器模式分为两种实现方式:1.对象适配器:通过「组合」适配者(已存在的、接口不兼容的组件)实现,灵活性更高(优先推荐);2.类适配器:通过「继承」适配者实现(C 语言不支持继承,仅 C++ 可实现)。

2025-11-16 11:59:27 450

原创 创建型模式:⑤构建器模式(Builder)

核心思想将复杂对象的 “构建过程” 与 “表示” 分离,通过 “构建器” 分步组装部件,“指挥者” 控制构建流程(适合多部件、多配置的复杂对象)。关键要点1.分离关注点:构建器(Builder):负责 “组装部件”(如装 CPU、内存)。指挥者(Director):负责 “构建流程”(如先装 CPU 再装内存)。2.优势:相同构建流程可创建不同配置的产品(游戏电脑 / 办公电脑),扩展新产品只需新增构建器,无需修改指挥者。

2025-11-16 11:43:28 332

原创 创建型模式:④原型模式(Prototype)

【代码】创建型模式:④原型模式(Prototype)

2025-11-15 21:19:43 290

原创 创建型模式:③抽象工厂模式(Abstract Factory)

核心思想提供创建 “产品族” 的接口(多个相关产品),具体工厂负责创建对应族的所有产品(比工厂方法更抽象,处理多产品组合)。关键要点1.抽象工厂管理 产品族(如 “华为产品” 包含屏幕 + 电池),而非单个产品。2.扩展新品牌(如小米)只需新增 “小米工厂” 和对应产品,无需修改原有代码(符合开闭原则)。

2025-11-15 21:19:05 883

原创 创建型模式:②工厂方法模式(Factory Method)

核心思想定义 “产品创建接口”(工厂),由具体工厂决定实例化哪个产品(解耦产品创建与使用)。关键要点1.用 函数指针 模拟 “多态”:不同产品实现不同的 run 方法,工厂通过统一接口创建。2.解耦:客户端无需知道产品创建细节(如 create_car),只需通过工厂接口 create_product 获取产品。

2025-11-14 16:34:50 309

原创 创建型模式:①单例模式(Singleton)

核心思想确保一个 “类” 只有唯一实例,且提供全局访问点(C 语言用静态局部变量 + 函数封装实现)。关键要点1.静态局部变量 static Singleton* instance 是 “唯一实例” 的核心(生命周期贯穿程序)。2.双重检查锁定(DCL):避免多线程下创建多个实例,同时减少锁竞争。3.C11 标准后静态变量初始化是线程安全的,可省略锁(简化版本)。

2025-11-14 16:14:10 181

原创 软件设计工具应用

比如先用 IPO 图确定模块边界,再用 PDL 或 PAD 图描述内部逻辑,用程序流程图向非技术人员展示流程。

2025-10-16 10:18:02 455

原创 Linux下Cmake4.x版本安装教程

目前演示linux64位安装。

2025-08-07 18:26:12 410

原创 c语言的三目运算符问题

赋值需要在左值,而不是右值。

2025-02-13 15:11:21 446

原创 为什么linux进行可执行程序运行会出现乱码

答案是因为linux可能不支持相应格式中文,比如ANSI编码。

2025-02-13 15:07:09 163

原创 RS232和RS485串口通信一些要点

使用serial串口通信模块,坏处就是要写这么多行直接使用echo将写内容到标准输出。

2025-02-13 15:02:29 220

原创 socket一对一代码

用socket让客户端和服务器一对一进行通信

2022-12-08 11:21:12 312

原创 mqtt调用mosquitto.h错误码

mqtt调用mosquitto.h错误码

2022-12-07 09:58:14 2533

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除