- 博客(383)
- 收藏
- 关注

原创 C语言中生成随机数的几种方式
C语言中生成随机数的几种方式1.rand介绍C语言提供了一个函数叫rand,这函数是可以生成随机数的,函数原型如下所示:int rand (void);2.srand介绍C语言中还提供了一个函数叫srand用来初始化随机数的生成器的,srand的原型如下:void srand (unsigned int seed);3.time函数介绍在C语言中有一个函数叫time,就可以获得这个时间,time函数原型如下:time_t time (time_t* timer);
2024-04-12 20:42:17
13277

原创 QT中Qwt、QChart、QCustomPlot使用与性能对比
QT中对比Qwt、QChart、QCustomPlot三个绘图库,qcustomplot在绘制大量点的二维曲线上性能优势明显,通过qcustomplot程序合理使用(包括开启硬件加速)及针对项目需求的优化,在实际项目应用中应用qcustomplot做到实时刷新曲线一千万点是没有问题的,甚至设计合理还能做到更高。关键词:QT5绘图,QT6绘图,qcustomplot,qchart,QT绘图性能,qcustomplot绘图性能测试,qchart绘图性能测试;
2023-12-06 14:52:02
8017
8
原创 嵌入式下快速傅里叶变换(FFT)C语言库kissfft
本文介绍了两种常用的FFT库:FFTW和KissFFT。FFTW是高性能计算库,支持多平台和语言集成。重点介绍的KissFFT是一个轻量级库,具有500行简洁代码、无外部依赖的特点,支持浮点和定点运算,特别适合嵌入式系统。文章详细说明了两种输入模式(浮点和定点数)的配置方法,并提供了1024点浮点FFT和512点Q15定点FFT的代码示例。最后比较了两种模式的特点:浮点模式精度高,适合科学计算;定点模式速度快、功耗低,适合实时系统。文中还给出了根据需求选择合适模式的具体建议。
2025-07-16 20:10:45
1194
原创 TreeSize Free - windows下硬盘空间管理工具
TreeSize Free - windows下硬盘空间管理工具TreeSize Free 是一款免费且广受欢迎的磁盘空间分析工具(由 JAM Software 开发),主要用于 Windows 系统。它的核心功能是帮助你快速、清晰地了解硬盘、文件夹或存储设备上的空间究竟被哪些文件和文件夹占用了。它以直观的树状结构、多种视图(尤其是 Treemap)和强大的排序功能,帮助你快速定位磁盘空间消耗大户,是进行磁盘清理、存储管理和解决空间不足问题的必备工具之一。
2025-07-14 20:13:08
892
原创 浮点数的乘法与除法运算耗时对比
浮点数运算中,除法比乘法显著更慢,主要由于硬件实现的差异:乘法采用并行结构,而除法依赖迭代算法。实测显示42亿次除法耗时约3.7秒,是乘法(1.9秒)的2倍。优化方案包括:1)预先计算倒数转换为乘法运算;2)使用牛顿迭代法提高倒数精度;3)利用FMA指令加速。这些方法适用于分母恒定的场景,可有效提升运算效率,但需权衡精度损失。
2025-07-13 19:12:45
414
原创 C语言变量初始化为0或者空注意点
嵌入式程序中变量初始化的常用方法:数值变量初始化为0,字符变量设为'\0';字符串建议用memset按字节填充0;指针应初始化为NULL,动态内存使用后及时置空;结构体推荐memset初始化,注意数组长度处理。重点强调memset是按字节填充的特性,需正确理解其使用场景。
2025-07-13 19:10:21
690
原创 嵌入式项目太多全局变量的弊端与规避
全局变量的过度使用会带来诸多弊端,包括代码可读性差、维护困难、可移植性差、内存管理问题、潜在bug增加、破坏模块化设计、调试难度大等。规避方法包括:使用静态局部变量替代、通过指针/引用访问、优化函数参数传递、妥善处理共享数据、封装模块化设计、定期代码优化及团队代码审查。合理控制全局变量使用能显著提升代码质量。(148字)
2025-07-12 18:36:25
809
原创 sscanf函数使用详解
sscanf函数使用详解1.函数原型与基本概念int sscanf(const char *str, const char *format, ...);核心功能:从字符串中读取格式化输入(String Scan Formatted)参数说明:str:源字符串(从中读取数据)format:格式控制字符串...:接收数据的变量地址列表
2025-07-12 18:34:19
861
原创 strchr 与 strstr 函数详解
strchr 与 strstr 函数详解一.strchr - 字符查找函数1.函数原型char *strchr(const char *str, int c);2.核心功能在字符串中查找特定字符的第一次出现位置3.参数说明参数 类型 说明str const char* 要搜索的字符串c int 要查找的字符(自动转换为char)
2025-07-11 19:56:31
979
原创 strtol 与 strtod 函数详解
strtol 与 strtod 函数详解一.strtol - 字符串转长整型1. 函数原型long int strtol(const char *str, char **endptr, int base);2. 核心功能将字符串转换为长整型数值,支持多种进制转换3. 参数说明参数 类型 说明str const char* 要转换的字符串endptr char** 存储转换结束位置的指针地址(可为NULL)
2025-07-11 19:53:31
772
原创 QTextCodec的功能及其在Qt5及Qt6中的演变
QTextCodec的功能及其在Qt5及Qt6中的演变TextCodec 是Qt5中处理文本编码的核心类,主要功能包括:编码/解码:在字节序列(QByteArray)和Unicode字符串(QString)之间转换,支持如GBK、Shift-JIS、CP1252等传统编码。QT6中已经移除QTextCodec。
2025-07-10 19:44:05
1292
原创 Qt中处理多个同类型对象共享槽函数应用
Qt中处理多个同类型对象共享槽函数应用Qt中处理多个同类型对象共享槽函数应用场景数字键盘按钮处理动态生成的控件管理工具栏按钮响应游戏中的网格点击处理使用时需特别注意对象生命周期管理和类型安全,现代Qt开发中更推荐使用Lambda表达式替代sender()机制。
2025-07-10 19:40:51
1072
原创 Qt6中模态与非模态对话框区别
Qt6中模态与非模态对话框区别1.模态对话框阻塞父窗口:打开后,用户必须先处理该对话框(关闭或完成操作),才能继续操作父窗口。应用场景:强制用户立即响应的场景,如确认对话框、登录窗口、文件选择器等2.非模态对话框不阻塞父窗口:打开后,用户可同时与对话框和父窗口交互。应用场景:需要长时间操作的工具窗口(如调色板、属性编辑器)或提示信息(如通知气泡)。
2025-07-09 20:22:11
965
原创 跨平台C++开发中编译器与平台差异解析
跨平台C++开发中编译器与平台差异解析在C++的世界中,编译器和平台的差异对开发者来说既是挑战也是机遇。了解这些差异对于编写高效、可移植的代码至关重要。本文将深入探讨C++编译器的特性、不同平台的影响以及如何在这样的环境下开发软件。
2025-07-09 20:19:52
748
原创 跨平台软件构建方法及工具介绍
场景:Java/Kotlin 项目(Android 官方构建工具)、混合语言项目(如 C++ 通过插件)。场景:C/C++/Rust 项目追求构建速度(如 GNOME)、替代 CMake 的轻量方案。场景:超大型多语言项目(如 TensorFlow)、微服务架构、要求构建可重现性的场景。场景:中大型 C/C++ 项目(如 Qt、VLC)、跨平台库开发(如 OpenCV)。场景:现代框架项目(Vue/React)、追求开发体验的高速迭代场景。场景:Java 后端服务(Buck)、数据工程管道(Pants)。
2025-07-08 20:31:40
702
原创 POCO 和Boost Libraries区别
POCO 和Boost Libraries区别POCO:适合需要快速构建跨平台网络服务或嵌入式应用,避免重复造轮子。Boost:适合底层开发、需要极致性能控制或长期兼容 C++ 标准的场景。混合使用:常见实践是用 Boost 补充 POCO 的底层功能(如 Asio 替换 POCO Net)。
2025-07-07 15:26:04
40
原创 Poco C++库之跨平台网络编程的应用
Poco C++库之跨平台网络编程的应用Poco(The Portable Components) 是一套现代 C++ 的跨平台开发库,广泛应用于嵌入式系统、服务端程序、工业控制和 AI 后端服务等领域。其设计理念类似于 Java 的标准库,为 C++ 提供“标准的非标准功能”。
2025-07-07 15:24:06
192
原创 QT6实现软键盘的两种方法
QT6实现软键盘的两种方法在触摸屏设备上,软键盘是替代物理键盘的重要输入方式。一般简单的功能需要数字小键盘,复杂的需要全键盘。二.QT6实现数字小键盘三.调用windows的自带软键盘osk.exe
2025-06-26 20:12:46
1141
原创 CSMatIO库的安装与C#实现.mat文件生成
CSMatIO库的安装与C#实现.mat文件生成CSMatIO 是一个用于读写 MATLAB .mat 文件的开源 C# 库,它提供了简单而高效的 API,使 .NET 应用程序能够与 MATLAB 进行数据交换,支持读取和写入 MATLAB 的 .mat 文件(版本 5 和 7.3),兼容 MATLAB 数据类型:矩阵、结构体、单元数组、字符数组等,不依赖 MATLAB Runtime,适合独立应用程序。
2025-06-25 20:17:58
931
原创 Windows10中设置多个虚拟IP方法
Windows10中添加多个虚拟IP方法介绍在 Windows 10 中,使用 netsh 命令为现有物理网卡或虚拟网卡添加额外的 IP 地址(IP Alias)是最直接的方法。这些 IP 地址与主 IP 在同一网段,共享同一张网卡的 MAC 地址。netsh interface ipv4 add address name="以太网" address=192.168.1.107 mask=255.255.255.0
2025-06-25 20:13:36
603
原创 GLib库介绍与linux下应用
GLib库介绍与linux下应用GLib 是一个由 GNOME 项目组开发的高性能、跨平台 C 语言工具库,最初为 GTK 图形界面框架提供底层支持,后发展为独立的通用库。它通过封装常用数据结构和系统功能,显著提升了 C 语言开发的效率和可移植性。
2025-06-24 20:39:25
733
原创 Meson介绍及编译Glib库
Meson介绍及编译Glib库Meson(The Meson Build System)是个项目构建系统,类似的构建系统有 Makefile、CMake、automake …。 Meson 是一个由 Python 实现的开源项目,其思想是,开发人员花费在构建调试上的每一秒都是浪费,同样等待构建过程直到真正开始编译都是不值得的。
2025-06-24 20:37:20
792
原创 QT6中控件QScrollArea
QT6中控件QScrollAreaQScrollArea 是 Qt 中用于创建可滚动区域的容器控件,当内容超出可视区域时,会自动显示滚动条。在 QT6 中,它保持了与之前版本相似的接口,但进行了内部优化。
2025-06-23 20:49:15
645
原创 QT6工程各种路径详解
QT6工程各种路径详解一.当前工作目录1.获取方法: #include <QDir> qDebug() << "当前工作目录:" << QDir::currentPath();
2025-06-23 20:46:34
508
原创 ABI与API定义及区别
ABI与API定义及区别ABI(Application Binary Interface,应用二进制接口)和 API(Application Programming Interface,应用程序接口)是软件工程中两个核心概念,本质区别在于作用层级与交互对象。
2025-06-19 21:58:20
960
原创 QT6与VS下实现没有CMD窗口的C++控制台程序
QT6与VS下实现没有CMD窗口的C++控制台程序普通的控制台程序都会有一个CMD的黑色框,有时候需要在程序中调用一个exe程序,不想CMD窗口出现,本文讲述多种设置方法
2025-06-19 21:56:10
836
原创 freeRTOS之队列(queue)
freeRTOS之队列(queue)队列(queue)可以用于"任务到任务"、“任务到中断”、"中断到任务"直接传输信息。核心功能:线程安全:自动处理多任务访问时的互斥问题。数据复制:入队时复制数据(而非引用),避免内存共享风险。阻塞机制:当队列满 / 空时,任务可选择阻塞等待。优先级支持:高优先级任务优先获取队列资源。
2025-06-18 20:31:15
886
原创 C++中std命名空间介绍与使用
C++中std命名空间介绍与使用命名空间(Namespace)的基本概念命名空间是 C++ 中用于组织代码的一种机制,可避免不同库或模块之间的命名冲突。例如:若两个库都定义了名为 sort 的函数,直接调用会引发冲突。使用命名空间可区分:lib1::sort() 和 lib2::sort()。
2025-06-17 20:58:26
537
原创 C语言中errno错误码定义及使用
C语言中errno错误码定义及使用在 C 语言中,errno是一个用于标识程序运行时错误的全局变量。当系统调用或库函数执行失败时,通常会设置errno以指示具体的错误类型。
2025-06-17 20:55:11
932
原创 C语言编译优化实战与技巧
C语言编译优化实战与技巧C语言编译优化是提升程序性能的核心手段,涉及从源代码到机器码的多层次转换,下面从优化级别、常用技术、内存管理、指令调度等多个维度详细介绍。
2025-06-16 20:57:30
720
原创 C语言环形缓冲区的设计与应用
C语言环形缓冲区的设计与应用在嵌入式系统中,环形缓冲区(Ring Buffer) 是处理数据流的核心数据结构,尤其适用于异步通信、实时数据流处理及资源受限场景。其价值在于以极低的内存开销实现高效、安全的数据传递,避免资源竞争与数据丢失。
2025-06-16 20:53:53
893
原创 单元测试与QTestLib框架使用
单元测试与QTestLib框架使用在软件开发中,单元测试是指对软件中最小可测试单元(通常是函数、类的方法)进行隔离的、可重复的验证。
2025-06-06 20:29:45
1473
1
原创 AI之MCP协议介绍
AI之MCP协议介绍MCP(Model Context Protocol,模型上下文协议)是由Anthropic公司(Claude大模型的母公司)于2024年11月25日发布的一种开放通信标准协议,旨在解决目前AI大模型因为数据孤岛限制而无法充分发挥潜力的问题,统一大模型语言(LLM)与外界数据源和工具之间的通信协议,它就像 USB-C 接口一样,提供了一种标准化的方法,将 AI 模型连接到各种数据源和工具,为 AI 应用提供了连接万物的接口。
2025-06-05 20:20:43
104
原创 C及C++编译链接过程详解
C及C++编译链接过程详解C/C++程序的构建是一个多阶段的过程,从源代码到最终可执行文件需要经历预处理、编译、汇编和链接四个主要阶段。完整构建过程(GCC)(1)预处理gcc -E main.c -o main.i(2)编译gcc -S main.i -o main.s(3)汇编as main.s -o main.o(4)链接ld main.o -o app -lc
2025-06-05 20:13:48
932
原创 VS下C++及C#项目打包发布方法
VS下C++及C#项目打包发布方法一.打包为单一exe文件1.打开项目属性页(右键项目 → 属性)2.选择配置(如 Release)3.项目属性→ C/C++ → 代码生成→ 运行库 将 运行时库(Runtime Library) 设置为: /MT(Release 模式) /MTd(Debug 模式)注意:不要选择 /MD 或 /MDd,否则会动态链接运行时库。
2025-06-03 21:12:37
1400
原创 VS2022下C++ Boost库安装与使用使用
VS2022下C++ Boost库安装与使用使用Boost 是一个广泛使用的 C++ 库集合,提供了许多高质量、可移植、高效的工具和组件,被视为 C++ 标准库的延伸。自 1998 年成立以来,Boost 已成为 C++ 社区的核心资源,许多 Boost 库通过实践验证后被纳入 C++ 标准(如智能指针、正则表达式、多线程),因此被称为 “C++ 的未来实验室”。2.跨平台兼容:支持 Windows、Linux、macOS 等主流操作系统,以及 GCC、Clang、MSVC 等编译器。
2025-06-03 21:10:46
1125
原创 matIo库及.mat数据格式介绍
matIo库及.mat数据格式介绍.mat 是 MATLAB 软件的标准二进制数据存储格式,用于保存变量、矩阵、数组、结构体等数据类型。其名称源于 “MATLAB Data” 的缩写,最初设计为高效存储和加载 MATLAB 环境中的数据,后来逐渐成为科学计算、工程分析等领域的通用数据格式之一。
2025-05-22 20:31:55
918
原创 MIPI摄像头linux驱动开发步骤及说明
MIPI摄像头linux驱动开发步骤及说明本文是 MIPI(Mobile Industry Processor Interface)摄像头驱动开发 的详细步骤及技术说明,基于 Linux 内核(V4L2 音视频框架) 和嵌入式系统开发场景,涵盖硬件初始化、协议处理、驱动实现及调试全流程。
2025-05-22 20:30:01
2033
QT6采用QCustomPlot库绘制曲线
2025-07-18
QT实现升级进度条页面
2024-09-22
keil下自定义lib静态库工程
2024-06-22
Qt中接收麦克风数据并保存为WAV文件
2024-06-04
QT6实现usb摄像头的显示与抓拍功能
2024-01-07
QT6实现音频输出功能
2024-03-29
QPainter绘制图形代码示例.zip
2024-02-19
QT5.12实现多线程代码示例
2024-02-18
QT中动态库制作及调用
2024-01-14
QT通过QPdfWriter类实现pdf文件生成与输出完整工程示例
2024-01-13
Qwt库画Spectrogram频谱图工程代码
2024-01-01
USB通讯程序开发调试工具
2023-12-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人