自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

m0_45463480的博客

精心创作,共同进步。

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

原创 我的 TRAE 编程体验-热门 MCP Server 详解和智能体搭建

本文介绍了TRAEIDE开发中常用的MCPServer工具,重点解析GitHubMCPServer的核心功能(仓库管理、Issue追踪、PR协作等)及其在AI辅助开发、自动化工作流等场景的应用。同时提供了从市场安装MCPServer的简易步骤,并展示了可一键导入的自定义智能体模板,帮助开发者快速配置个性化开发环境。这些工具能有效提升代码管理效率和团队协作能力。

2026-01-11 12:54:46 349

原创 我的 TRAE 编程体验-简介篇

TRAE是一款集成AI功能的智能开发平台,提供个人版和专业版选择,支持主流编程语言和开发框架。其核心功能包括:1)双重开发模式(传统IDE模式与AI主导的SOLO模式);2)智能编程工具CUE,支持代码补全、智能修改等功能;3)SOLOCoder智能体,可处理从需求分析到代码生成的全流程开发;4)MCP协议支持扩展第三方工具集成。平台覆盖编码、调试、测试、部署全流程,适用于独立开发者和团队项目,特别在大型项目中表现突出。支持Windows和macOS系统,可通过官网下载安装。

2026-01-09 22:15:09 645

原创 Qt 内置样式的使用

本文介绍了一个基于Qt框架的应用程序样式设置实现。通过QStyleFactory获取当前平台支持的GUI样式列表,并在下拉框中显示这些选项。当用户选择不同样式时,程序会动态创建对应样式对象并应用到整个应用程序,同时在下方的状态栏显示当前使用的样式类名。该功能展示了Qt框架提供的跨平台样式切换能力,能够为应用程序提供不同的视觉风格,如Windows经典、Windows XP、Windows Vista和Fusion等样式。

2026-01-05 15:02:01 65

原创 Qt+RTAE打造的个人常用工具管理器

摘要:本文介绍了一个基于Qt框架开发的实用工具管理器,支持文件、文件夹和网页工具的集中管理。该工具采用单例模式和工厂模式设计,提供工具分类、快速执行和常用工具管理功能。项目已开源,可通过网盘链接下载(提取码:kjwj)。该应用实现了工具的统一接口设计,通过抽象基类与派生类结构满足不同工具需求,为用户提供便捷的日常工具管理解决方案。

2025-12-28 13:59:22 30

原创 MouseXYTest_Global 是一个基于 Qt 框架开发的 Windows 平台 高级全局鼠标输入测试工具

摘要:MouseXYTest是一款基于Qt框架的鼠标输入监控工具,采用Windows RawInput API实现全局输入捕获,支持多设备识别。提供实时数值显示、13项详细指标监控、数据曲线可视化等功能,具备智能分析能力(阈值设置、方向判断)和便捷操作(10+快捷键)。采用纯C++开发,具有分层架构设计和鲁棒性保障,适用于硬件测试、设备调试、教学研究等场景。项目开源地址:git@gitcode.com:JayQt/MouseXYTest_Global.git(150字)

2025-12-27 20:31:13 76

原创 Atollic TrueSTUDIO for STM32 9.3.0 是一款专为 STM32 微控制器 设计的集成开发环境(IDE)

摘要:Atollic TrueSTUDIO 9.3.0 是 STM32 微控制器的 Eclipse 集成开发环境(IDE),2018 年后被 STM32CubeIDE 取代。它提供代码编辑、GNU 工具链编译、GDB 调试、外设寄存器可视化等功能,但存在兼容性限制。ST 官方推荐迁移至 STM32CubeIDE,后者整合了 CubeMX 配置工具并持续更新。若需使用 TrueSTUDIO,可从 ST 官网存档下载,但需注意驱动安装和项目兼容性问题。新项目建议直接采用 STM32CubeIDE 以获得更完善的

2025-12-12 10:25:02 907

原创 Beyond Compare 4 是一款由 Scooter Software 开发的专业级 文件和文件夹对比/合并工具

Beyond Compare 4 是专业级文件对比工具,支持文本、二进制、图像等多种格式的精确比对,具备文件夹同步、版本控制集成和三向合并功能。适用于代码对比、日志验证、配置同步等场景,提供30天试用和永久授权。支持命令行自动化,可生成对比报告。相比免费工具功能更全面,但需注意使用正版以避免安全风险。典型应用包括程序员解决代码冲突、运维同步服务器文件等,是专业用户的效率利器。

2025-12-12 09:45:12 731

原创 Qt + VS2017 编译缺少库,在对方设备无法运行,推荐几种做法。

摘要: 当使用Visual C++运行时库(如msvcp140.dll)的程序在未安装对应环境的工控机上运行时,会提示DLL缺失错误。推荐解决方案:1)优先安装官方Visual C++ Redistributable(标准安全);2)次选将所需DLL与程序一起部署(需遵守微软许可);3)高级方案可改用静态链接(/MT),但存在兼容性和维护问题。建议尽量采用官方Redistributable安装,确保长期稳定性。工控机部署需注意版本匹配和许可限制。

2025-12-12 09:16:55 885

原创 在普通 CMD 中输入 cl 报错:‘cl.exe‘ 不是内部或外部命令

【摘要】Visual Studio 2017的cl.exe无法被CMD识别,原因是PATH环境变量未包含其路径。旧版msvc_make.bat只能临时设置环境变量,推荐使用官方vcvars64.bat脚本(位于VC\Auxiliary\Build目录)来正确配置编译环境。可通过两种方法解决:1) 在CMD中直接调用vcvars64.bat;2) 创建自动启动脚本调用vcvars64.bat后启动Qt Creator。不建议直接修改系统PATH,以避免多版本冲突和兼容性问题。正确使用vcvars64.bat是

2025-12-11 14:14:32 404

原创 一个很棒的modbus库

libmodbus是一个开源的Modbus协议库,支持串口和以太网连接,兼容Linux、Windows等多平台。安装需automake等工具,提供测试程序和文档生成支持。项目采用LGPLv2.1+许可,官网提供详细文档。包含自动构建脚本autogen.sh,可检测系统符号链接支持并初始化构建系统。网盘分享链接提供源码包下载。

2025-11-25 21:18:55 40

原创 Qt历险记精心整理通用C++ 缓冲区和智能指针分享

本文介绍了一个通用的线程安全环形缓冲区管理器和智能指针模板类实现。环形缓冲区基于动态数组和互斥锁实现,支持多线程环境下的高效数据读写操作,提供缓冲区大小调整、清空等功能。智能指针模板采用原子引用计数机制,支持普通类型和数组管理,具备拷贝/移动语义、资源自动释放等特性,兼容STL容器使用。两者均经过严格测试,可直接集成到C++项目中,适用于需要高效内存管理和数据缓冲的场景。

2025-11-07 20:50:43 116

原创 Linux | i.MX6ULL Mqtt 移植教程

本文介绍了MQTT协议在物联网中的应用及其实现工具Mosquitto的移植过程。使用Ubuntu 16.04环境和gcc交叉编译器,详细说明了从X86平台安装测试到ARM开发板移植的完整步骤。重点包括:Mosquitto的安装配置、服务启动测试方法、依赖库openssl和libuuid的交叉编译过程、路径参数修改要点,以及最终在开发板上的功能测试验证。文中提供了具体的命令操作和路径修改示例,强调路径一致性对编译成功的重要性。该移植方案实现了轻量级MQTT协议在嵌入式设备中的应用。

2025-11-02 20:18:03 70

原创 VTK开源视觉库 | NVIDIA Clara Open Models,推出了新一代临床人工智能工作流程

《VTK开源视觉库在医疗AI领域的集成应用》 摘要:本文介绍了将NVIDIA Clara医疗AI模型集成到开源医学图像平台VolView的技术方案。该系统通过三个独立Python服务实现核心功能:1)基于NV-Curate-CTMR-v2的3D解剖结构自动分割;2)基于NV-Reason-CXR-3B的多模态影像问诊交互;3)利用NV-Generate-CTMR-v2生成合成3D CT图像。系统要求NVIDIA GPU(≥24GB显存)、CUDA 11.8+/12.x、Node.js≥18及Python 3

2025-11-02 11:20:54 917

原创 VTK开源视觉库 | 概述

【摘要】VTK(Visualization Toolkit)是一款开源的跨平台可视化工具包,广泛应用于3D图形处理、科学可视化和2D绘图。其核心采用C++编写,支持Python等多种语言接口,具有强大的数据处理和并行计算能力。VTK起源于1993年由三位图形专家开发的教材配套软件,后发展为全球开发者共同维护的先进可视化系统。该系统采用模块化过滤器架构,支持OpenGL渲染和丰富交互功能,适用于医疗成像、工程分析等领域。VTK采用BSD开源许可,对商业和学术用途均无限制,现已成为科学可视化领域的重要工具。

2025-11-01 22:16:32 364

原创 VTK开源视觉库 | 行业应用第一篇

摘要:VTK是一款开源科学数据可视化工具包,提供先进的3D渲染和2D绘图功能。最新推出的VTK.wasm通过WebAssembly技术实现浏览器端高性能3D可视化,支持JavaScript/Python集成和WebGPU渲染。同时发布的ActiViz 9.5为.NET环境提供跨平台3D可视化方案。在材料科学领域,DREAM3D-NX与VTK结合,助力微观结构的三维可视化研究。这些工具正在推动科学可视化技术向Web端和跨平台方向发展。

2025-10-31 21:13:43 896 1

原创 Qt 高级进阶-MVC架构实现客户端和插件交互(串口案例)

本文介绍了一个基于Qt框架开发的串口通信插件系统,采用MVC架构设计。系统包含客户端和插件两部分:客户端实现MVC架构,提供标准接口供插件继承;插件模块实现串口通信功能,包括打开/关闭串口、发送数据等操作。项目采用子目录管理多个pro项目,支持调试和发布两种构建模式,并提供虚拟串口测试工具VSPD用于开发测试。该框架设计实现了代码的低耦合、高复用和易维护性,可作为串口通信开发的参考架构。文章还分享了项目源码,并建议开发者既要掌握技术,也要提升沟通能力。

2025-10-29 21:55:54 544

原创 【LUA教程】LUA脚本语言中文教程.PDF

Lua当今武林,派别林立,语言繁杂,林林总总不计其数。主流文化的C/C++、Java、C#、VB;偏安一隅的Fortran;动态语言中的Perl、Tcl、Ruby、Forth、Python,以及本书介绍的Lua;……,等等等等。再加上世界上那些不知道躲在哪的旮旯的奇奇怪怪的hacker捣鼓出来的异想天开的语言,要想将各类语言囊入怀中,不异于痴人说梦。一开始,Lua 就被设计成很容易和传统的 C/C++整合的语言。这种语言的二元性带来了极大的好处。

2025-10-27 21:11:38 445

原创 嵌入式Lua脚本编程核心概念

Lua脚本语法简明摘要:Lua语法简洁但功能强大,支持单行(--)和多行(--[[ ]])注释。基本语法包括:语句块用do/end包裹;多变量赋值(如a,b=b,a交换值);数值运算(含^指数运算)和字符串连接符"..";逻辑运算中仅false/nil为假;变量默认为全局,需用local声明局部变量。主要数据类型:Nil(未赋值)、Boolean(true/false)、Number(无整数区分)、String(支持转义字符)、Table(可任意类型索引的关联数组)。Table定义使用{

2025-10-25 20:31:52 437 1

原创 Qt6.10 | Qt Bluetooth 蓝牙

本文介绍了QtBluetooth模块的功能和使用方法,包括蓝牙API概述、构建配置(CMake/qmake)、权限管理、平台支持(Linux/macOS特殊处理)、日志设置及许可信息。重点说明Linux平台的后端选择机制,以及macOS上的依赖限制。最后提及蓝牙聊天示例,展示RFCOMM协议通信的实现。全文提供了蓝牙开发的技术要点和注意事项。

2025-10-23 21:46:24 214

原创 Linux | i.MX6ULL 网络测试方法

摘要:本文详细介绍了网络性能测试的搭建与实施过程。测试分为百兆和千兆网络两种场景,需确保网卡、网线及连接模式符合要求。测试采用CS架构,通过Jperf工具进行TCP/UDP通信测试。具体步骤包括:1)检查硬件配置(网卡类型、网线规格);2)安装Java环境;3)设置网络IP确保互通;4)分别进行TCP/UDP测试,其中UDP测试需特别注意MTU设置和带宽参数调整。测试结果以实际吞吐量和丢包率为评估标准,文中提供了完整的测试命令和参数配置示例。

2025-10-21 21:01:56 69 1

原创 Linux | i.MX6ULL 移植 OpenCv2.4.9

本文详细介绍了在i.MX6ULL终结者开发板上交叉编译OpenCV-2.4.9并集成到Yocto文件系统的全过程。主要内容包括:1)搭建Ubuntu14.04交叉编译环境,使用gcc-linaro-4.9.4编译器;2)通过CMake配置OpenCV,修改关键编译参数(WITH_CUDA、CMAKE_EXE_LINKER_FLAGS等);3)QT工程配置要点,需调整INCLUDEPATH和添加_GLIBCXX宏定义;4)最终生成镜像烧录测试。文中特别强调编译过程中的常见错误排查方法,建议通过日志分析缺失组件

2025-10-19 22:16:43 362

原创 C++语言编程规范-全球化(完)

本文总结了C++多语言编程的关键规范:1)使用wchar_t/wstring处理UTF-16,char/string处理UTF-8;2)为UTF-8字符预留1-4字节空间;3)使用标准库函数进行字符属性和区域敏感比较;4)处理Unicode时注意BOM标记;5)避免拼接字符串资源,采用格式化方式;6)资源键名应包含应用场景信息。同时推荐参考业界编程规范文档以提升编程能力。

2025-10-18 20:55:17 793

原创 C++语言编程规范-可移植性(兼容性)

文章摘要:本文讨论了C++程序移植中的关键问题,包括指针截断、数据类型对齐、内存地址假设等。主要建议包括:避免直接使用C++基本数据类型,推荐使用标准类型或重定义类型;注意结构体对齐问题;处理网络字节序转换;避免有/无符号数转换;创建64位常量时使用LL/ULL后缀;区分指针和整型大小;将与编译器/系统相关的代码独立封装。这些措施能有效提高代码的可移植性,减少跨平台移植时的问题。

2025-10-17 22:00:04 659

原创 C++语言编程规范-风格

本文总结了C++编码规范建议,主要包括:1)类命名采用大驼峰式,声明按public/protected/private顺序组织;2)构造函数初始化列表可单行或多行缩进;3)注释推荐使用"//",重要类/函数需添加注释,禁止遗留TODO注释;4)文件组织上公共头文件单独存放,模块目录层次不超过2层,文件前言应简洁。这些规范旨在提高代码可读性和维护性。

2025-10-17 21:29:04 361

原创 C++语言编程规范-并发

多线程编程规范摘要 本文提出了多线程编程中的关键规则和建议:1)共享资源访问必须加锁,推荐使用RAII机制管理锁;2)确保锁职责单一,避免多资源共用锁;3)锁范围应最小化,仅保护资源操作代码;4)严禁嵌套加锁,若必须则需统一加锁顺序。建议包括:优先使用数据库/共享内存/Socket等线程安全IPC机制;设计可重入函数时减少全局变量使用;锁中避免调用不可控函数以防死锁;警惕锁内跳转语句导致锁未释放。这些规范能有效避免死锁、数据竞争等问题,提升多线程程序的健壮性。(150字)

2025-10-16 21:47:00 852

原创 C++语言编程规范-程序效率

本文探讨了C++语言性能优化的关键原则和实践建议。首先强调性能优化应基于准确测量,而非盲目归因于编程语言。文章提出C++的"零开销"设计原则,并给出具体优化建议:选择合适算法和数据结构、使用初始化列表、避免临时对象、优先传递引用、采用前置自增、合理使用内联函数等。同时指出应注意标准库性能特点、对象池管理内存、大数组初始化效率等问题。最后建议在函数内部避免小块内存分配,改用栈空间。这些优化方法在保证代码可读性的前提下,可有效提升C++程序性能。

2025-10-15 21:26:25 860 1

原创 C++语言编程规范-标准库

本文总结了C++标准库使用规范,主要包括:1. 禁止使用已废弃的auto_ptr,推荐使用shared_ptr/unique_ptr;2. 智能指针管理单对象时禁止用于数组;3. 处理循环引用时需使用weak_ptr;4. 推荐使用make_shared创建shared_ptr;5. 同一对象应统一使用原生指针或智能指针;6. 从enable_shared_from_this派生需要返回自身shared_ptr的类;7. 避免混用不同版本模板库编译的模块;8. 不保存string::c_str()返回的临时

2025-10-13 20:16:06 779

原创 ubuntu 修改主机名

虽然 hostnamectl 已经更新了核心配置,但您还需要手动更新 /etc/hosts 文件。这个命令会显示系统的静态主机名(Static hostname)、瞬态主机名(Transient hostname)和一些其他系统信息。这是在 Ubuntu 16.04 及以后版本(使用 systemd 的系统)中最标准、最简单且最可靠的方法。再次运行 hostnamectl 命令,您会看到 “Static hostname” 已经更新为您刚刚设置的新名称。打开一个新的终端窗口,您应该能看到主机名已经更新。

2025-10-13 10:03:01 736

原创 C++语言编程规范-异常

文章摘要:C++异常处理是一项需要谨慎使用的强大特性。文章提出了异常处理的基本原则和具体规则:尽量减少异常使用,构造/析构函数禁止抛出异常,确保异常能被捕获且不泄漏资源,模块间接口禁用异常。建议采用就近处理错误原则,确保程序状态符合基本保证(状态正确)、强保证(事务回滚)或无错误保证。通过示例展示了如何正确处理内存分配异常和流操作异常,强调异常安全编码对提升程序健壮性的重要性。(150字)

2025-10-10 22:19:26 939 1

原创 C++语言编程规范-资源分配和释放

本文总结了C++内存管理的核心原则和最佳实践。主要内容包括:1)内存申请后必须检查指针有效性(NULL判断或异常捕获);2)释放内存后立即置空指针防止野指针;3)区分delete和delete[]的正确使用;4)释放复合结构时应遵循从内到外的顺序;5)避免返回局部对象指针;6)建议使用RAII技术(如智能指针)自动管理资源生命周期;7)推荐封装new/delete操作以规范内存管理。这些规则旨在防止内存泄漏、野指针和资源管理混乱等问题,提升代码健壮性。

2025-10-09 22:00:06 854

原创 C++语言编程规范-作用域、模板和 C++其他特性

C++编码规范摘要:1. 使用命名空间避免符号冲突,建议按项目/目录命名,全小写格式;2. 避免在头文件使用using指令,特别是using namespace std;3. 限制嵌套类和局部类的使用;4. 推荐使用静态成员函数或命名空间内的非成员函数替代全局函数;5. 禁用class类型全局变量,建议使用单例模式;6. 避免extern "C"内包含头文件;7. 不推荐使用友元和RTTI;8. 建议使用sizeof(变量)而非sizeof(类型);9. 项目组应统一C++标准版本。规范

2025-09-29 21:13:38 727

原创 Linux | i.MX6ULL Qt5.7Mplayer移植和使用(第二十四章)

本文详细介绍了交叉编译Libmad、Alsa-lib和MPlayer的过程。主要内容包括:1)配置交叉编译环境,设置工具链变量;2)修改Makefile参数,删除不支持的编译选项;3)分别编译三个库文件,指定ARM架构和优化参数;4)测试编译结果,并提供相关资源获取方式。文章提供了完整的配置脚本,适用于在ARM平台(如i.MX6ULL)上移植Qt和多媒体组件。

2025-09-24 13:15:39 121

原创 Qt企业级项目 | 文本、图片、表格转为才PDF存储(直接嵌入自己的项目)

本文介绍了一个基于Qt5的PDF处理工具实现方案,包含文本PDF、图片PDF和表格PDF的生成功能。项目采用C++开发,在VS2002环境下运行,通过OutputPDF类封装核心功能,支持自定义样式表、字体设置、对齐方式等参数。系统分为UI界面层和PDF处理层,界面采用选项卡式布局,包含文本编辑区、图片预览区和表格设置区;底层实现PDF渲染、打印支持等功能。项目文件可通过百度网盘下载(提取码:vkvm),适用于企业级应用开发。

2025-09-24 09:39:09 248

原创 Linux | i.MX6ULL Sqlite3 移植和使用(第二十三章)

本文介绍了将SQLite3数据库移植到ARM开发板的过程。首先从SQLite官网下载最新版本源码,使用交叉编译工具配置编译选项(--host指定工具链,--prefix指定安装路径)。完成编译安装后,在开发板上测试创建表和查询操作。接着演示了用C语言操作SQLite3的流程:创建表、插入数据、查询数据,并给出了示例代码。最后说明了如何交叉编译C程序,指定SQLite头文件和库路径。整个过程涵盖了从源码编译到实际应用的完整步骤,适合嵌入式开发人员参考。

2025-09-21 17:37:25 293

原创 Qt企业级项目 | 主题样式表优美的很(直接嵌入自己的项目)

本文介绍了一个支持多种主题样式的Qt UI项目,提供了5种预设主题和动画效果,可在VS2022或Qt环境下编译。项目采用pri文件管理,具有良好扩展性,代码已开源分享。文中详细展示了样式表编辑器的实现代码,包括样式加载、应用等功能,并提供了Qt样式表的使用参考,涵盖背景色设置、控件定制、常见问题解决方案等,帮助开发者快速实现美观的UI界面设计。

2025-09-21 13:47:47 298 1

原创 Linux | i.MX6ULL Modbus 移植和使用(第二十一章)

如果每一台工业控制设备,都有一种自定义的协议,那将是很恐怖的,modbus 协议可以用在所有控制设备上,所有的工业控制设备都可以兼容modbus 协议。modbus 是纯粹的数据协议,和RS232、RS485 和网络等协议没有一点关系,如果在串口 RS232 上使用 modbus 协议,modbus 只处理通过串口发送前和串口接收后的数据,串口只是在发送数据前使用 modbus 协议来转换数据,接收数据之后,将数据通过 modbus 协议转换出来。更多知识,诸位慢慢挖掘吧!点击下方卡片 关注我。

2025-09-18 23:29:38 872

原创 UML | 最好的类图设计工具结合CSDN天启呈现-领路架构师

《天启官网开放AI生成功能》摘要:天启官网(tianqi.gitcode.com)推出新版AI生成功能,已修复此前保存问题,支持直接导出PDF。开发者表示该工具如同"程序员的潘多拉魔盒",在提升效率的同时也引发职业反思,戏称"程序员终将被自己开发的AI淘汰"。新功能包括类图生成等实用选项,操作流程分为确认、生成、展示三个步骤。(98字)

2025-09-14 12:01:41 187

原创 C++语言编程规范-类的构造、赋值和析构

本文总结了C++类设计中8个关键要点:1.包含成员变量的类必须定义构造函数;2.单参数构造函数应声明为explicit避免隐式转换;3.资源管理类需自定义拷贝构造、赋值和析构函数;4.operator=应返回*this引用支持连续赋值;5.operator=中需检查自赋值情况;6.基类析构函数应设为公有且虚函数;7.避免在构造/析构函数中调用虚函数;8.拷贝构造和赋值操作符参数应为const引用。这些规范能有效避免内存泄漏、野指针、隐式转换等问题,确保对象构造、拷贝和析构的正确性。

2025-09-14 10:53:39 387

原创 Qt5 | TCP服务器开源模板工程实战

本文介绍了一个基于Qt5框架开发的高性能多线程TCP服务器实现方案。该项目采用Reactor设计模式和线程池架构,支持并发客户端连接管理,具备完整的线程安全机制。核心特性包括:Qt5网络模块构建、多线程并发处理、事件驱动编程模型、跨平台支持(Windows/Linux/macOS)。项目结构包含TCP服务器核心类、客户端连接管理器、线程池实现等模块,支持通过qmake或CMake编译。服务器提供连接管理、消息收发、错误处理等API接口,并采用互斥锁、原子操作等机制确保线程安全。附带Python测试客户端和详

2025-09-12 20:35:02 660

原创 C++语言编程规范-类的设计

本文总结了面向对象设计中类设计的核心原则:1. 职责单一原则,建议用小类代替巨类;2. 信息隐藏原则,强调封装的重要性;3. 接口设计要正交精简;4. 避免暴露私有成员;5. 使用PIMPL模式实现真正的封装;6. 禁止循环依赖;7. 数据成员私有化并提供存取控制;8. 通过PIMPL模式确保私有成员不可见。这些原则旨在构建高内聚、低耦合、易维护的类结构,提升代码质量和可扩展性。

2025-09-10 20:17:51 627 1

嵌入式PC端虚拟串口端口生成及串口调试工具.rar

只要是编程人员,这两个工具你一定要使用。 【1】打开第一个文件Setup.exe,双击setup进行安装,安装位置可以自定义,安装完成后把对号去掉(launch...) 【2】在桌面上找已经安装软件快捷方式【Launch Virtual Serial Port Driver】,右键,打开文件所在位置。 将文件caack中的补丁【vspdpro.exe】拖到文件所在位置,替换,安装完成!

2023-08-08

SQLite是数据库,在Qt中实现,用于存储用户信息

Qt 实现SQLite全部语法 【1】SQLite Qt界面设计 【2】SQLite Qt数据库创建、打开、关闭、删除 【3】SQLite Qt表格的创建 【4】SQLite Qt表格的插入 【5】SQLite Qt表格的查询 【6】SQLite Qt表格的删除 【7】SQLite Qt表格的更新 【8】SQLite Qt表格的结构 【9】SQLite Qt表格的修改 【10】SQLite 常用内置函数举例 1、计算表格行数 2、计算表格某列最大值 3、计算表格某列最小值 4、计算表格某列平均值 5、计算表格某列总和 6、计算一个随机数 7、计算绝对值 8、字符串转化大小写 9、计算字符串长度 10、效果 【11】SQLite 日期函数 【12】SQLite LIKE和GLOB子句(通配符) 【13】SQLite LIMIT子句 (限定行显示) 【14】SQLite 表格排序 (升序、降序) 【15】SQLite GROUP BY子句 (分组) 【16】SQLite HAVING 子句(分组的条件) 【17】SQLite DISTINCT 关键字(去重) 【18】SQLite 交叉连接

2023-06-24

QT EventFilterQChartsQDataStreamQDir

androidandroidopenc 雄甾烷 EventFilterQChartsQDataStreamQDir EventFilterQChartsQDataStreamQDir FileQLabelQPainterQPushButtonQPushButton1 FileQLabelQPainterQPushButtonQPushButton 1 创建日期: 2022/9/18 创建日期:2022/9/18 QSpeech QSpeech 大小:82.5 MB 大小:82.5MB QT Camera solree oue QT相机独树OUE 文件夹: build-QPainte 文件夹:Build-QPainte QT_RB QT_Rb QTextCodecQTWidgetwidgetTEST QTextCodecQTWidgetwidgetTEST V4L2 camera display QThreadV4L2 camera display QTimerYD-Ul V4L2相机显示QThreadV4L2相机显示QTimerYD-Ul

2023-02-19

QT 文件操作 事件过滤器 鼠标移动事件

QT学习资料 QT 文件操作 事件过滤器 鼠标移动事件

2023-02-19

基于数据结构商品购物系统 项目.zip

#include <stdlib.h> #include <stdio.h> #include <string.h> #include "program.h" //注册资源管理器 (商品头结点 购物车头结点 管理器头节点 初始化) extern node_t *register_resouse_manage(void) { //为管理结构体申请一块内存 node_t *new_manage_node; new_manage_node = malloc(sizeof(node_t)); //存储商品信息或购物历史信息 if(new_manage_node == NULL) { free(new_manage_node); return NULL; } //申请商品链表头结点 申请成功应该初始化 传入文件信息 new_manage_node->com_info_list = request_commodity_list_node(); printf(

2022-05-01

第八天-内核链表排序.zip

第八天-内核链表排序.zip

2022-05-01

第七天-二叉树与排序算法.zip

int main(int argc, char **argv) { // 打开一个包含百万数据级别的文件 FILE *src = fopen("numbers.txt", "r");//只读方式打开 if(src == NULL) { perror("打开文件失败"); exit(0);//结束程序 } // 1,将原始数据文件,分割成N个有序的子文件 bool done = false; char file[20]; int N = 0; int wanted = 10*10000; // 假设每次只能读取10万个数据 int infact = wanted;//狂铁:10万伏特 while(1) { // 试图从文件读取 wanted 个数据 unsigned *data = calloc(wanted, sizeof(unsigned));//申请10万块,每块4字节 for(int i=0; i

2022-05-01

第六天-内核链表及二叉树.zip

#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <list.h> struct student_info{ char name[4096];//姓名 short age;//年龄 float height;//身高 }; //大结构体 typedef struct list_node{ struct student_info data; struct list_head list;//导入内核链表小结构体 }node_t;//链表节点类型 //申请空间 node_t *request_link_list_node(void) { node_t *new_node; new_node = malloc(sizeof(node_t)); if(new_node == NULL) { perror("申请链表节点失败"); return NULL; }

2022-05-01

内核链表代码111.zip

/* * @Author: your name * @Date: 2021-09-01 17:01:47 * @LastEditTime: 2021-09-01 17:35:15 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \Desktop\kernel_list\main.c */ #include <stdio.h> #include <stdlib.h> #include "list.h" typedef struct big{ int data; struct list_head list; }node_t; typedef struct one{ int data; struct list_head list; }node_one_t; typedef struct two{ int data; struct list_head list; }node_two_t; no

2022-05-01

第三天-队列与栈的逻辑与单向循环链表.zip

#include <stdio.h> #include <stdlib.h> #include <stdbool.h> typedef struct list_node{ int data; struct list_node *next; }node_t;//链表节点类型 //不安全的遍历 #define list_for_each(head, pos) for(pos=head->next; pos!=head; pos=pos->next) //安全的遍历 #define list_for_each_safe(head, pos, n) for(pos=head->next, n=pos->next; pos!=head; pos=n, n=n->next) node_t *request_link_list_node(void) { node_t *new_node; new_node = malloc(sizeof(node_t)); if(new_node == NULL) { perror

2022-05-01

第四天-双向循环链表.zip

int main(void) { int input_value; node_t *list_head, *new_node;//申明两个链表节点的指针变量,其中list_head用来存放链表的头节点,new_node用来临时存放一下新申请的节点 //新建链表头节点 list_head = request_list_node(); while(1) { scanf("%d", &input_value); if(input_value > 0) { //新建节点 new_node = request_list_node();//新申请一个节点 new_node->data = input_value;//将数据存放进去这个节点当中 //将这个新的节点插入到list_head所对应的表格中 insert_node_to_list_tail(list_head, new

2022-04-25

第二天-单向链表.zip

int main(void) { int input_value; node_t *list_head, *new_node; //新建头节点 list_head = request_link_list_node(); if(list_head == NULL) return -1; list_head->data = -1; while(1) { scanf("%d", &input_value); if(input_value > 0) { //新建节点 new_node = request_link_list_node(); new_node->data = input_value; //将节点插入到表格当中 insert_node_link_list(list_head, new_node);

2022-04-23

QT软件工具使用.zip

解压文件夹--》配置windows环境变量(右键计算机--》属性--》更改设置--》高级--》环境变量--》Path中添加你解压的mplayer.exe所在的路径)

2022-04-23

第一天-数据结构概念及顺序表.zip

#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define SQL_NUMB 10 typedef struct sequance_list{ int array[SQL_NUMB];//这个是用来放数据的 int last;//这个是用来记录上面的数组用到第几个元素的 }sql_t; //函数返回结构体地址【因为这样才能利用里面的数据】 sql_t *request_sequence_list(void) { sql_t *new_sql;//定义一个结构体变量 //堆是由程序员自己申请的,所以要自己使用释放函数释放,栈是系统自己释放 new_sql = malloc(sizeof(sql_t));//申请一块结构体大小的内存 if(new_sql == NULL) { perror("申请内存失败"); return NULL; } new_sql->last = -1;//初始化以下,数组是从0开始保存数据,-1就是没有数据 return new_sql;//返回

2022-04-23

QT中项目第二个.zip

//识别图片 void CarSystem::on_regBt_clicked() { //识别--pPath是成员变量保存车头照片路径 cv::Mat plateImage = cv::imread(pPath.toUtf8().data());//要识别的车牌照片路径(要清晰,正面) //定义一个容器存放识别结果 //RunPiplineAsImage()根据你提供的车牌照片识别车牌 std::vector<pr::PlateInfo> res = carPrc->RunPiplineAsImage(plateImage,pr::SEGMENTATION_FREE_METHOD); float conf = 0; //保存识别的车牌号码 std::string plateNumber = ""; //新式for循环 for (pr::PlateInfo st : res) { if (st.confidence>0.70) //判断识别率,识别结果中识别率高于90% {

2022-04-23

10.QT项目第一个.zip

#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDir> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); pp=2; //设置窗口标题 setWindowTitle("客户端008"); //初始化套接字对象 sock=new QTcpSocket(this); //绑定客户端自己的ip和端口号 sock->bind(QHostAddress("192.168.24.86"),7000); //关联readyRead()信号 connect(sock,SIGNAL(readyRead()),this,SLOT(recvservermsg())); //设置水平头 --》树状列表框的树根 ui->treeWidget->setHeade

2022-04-23

1.QT环境搭建,QT工程,ui界面设计,代码登录

1.QT环境搭建,QT工程,ui界面设计,代码登录

2022-04-17

2.QString,信号与槽,设计ui的两种方式

2.QString,信号与槽,设计ui的两种方式

2022-04-17

3.多界面跳转,界面传递参数,布局管理器

3.多界面跳转,界面传递参数,布局管理器

2022-04-17

4.消息盒子,对话框,定时器,日期和时间

4.消息盒子,对话框,定时器,日期和时间

2022-04-17

5.列表框,交叉编译QT程序,QT控制硬件,多进程

5.列表框,交叉编译QT程序,QT控制硬件,多进程

2022-04-17

6.多线程,菜单栏,打包QT程序,其它组件

6.多线程,菜单栏,打包QT程序,其它组件

2022-04-17

7.网络编程,Http和JSON解析,事件

7.网络编程,Http和JSON解析,事件

2022-04-17

7.QT数据库入门学习

7.QT数据库入门学习

2022-04-17

9.串口编程QT实现教程

9.串口编程QT实现教程

2022-04-17

语音离线识别包,可通过局域网通信实现语音交流

语音离线识别包,可通过局域网通信实现语音交流

2022-04-17

RFID射频识别你了解多少,开车刷卡,蓝牙刷卡,门禁卡等等,代码实现编写,A,B命令字带你掌握

RFID射频识别你了解多少,开车刷卡,蓝牙刷卡,门禁卡等等,代码实现编写,A,B命令字带你掌握

2022-04-17

串口编程让你了解什么是同步和异步吗?进来看看

串口编程让你了解什么是同步和异步吗?进来看看

2022-04-17

led驱动-各种版本的mplayer-arm+linux-gnueabi-5.4.0.tar.xz+Qt-Embedded-5.

LED驱动:GEC6818开发板上的灯驱动 各种版本的mplaye: 音视频播放器,使用命令即可播放,支持win10和开发板,应用于各种场合,特别是语音识别技术,很多毕设都是用这个做的。 gcc编译工具:arm+linux-gnueabi-5.4.0.tar.xz, 解压命令:tar -zxvf arm+linux-gnueabi-5.4.0.tar.xz linux或者开发板编译工具,gcc main.c -o main生成可执行文件,,,运行 ./main QT交叉编译工具:Qt-Embedded-5 (1)把我给的5.4.0的编译器拷贝到家目录,然后解压 tar -xf arm-linux-gnueabi-5.4.0.tar.xz (2)配置一下环境变量 export PATH=你的新的arm-linux-gcc所在的路径:$PATH //一次性的

2022-04-05

JLINK使用驱动下载,ST-LINK驱动及教程,STM32F4串口下载软件(FLYMCU),ST-LINK官方驱动.zip

之前所有正点原子 STM32 教程讲解的调试工具都是以 JLINK 为例。由于德产 J-LINK 价格非常昂贵,而国产 J-LINK 因为版权问题将在万能的淘宝销声匿迹。所以我们有必要给大家介绍 JTAG/SWD 调试工具中另外一个主流仿真器 ST-Link 的使用方法,让大家在今后的 STM32学习中,能熟练掌握 JTAG/SWD 调试配置方法。 如果你已经了解了 JLINK 的使用方法,那么 ST-Link 的使用方法将会非常简单,几乎 99% 的操作方法都是一模一样的。几乎所有 JTAG/SWD 仿真器的使用都有下面三个方面的知识: 1. 驱动的安装。 2. 编程软件(MDK)配置。 3. 固件升级方法

2022-04-05

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

TA关注的人

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