![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 56
強云
这个作者很懒,什么都没留下…
展开
-
Qt连接所有同类部件到同一个槽函数
【代码】Qt连接所有同类部件到同一个槽函数。原创 2024-03-08 15:27:11 · 669 阅读 · 0 评论 -
C++ : std::is_same和std::is_same_v
std::is_same和std::is_same_v是C++标准库中的类型特性,用于在编译时检查两个类型是否相同。它们都属于<type_traits>头文件。这两个工具非常有用,特别是在模板编程和编译时类型检查中,它们可以帮助实现基于类型的条件编译和编译时决策。原创 2024-03-08 14:36:08 · 1313 阅读 · 0 评论 -
c++ 17 std::optional
是C++17引入的一个模板类,旨在表示一个值可能存在或可能不存在,而不是使用特定的标记值或指针(例如nullptr)来表示值的缺失。以下是。原创 2023-09-18 14:34:23 · 206 阅读 · 0 评论 -
c++ 17 std::optional
是C++17引入的一个模板类,旨在表示一个值可能存在或可能不存在,而不是使用特定的标记值或指针(例如nullptr)来表示值的缺失。以下是。原创 2023-08-25 15:51:47 · 222 阅读 · 0 评论 -
c++ inline
关键字在C++中提供了一种优化机会,但应该谨慎使用,避免过度使用。关键字有几个主要用途和含义。原创 2023-08-24 11:09:50 · 132 阅读 · 0 评论 -
异常分布设计
异常处理是软件设计中的一个重要方面,正确的策略可以使代码更具可读性、可维护性和健壮性。这种策略的好处是结合了集中和分散两种策略的优点,使得代码既具有模块化的优点,又能保持一致性和可维护性。原创 2023-08-24 11:04:26 · 71 阅读 · 0 评论 -
什么时候写入日志
总的来说,日志的目标是为开发者、运维人员或其他关心应用行为的人提供足够的上下文信息,以便他们可以理解应用的行为、诊断问题或进行审计。不过,也要注意不要记录过多的日志,以避免对性能的影响,也要避免记录敏感信息,以保护用户隐私和应用安全。记录日志的决策通常取决于日志的目的和你希望从日志中获得的信息。原创 2023-08-24 10:51:56 · 91 阅读 · 0 评论 -
C++命名规范
这只是一个基本的命名规范。在实际开发中,根据项目和团队的具体情况,可能需要调整或扩展这些规则。最重要的是,团队中的每个成员都应遵循同一套规则,并确保代码在整个项目中保持一致性。原创 2023-08-23 17:19:59 · 583 阅读 · 0 评论 -
C++注释风格
每个文件都应该开始于一个注释块,描述文件的目的、作者、创建日期和版权信息。原创 2023-08-23 17:18:37 · 187 阅读 · 0 评论 -
c++ 异常规范
在C++中,可以在函数声明后指明可能会抛出的异常类型。但是,异常规范的使用是有争议的,而且在某些情况下可能会引发不预期的问题。:当函数实现变更时,异常规范可能需要重新评估和更新,这可能会导致维护问题。:异常规范限制了函数可能抛出的异常类型。如果函数抛出了异常规范外的异常,:在某些编译器和平台上,异常规范可能导致额外的运行时开销。对性能的影响更为正面,并且在现代C++编码中更为推荐。这可能导致程序意外地终止。规范,它表示函数不会抛出异常。:从C++11开始,引入了。原创 2023-08-23 17:14:50 · 119 阅读 · 0 评论 -
c++ hpp文件
但是,有些社区和项目有明确的约定。如果你正在创建一个库或框架供其他开发者使用,可能还需要考虑目标受众的期望和习惯。例如,如果目标用户主要是C开发者,那么使用。,最重要的是保持项目中的一致性。当决定为新项目选择哪种格式时,最好考虑项目团队的偏好、已有的代码库、所使用的工具链等因素。扩展名明确表示该文件是C++头文件,而不是C头文件。这可以减少混淆,尤其是在同时涉及C和C++的项目中。最终,选择哪种扩展名并不是一个硬性的规定,关键是确保你的代码清晰、一致和易于维护。不过,在实践中,无论使用。原创 2023-08-22 14:40:37 · 456 阅读 · 0 评论 -
c++ 枚举类
在C++11及其后续版本中,引入了一个新的枚举类型称为“强类型枚举”或“枚举类”(enumeration class),通常简称为“枚举类”(enum class)。语句中有个好处:它使得代码更具可读性,因为你必须明确引用枚举的名称。语句处理所有的枚举值,编译器可能会给出警告(取决于编译器设置和所使用的编译器)。在上述代码中,我们定义了一个。以下是一个例子来展示如何在。语句来处理其不同的值。原创 2023-08-22 14:39:15 · 207 阅读 · 0 评论 -
c++函数参数太多,如何指定参数
当一个函数有很多参数,特别是当某些参数有默认值时,调用该函数并为特定参数提供值可能会变得混乱和易错。从上述选项中选择最适合你应用程序的方法。如果参数是固定且经常一起使用的,第一种方法可能是最佳选择。如果参数经常变化或有许多可选的参数,第二或第三种方法可能更合适。请注意,这只是一个想法,实际上C++20之前的标准并不支持此语法。将相关参数组合到一个结构体或类中,并传递该结构体或类的实例。,但这通常适用于动态参数列表,可能会稍微牺牲一些性能。这通常在类的构造函数或某些配置函数中使用。原创 2023-08-22 14:37:17 · 1339 阅读 · 0 评论 -
c++命名空间
使用namespace。原创 2023-08-22 14:36:43 · 150 阅读 · 0 评论 -
c++命名空间
使用namespace。原创 2023-08-22 14:34:20 · 127 阅读 · 0 评论 -
const 和 constexpr
使用const和constexpr可以增强代码的可读性和安全性。const确保值或对象不被修改,而constexpr则确保值或函数在编译时被评估,这在某些情况下可以提供性能优势。原创 2023-08-22 14:31:16 · 78 阅读 · 0 评论 -
c++使用回调函数
如果你的类有多个实例,必须确保只有一个实例修改和使用这个静态指针。否则,你可能会遇到意料之外的行为。确保在不需要它的时候适当地管理这个静态指针,例如,避免在对象被销毁后访问它。:应用是多线程的,这种策略可能不是线程安全的。当在C++中使用回调时,非静态成员函数与静态成员函数(或全局函数)之间有明显的差异,这些差异决定了各自的优劣。但如果项目中需要更多的灵活性,或预见到未来可能需要对回调进行更复杂的管理和配置,那么。总的来说,不同的策略有其各自的优点和缺点,选择哪一种取决于具体的应用场景和优先级。原创 2023-08-22 14:24:26 · 259 阅读 · 0 评论 -
std::function与 std::bind
是一个模板类,可以存储任意类型的可调用对象(如函数、lambda表达式、函数对象、成员函数指针等)。其最大的优势是提供了一种通用、多态的方式来存储、复制和调用这些可调用对象。它通常与std::bind或 lambda 一起使用来存储已绑定参数的函数调用。原创 2023-08-22 14:23:40 · 58 阅读 · 0 评论 -
TDI(Time Delay Integration)
TDI(Time Delay Integration)是一种特殊的图像采集技术,常用于线阵CCD(Charge-Coupled Device)相机。TDI技术可以在保持高分辨率的同时增强图像的信噪比(Signal-to-Noise Ratio, SNR),从而在低光条件下获取更清晰、更明亮的图像。这种技术主要应用于需要高速、高灵敏度和高分辨率的场合,例如卫星遥感、工业检测和科学研究等。原创 2023-08-18 09:50:38 · 3316 阅读 · 0 评论 -
Camera Link 接口
Camera Link是一个标准的接口协议,用于高速的图像数据传输,常被用在工业相机和图像处理系统之间。需要注意的是,尽管Camera Link接口具有许多优势,但其较高的成本和有时需要专业知识的安装和配置,使得它可能不适用于所有的应用场景。随着新的接口标准,如USB3 Vision和GigE Vision的出现,一些应用已经开始向这些更灵活和经济的解决方案转移。它可以支持从20兆字节/秒(MBps)到850兆字节/秒(MBps)的数据传输速率,这使得它适用于高分辨率和高帧率的图像采集应用。原创 2023-08-18 09:47:41 · 2190 阅读 · 0 评论 -
组合模式(Composite Pattern)
组合模式使得客户端可以以统一的方式处理单个对象和组合对象。组合模式的主要思想是将对象组织成树状结构,使得单个对象和组合对象具有一致的接口。这样一来,客户端可以透明地操作单个对象或组合对象,无需关心具体是处理的是单个对象还是组合对象。)定义了组合对象和叶节点对象的公共接口。组合节点对象是部门对象,它可以包含多个子节点(即员工对象),并实现了组件接口。组合模式可以使得对象的组织结构更加灵活,支持递归组合,以及统一处理整体和部分。通过组合模式,我们可以透明地处理部门和员工,客户端可以以统一的方式调用它们的接口。原创 2023-07-11 10:58:14 · 291 阅读 · 0 评论 -
桥接模式(Bridge Pattern)
桥接模式可以提高系统的灵活性和可扩展性,使得抽象部分和实现部分能够独立演化。它适用于需要多个维度变化的场景,例如图形和颜色之间的关系,可以灵活地添加新的图形或颜色而不需要修改现有代码。通过桥接模式,我们可以独立地扩展图形类和颜色类,它们可以独立变化而不相互影响。在示例中,我们创建了一个红色的圆和一个蓝色的正方形,并调用它们的绘制方法,分别输出对应的颜色和图形信息。通过桥接模式,抽象部分和实现部分可以独立地扩展,而不会相互影响。图形类包含对实现部分的引用(颜色),并定义了绘制图形的方法。)和它的具体实现类(原创 2023-07-11 10:49:08 · 343 阅读 · 0 评论 -
单例模式(Singleton Pattern)
单例模式(Singleton Pattern)是一种创建型设计模式,用于确保一个类只有一个实例,并提供全局访问点来获取该实例。单例模式可用于需要全局访问一个共享资源或提供统一的服务实例的场景。它确保只有一个实例存在,并提供了一种简单的方式来获取该实例。类的构造函数、拷贝构造函数和赋值运算符都被设为私有,以防止外部代码直接创建多个实例或复制实例。方法中,首先检查是否已经创建了实例,如果尚未创建,则创建一个新的实例并将其赋值给静态成员变量。获取单例对象,并使用该对象调用。方法来展示单例对象的功能。原创 2023-07-11 10:24:45 · 815 阅读 · 0 评论 -
原型模式(Prototype Pattern)
原型模式(Prototype Pattern)是一种创建型设计模式,它用于通过复制现有对象来创建新对象,而无需依赖显式的构造函数。在原型模式中,我们创建一个原型对象,并通过复制该原型对象来创建新的对象。这样做的好处是,我们可以避免创建对象时的复杂实例化过程,而是通过复制现有对象的状态来创建新对象。原型模式可以非常有效地创建对象,尤其是当对象的创建过程较为昂贵或复杂时。在原型模式中,原型对象通常实现一个克隆方法(clone()),该方法用于复制对象并返回一个新的副本。原创 2023-07-11 10:14:01 · 603 阅读 · 0 评论 -
工厂模式和抽象工厂模式的异同
作用范围:工厂模式关注的是创建单个对象,它通过一个具体工厂类来创建一个具体产品类的实例。抽象工厂模式关注的是创建一系列相关的产品对象,它通过一个抽象工厂类来创建一组具有相同主题的产品对象。它们有一些相似之处,但也有一些重要的区别。可扩展性:工厂模式在需要添加新的具体产品时,只需扩展具体工厂类和具体产品类。抽象工厂模式在需要添加新的产品族时,需要扩展抽象工厂类和所有相关的具体工厂类和具体产品类。封装变化:两者都通过封装对象的创建过程,使得客户端代码与具体对象的创建细节分离,从而提高代码的可维护性和扩展性。原创 2023-07-10 14:08:37 · 1098 阅读 · 0 评论 -
工厂模式(Factory Method)
工厂方法模式的核心思想是通过将对象的创建委托给具体的工厂类,使得客户端代码不直接与具体产品类进行耦合,而是通过工厂类来创建产品。在主函数中,我们使用具体的工厂来创建具体的产品对象。抽象工厂(Abstract Factory):定义了创建产品的接口,包含一个工厂方法,用于创建产品对象。具体产品(Concrete Product):实现了抽象产品定义的接口,具体产品是工厂方法所创建的对象。具体工厂(Concrete Factory):实现了抽象工厂定义的接口,具体工厂负责创建具体产品的对象。原创 2023-07-10 14:07:58 · 409 阅读 · 0 评论 -
键造者模式(Builder)
建造者模式的核心思想是通过将复杂对象的构建过程委派给具体的建造者,以便于创建不同的表示。建造者模式将对象的构建过程和表示分离,使得同样的构建过程可以创建不同的表示。通过建造者模式,我们将复杂对象的构建过程和表示分离开来,使得同样的构建过程可以创建不同的表示。每个具体建造者类都可以定义自己的构建过程和步骤,以及构建的具体细节。在主函数中,我们首先使用奔驰汽车建造者创建了一个奔驰汽车对象,然后使用宝马汽车建造者创建了一个宝马汽车对象。指导者根据具体的构建步骤和顺序,通过调用建造者的方法来构建产品。原创 2023-07-10 13:55:51 · 43 阅读 · 0 评论 -
抽象工厂(Abstarct Factory)
抽象工厂类(AbstractFactory)定义了创建产品的接口,具体工厂类(ConcreteFactory1 和 ConcreteFactory2)实现了抽象工厂接口,并根据需要创建具体的产品对象。每个具体工厂实现了抽象工厂定义的方法,根据需要创建具体的产品对象。通过抽象工厂模式,我们可以在客户端代码中使用抽象工厂和抽象产品,而不需要直接与具体工厂和具体产品进行交互,从而实现了解耦和灵活的对象创建。具体产品(Concrete Product):实现了抽象产品定义的接口,具体产品是抽象产品的实际实现。原创 2023-07-10 13:53:41 · 568 阅读 · 0 评论 -
三层架构与MVC架构的区别与结合
三层架构(Three-Tier Architecture)和MVC(Model-View-Controller)架构是两种不同的软件架构模式,它们有一些区别,但也可以结合在一起使用。下面是它们的区别和结合方式:通过结合三层架构和MVC架构,可以实现更灵活、可维护和可扩展的应用程序架构。三层架构提供了数据层和业务逻辑层的分离,使得数据访问和处理更加独立。而MVC架构提供了用户界面和用户交互的分离,使得视图和控制器可以灵活地处理用户输入和展示数据。原创 2023-07-10 13:51:56 · 239 阅读 · 0 评论 -
三层架构(Three-Tier Architecture)
三层架构(Three-Tier Architecture)是一种常见的软件架构模式,将应用程序划分为三个主要的层级,以实现代码的组织、可维护性和可扩展性。这三个层级分别是表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。下面详述三层架构中各个层级的职责和交互:通过三层架构的划分,应用程序的不同职责得到了明确的划分,使得每个层级都可以独立开发、测试和维护。原创 2023-07-10 13:51:00 · 871 阅读 · 0 评论 -
MVC架构
MVC(Model-View-Controller)是一种软件架构模式,用于将应用程序的不同方面分离开来,以提高代码的可维护性、可扩展性和可重用性。MVC将应用程序划分为三个核心组件:模型(Model)、视图(View)和控制器(Controller),每个组件负责不同的职责。下面详述MVC架构中各个组件的职责和交互:通过MVC的分离,模型、视图和控制器之间的依赖关系降低,使得每个组件都可以独立进行修改和测试,而不会对其他组件造成太大的影响。原创 2023-07-10 13:49:27 · 187 阅读 · 0 评论 -
工业自动化
反馈机制基于系统输出的实际值与期望值之间的差异,通过持续的比较和调整,使系统能够自动校正误差并保持稳定性和精确性。反馈机制通常包括以下关键组成部分:传感器(用于测量输出值)、比较器(将实际值与期望值进行比较)、控制器(根据比较结果生成控制信号)和执行器(根据控制信号进行操作)。Profibus是由国际电工委员会(IEC)标准化的一种通信协议和总线系统,用于工业自动化领域的设备之间的通信和数据交换。它提供了高性能、实时性和可靠性,并支持各种工业现场设备的连接,如传感器、执行器、PLC等。原创 2023-07-04 10:59:29 · 512 阅读 · 0 评论 -
pyTorch - 笔记
pyTorch 学习原创 2022-09-26 11:21:39 · 389 阅读 · 0 评论 -
halcon_笔记
halcon笔记原创 2022-07-06 21:03:49 · 90 阅读 · 0 评论 -
python 笔记
pyhon 记录获取目录下指定后缀文件名读取图像判读图像是否为RGB,是转为灰度,否则拷贝源图像显示图像并按ESC退出鼠标窗口交互画矩形高低阈值,之间保持不变,高于高阈值或低于低阈值都设为0检查包是否安装读写txt文件‘r’: 读;‘w’: 写;’a’: 追加弧度转角度角度转弧度创建exe程序安装pyinstaller创建将.py文件和.ico文件放在同一个文件夹下;执行命令............原创 2022-07-05 11:54:23 · 808 阅读 · 0 评论 -
第三方库调用海康相机, 软件打包时出现无法定位程序输入点
原因第三方软件调用海康相机时,需要把海康的一些文件。如果默认安装MVS的化,这些库和包如图所示。注意并不只仅仅添加dll。建议:把里面的内容都拷贝进打包软件内,然后运行软件,再删除不需要的文件;运行软件包括打开海康相机,打开相机会调用新的文件;...原创 2022-05-25 17:05:28 · 875 阅读 · 0 评论 -
qt MVS Halcon VS2017 软件打包发布
软件打包发布Releasevs2017选用release生成.exe文件。QT库打包调用QT自动的windeployqt.exe文件打包qt相关的库。流程:选用qt对应版本的窗口。我用的是vs2017 64位的。注意别直接用cmd快捷键打开,在有多个qt版本或库的时候,比如装了anaconda。需注意选择正确的窗口。cd 对应的exe文件夹,并运行,windeployqt.exe project.exe; 其中project.exe 为待打包的exe文件;添加第三方库的DLL比如h原创 2022-05-24 16:32:17 · 500 阅读 · 1 评论 -
配天机器人——使用笔记
RPsim环境更改本地ip开启SMBv1连接环境win10系统更改本地ip本地ip默认为自动,改为和机器人同一个ip段内(备注:忘了名词,即前三段相同)。例:机器人IP:192.168.1.1,则本地ip改为:192.168.1. xxx,标注处相同即可。开启SMBv1连接win10系统有些版本默认不开始SMBv1连接,可能导致登陆出现用户名错误的异常。设置->应用->程序和功能->启用或关闭Windows功能->勾选SMB 1.0/CIFS 文件共享支持。..原创 2022-02-11 16:36:41 · 1978 阅读 · 0 评论 -
Qt 5笔记
Qt 5QTabWidgetcountQTabWidgetcount返回tab的数量。返回值:int。计数从1开始。原创 2022-03-23 15:38:12 · 666 阅读 · 0 评论 -
vs_qt 联合开发
VS QT 联合开发This application failed to start because it could not find or load the Qt platform plugin "windows" inThis application failed to start because it could not find or load the Qt platform plugin “windows” in原因:release 下,未正确调用QT的动态链接库。如:同时装了QT和anac原创 2022-03-23 15:28:34 · 3203 阅读 · 0 评论