自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

doubleintfloat的博客

记录与分享技术成长道路上的点滴

  • 博客(479)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 sql server连接遇到的问题

摘要:文章分析了SQL Server连接失败的常见问题及解决方法。首先展示了一个使用pyodbc连接SQL Server的Python代码示例,然后详细列出了排查步骤:1)测试本地连接;2)关闭防火墙;3)检查网络连通性;4)验证服务器名称;5)确认SQL Server服务状态;6)启用TCP/IP协议;7)允许远程连接;8)检查SQL Browser服务或指定端口;9)测试端口连通性。最后建议若所有方法无效可考虑重装SQL Server。

2025-06-09 17:14:38 627

原创 pyqt tab contral

本文介绍了一个使用PyQt5构建的标签页控件示例程序。该程序展示了QTabWidget的多种应用场景,包括欢迎页、用户信息表单、数据表格和文本编辑器。程序采用垂直布局和分割器(QSplitter)设计,上方为标签页区域,下方为日志显示区。欢迎页提供程序简介和标签页操作按钮;用户信息页演示表单输入功能;数据展示页实现表格数据管理;文本编辑页支持多行文本处理。每个标签页都配有相应功能按钮,如添加/删除标签页、保存表单数据等。程序通过日志区域记录操作信息,帮助用户理解控件交互过程。

2025-06-09 16:54:02 251

原创 std::vector<>.emplace_back

(而非拷贝或移动)元素。这一特性显著提升了复杂对象的插入效率,尤其适用于构造代价较高的类型。是 C++11 引入的容器成员函数,用于在容器尾部。:若构造函数抛出异常,容器状态保持不变。不返回新元素的引用(C++17 起。在现代 C++ 编程中,建议优先使用。,除非需要明确的类型检查或兼容性保证。:若容器需要重新分配内存,仍需移动所有现有元素。

2025-05-20 23:10:31 688

原创 thread 的mutex优化

std::lock_guard 是 C++ 中用于管理互斥锁的 RAII(Resource Acquisition Is Initialization)工具。它在构造函数中自动加锁,并在析构函数中自动解锁,确保锁的生命周期与对象的作用域绑定。这种设计避免了手动管理锁时可能出现的资源泄漏和死锁问题,尤其在异常情况下仍能保证锁的正确释放。std::lock_guard 的自动解锁机制依赖于 C++ 的作用域规则,局部对象在离开作用域时会自动析构,从而释放锁。相比手动管理锁,std::lock_guard 提供了

2025-05-20 22:04:14 258

原创 电机的导程和脉冲之间的关系

例如,在一个由电机驱动丝杠来实现直线运动的装置中,当电机带动丝杠旋转一圈,丝杠上的螺母(与需要直线运动的部件相连)所移动的距离就是导程。导程越大,在电机转速相同的情况下,运动部件的直线运动速度越快,但精度可能会相对降低;导程越小,运动速度越慢,但可以实现更高的运动精度。总之,电机的导程和旋转一圈的脉冲数共同决定了电机驱动系统的运动精度和速度,在设计和调试电机控制系统时,需要根据具体的应用需求来合理选择和匹配这两个参数。在电机相关领域中,导程通常是针对直线电机或带有丝杠等传动机构的电机系统而言的。

2025-05-14 20:17:03 319

原创 windowsC++操作ADB

ADB(Android Debug Bridge)是一种强大的命令行工具,用于与Android设备进行通信和交互,广泛应用于调试、文件传输、应用管理等场景。本文详细介绍了ADB的工作原理、安装配置、常用指令分类(如设备管理、文件传输、应用管理、系统信息等)以及高级用法(如多设备管理、无线连接、批量执行命令等)。此外,还提供了常见问题的解决方案和注意事项,帮助开发者更高效地使用ADB。通过掌握这些指令,开发者可以显著提升Android应用的调试、测试和部署效率。

2025-05-13 22:07:13 974

原创 vector是在栈上还是在堆上

在C++中,std::vector对象的存储位置取决于其定义方式:如果作为局部变量或类的非静态成员变量,则存储在栈上;如果使用new动态分配,则存储在堆上。然而,vector管理的元素始终存储在堆上,因为vector需要动态调整大小,堆内存更适合这种需求。vector使用RAII机制,确保对象析构时自动释放堆上的内存,避免内存泄漏。相比之下,固定大小的数组(如std::array或原始数组)则存储在栈上。总结如下:vector对象本身可存储在栈或堆上,而其元素始终存储在堆上。

2025-05-13 16:27:01 230

原创 MFC listctrl修改背景颜色

在 MFC 中修改 ListCtrl 控件的行背景颜色可以通过自绘(Owner-Draw)机制实现。主要步骤包括启用自绘属性、处理 NM_CUSTOMDRAW 消息,并在消息处理函数中根据行和列设置背景颜色。此外,可以通过创建自定义 CListCtrl 类来封装自绘逻辑,使代码更优雅。自定义类中还可以实现动态更新行颜色的功能,通过映射表存储每行的颜色并在自绘时应用。需要注意的是,自绘机制可能增加渲染开销,建议在数据量较大时使用虚拟列表优化性能。选中状态的颜色可能会覆盖自定义颜色,需通过判断 pLVCD-&g

2025-05-12 19:00:31 503

原创 deque底层数据结构以及和queue的异同

deque(双端队列)是一种高效支持两端插入和删除操作的数据结构,常见于C++标准库(STL)等编程语言。其底层实现采用分段连续存储,结合了数组和链表的优势,既支持O(1)时间复杂度的随机访问,又能在两端进行快速插入和删除。deque由中控器(指针数组)和数据块(固定大小的数组)组成,通过迭代器实现透明的随机访问。与vector相比,deque在两端操作上更高效,且避免了扩容时的元素复制开销;与list相比,deque支持随机访问,但中间插入/删除效率较低。deque适用于需要频繁双端操作和偶尔随机访问的场

2025-05-12 00:52:52 471

原创 halcon 基于相关性创建模板

本文展示了如何使用Halcon进行基于NCC(归一化互相关)的模板匹配。代码分为两部分:模板创建与初始化,以及实时匹配循环。首先,通过GigEVision2相机采集图像,并在图像上定义矩形ROI作为模板区域,创建NCC匹配模型。接着,在实时循环中,持续从相机采集新图像,并在图像中查找模板,显示匹配结果。匹配结果包括匹配位置、角度和分数,并通过仿射变换将模板区域对齐到匹配位置。最后,程序在匹配位置绘制十字线并显示匹配分数,实现实时模板匹配功能。

2025-05-12 00:42:57 218

原创 C++ RAII机制

RAII(Resource Acquisition Is Initialization)是一种编程范式,其核心思想是将资源的生命周期与对象绑定:对象创建时获取资源,对象销毁时自动释放资源。通过构造函数和析构函数的配对执行,RAII确保了资源管理的安全性和一致性。典型应用场景包括智能指针(如std::unique_ptr和std::shared_ptr)、文件操作(自动关闭文件句柄)和互斥锁管理(自动加锁和解锁)。RAII的优势在于异常安全、代码简洁和资源管理统一,避免了手动管理资源时的常见问题。自定义RAI

2025-05-11 22:50:03 476

原创 通俗的理解MFC消息机制

MFC(Microsoft Foundation Classes)中的消息机制是一种处理系统或用户触发事件的方式,类似于快递系统。消息机制的核心包括三个部分:消息循环、窗口过程和消息映射。消息循环不断检查并分发新消息,窗口过程负责接收消息,而消息映射则将消息与对应的处理函数绑定。这种机制实现了事件触发与处理的解耦,提高了程序的灵活性和效率。例如,当用户点击按钮时,MFC会通过消息循环、窗口过程和消息映射找到并执行相应的处理函数,从而完成关闭窗口等操作。MFC的消息机制使程序能够高效、有序地响应各种事件。

2025-05-11 00:15:30 916

原创 通俗的桥接模式

桥接模式(Bridge Pattern)是一种结构型设计模式,旨在将抽象与实现分离,使它们可以独立变化。通过组合而非继承的方式,桥接模式避免了类爆炸,增强了系统的灵活性和可扩展性。例如,在手机品牌与功能的场景中,桥接模式允许品牌与功能自由组合,而不是为每种组合创建新的子类。其核心思想是解耦抽象层与实现层,通过“桥”连接两者,从而支持多个维度的变化。该模式特别适用于需要支持多种平台、风格或功能的场景,符合“开闭原则”,减少代码重复,提升系统可维护性。

2025-05-11 00:09:03 642

原创 1 2 3 4 5顺序插入,形成一个红黑树

红黑树是一种自平衡的二叉搜索树,通过颜色标记和平衡性约束确保树高为O(log n)。其核心特性包括节点颜色(红或黑)、根节点和叶子节点为黑色、红色节点的子节点必须为黑色,以及从任一节点到叶子的路径包含相同数目的黑色节点。这些特性使得红黑树在插入和删除时通过颜色调整和旋转操作维持平衡,避免了普通二叉搜索树的退化问题。以顺序插入1、2、3、4、5为例,通过逐步调整和旋转,最终形成一棵符合红黑树性质的有效树结构。

2025-05-10 23:56:41 442

原创 为什么有了BST了,还要红黑树,红黑树有什么优点

BST(二叉搜索树)和红黑树都是常见的树形数据结构,但红黑树在某些方面对BST进行了优化,主要解决了BST在特定情况下可能出现的性能问题。虽然牺牲了一定的空间(每个节点多一个颜色位)和插入/删除时的调整开销,但在动态数据结构中表现更可靠,因此被广泛应用于各种高性能系统中。红黑树通过引入颜色标记和平衡性约束,解决了BST在特定情况下的退化问题,提供了稳定的。这种情况下,BST的效率大幅降低,无法满足高效查询的需求。,通过额外的颜色标记和平衡性约束,确保树的高度始终保持在。维持平衡,避免了BST的退化问题。

2025-05-10 23:52:41 668

原创 MFC 显示,写入日志

【代码】MFC 显示,写入日志。

2025-05-08 22:26:17 114

原创 C++ set替换vector进行优化

【代码】C++ set替换vector进行优化。

2025-05-08 20:35:23 237

原创 写日志文件

【代码】写日志文件。

2025-05-05 13:48:20 125

原创 数据库语句备忘

本文介绍了如何在SQL Server中通过循环插入数据库行,并通过一条语句批量更新表中特定位置的状态。首先,文章展示了如何使用WHILE循环将位置从201插入到200的示例代码。接着,文章提出了一个需求:将表中所有状态重置为0,同时将指定的若干个位置设置为1。为此,文章提供了一个简洁的SQL语句,使用CASE语句结合IN子句实现批量更新。该语句能够一次完成全表状态重置,并对指定位置进行状态设置,简化了操作流程。

2025-05-01 18:36:17 195

原创 相机内外参

相机的内外参共同作用,将实际世界中的三维坐标点与图像中的二维像素点建立起了对应关系,从而实现了从真实世界到图像空间的投影转换,这是计算机视觉中许多任务(如三维重建、目标定位、长度测量等)的基础。相机的内外参是相机标定过程中确定的重要参数,用于建立图像像素坐标与实际世界坐标之间的关系。

2025-04-14 15:42:32 545

原创 C++ string_view

是C++17引入的一个轻量级、非拥有的字符串视图类,定义于头文件中。它提供了一种高效且安全的方式来处理字符串数据,而无需复制字符串内容。以下是关于。

2025-04-14 15:29:25 708

原创 Halcon 八种模版匹配方法汇总

方法适用场景计算速度鲁棒性灰度值匹配简单场景、光照稳定快低相关性匹配抗噪声、亮度变化中中形状匹配工业定位、部分遮挡快高组件匹配复杂结构、多部件目标慢高局部形变匹配弹性变形物体慢中透视形变匹配3D视角变化慢高描述符匹配自然场景、复杂纹理慢极高点匹配关键点显著的场景中中注意事项工业检测优先选择形状匹配或组件匹配;复杂场景(如自然图像)优先使用描述符匹配;对速度要求高时选择灰度值或相关性匹配。

2025-04-03 11:04:58 1782

原创 pyqt SQL Server 数据库查询-优化2

2、增加删除表里数据功能。1、增加导出数据功能。

2025-04-02 10:29:04 501

原创 进程与线程

进程是资源包,线程是执行线进程像独立别墅,线程像合租室友开进程像创业,起线程像招员工。

2025-04-02 08:40:01 785

原创 海康相机型号命名规则

备忘,参考:B站优致谱视觉。

2025-04-01 21:46:07 226

原创 相机的曝光和增益

相机的图像传感器将光信号转换为电信号,增益就是对这些电信号进行放大。在相机内部,有专门的增益电路来实现这一功能。当开启增益功能时,电路会根据设定的增益值,将传感器输出的电信号按比例放大,然后再经过模数转换等后续处理,最终形成我们看到的数字图像。相机增益是一把双刃剑,在提高图像亮度和细节的同时,也会带来噪点增加和动态范围压缩等问题。用户需要根据具体的拍摄需求和环境,合理设置增益,以达到最佳的拍摄效果。参考:B站优致谱视觉。

2025-04-01 21:26:24 1047

原创 全局曝光与卷帘曝光

不过,随着技术的不断发展,全局曝光传感器的性能也在不断提升,在一些特定的应用场景中,已经能够实现较高的帧率,以满足对高速成像和高精度图像质量的要求。参考:B站优致谱视觉。

2025-04-01 21:16:47 926

原创 黑白彩色相机成像原理

参考:B站优致谱视觉。

2025-04-01 20:37:41 770

原创 STL新增内容

这些新增内容使得 STL 更加完善和强大,为 C++ 开发者提供了更多高效、便捷的工具。

2025-04-01 15:55:35 427

原创 镜头的分辨率与反差

镜头分辨率是指镜头在成像平面上能够分辨的最小细节,通常以单位长度内能够分辨的线对数(Line Pairs per Millimeter,简称lp/mm)来表示。例如,一个镜头的分辨率为100 lp/mm,表示在每毫米的成像范围内,该镜头能够清晰分辨出100对黑白相间的线条。分辨率越高,镜头能够捕捉到的细节就越丰富,成像也就越清晰。镜头反差是指镜头所成图像中最亮部分与最暗部分的亮度比值。高反差意味着图像中亮部和暗部之间的差异明显,亮部更亮,暗部更暗,图像具有强烈的视觉冲击力;

2025-04-01 11:22:22 1112

原创 远心镜头原理

远心镜头的工作原理基于其特殊的光学设计,旨在解决普通镜头存在的视差问题。它通过将镜头的光轴与成像面垂直,并使主光线平行于光轴,从而确保在一定的物距范围内,物体上的点在成像面上的成像大小与物体到镜头的距离无关。简单来说,就是无论物体位于镜头前的哪个位置(在一定范围内),其在图像上的尺寸都保持不变,这使得对物体的测量和检测更加准确和可靠。

2025-03-31 22:03:49 1174

原创 相机镜头景深

景深是指在摄影机镜头或其他成像器前沿着能够取得清晰图像的成像器轴线所测定的物体距离范围。简单来说,就是在一张照片中,从前景到背景,能够保持清晰锐利的区域。在景深范围内的物体,其成像清晰,而在景深范围外的物体,则会呈现出不同程度的模糊。

2025-03-31 21:40:50 1089

原创 镜头光圈总结

光圈是镜头内部的一个可调节孔径装置,由多个金属薄片组成,通过控制这些薄片的开合程度来改变通光孔径的大小,从而控制进入相机的光线量。

2025-03-31 16:38:19 923

原创 镜头的变焦和对焦

镜头的变焦和对焦是摄影中两个非常重要的概念,它们对于拍摄出清晰、理想的照片起着关键作用。参考:B站优致谱视觉。

2025-03-31 15:32:19 1137

原创 CCD CMOS原理及异同

CCD(电荷耦合器件)和CMOS(互补金属氧化物半导体)是图像传感器领域的两种关键技术,

2025-03-31 15:04:00 942

原创 文件描述符以及修改

文件描述符的标志位是操作系统中用于描述文件描述符属性和行为的一组二进制标志。文件描述符是一个非负整数,它是操作系统内核为了管理已打开的文件而分配给每个进程的索引值。标志位则提供了关于文件描述符的额外信息,例如文件的打开模式、访问权限、特殊行为等。在 Windows 系统中,虽然没有完全与 Linux 相同的文件描述符概念,但有类似的文件句柄机制。函数将新的标志位设置回文件描述符,最后关闭文件描述符。在 Linux 系统中,文件描述符的标志位可以通过。在这个示例中,首先以读写模式打开一个文件,然后使用。

2025-03-29 14:24:00 820

原创 http服务器代码里哪里体现TCP三次握手

函数是三次握手完成的关键触发点。这些函数间接触发和利用了操作系统的三次握手机制,以建立可靠的 TCP 连接用于后续的 HTTP 通信。),流式套接字默认使用 TCP 协议,这是三次握手的基础,因为三次握手是 TCP 协议建立连接的过程。总结来说,在代码里三次握手的具体实现是由操作系统内核完成的,代码中通过。函数创建了一个基于 IPv4(

2025-03-29 10:56:03 222

原创 http与tcp的关系

虽然 HTTP 协议通常使用 TCP 作为底层传输协议,但在某些特殊情况下,也可以使用其他传输层协议。例如,HTTP/3 协议使用了基于 UDP 的 QUIC 协议作为底层传输协议。HTTP 协议是一种应用层协议,它依赖传输层的协议来实现数据的可靠传输。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,而 HTTP 协议在绝大多数情况下使用 TCP 作为其底层传输协议。通过这三次握手,客户端和服务器之间建立了一个可靠的 TCP 连接,为后续的 HTTP 数据传输奠定了基础。

2025-03-29 10:44:28 1043

原创 函数参数是定义还是赋值

在函数定义阶段,像里的a和b属于形参,此时它们是一种占位符,用于表明函数接收的参数类型和数量。这其实是在定义函数接口,为函数内部使用这些参数做好准备。从语法层面来看,这是变量的定义过程,只是这些变量没有具体的值。// 函数定义,这里的 a 和 b 是形参的定义。

2025-03-27 20:47:06 317

原创 C++ register关键字

关键字的主要作用是建议编译器将变量存储在CPU的寄存器中,而不是内存里。寄存器是CPU内部的高速存储单元,和内存相比,寄存器的读写速度要快很多。要是变量被频繁访问,把它放在寄存器里就能显著提升程序的运行效率。会被频繁使用,所以建议编译器把它存到寄存器中。是C和C++编程语言里的一个存储类说明符。

2025-03-27 20:40:22 451

QT文件查询,查询单个文件和文件夹下所有文件行数

QT文件查询,查询单个文件和文件夹下所有文件行数

2023-07-06

Linux程序设计第四版

这是我自己平时看的一本书,分享给有需要的人,希望可以帮到大家

2018-03-01

空空如也

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

TA关注的人

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