自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

強雲的博客

網上人生

  • 博客(105)
  • 资源 (2)
  • 收藏
  • 关注

原创 Qt连接所有同类部件到同一个槽函数

【代码】Qt连接所有同类部件到同一个槽函数。

2024-03-08 15:27:11 656

原创 C++ : std::is_same和std::is_same_v

std::is_same和std::is_same_v是C++标准库中的类型特性,用于在编译时检查两个类型是否相同。它们都属于<type_traits>头文件。这两个工具非常有用,特别是在模板编程和编译时类型检查中,它们可以帮助实现基于类型的条件编译和编译时决策。

2024-03-08 14:36:08 673

原创 C++ constexpr

constexpr是C++11引入的一个关键字,用于声明变量、函数或对象构造函数的表达式在编译时是常量表达式。这意味着它们的值或行为可以在编译时被确定,而不是在运行时。这样做的主要好处是提高性能,因为编译器可以优化这些常量表达式,甚至在编译时执行计算,而不是推迟到运行时。

2024-03-08 14:33:03 348

原创 crypto++下载、安装(VS2017)及加解密使用

Crypto++(也称为Crypto++ Library或Crypto++ STL)是一个C++密码学库,它提供了各种密码学算法和安全编程工具,使开发人员能够实现数据的加密、解密、签名、验证和其他密码学操作。Crypto++是一个开源项目,具有广泛的应用领域,包括网络通信、数据存储、安全协议、数字签名、加密文件系统等。

2023-09-18 15:21:24 1510

原创 c++ 17 std::optional

是C++17引入的一个模板类,旨在表示一个值可能存在或可能不存在,而不是使用特定的标记值或指针(例如nullptr)来表示值的缺失。以下是。

2023-09-18 14:34:23 184

原创 c++ 17 std::optional

是C++17引入的一个模板类,旨在表示一个值可能存在或可能不存在,而不是使用特定的标记值或指针(例如nullptr)来表示值的缺失。以下是。

2023-08-25 15:51:47 216

原创 c++ inline

关键字在C++中提供了一种优化机会,但应该谨慎使用,避免过度使用。关键字有几个主要用途和含义。

2023-08-24 11:09:50 125

原创 异常分布设计

异常处理是软件设计中的一个重要方面,正确的策略可以使代码更具可读性、可维护性和健壮性。这种策略的好处是结合了集中和分散两种策略的优点,使得代码既具有模块化的优点,又能保持一致性和可维护性。

2023-08-24 11:04:26 62

原创 什么时候写入日志

总的来说,日志的目标是为开发者、运维人员或其他关心应用行为的人提供足够的上下文信息,以便他们可以理解应用的行为、诊断问题或进行审计。不过,也要注意不要记录过多的日志,以避免对性能的影响,也要避免记录敏感信息,以保护用户隐私和应用安全。记录日志的决策通常取决于日志的目的和你希望从日志中获得的信息。

2023-08-24 10:51:56 85

原创 C++命名规范

这只是一个基本的命名规范。在实际开发中,根据项目和团队的具体情况,可能需要调整或扩展这些规则。最重要的是,团队中的每个成员都应遵循同一套规则,并确保代码在整个项目中保持一致性。

2023-08-23 17:19:59 334

原创 C++注释风格

每个文件都应该开始于一个注释块,描述文件的目的、作者、创建日期和版权信息。

2023-08-23 17:18:37 133

原创 c++ 异常规范

在C++中,可以在函数声明后指明可能会抛出的异常类型。但是,异常规范的使用是有争议的,而且在某些情况下可能会引发不预期的问题。:当函数实现变更时,异常规范可能需要重新评估和更新,这可能会导致维护问题。:异常规范限制了函数可能抛出的异常类型。如果函数抛出了异常规范外的异常,:在某些编译器和平台上,异常规范可能导致额外的运行时开销。对性能的影响更为正面,并且在现代C++编码中更为推荐。这可能导致程序意外地终止。规范,它表示函数不会抛出异常。:从C++11开始,引入了。

2023-08-23 17:14:50 106

原创 c++ hpp文件

但是,有些社区和项目有明确的约定。如果你正在创建一个库或框架供其他开发者使用,可能还需要考虑目标受众的期望和习惯。例如,如果目标用户主要是C开发者,那么使用。,最重要的是保持项目中的一致性。当决定为新项目选择哪种格式时,最好考虑项目团队的偏好、已有的代码库、所使用的工具链等因素。扩展名明确表示该文件是C++头文件,而不是C头文件。这可以减少混淆,尤其是在同时涉及C和C++的项目中。最终,选择哪种扩展名并不是一个硬性的规定,关键是确保你的代码清晰、一致和易于维护。不过,在实践中,无论使用。

2023-08-22 14:40:37 356

原创 c++ 枚举类

在C++11及其后续版本中,引入了一个新的枚举类型称为“强类型枚举”或“枚举类”(enumeration class),通常简称为“枚举类”(enum class)。语句中有个好处:它使得代码更具可读性,因为你必须明确引用枚举的名称。语句处理所有的枚举值,编译器可能会给出警告(取决于编译器设置和所使用的编译器)。在上述代码中,我们定义了一个。以下是一个例子来展示如何在。语句来处理其不同的值。

2023-08-22 14:39:15 191

原创 c++函数参数太多,如何指定参数

当一个函数有很多参数,特别是当某些参数有默认值时,调用该函数并为特定参数提供值可能会变得混乱和易错。从上述选项中选择最适合你应用程序的方法。如果参数是固定且经常一起使用的,第一种方法可能是最佳选择。如果参数经常变化或有许多可选的参数,第二或第三种方法可能更合适。请注意,这只是一个想法,实际上C++20之前的标准并不支持此语法。将相关参数组合到一个结构体或类中,并传递该结构体或类的实例。,但这通常适用于动态参数列表,可能会稍微牺牲一些性能。这通常在类的构造函数或某些配置函数中使用。

2023-08-22 14:37:17 1014

原创 c++命名空间

使用namespace。

2023-08-22 14:36:43 144

原创 c++命名空间

使用namespace。

2023-08-22 14:34:20 113

原创 const 和 constexpr

使用const和constexpr可以增强代码的可读性和安全性。const确保值或对象不被修改,而constexpr则确保值或函数在编译时被评估,这在某些情况下可以提供性能优势。

2023-08-22 14:31:16 63

原创 c++使用回调函数

如果你的类有多个实例,必须确保只有一个实例修改和使用这个静态指针。否则,你可能会遇到意料之外的行为。确保在不需要它的时候适当地管理这个静态指针,例如,避免在对象被销毁后访问它。:应用是多线程的,这种策略可能不是线程安全的。当在C++中使用回调时,非静态成员函数与静态成员函数(或全局函数)之间有明显的差异,这些差异决定了各自的优劣。但如果项目中需要更多的灵活性,或预见到未来可能需要对回调进行更复杂的管理和配置,那么。总的来说,不同的策略有其各自的优点和缺点,选择哪一种取决于具体的应用场景和优先级。

2023-08-22 14:24:26 217

原创 std::function与 std::bind

是一个模板类,可以存储任意类型的可调用对象(如函数、lambda表达式、函数对象、成员函数指针等)。其最大的优势是提供了一种通用、多态的方式来存储、复制和调用这些可调用对象。它通常与std::bind或 lambda 一起使用来存储已绑定参数的函数调用。

2023-08-22 14:23:40 50

原创 常用的图像校正方法

在数字图像处理中,常用的校正方法包括明场均匀性校正、查找表(LUT)校正和伽玛(Gamma)校正。这些校正方法分别针对不同的图像问题,可以改善图像质量,提升图像的可读性和可分析性。

2023-08-18 09:53:54 1861

原创 TDI(Time Delay Integration)

TDI(Time Delay Integration)是一种特殊的图像采集技术,常用于线阵CCD(Charge-Coupled Device)相机。TDI技术可以在保持高分辨率的同时增强图像的信噪比(Signal-to-Noise Ratio, SNR),从而在低光条件下获取更清晰、更明亮的图像。这种技术主要应用于需要高速、高灵敏度和高分辨率的场合,例如卫星遥感、工业检测和科学研究等。

2023-08-18 09:50:38 2695

原创 Camera Link 接口

Camera Link是一个标准的接口协议,用于高速的图像数据传输,常被用在工业相机和图像处理系统之间。需要注意的是,尽管Camera Link接口具有许多优势,但其较高的成本和有时需要专业知识的安装和配置,使得它可能不适用于所有的应用场景。随着新的接口标准,如USB3 Vision和GigE Vision的出现,一些应用已经开始向这些更灵活和经济的解决方案转移。它可以支持从20兆字节/秒(MBps)到850兆字节/秒(MBps)的数据传输速率,这使得它适用于高分辨率和高帧率的图像采集应用。

2023-08-18 09:47:41 1742

原创 组合模式(Composite Pattern)

组合模式使得客户端可以以统一的方式处理单个对象和组合对象。组合模式的主要思想是将对象组织成树状结构,使得单个对象和组合对象具有一致的接口。这样一来,客户端可以透明地操作单个对象或组合对象,无需关心具体是处理的是单个对象还是组合对象。)定义了组合对象和叶节点对象的公共接口。组合节点对象是部门对象,它可以包含多个子节点(即员工对象),并实现了组件接口。组合模式可以使得对象的组织结构更加灵活,支持递归组合,以及统一处理整体和部分。通过组合模式,我们可以透明地处理部门和员工,客户端可以以统一的方式调用它们的接口。

2023-07-11 10:58:14 285

原创 桥接模式(Bridge Pattern)

桥接模式可以提高系统的灵活性和可扩展性,使得抽象部分和实现部分能够独立演化。它适用于需要多个维度变化的场景,例如图形和颜色之间的关系,可以灵活地添加新的图形或颜色而不需要修改现有代码。通过桥接模式,我们可以独立地扩展图形类和颜色类,它们可以独立变化而不相互影响。在示例中,我们创建了一个红色的圆和一个蓝色的正方形,并调用它们的绘制方法,分别输出对应的颜色和图形信息。通过桥接模式,抽象部分和实现部分可以独立地扩展,而不会相互影响。图形类包含对实现部分的引用(颜色),并定义了绘制图形的方法。)和它的具体实现类(

2023-07-11 10:49:08 339

原创 适配器模式(Adapter Pattern)

适配器模式可以帮助我们解决接口不兼容的问题,使不兼容的类能够一起工作。它提供了一种灵活的方式来适配现有类的接口,以满足客户端的需求。适配器模式(Adapter Pattern)是一种结构型设计模式,用于将一个类的接口转换为另一个类的接口,以满足客户端的需求。适配器模式的主要目的是使不兼容的接口能够协同工作。它通过创建一个适配器类,该适配器类包装了现有类的接口,使其与目标接口相匹配。然而,我们希望使用该类来计算正方形的面积,这就需要创建一个适配器类。函数中,我们使用适配器类来创建一个适配器对象,并通过调用。

2023-07-11 10:41:31 611

原创 单例模式(Singleton Pattern)

单例模式(Singleton Pattern)是一种创建型设计模式,用于确保一个类只有一个实例,并提供全局访问点来获取该实例。单例模式可用于需要全局访问一个共享资源或提供统一的服务实例的场景。它确保只有一个实例存在,并提供了一种简单的方式来获取该实例。类的构造函数、拷贝构造函数和赋值运算符都被设为私有,以防止外部代码直接创建多个实例或复制实例。方法中,首先检查是否已经创建了实例,如果尚未创建,则创建一个新的实例并将其赋值给静态成员变量。获取单例对象,并使用该对象调用。方法来展示单例对象的功能。

2023-07-11 10:24:45 812

原创 原型模式(Prototype Pattern)

原型模式(Prototype Pattern)是一种创建型设计模式,它用于通过复制现有对象来创建新对象,而无需依赖显式的构造函数。在原型模式中,我们创建一个原型对象,并通过复制该原型对象来创建新的对象。这样做的好处是,我们可以避免创建对象时的复杂实例化过程,而是通过复制现有对象的状态来创建新对象。原型模式可以非常有效地创建对象,尤其是当对象的创建过程较为昂贵或复杂时。在原型模式中,原型对象通常实现一个克隆方法(clone()),该方法用于复制对象并返回一个新的副本。

2023-07-11 10:14:01 596

原创 工厂模式和抽象工厂模式的异同

作用范围:工厂模式关注的是创建单个对象,它通过一个具体工厂类来创建一个具体产品类的实例。抽象工厂模式关注的是创建一系列相关的产品对象,它通过一个抽象工厂类来创建一组具有相同主题的产品对象。它们有一些相似之处,但也有一些重要的区别。可扩展性:工厂模式在需要添加新的具体产品时,只需扩展具体工厂类和具体产品类。抽象工厂模式在需要添加新的产品族时,需要扩展抽象工厂类和所有相关的具体工厂类和具体产品类。封装变化:两者都通过封装对象的创建过程,使得客户端代码与具体对象的创建细节分离,从而提高代码的可维护性和扩展性。

2023-07-10 14:08:37 884

原创 工厂模式(Factory Method)

工厂方法模式的核心思想是通过将对象的创建委托给具体的工厂类,使得客户端代码不直接与具体产品类进行耦合,而是通过工厂类来创建产品。在主函数中,我们使用具体的工厂来创建具体的产品对象。抽象工厂(Abstract Factory):定义了创建产品的接口,包含一个工厂方法,用于创建产品对象。具体产品(Concrete Product):实现了抽象产品定义的接口,具体产品是工厂方法所创建的对象。具体工厂(Concrete Factory):实现了抽象工厂定义的接口,具体工厂负责创建具体产品的对象。

2023-07-10 14:07:58 406

原创 键造者模式(Builder)

建造者模式的核心思想是通过将复杂对象的构建过程委派给具体的建造者,以便于创建不同的表示。建造者模式将对象的构建过程和表示分离,使得同样的构建过程可以创建不同的表示。通过建造者模式,我们将复杂对象的构建过程和表示分离开来,使得同样的构建过程可以创建不同的表示。每个具体建造者类都可以定义自己的构建过程和步骤,以及构建的具体细节。在主函数中,我们首先使用奔驰汽车建造者创建了一个奔驰汽车对象,然后使用宝马汽车建造者创建了一个宝马汽车对象。指导者根据具体的构建步骤和顺序,通过调用建造者的方法来构建产品。

2023-07-10 13:55:51 40

原创 MVC与Abstract Factory 结合

MVC(Model-View-Controller)和抽象工厂(Abstract Factory)是两个不同的软件设计模式,可以在一个应用程序中独立使用或结合使用。下面是将MVC架构与抽象工厂结合的一种可能方式:模型(Model):模型表示应用程序的数据和业务逻辑。在MVC中,模型负责处理数据的获取、存储和处理。你可以使用抽象工厂模式创建和管理模型对象的实例化。抽象工厂模式允许你定义一个抽象的工厂接口,具体的工厂实现可以根据需要创建不同类型的模型对象。

2023-07-10 13:54:20 713

原创 抽象工厂(Abstarct Factory)

抽象工厂类(AbstractFactory)定义了创建产品的接口,具体工厂类(ConcreteFactory1 和 ConcreteFactory2)实现了抽象工厂接口,并根据需要创建具体的产品对象。每个具体工厂实现了抽象工厂定义的方法,根据需要创建具体的产品对象。通过抽象工厂模式,我们可以在客户端代码中使用抽象工厂和抽象产品,而不需要直接与具体工厂和具体产品进行交互,从而实现了解耦和灵活的对象创建。具体产品(Concrete Product):实现了抽象产品定义的接口,具体产品是抽象产品的实际实现。

2023-07-10 13:53:41 545

原创 三层架构与MVC架构的区别与结合

三层架构(Three-Tier Architecture)和MVC(Model-View-Controller)架构是两种不同的软件架构模式,它们有一些区别,但也可以结合在一起使用。下面是它们的区别和结合方式:通过结合三层架构和MVC架构,可以实现更灵活、可维护和可扩展的应用程序架构。三层架构提供了数据层和业务逻辑层的分离,使得数据访问和处理更加独立。而MVC架构提供了用户界面和用户交互的分离,使得视图和控制器可以灵活地处理用户输入和展示数据。

2023-07-10 13:51:56 153

原创 三层架构(Three-Tier Architecture)

三层架构(Three-Tier Architecture)是一种常见的软件架构模式,将应用程序划分为三个主要的层级,以实现代码的组织、可维护性和可扩展性。这三个层级分别是表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。下面详述三层架构中各个层级的职责和交互:通过三层架构的划分,应用程序的不同职责得到了明确的划分,使得每个层级都可以独立开发、测试和维护。

2023-07-10 13:51:00 677

原创 MVC架构

MVC(Model-View-Controller)是一种软件架构模式,用于将应用程序的不同方面分离开来,以提高代码的可维护性、可扩展性和可重用性。MVC将应用程序划分为三个核心组件:模型(Model)、视图(View)和控制器(Controller),每个组件负责不同的职责。下面详述MVC架构中各个组件的职责和交互:通过MVC的分离,模型、视图和控制器之间的依赖关系降低,使得每个组件都可以独立进行修改和测试,而不会对其他组件造成太大的影响。

2023-07-10 13:49:27 112

原创 工业自动化

反馈机制基于系统输出的实际值与期望值之间的差异,通过持续的比较和调整,使系统能够自动校正误差并保持稳定性和精确性。反馈机制通常包括以下关键组成部分:传感器(用于测量输出值)、比较器(将实际值与期望值进行比较)、控制器(根据比较结果生成控制信号)和执行器(根据控制信号进行操作)。Profibus是由国际电工委员会(IEC)标准化的一种通信协议和总线系统,用于工业自动化领域的设备之间的通信和数据交换。它提供了高性能、实时性和可靠性,并支持各种工业现场设备的连接,如传感器、执行器、PLC等。

2023-07-04 10:59:29 448

原创 win10 技巧

Ctrl + Win + 【】

2023-03-16 09:43:15 36

原创 pyTorch - 笔记

pyTorch 学习

2022-09-26 11:21:39 375

原创 halcon_笔记

halcon笔记

2022-07-06 21:03:49 84

python_文件夹操作中的exe文件

自动生成文件夹 名字为 **年_月_日_时_分_序列号** 序列号从1开始,升序排列。

2022-01-24

模式分类第二版英文版

模式识别最好的入门书籍。

2018-09-09

空空如也

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

TA关注的人

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