- 博客(801)
- 资源 (20)
- 收藏
- 关注
原创 C#设计模式教程(22):策略模式
策略模式(Strategy Pattern)是一种行为设计模式,它定义了算法族,分别封装起来,让它们之间可以互相替换。策略模式让算法的变化独立于使用算法的客户。这种模式非常适合用于有多种运行算法的场景,在这些场景中,算法可能在运行时被选择或者切换。
2024-01-24 08:00:00 98
原创 C#设计模式教程(21):状态模式
状态模式(State Pattern)是一种行为设计模式,允许一个对象在其内部状态改变时改变其行为。这个对象看起来好像修改了它所属的类。状态模式主要用于实现状态机,在状态的逻辑复杂,状态数量较多,且状态转换规则较为明确的情况下,状态模式能够将各种状态的行为分离到不同的类中,提高可维护性。
2024-01-24 07:30:00 237
原创 C#设计模式教程(20):观察者模式
观察者模式(Observer Pattern)是一种常用的设计模式,允许一个对象(称为“观察者”)订阅另一个对象(称为“主题”或“可观察对象”)的状态变化,并在状态改变时得到通知。这种模式在实现事件处理系统、数据更新通知等场景中非常有用。
2024-01-24 07:15:00 453
原创 C#设计模式教程(19):备忘录模式
备忘录模式(Memento Pattern)是一种行为设计模式,允许在不暴露对象实现细节的情况下捕获并保存对象的当前状态,以便可以在未来的某个时刻恢复到这个状态。这种模式在进行需要撤销操作的应用程序时非常有用,比如文字处理器、游戏的保存和加载、数据库事务的回滚等。发起人(Originator):这是我们希望保存其状态的对象。备忘录(Memento):一个用于存储发起人状态的对象。负责人(Caretaker):负责保存备忘录,但不对备忘录的内容进行操作或检查。
2024-01-23 09:22:49 246
原创 C#设计模式教程(18):中介者模式
中介者模式(Mediator Pattern)是一种行为设计模式,它允许一组对象相互通信,而不需要知道彼此的内部结构。这样做可以降低多个对象和类之间的通信复杂性,将多对多的通信转变为一对多的通信,使得对象之间的耦合松散,并且可以更容易地独立地改变和复用这些对象。Mediator:定义了一个接口,用于与各个Colleague(同事)对象通信。:实现Mediator接口并协调各个Colleague对象之间的交互。Colleague。
2024-01-23 09:22:05 148
原创 C#设计模式教程(17):迭代器模式
迭代器模式(Iterator Pattern)是一种设计模式,用于提供一种方法顺序访问一个聚合对象中各个元素,而又无需暴露该对象的内部表示。迭代器模式把迭代的责任交给迭代器对象,而不是聚合对象,简化了聚合类。在C#中,迭代器模式通常是通过实现和接口来创建的。这种方法与C#的foreach循环和LINQ查询紧密集成。
2024-01-23 09:21:42 318
原创 C#设计模式教程(16):解释器模式
解释器模式是一种设计模式,用于定义一种语言的文法,并建立一个解释器来解释该语言中的句子。抽象表达式(Abstract Expression):定义解释操作的接口,通常是一个抽象类或接口。具体表达式(Concrete Expression):实现抽象表达式中定义的接口。每一种规则都对应于一个具体的表达式类。上下文(Context):包含解释器之外的一些全局信息。客户端(Client):构建(或被给定)一个特定的语言句子,然后解释这个句子。
2024-01-22 09:41:52 206
原创 C#设计模式教程(15):命令模式
命令模式(Command Pattern)是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求、队列或日志请求来参数化其他对象。同时支持可撤销操作。Command- 定义命令的接口。- 具体命令实现Command接口,定义了动作和接收者之间的绑定关系。Invoker- 请求的发送者,负责调用命令对象执行请求。Receiver- 接收者,执行与请求相关的操作。Client- 创建具体命令对象并设置其接收者。
2024-01-22 09:41:28 261
原创 C#设计模式教程(14):责任链模式
责任链模式(Chain of Responsibility Pattern)是一种行为设计模式,它允许多个对象处理一个请求,或者将这些对象连成一条链。在这条链上的每个对象会决定它能处理这个请求还是将其传递给链上的下一个对象。在C#中实现责任链模式,通常会有一个抽象处理者(Handler)角色,定义了一个处理请求的接口,以及一个或多个具体处理者(ConcreteHandler)角色,它们处理请求或将请求传递给链上的下一个处理者。
2024-01-22 09:41:02 98
原创 C#设计模式教程(13):代理模式
C#中的代理模式是一种结构型设计模式,它允许通过代理对象控制对另一个对象的访问。代理通常充当客户端和实际对象之间的中介,可以在访问实际对象前后执行一些额外的操作。代理模式有多种类型,其中包括虚拟代理、远程代理、保护代理等。
2024-01-21 15:36:52 161
原创 C#设计模式教程(12):享元模式
享元模式(Flyweight Pattern)是一种用于性能优化的设计模式,主要用于减少创建对象的数量,以减少内存占用和提高性能。这种模式特别适用于大量对象的情况,其中对象的大部分状态可以被外部化或共享。: 定义一个接口,声明那些可以被外部状态所影响的方法。: 实现Flyweight接口,并能接受并使用外部状态。: 负责创建和管理flyweight对象。当客户端请求一个flyweight时,Flyweight Factory对象提供一个已创建的实例或者创建一个(如果不存在的话)。Client。
2024-01-21 15:36:22 82
原创 C#设计模式教程(11):外观模式
外观模式(Facade Pattern)是一种常用的设计模式,其主要目的是提供一个统一的接口来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更加容易使用。
2024-01-21 15:35:48 61
原创 C#设计模式教程(10):装饰器模式
装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许用户在不修改现有对象结构的情况下,动态地给一个对象添加额外的职责。这种模式创建了一个装饰类,用来包装原有的类。这种模式创建了一个装饰类,用于包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。组件接口(Component):定义一个对象接口,可以给这些对象动态地添加职责。具体组件(ConcreteComponent):定义了一个对象,可以给这个对象添加一些额外的职责。装饰抽象类(Decorator)
2024-01-20 13:55:12 376
原创 C#设计模式教程(9):组合模式
组合模式(Composite Pattern)是一种结构型设计模式,用于以树形结构表示部分整体层次。通过这种方式,客户端可以统一对待单个对象和组合对象。这种模式对于表示和管理层级结构非常有用。
2024-01-20 13:54:56 179
原创 C#设计模式教程(8):桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,它的目的是将抽象部分与实现部分分离,使它们可以独立地变化。在桥接模式中,抽象部分通常定义高层的逻辑,而实现部分提供底层的操作,抽象部分通过一个引用关联到实现部分。这种分离的主要好处是可以独立地管理抽象和实现,这样当系统的一个部分改变时,不会影响到另一个部分。这种模式非常适合于在多个维度上变化的系统,例如,不同的界面(抽象)和多平台的支持(实现)。
2024-01-20 13:54:32 89
原创 C#设计模式教程(7):适配器模式
适配器模式(Adapter Pattern)是一种结构型设计模式,它允许不兼容的接口之间能够相互合作。适配器的作用是解决那些因接口不兼容而不能一起工作的类的问题,它通过包装一个类的接口转换成另一个期望的接口。
2024-01-19 23:04:57 266
原创 C#设计模式教程(6):原型模式(Prototype Pattern)
原型模式(Prototype Pattern)是一种创建型设计模式,其核心思想是通过复制现有对象来创建新对象,而不是通过实例化的方式。在C#中,这通常是通过实现ICloneable接口来完成的,该接口要求实现一个Clone方法,用于复制对象。
2024-01-19 23:04:36 400
原创 C#设计模式教程(5):建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它允许你创建复杂对象的步骤分离,这样你可以使用相同的创建过程生成不同的表示。建造者模式通常用于处理那些包含多个成员变量的类,特别是当这些成员变量需要经过复杂步骤构建或者有大量可选参数时。
2024-01-19 23:04:15 212
原创 C#设计模式教程(4):单例模式
单例模式(Singleton Pattern)是一种常用的设计模式,用于确保一个类只有一个实例,并提供一个访问它的全局访问点。在C#中实现单例模式通常有几种不同的方法,这里介绍几种典型的实现方式。
2024-01-18 21:50:06 408
原创 C#设计模式教程(3):抽象工厂模式
抽象工厂模式是一种创建型设计模式,它提供了一个接口,用于创建一系列相关或相互依赖对象的家族,而无需指定它们具体的类。这种模式是工厂方法模式的一种扩展,它用于创建的不是一个产品,而是多个产品的家族。
2024-01-18 21:49:39 259
原创 C#设计模式教程(2):工厂方法模式
工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
2024-01-18 21:49:11 241
原创 C#设计模式教程(1):简单工厂模式
在C#中,工厂模式可以分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。IFactoryIProductIFactory这三种工厂模式都有各自的应用场景和优劣势,选择使用哪种取决于具体的需求和设计目标。简单工厂模式适用于对象较少,创建逻辑简单的情况;工厂方法模式适用于需要创建一类产品,但具体的产品种类由子类决定的情况;抽象工厂模式适用于创建一系列相关的产品族,并且系统不依赖于它们的具体类时。
2024-01-18 21:48:40 480
原创 在Qt代码中使用Windows事件机制WaitForMultipleObjects、SetEvent
在Qt开发客户端时,经常使用信号槽来处理控件或窗口之间的事件,如果是Windows系统,也可以用windows事件来代替Qt的信号槽,本篇博客来介绍这种用法。
2024-01-08 21:20:10 1272
原创 C++合并K个有序链表
本篇博客介绍如何使用C++合并k个有序链表,在代码中会用到std::priority_queue,首先需要介绍一下std::priority_queue的用法,介绍完std::priority_queue后将介绍如何使用std::priority_queue来辅助合并k个有序链表。
2024-01-08 21:18:44 981
原创 linux sigaction函数使用介绍
在linux中函数 `sigaction` 用于检查或修改与指定信号相关联的处理动作。这个函数比 `signal` 函数提供了更多的控制能力,包括对信号处理的细粒度控制。
2024-01-08 21:18:03 510
原创 qml入门教程(25):qml Window最大化最小化全屏状态
在 QML 中,`Window` 元素是一个顶级窗口,可以包含其他的 UI 元素。`Window` 提供了一系列的状态用于控制窗口的显示方式。以下是一些在 QML `Window` 中常用的状态:
2023-12-14 21:16:16 927
原创 qml入门教程(24):qml Page用法介绍
在QML中,`Page`和`Window`是两种不同的元素,它们在用户界面设计中扮演不同的角色。
2023-12-14 21:14:56 650
原创 qml入门教程(23):qml字体加载器FontLoader
`FontLoader` 是 Qt Quick (QML) 中的一个元素,用于动态加载字体。当你需要在你的应用程序中使用自定义字体而不是默认字体时,可以使用 `FontLoader`。使用 `FontLoader` 可以在运行时加载字体,而不需要在编译时包含它们。
2023-12-14 21:12:48 552
原创 qml入门教程(22):qml ScrollView用法介绍
ScrollView是一个容器类型,它可以用来创建可以滚动的视图,使得它内部的内容可以滚动。在Qt Quick/QML中,并没有一个直接对应于Qt Widgets中的QScrollArea的组件。这个例子是基于Qt Quick Controls 2编写的,你可以在Qt 5.7或更高版本中运行它。如果你使用的是更旧的版本,可能需要调整导入语句或组件的用法。的高度时,你可以通过滚动来查看它们。在这个例子中,我们使用了一个垂直的。以下是一个简单的例子,演示如何在QML中使用。,我们创建了一系列的这样的。
2023-12-14 21:08:22 1010
原创 QML入门教程(17):qml应用程序启动时显示一个初始屏幕
很多PC端应用程序都会有启动页面,用于加载一些数据,但是在qml中并没有一个直接的 `SplashForm` 或 `SplashScreen` 组件。通常,开发者需要自定义一个 Item 或者 Window 来作为启动画面。
2023-12-07 15:46:09 698
原创 QML入门教程(18):qml Flickable用法介绍
`Flickable` 是 Qt Quick 中的一个基础组件,它提供了触摸滑动功能,允许用户通过拖拽和惯性滑动来移动内容。这对于创建可以滚动的列表、图片浏览器或其他需要滚动操作的界面组件来说非常有用。
2023-12-07 15:45:52 841
原创 QML入门教程(16):qml Drawer用法介绍
在QML中,`Drawer` 是一个用于实现从屏幕边缘滑出的面板的控件。它属于Qt Quick Controls 2模块,通常用于移动应用中,作为一个从屏幕的左侧或右侧边缘滑出来显示导航或工具选项的交互元素。
2023-12-05 19:38:49 584
原创 qml入门教程(19):qml QtObject用法介绍
`QtObject` 是 Qt/QML 中的一个基础类型,通常用作创建一个没有 UI 的(不渲染任何东西的)纯逻辑对象。可以使用它来组织代码、存储状态或者作为属性和方法的容器。
2023-12-04 23:05:46 843
原创 qml入门教程(20):qml property使用介绍
QML 中的属性property是一个重要的概念,用于定义和访问QML对象的数据。在QML中,属性可以是各种类型,包括基本数据类型(如int, double, string)和复杂类型(如对象和列表)。属性在QML中可用于数据绑定、事件处理和界面更新。
2023-12-04 23:02:31 1244
原创 qml入门教程(21):qml列表控件ListView用法介绍
ListView 是 Qt Quick (QML) 中的列表控件,用于创建一个可以滚动的列表。每个列表项都是根据模型(Model)来创建的,它可以是静态的列表或者是动态的数据集合,例如从数据库中获取的数据。视图(View)将这些数据以列表的形式展现出来,而代理(Delegate)则定义了如何将每个数据项渲染到视图中。
2023-12-04 21:35:09 1586
原创 C++ Boost提供的六种进程间通信技术介绍
内存映射文件(Memory-Mapped Files)是一种进程间通信(IPC)机制,允许文件或设备(通常是磁盘上的文件)的内容被映射到进程的地址空间。这样,文件可以像访问常规内存数组一样被访问,而不是使用传统的文件读写API。这种技术不仅可以用于文件I/O,还经常用于进程间的共享内存。以下是内存映射文件工作原理的概述:文件映射文件打开:首先,需要有一个文件。这个文件可以是已存在的,也可以是新创建的,用于将数据持久存储到磁盘。创建映射:操作系统提供了创建内存映射的API。
2023-12-01 20:36:46 1225
原创 QLinkedList用法介绍与代码演示
或者您有特定的理由需要使用它(例如,与老版本的Qt代码兼容),下面是一个基本的用法示例。的实例,用于存储整数,并演示了如何添加元素、迭代元素以及如何添加和移除链表头部和尾部的元素。是Qt框架中的一个容器类,它实现了一个双向链表。但是值得注意的是,在最新的Qt版本中,可能在Qt的未来版本中被完全移除,建议针对新项目使用标准库中的容器。已经在Qt框架中被弃用,除非有兼容性需求,否则建议使用标准库中的。,因为它提供了类似的功能,并且与C++标准库更兼容。如果你正在使用CMake,确保在你的。
2023-12-01 08:44:56 551
原创 C++ std::copy和copy_if用法介绍
在C++标准库中,std::copy 和 std::copy_if 是算法库的一部分,用于复制一系列元素。std::copy 函数用于将一系列元素从一个容器复制到另一个容器。这个函数在 头文件中定义。
2023-12-01 08:44:26 513
原创 QHash使用介绍与代码演示
若要在QHash一个qHash函数,它计算您的类型实例的哈希值。一个相等比较 (operator==),以确定两个实例是否相等。这些函数允许QHash正确地存储和查找键值对。下面是一个自定义类型和相应qHash函数的简单示例:假设您有一个自定义类型public:int id;为了让能够作为QHash的键,您需要定义一个qHash// 在相同命名空间下,通常是在 MyCustomType 类型定义的同一个头文件中。
2023-11-30 09:18:14 1152
C++ QMainWindow无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小
2024-04-23
Qt蓝牙串口源码支持十六进制发送、字符发送、定时发送
2022-02-22
c++ PImpl实现机制
2021-09-15
很全的 Qt qss
2020-09-29
jsoncpp_sdk_x64.rar
2020-04-06
支持向量机通俗导论(理解SVM的三层境界)PDF
2018-04-13
C# TCP网络通信示例:多人聊天发文件
2018-04-02
C++/OpenCV2.4.9 数字精确识别源码
2017-11-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人