- 博客(78)
- 收藏
- 关注
原创 在VS2017中使用Qt的foreach宏,IntelliSense无法正确识别函数定义
Qt的foreach宏在VS中因智能感知无法解析宏展开而报错,但实际编译通过。建议改用C++11范围for循环,需注意迭代器失效问题。若循环中修改容器,应遍历副本(如mChildNodes.values()),避免直接修改原容器导致崩溃。原生范围for循环性能更好且兼容性更佳。
2026-02-24 23:10:30
485
原创 基于 X-Macro 宏的手动 RTTI 实现模式
本文介绍了一种在大型C++项目中替代原生RTTI的手动类型识别系统。针对跨DLL边界、性能敏感和序列化需求等场景,提出基于X-Macro的解决方案,通过预处理器宏自动为每个类生成类型检查、安全转型和类名获取功能。
2026-02-24 22:54:19
949
原创 REST API 简介
REST API是一种遵循REST架构风格的应用程序接口,使用HTTP协议和JSON/XML格式进行通信。其核心在于通过URL表达资源,用HTTP方法(GET/POST/PUT/DELETE等)表达操作。REST API设计遵循六大约束原则,包括客户端-服务器分离、无状态、可缓存等特性。
2026-02-23 18:23:42
1087
原创 Qt C++ :QRegularExpression 正则表达式使用详解
QRegularExpression类基本用法与正则表达式核心语法介绍
2026-01-11 23:20:04
1311
原创 Qt C++ :QJson使用详解
本文介绍了JSON的基本概念及其在Qt中的使用方法。JSON包含数组和对象两种主要格式,支持多种数据类型。Qt提供了QJsonDocument、QJsonObject、QJsonArray和QJsonValue等核心类来处理JSON数据。文章详细说明了如何解析JSON字符串(反序列化)和生成JSON字符串(序列化),包括嵌套结构的处理。
2026-01-04 22:42:26
321
原创 PCB行业部分术语总结
介绍PCB制造中的关键文件——Gerber文件和钻孔文件。以及说明了PCB背钻工艺中的S面(信号面)和C面(背钻面)概念,强调背钻从C面向S面进行以保护关键信号连接。
2025-11-01 15:16:53
1188
原创 Qt C++ :XML文件处理工具 <QXml>模块
Qt XML处理模块提供多种解析方式,包括流式读写(QXmlStreamReader/Writer)、DOM模型(QDomDocument)和高级查询工具(QXmlQuery)。QDom模块适合小型XML文档的随机访问和修改,核心类包括QDomDocument、QDomElement等。具体操作涵盖:创建/加载文档、遍历节点、查询元素、增删改节点以及保存文件。
2025-10-09 23:00:48
1110
原创 Qt C++ :QLayout 布局管理
Qt中常用的布局管理类及其核心功能,包括QVBoxLayout(垂直布局)、QHBoxLayout(水平布局)、QGridLayout(网格布局)、QFormLayout(表单布局)和QStackedLayout(堆叠布局)。重点讲解了布局的可视化设计方法,建议将组件放置在容器内进行布局管理。文章详细说明了布局的核心属性设置接口,包括边距(contentsMargins)、控件间距(spacing)、对齐方式(Alignment)和伸缩因子(Stretch Factor)等。
2025-10-08 18:11:44
1328
原创 Qt C++ :QWidget类的主要属性和接口函数
QWidget是所有界面组件类的基类。QWidget定义的一些属性、接口函数、信号和槽是所有界面组件共有的。了解了QWidget的基本特性,通常就能了解界面组件的通用特性。
2025-10-07 23:48:37
1115
原创 计算机网络(六):网络层(功能概述、异构网络互联、路由与转发、拥塞控制)
网络层提供主机到主机的通信服务,主要功能包括分组转发和路由选择。互联网采用TCP/IP体系结构,网络层提供无连接的数据报服务,由传输层保证可靠性。通过路由器实现异构网络互连,形成统一的IP网络。路由器完成路由选择和分组转发两大功能。虚电路服务提供可靠通信,需预先建立连接;数据报服务则无需连接,提供尽力而为的传输。SDN采用集中控制与分布转发分离的架构,通过流表控制路由器转发行为。当网络负载过重时会出现拥塞,导致性能下降。
2025-10-06 15:33:53
1289
原创 计算机网络(四):数据链路层(功能概述、组帧/封装成帧、差错控制、流量控制与可靠传输机制)
数据链路层的主要功能是封装成帧、透明传输和差错检测。它采用点对点和广播两种信道,使用PPP、CSMA/CD等协议实现数据传输。组帧方法包括字符计数法、字节填充法、零比特填充法和违规编码法。差错控制通过检错编码(奇偶校验、循环冗余码CRC)和纠错编码(海明码)实现,其中CRC广泛用于数据链路层。流量控制通过停止-等待协议和滑动窗口机制实现,由接收方调节发送速率,确保可靠传输。滑动窗口机制在数据链路层和传输层应用有所不同,前者控制相邻节点流量,后者控制端到端流量。
2025-10-05 12:19:19
844
原创 计算机网络(三):物理层(通信基础、传输介质、物理层设备)
介绍计算机网络物理层设计的主要内容。包括: 通信基础:数据与信号的区别,模拟与数字信号的特点,码元的定义,通信系统的组成(信化作道、信宿),以及不同信道类型(模拟翻身信道、有线/无线信道)。 传输方式:基383传输与宽带传输的区别,串行与并行传输的适用场景,以及单向、半双工和全双工通信的特点。 信道容量:详细阐述了奈奎斯特定理(限制码元传输速率)和香农定理(考虑带宽和信噪比)对信道极限传输速率的影响等
2025-10-04 19:36:24
1000
原创 计算机网络(二):计算机网络体系结构
计算机网络体系结构采用分层设计,将复杂系统分解为多个功能独立的层次。OSI参考模型包含7层:物理层(比特传输)、数据链路层(帧传输与差错控制)、网络层(分组路由)、传输层(端到端通信)、会话层(会话管理)、表示层(数据格式转换)和应用层(用户接口)。协议控制对等实体间的水平通信,服务体现下层对上层垂直功能调用。分层结构通过标准化接口(SAP)实现层间交互,支持协议数据单元(PDU)和服务数据单元(SDU)的传递。这种设计降低了系统复杂度,促进技术实现灵活性,同时确保异构网络互联互通。
2025-10-04 12:24:52
1057
原创 计算机网络(一):计算机网络概述
系统介绍了计算机网络的基本概念、组成结构、功能特点及分类方式。计算机网络是通过通信设备与线路连接自治计算机系统,实现资源共享和信息传递的系统。从组成看,包括硬件、软件和协议三部分;从功能看,分为通信子网和资源子网。网络核心功能包括数据通信、资源共享、分布式处理等。文章详细对比了电路交换 underworld、报文交换和分组交换三种技术的特点及优劣势。最后从分布范围、传输技术和拓扑结构三个维度对网络进行分类,包括广域网、局域网等不同类型,以及总线型、星型等不同拓扑结构。
2025-10-03 01:30:49
969
原创 Qt C++ :GUI程序与常用界面组件 <QWidget>
本文介绍了Qt类库中的主要GUI组件及其分类。QWidget是所有界面组件的基类,继承自QObject和QPaintDevice,支持信号槽机制和绘图功能。文章详细分类说明了按钮类、输入类、显示类、容器类和Item组件等各类GUI组件的特点和用途,包括QPushButton、QLineEdit、QLabel、QTabWidget等常用组件,并附有类继承关系图。还简要提及了菜单栏、工具栏等其他界面组件,为Qt GUI编程提供了全面的组件参考。
2025-09-28 00:29:24
818
原创 操作系统(三) :操作系统的结构、虚拟机基本概念
操作系统结构主要包括分层法、模块化、宏内核、微内核和外核等设计方法。分层法将系统分为若干层,便于调试但效率较低;模块化按功能划分模块,提高可维护性但接口设计复杂;宏内核将主要功能集成在内核态,性能高但扩展性差;微内核仅保留核心功能,可靠性强但性能开销大;外核直接分配资源,减少映射层提升效率。此外,操作系统引导过程通过硬件自检、加载主引导记录等步骤启动系统。虚拟机技术则通过虚拟化将物理机划分为多个虚拟机,提供隔离的计算环境。当前主流操作系统多采用混合内核架构,融合宏内核和微内核的优势。
2025-09-27 00:21:03
1042
原创 操作系统(二) :操作系统运行机制(中断和异常、系统调用)
本文系统阐述了计算机处理器运行模式、中断机制和系统调用的核心概念。首先介绍了CPU的用户态和内核态两种工作模式,区分了特权指令与非特权指令的执行权限。其次详细解析了中断与异常的分类及处理机制,包括外中断(可屏蔽/不可屏蔽)和内中断(故障、自陷、终止)的差异。最后探讨了系统调用的功能分类(设备管理、文件操作、进程控制等)及其处理流程,强调其作为用户程序与操作系统内核的安全接口作用。全文揭示了硬件状态切换、中断驱动和系统调用如何协同保障操作系统的安全性、稳定性和资源管理效率。
2025-09-25 23:00:36
1324
原创 操作系统(一) :操作系统基本概念及特征
操作系统是管理计算机硬件与软件资源的系统软件,主要功能包括处理机管理、存储器管理、文件管理和设备管理。它通过并发执行(分时交替)和资源共享(互斥/同时访问)两大基本特征,实现多任务处理。操作系统提供命令接口(交互式/批处理)和程序接口(系统调用)两类用户接口,并通过虚拟技术(时分/空分复用)将物理资源转化为更易用的逻辑资源。其发展经历了手工操作、批处理、分时、实时等阶段,逐步演变为现代复杂系统。关键特征可概括为并发性、共享性、虚拟性和异步性,共同构成计算机资源的高效管理基础。
2025-09-22 23:08:30
1158
原创 Qt C++ :元对象系统(QObject类、信号槽、对象树、属性系统)
摘要: Qt的元对象系统扩展了C++功能,支持信号槽通信、动态属性、运行时类型信息等特性。核心机制包括: 元对象系统基础:基于QObject基类、Q_OBJECT宏和元对象编译器(moc),通过生成额外代码实现功能。 运行时类型信息:通过QMetaObject获取类名、继承关系,支持inherits()和qobject_cast,无需C++ RTTI。 信号与槽机制:信号声明后通过emit触发,槽函数可绑定信号,通过connect()建立跨线程通信,支持多种连接方式(如自动、队列)。 对象树管理...
2025-09-20 00:37:30
1241
1
原创 Qt C++ :Qt全局定义<QtGlobal>
qtglobal.h是Qt框架的核心头文件,提供跨平台数据类型定义和实用工具。它定义了固定大小的整数类型(如qint8、qint64)和浮点类型(qreal),确保代码在不同平台上的行为一致性。该文件还包含大量实用宏,包括版本检测、操作系统判断、调试断言、编译器优化提示等,以及数值处理、内存操作等全局函数。这些功能为Qt开发提供了基础支持,简化了跨平台开发工作,并优化了代码性能。
2025-09-18 22:58:36
858
原创 操作系统(二) :CPU调度
本文介绍了操作系统中的调度概念、实现机制和相关算法。调度概念分为高级调度(作业调度)、中级调度(内存调度)和低级调度(进程调度)三个层次,分别负责不同级别的资源分配。 调度实现: 调度程序由排队器、分派器和上下文切换器组成 调度的时机包括进程创建/结束、阻塞、I/O就绪等。
2025-09-14 23:29:28
1139
原创 Qt C++ :Qt概述
Qt是一个跨平台的C++ GUI框架,提供丰富的类库支持桌面、移动设备和嵌入式开发。其核心特点是跨平台能力,通过交叉编译可在Windows、Linux、macOS等主机平台开发不同目标平台的应用程序。Qt包含多个功能模块,如Core、GUI、Widgets等基础模块,以及QML、Quick等现代UI开发模块,还支持网络、数据库、多媒体等功能。开发者可通过Qt官方文档和下载资源快速上手,利用其高效的原生代码编译特性构建高性能应用。
2025-09-14 01:31:31
1296
原创 操作系统(二) :进程与线程
摘要: 进程是操作系统进行资源分配和调度的基本单位,由程序段、数据段和进程控制块(PCB)组成。引入进程是为了实现程序的并发执行,解决多道程序环境下程序失去封闭性、间断性等问题。进程通过PCB记录状态信息,由操作系统进行控制和管理。进程具有动态性、并发性、独立性和异步性等特征,其状态包括运行态、就绪态、阻塞态等,并通过进程控制原语(创建、终止、阻塞、唤醒等)实现状态转换。
2025-09-04 23:38:54
1041
原创 现代C++特性 并发编程:线程管理库 <thread>(C++11)
std::thread 是 C++ 多线程的基础,掌握其构造、生命周期管理、参数传递和常见陷阱,是编写安全并发程序的关键。建议结合 std::mutex、std::future 等工具一起使用,构建完整的并发模型。
2025-08-31 23:53:52
747
原创 现代C++特性 并发编程:处理日期和时间的 <chrono> 库(C++11)
C++11的<chrono>库提供了处理日期和时间的功能,主要包括三类组件:时间间隔duration、时钟clocks和时间点time_point。duration表示一段时间间隔,支持不同时间单位(如秒、毫秒、微秒)的转换和计算;time_point表示某一具体时间点,通常与时钟类结合使用;clocks包含system_clock(系统时钟)、steady_clock(稳定时钟)和high_resolution_clock(高精度时钟),用于获取当前时间或测量程序耗时。
2025-08-30 00:26:07
1127
原创 【C++标准库】<ios>详解基于流的 I/O
C++的I/O流库采用分层设计,提供统一的流式操作接口。核心包括:<ios>定义基础控制类,<streambuf>实现底层设备抽象,<istream>/<ostream>提供高层输入输出操作。具体实现涵盖文件流(<fstream>)、字符串流(<sstream>)和同步输出流(<syncstream>)。
2025-08-27 22:55:36
1408
原创 【数据结构】第二章 线性表
线性表是一种具有相同数据类型的有限序列,包括顺序表和链表两种存储结构。顺序表通过数组实现,支持随机存取;链表通过指针连接结点,适用于频繁插入/删除操作。顺序表的基本操作包括初始化、插入、删除、查找等,而链表分为带头结点和不带头结点两种形式,可通过头插法或尾插法建立。两种结构各有优缺点,顺序表存取速度快但插入删除效率低,链表插入删除高效但只能顺序存取。实际应用中需根据具体需求选择合适的线性表实现方式。
2025-08-24 22:53:27
784
原创 C++ MFC/BCG编程:文件对话框(CFileDialog、CFolderPickerDialog)
CFileDialog 和 CFolderPickerDialog 是 MFC 中用于文件及目录选择的常用对话框类。CFileDialog 支持打开/保存文件操作,提供文件名过滤、多选文件等功能;CFolderPickerDialog 专用于文件夹选择,支持新版 UI 和路径编辑。两者均通过 DoModal() 显示对话框,获取用户选择路径后执行后续操作。示例代码展示了单文件选择、多文件选择和目录选择等典型应用场景。
2025-08-20 23:15:00
1463
1
原创 C++设计模式:单例模式 (现代C++主流实现方式Meyer‘s Singleton + 使用CRTP模板化)
本文介绍了单例模式的概念及其实现方式。单例模式确保程序中仅存在一个实例化对象,通过私有化构造函数、禁用拷贝构造和赋值操作符来实现。文章对比了饿汉式(立即初始化)和懒汉式(延迟初始化)两种实现方法,重点推荐了现代C++中的Meyer's Singleton实现,它具备线程安全、延迟初始化和自动资源管理等优点。最后还介绍了使用CRTP技术实现的模板化单例类,使任意类都能方便地成为单例。
2025-07-20 00:35:50
537
原创 Halcon 常用算子总结
本文介绍了Halcon图像处理中的常用灰度变换与增强算子。组合使用可完成从灰度调整到降噪增强的完整图像预处理流程,适用于曝光校正、细节增强等应用场景。
2025-06-29 23:29:17
1738
原创 错误 C2365 “SID”: 重定义;以前的定义是“typedef”
错误 C2365:“SID”: 重定义;以前的定义是“typedef”这是 MSVC 编译器(Visual Studio) 报出的一个典型错误,表示标识符SID被重复定义了两次:第一次被定义为一个 typedef(可能是某种结构体或类型的别名)第二次又被用作其他东西(比如变量、枚举值、宏等)
2025-06-23 18:30:09
257
原创 现代C++特性:指针字面量 nullptr
C++11引入nullptr关键字解决传统空指针初始化问题。在C++98/03中,NULL被宏定义为0,导致函数重载时无法区分指针和整型参数。nullptr具有std::nullptr_t类型,可以隐式转换为任意指针类型但不会与整型混淆,有效避免了野指针问题。通过示例代码对比可见,使用nullptr能正确匹配指针重载函数,而NULL会误匹配到整型版本。nullptr的引入提高了类型安全性,使空指针的表示更加清晰可靠,是C++11推荐的空指针初始化方式。
2025-06-21 23:55:38
476
原创 现代C++特性(一):基本数据类型扩展
C++基础数据类型包括整型(int/short/long等)、浮点型(float/double)、字符型(char)和布尔型(bool),各类型具有不同的位宽和取值范围。C++11新增long long类型,并引入numeric_limits模板查询类型极限值。
2025-06-07 23:43:31
494
原创 OpenCV C++ 学习笔记(六):绘制文本、几何绘图、查找/绘制轮廓
用于在二值图像中查找轮廓。轮廓可以简单地理解为连接具有相同颜色或强度的所有连续点(沿着边界)的曲线。它常被用于形状分析、对象检测和识别等领域。首先读取一张图片,并将其转换为灰度图,然后通过阈值处理得到二值图像。正值表示绘制空心圆,而负值(如 FILLED)则表示绘制实心圆。在二值图像中查找轮廓,并将这些轮廓。绘制在一个新的图像上。
2025-06-04 23:09:14
862
原创 OpenCV C++ 学习笔记(五):颜色空间转换、数值类型转换、图像混合、图像缩放
这在图像处理中特别有用,比如当你需要将图像数据从一种位深度转换到另一种(例如从 8 位转换到 32 位浮点数),或者你需要调整数值范围时。这对于单独处理图像的每个颜色通道(例如在RGB图像中处理红色、绿色和蓝色通道)非常有用。函数则是做相反的操作,它接收多个单通道数组,并将它们组合成一个多通道数组。这在你独立处理完图像的各个通道后需要重新组合时特别有用。是 OpenCV 中用于将图像从一种色彩空间转换为另一种色彩空间的函数。如果你想用作“图像叠加”或“图像混合”,可以设置 gamma = 0。
2025-06-03 23:43:10
1360
原创 OpenCV C++ 学习笔记(四):图像/视频的输入输出(highgui模块 高层GUI和媒体I/O)
介绍了OpenCV核心的图像与视频处理API:图像读取、窗口管理、图像保存、视频处理。编解码器:通过fourcc()指定视频编码格式(如MP4、AVI等),并控制输出质量与压缩方式。
2025-06-02 00:53:17
552
原创 OpenCV C++ 学习笔记(三):矩阵基本操作、遍历图像矩阵的方法及性能分析
本文介绍了OpenCV中常用数据类型定义、图像矩阵在内存中的存储方式以及矩阵基本操作方法。详细说明了各种矩阵操作方法,特别强调了在图像处理中高效遍历矩阵的技术。
2025-06-01 00:43:35
1368
原创 OpenCV C++ 学习笔记(二):基础图像容器cv::Mat
本文介绍了OpenCV中Mat类的基本概念与应用。Mat类是OpenCV用于处理图像的C++封装类,由矩阵头和数据指针组成,采用引用计数机制实现内存管理。文章详细说明了Mat对象的创建、拷贝机制(赋值仅复制信息头,clone/copyTo才复制矩阵数据)以及存储方法(包括颜色空间和数据类型)。通过构造函数实例展示了如何显式创建Mat对象,并强调了OpenCV自动内存管理的特性。
2025-05-29 23:51:20
828
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅