自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (3)
  • 收藏
  • 关注

原创 智能指针shared_ptr、unique_ptr 和 weak_ptr 的性能对比测试

本文通过多场景测试对比了C++三种智能指针的性能表现。测试结果显示:在独立对象创建销毁场景下,unique_ptr比shared_ptr快1.3倍;在容器操作场景中,unique_ptr移动语义比shared_ptr拷贝语义快2.5倍;在多线程共享场景下,unique_ptr加锁方案最慢,shared_ptr比其快1.8倍。测试验证了unique_ptr在非共享场景的性能优势,而shared_ptr在多线程共享时表现更优。weak_ptr在多线程场景中表现介于两者之间。开发者应根据实际需求选择合适的智能指针

2026-01-14 08:07:40 330

原创 c++ 互斥锁mutex 和原子操作在 数据互斥操作方面的效率对比

本文对比了C++多线程编程中三种同步方式的性能差异:互斥锁(std::mutex)、原子操作(std::atomic)和CAS操作(compare_exchange_weak)。测试采用4个线程执行10万次递增操作,结果显示:原子操作最快(平均0.05微秒/次),互斥锁次之(0.12微秒/次),CAS操作最慢(0.18微秒/次)。原子操作直接使用CPU硬件指令,性能最优;互斥锁通过系统调用实现同步;CAS操作因需多次重试导致性能下降。该测试为多线程编程中的同步方式选择提供了性能参考依据。

2026-01-13 08:16:14 10

原创 VSCode 终端中文乱码解决

原因:VS Code默认使用UTF-8编码,而Windows系统的终端(如CMD)默认使用GBK编码。解决方法:在终端输入 chcp 65001 (65001是UTF-8的代码页)vscode 再终端运行代码时 中文乱码。

2026-01-12 08:07:09 97

原创 正则表达式介绍

正则表达式(Regex)是一种强大的文本处理工具,通过特定字符组合描述文本模式,广泛应用于搜索、替换和验证操作。基础语法包括普通字符、特殊元字符(如.*^$)、预定义字符类(如\d\w\s)以及分组引用功能。高级用法涵盖贪婪/非贪婪匹配、零宽断言和分支结构。文章提供了常见应用场景的正则示例,如匹配邮箱、手机号、URL等。掌握这些规则能有效提升文本处理效率,但需注意不同编程语言中的实现差异。

2026-01-07 07:48:22 868

原创 修改QComboBox 元素Item 样式

摘要:解决QComboBox在QSS中使用QAbstractItemView::item修改样式无效的问题。原因是QComboBox默认视图对样式表支持不完善。解决方案有两种:1) 为每个QComboBox显式设置视图为QListView;2) 创建继承QComboBox的自定义类ExComboBox,在构造函数中统一设置视图。后者更高效,可全局替换使用。核心代码为setView(new QListView()),通过重写控件类实现样式表的完整支持。

2026-01-06 08:14:50 94

原创 Qt5嵌入式linux 移植

本文详细介绍了在ARM开发板上移植Qt5.14.2的完整流程。主要内容包括:1)前期准备工作,包括交叉编译工具链、Qt源码包等环境搭建;2)触摸屏库tslib的编译配置;3)PC版Qt的编译安装及常见问题处理;4)ARM版Qt的交叉编译过程;5)QtCreator的安装配置方法。文章重点阐述了编译过程中的关键步骤和常见错误的解决方案,如swap分区调整、依赖库安装等,为嵌入式Qt开发提供了实用指导。通过本文步骤可完成Qt在ARM平台的完整移植,为后续嵌入式应用开发奠定基础。

2026-01-05 08:11:14 997

原创 QT linux下 虚拟键盘使用及注意事项

本文总结了在Ubuntu系统下使用Qt开发时配置虚拟键盘的方法及常见问题解决方案。配置要点包括在pro工程文件中添加virtualkeyboard模块,设置环境变量QT_IM_MODULE,以及针对数字输入和焦点管理的特殊设置。针对虚拟键盘一闪而过的问题,发现是Wayland显示系统的兼容性问题,可通过切换为xcb模式解决。对于悬浮框自动关闭的问题,建议关闭Qt::Popup属性并手动处理关闭逻辑。这些经验为在Linux环境下开发Qt应用的虚拟键盘功能提供了实用参考。

2026-01-04 08:09:09 329

原创 c++ 语言教程——17面向对象设计模式(六)

本文介绍了三种行为型设计模式:访问者模式、中介者模式和解释器模式。访问者模式通过分离数据结构与操作,支持在不修改元素类的情况下添加新操作,适用于操作频繁变化的场景,但会破坏封装性。中介者模式通过引入中介对象来协调多个对象间的交互,降低耦合度,适用于需要集中管理复杂交互的系统。文章通过C++代码示例分别展示了访问者模式在商品计价场景的应用,以及中介者模式在聊天室系统中的实现,分析了各自的优缺点和适用场景。

2025-12-25 15:31:51 954

原创 c++ 语言教程——16面向对象设计模式(五)

本文介绍了四种常见的行为型设计模式:责任链模式、命令模式、备忘录模式和状态模式。责任链模式通过链式结构处理请求,降低发送端和接收端的耦合;命令模式将请求封装为对象,支持撤销、重做等操作;备忘录模式在不破坏封装的前提下保存对象状态,支持状态恢复;状态模式允许对象在内部状态改变时改变其行为。每种模式都包含C++代码示例,并分析了其优缺点,如责任链模式可能导致性能下降,命令模式会增加代码复杂度等。这些模式为解决特定场景下的软件设计问题提供了有效方案。

2025-12-24 07:53:20 625

原创 c++ 语言教程——15面向对象设计模式(四)

本文介绍了四种常见的行为型设计模式: 策略模式:将一组算法封装成独立类,使它们可以互换。适用于运行时动态选择不同算法的情况,避免了多重条件判断,但会增加类的数量。 模板方法模式:定义算法骨架,将某些步骤延迟到子类实现。适用于多个类算法结构相同但部分步骤不同的场景,提高了代码复用性。 观察者模式:定义对象间一对多依赖关系,当主题状态改变时自动通知所有观察者。适用于事件处理、数据绑定等场景。 迭代器模式(未展示完整代码):提供一种顺序访问聚合对象元素的方法,而不暴露其内部表示。 每种模式都通过示例代码展示了实现

2025-12-23 07:40:53 873

原创 c++ 语言教程——14面向对象设计模式(三)

本文介绍了四种常用的结构型设计模式:外观模式、桥接模式、组合模式和享元模式。外观模式通过提供统一接口简化复杂子系统调用,如智能家居系统;桥接模式将抽象与实现分离,如面包制作的不同方法;组合模式以树形结构处理部分-整体关系,如菜单系统。这些模式各具特点:外观模式简化客户端调用但可能隐藏细节,桥接模式提升灵活性但增加复杂度,组合模式统一处理对象但限制类型。设计模式的选择应结合实际需求,权衡优缺点,以实现代码的高效组织和维护。

2025-12-22 08:15:34 978

转载 C++日志库 - 18种方法选型

本文调研了18种C++日志记录方法,重点推荐3种典型方案:Qt内置的qInstallMessageHandler、谷歌的Glog和轻量级的Easylogging++。qInstallMessageHandler是Qt原生方案,支持自定义日志输出;Glog提供C++风格的流操作;Easylogging++仅需单个头文件即可使用。文章详细比较了各方案的特性、适用场景和推荐指数,其中qInstallMessageHandler和Glog获得五星推荐。此外还介绍了Log4cplus、Qslog等其他15种日志方案的

2025-12-17 08:59:41 55

原创 c++ 语言教程——13面向对象设计模式(二)

本文介绍了三种结构型设计模式:适配器模式、装饰器模式和代理模式。适配器模式通过类适配器(继承)或对象适配器(组合)实现接口转换,适用于接口不兼容或系统扩展场景。装饰器模式动态添加对象功能,避免子类膨胀,但可能增加复杂性。代理模式控制对象访问,常用于访问控制、日志记录等场景。三种模式各有优缺点,适配器提高复用性但可能降低可读性,装饰器灵活但可能影响性能,代理增强控制但增加间接调用。文中提供了C++实现示例,展示了各模式的具体应用方式。

2025-12-17 08:06:57 625

原创 c++ 语言教程——12面向对象设计模式(一)

本文介绍了四种创建型设计模式:工厂模式、单例模式、建造者模式和原型模式。重点讲解了工厂模式的三种实现方式:简单工厂模式通过一个工厂类创建不同产品;工厂方法模式将实例化延迟到子类;抽象工厂模式创建相关产品族。单例模式确保类只有一个实例,分为懒汉模式(延迟创建)和饿汉模式(立即创建),并讨论了线程安全问题。这些模式通过封装对象创建过程,提高了代码的灵活性、可维护性和复用性,适用于资源共享、全局状态管理等场景。

2025-12-16 07:52:25 969

原创 c++ 语言教程——11什么是面向对象编程

什么是面向对象。面向对象的设计方法,设计原则,设计模式介绍。

2025-12-15 08:32:33 621

原创 c++ 语言教程——10常用头文件和库函数

本文介绍了C/C++中常用的标准库头文件及其核心功能,包括: ctype.h:提供字符分类和转换函数,如isalpha()、tolower()等; math.h:包含数学计算函数,如三角函数、对数、幂运算及取整函数; stdio.h:处理文件I/O、格式化输入输出及文件定位操作; stdlib.h:涵盖内存管理、随机数生成和字符串转换工具; string.h:提供字符串操作和内存块处理功能; time.h:支持时间获取、转换和格式化; <regex>:演示正则表达式的匹配、搜索、替换及迭代操作,

2025-12-10 08:14:36 610

原创 c++ 语言教程——09多线程并发编程

C++11标准提供了完善的多线程支持库,包括线程管理(std::thread)、数据同步(std::mutex)、线程通信(std::condition_variable)和原子操作(std::atomic)等核心组件。通过std::thread可创建执行函数或lambda表达式的线程,使用std::mutex配合std::lock_guard实现线程安全的数据访问,条件变量则用于线程间协调通信,而std::atomic无需加锁即可保证简单操作的原子性。开发时需注意线程的生命周期管理(join/detach

2025-12-09 07:49:43 563

原创 c++ 语言教程——08容器

C++容器类指南摘要 C++标准库提供了丰富的容器类型,主要分为四类:序列容器(vector、list等)、关联容器(set、map等)、无序关联容器(unordered_set等)和容器适配器(stack、queue等)。选择容器时应根据具体需求考虑性能差异,常用容器包括vector、array、list和map。vector作为动态数组,支持快速随机访问和尾部操作;array是固定大小数组,更安全;list适合频繁插入删除;map提供键值映射。使用时应掌握各容器的构造方法、元素访问接口和修改操作,合理使

2025-12-08 08:16:21 529

原创 c++ 语言教程——07模版

摘要:C++模板是泛型编程的核心,包括函数模板和类模板。函数模板通过隐式/显式实例化实现类型推导,支持多参数处理不同类型。类模板通过类型参数化实现代码复用,需要注意类外定义和静态成员初始化。模板特化分为全特化和偏特化,用于处理特殊类型。可变参数模板支持参数个数不固定。标准模板库(STL)通过模板实现了容器、算法等六大组件,如vector、map、sort等,极大提升了编程效率。模板技术显著增强了C++代码的复用性和灵活性。

2025-12-04 07:52:05 374

原创 c++ 语言教程——06内存管理

本文系统介绍了C++内存管理的核心知识。首先分析了5种内存区域(栈、堆、全局/静态区、常量区、代码区)的特点及使用场景。重点讲解了动态内存管理,包括C语言的malloc/free和C++的new/delete机制,以及智能指针(unique_ptr、shared_ptr、weak_ptr)的RAII管理方式。最后总结了常见内存问题(泄漏、悬垂指针、重复释放)的预防措施。全文强调通过智能指针实现自动内存管理,提升程序健壮性,是C++开发者必须掌握的核心技能。

2025-12-03 07:55:02 940

原创 c++ 语言教程——05类和对象

封装是面向对象编程的一大特性,它将数据和行为捆绑在一起,并通过对 public、private、protected这些访问控制符的选择性使用,隐藏内部实现细节,只对外提供必要的接口。通常,成员变量设为 private以保护数据,而一些成员函数设为 public以提供操作数据的接口private: // 私有成员,外部无法直接访问int _year;// 常见的成员变量命名习惯:前加下划线或 'm_' 前缀int _month;int _day;public: // 公有成员,对外提供接口。

2025-12-02 08:10:35 652

原创 c++ 语言教程——04结构体,共用体和枚举

本文介绍了C++中三种重要的复合数据类型:结构体、共用体和枚举。结构体允许组合不同类型数据创建自定义类型,支持成员变量和函数,可通过点运算符访问成员,还可作为函数参数传递。共用体是一种特殊类型,所有成员共享内存空间,同一时间仅一个成员有效,适用于互斥数据场景,能节省内存。枚举用于定义一组命名的常量值,提高代码可读性。这三种数据类型为C++提供了强大的数据组织和抽象能力,是面向对象编程的重要基础。

2025-12-01 08:50:06 768

原创 c++ 语言教程——03指针

本文系统讲解了C++指针的核心概念和应用。指针是存储内存地址的变量,通过&取地址和*解引用操作符实现内存访问。文章详细介绍了指针的声明与初始化、与数组和函数的配合使用、动态内存分配管理,以及const指针等高级用法。同时指出了野指针、内存泄漏等常见陷阱,并推荐现代C++的智能指针(unique_ptr和shared_ptr)来提升内存安全性。掌握指针能够带来编程的灵活性,但需要正确理解其原理并遵循安全实践。

2025-11-28 08:07:31 734

原创 c++ 语言教程——02函数

本文介绍了C++函数的核心概念与应用。主要内容包括:函数的基本组成(返回类型、函数名、参数列表和函数体);参数传递机制(值传递、引用传递和指针传递);函数重载、内联函数、递归函数等特性;以及函数指针的声明、使用及其在现代C++中的替代方案(std::function、lambda表达式等)。文章通过代码示例展示了如何利用函数实现代码复用、模块化设计和回调机制,帮助开发者编写更高效、可维护的C++程序。

2025-11-27 10:44:50 956

原创 c++ 语言教程——01入门

C++是一种高性能的静态编译型语言,支持面向对象、泛型等多种编程范式,广泛应用于操作系统、游戏引擎等领域。文章介绍了C++的基本结构,包括main函数、头文件引入和命名空间使用。详细讲解了变量类型、运算符、流程控制语句(条件判断和循环)以及函数定义等核心概念。此外还介绍了数组和字符串的使用方法,包括一维/多维数组声明和string类的操作。通过基础代码示例展示了C++的基本语法规则,为初学者提供了入门指南。

2025-11-27 10:44:05 587

原创 QT5 安装MYSQL驱动

摘要:本文介绍了在QT5中手动添加MySQL驱动的详细步骤。首先需要安装MySQL数据库,然后修改QT源码目录下的mysql.pro文件配置,包括注释QMAKE_USE、添加MySQL头文件和库路径。由于QT不支持带空格的路径,需要将MySQL安装目录重命名。编译成功后,将生成的qsqlmysql.dll文件拷贝到QT相应平台目录下即可使用MySQL驱动。文中还提供了针对不同编译环境(如mingw64位、msvc64位或32位)的适配方法。整个过程解决了QT5默认不包含MySQL驱动的问题。

2025-11-24 10:02:21 400

原创 zynqmp uboot 网络挂载内核和文件系统,并格式化emmc

本文详细介绍了在无SD卡情况下,通过uboot网络加载方式启动Linux系统的完整流程。首先配置虚拟机的FTP和NFS服务,用于传输内核镜像和挂载根文件系统;然后设置开发板、主机和虚拟机的网络参数;接着在uboot中通过tftp加载内核和设备树,并通过NFS挂载根文件系统;最后将系统固化到eMMC存储中,包括分区格式化、拷贝启动文件和文件系统等步骤。该方法为嵌入式系统开发提供了一种有效的网络启动和固件更新方案,特别适用于调试阶段或缺少存储介质的情况。

2025-11-21 17:49:37 730

原创 Xilinx zynq开发指导

本文介绍了两种在Xilinx ZC706开发板上搭建Linux开发环境的方法。第一种是基于Petalinux的GUI开发方式,详细说明了从环境配置、工程创建到编译打包的完整流程。第二种是传统Linux开发方式,通过手动编译uboot、内核和文件系统进行系统开发。文章对比了两种开发方式的优缺点,Petalinux适合快速构建完整系统,而传统方式则更灵活可控。两种方法都给出了具体的操作步骤和命令示例,为开发者提供了实用参考。

2025-11-17 09:06:31 888

原创 ZYNQ 实现 qspi+emmc启动

本文介绍了在Zynq7000系列上实现从QSPI Flash启动BOOT.bin,并从eMMC加载内核、设备树和文件系统的方法。

2025-11-14 09:36:04 359

原创 ZYNQMP 启动文件打包方法

摘要:ZYNQMP BOOT.bin文件打包需要使用Vitis软件的Create Boot Image功能,按特定顺序包含以下文件:FSBL启动加载器(fsbl_3972.elf)、PL端比特流文件(adc_board_top.bit)、PMU固件(pmufw.elf)、ARM Trusted Firmware(bl31.elf)和U-Boot引导程序(u-boot.elf)。每个文件需指定目标处理器(A53核心)和异常等级(el-3/el-2)。打包格式为BIN,不分割输出文件。

2025-11-13 08:52:22 197

原创 Xilinx ZYNQ系列启动文件制作流程

本文详细介绍了Xilinx FPGA开发中BOOT.bin启动文件的制作流程。主要步骤包括:在Vitis中新建工程,选择Zynq FSBL模板并编译生成fsbl.elf文件;将bit文件、elf文件和uboot文件添加到BIF文件中;最终通过Create Boot Image工具生成BOOT.bin启动文件。此外还说明了当FPGA工程更新时如何重新生成启动文件。该流程完整涵盖了从工程创建到最终启动文件生成的各个关键环节,适用于Xilinx FPGA系统的启动配置工作。

2025-11-12 15:59:55 230

原创 QT6 交叉编译 支持OPENGL 实现对wayland显示平台支持

qt6 增加opengl 实现对wayland支持

2025-11-10 16:51:09 987

原创 QT6 嵌入式系统移植

qt6 交叉编译移植

2025-10-27 14:27:04 533

原创 骰子画制作工具DiceArt使用教程

DiceArt是一款骰子画制作工具,导入图片,指导用户制作不同规格的筛子画,目前只有安卓版本(百度手机助手,应用宝)。

2024-03-22 19:00:13 912 1

TC358774/75 系列lvds转mipi 芯片初始配置生成工具

TC358774/75 系列lvds转mipi 芯片初始配置生成工具,输入lvds屏幕参数,生成mipi初始化数据,用于设备树mipi接口的初始化序列panel-init-sequence

2025-11-17

busybox制作linux文件系统

脚本文件 #!/bin/sh echo "creatint rootfs dir......" mkdir rootfs cd rootfs echo "making dir : bin dev etc lib proc sbin sys usr" mkdir bin dev etc lib mnt proc sys tmp var root #必备的8个目录 # mkdir usr/bin usr/lib usr/sbin lib/modules # Don't use mknod ,unless you run this Script as root ! # mknod -m 600 dev/console c 5 1 # mknod -m 666 dev/null c 1 3 # echo "making dir : mnt tmp var" # mkdir mnt tmp var chmod 1777 tmp # mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp #mkdir var/lib var/lock var/log var/run var/tmp # chmod 1777 var/tmp #echo "making dir : home root boot" # mkdir home root boot echo "done" 执行chmod +x xxx

2012-10-22

Xilinx 开发流程简介

Xilinx 开发流程简介,介绍如何进行Xilinx系统开放

2024-07-01

对AD采集的IQ数据进行FFT计算

对IQ数据文件进行 FFT计算 支持 16位 和32位数据,添加了hanning窗口

2024-06-27

Xilinx XDMA PCIE驱动

windows下 Xilinx XDMA PCIE驱动 VS版

2024-06-27

信号源N5172B使用手册

信号源N5172B使用手册

2024-06-27

uboot1.1.6 移植到2440

uboot移植到 2440开发板笔记 打开uboot根目录下的Makefile,添加以下项 root@shi:/home/shi/work_linux/uboot/u-boot-1.1.6/gedit Makefile smdk2440_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2440 NULL s3c24x0 说明: arm: CPU的架构(ARCH) arm920t: CPU的类型(CPU),其对应于cpu/arm920t子目录 smdk2440: 开发板的型号(BOARD),对应于board/smdk2440/目录 NULL: 开发者/或经销商(vender) s3c24x0: 片上系统(SOC)

2012-10-22

u_boot1.1.6

u-boot-1.1.6 U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。

2012-03-12

空空如也

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

TA关注的人

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