自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 09.【C语言学习笔记】指针(一)

C语言1.内存和地址的关系,指针==地址;2.指针变量=>存放地址的变量,取地址操作符&和解引用*操作符的使用,指针变量的大小和操作系统32、64位有关;3.指针变量类型的意义,+-整数,void*指针的用处;4.const修饰指针(在*前/后);5.指针运算(+-整数、指针-指针);6.野指针;7.assert断言(可以#define NDEBUG直接取消所有断言);8.指针传址调用;

2025-06-24 20:17:01 956

原创 08.【C语言学习笔记】操作符

C语言操作符的分类;2、8、10、16进制之间的相互转换;原码、反码、补码之间的相互转换;、移位操作符的使用;位运算操作符的使用;单目操作符;逗号表达式;下标访问[]、函数调用()操作符的使用;操作符的属性:优先级、结合性;表达式求值:整型提升、算术转换、问题表达式的解析。

2025-06-24 12:07:55 769

原创 04.【Qt开发】内存泄漏解释(对象树概念)、乱码问题解释及修改

本文主要介绍了Qt中的对象树机制和字符编码问题。对象树是Qt管理内存的核心机制,通过parent指针建立父子关系,父对象销毁时会自动销毁所有子对象。文章通过示例说明在堆上创建对象并指定parent的重要性,避免内存泄漏和重复析构问题。同时分析了乱码问题的成因,指出编码方式不匹配是根本原因,对比了GBK和UTF-8编码的区别,并推荐使用qDebug()替代cout来避免乱码。最后总结了QLabel使用、对象树机制、自定义控件扩展和字符编码处理等关键知识点,强调在Qt开发中应遵循对象树规范和正确使用调试工具。

2025-06-23 19:11:46 835

原创 07.【C语言学习笔记】函数递归

C语言递归的概念,递归的限制条件(限制条件非常重要,递归必须有限制条件和逼近条件,不然递归无法完成);递归举例1:求n的阶层;递归举例2:顺序打印一个整数的额每一位;递归与迭代:递归简单清晰,迭代占用资源少但是代码可能繁琐;迭代举例3:求第n个斐波那契数(青蛙跳台问题其实就是斐波那契数问题)

2025-06-23 08:36:08 784

原创 06.【C语言学习笔记】函数

C语言函数的概念(函数也叫子程序);库函数的网址;自定义函数的语法形式;实参和形参及其关系的解释;return 语句的注意事项;数组做函数参数的规则;函数的链式访问(printf函数返回的是打印在屏幕上的字符的个数);函数的定义和声明:static 和 extern 关键字修饰变量和函数的作用。

2025-06-23 08:35:06 1022

原创 04.【C语言学习笔记】数组

C语言数组元素的类型、数组类型(两者不同);数组的初始化(不完全初始化、完全初始化);下标引用操作符[];一维数组在内存中的存储/二维数组在内存中的存储(顺序存储)、计算数组元素的个数(sizeof);二维数组的初始化;变长数组的概念及使用;Windows中的延时函数、清空cmd窗口的命令

2025-06-17 21:50:34 855

原创 03.【C语言学习笔记】分支和循环

C语言else的悬空问题;关系操作符(比较运算符);条件操作符(三目操作符);逗号表达式;逻辑操作符(&&、||、! 与或非);switch语句:switch、case、break、default;continue;break;goto跳转语句;随机数的生成(rand、srand、time函数的作用及使用、指定范围的随机数生成公式)

2025-06-17 21:49:43 955

原创 02.【C语言学习笔记】C语言数据类型和变量

C语言各种数据类型的列举;signed和unsigned;数据类型的取值范围(各种数据类型的最大最小值宏定义);全局变量和局部变量及存放位置;算数运算符;赋值运算符;单目运算符;强制类型转换的作用;printf占位符列举、怎样限定宽度、怎样显示正负号打印、怎样限定小数位数、怎样输出部分字符串(限定字符串输出位数);scanf的返回值、scanf连续输入的使用,占位符,赋值忽略符,

2025-06-16 22:06:41 918

原创 01.【C语言学习笔记】C语言常见概念

C语言学习笔记(不容易记住的知识点)C语言介绍;VS的使用技巧(设置字体、快捷键、调试、查找函数定义、正常使用scanf);printf的含义(占位符、限定宽度、显示正负号、限定小数位数、输出部分字符串);关键字介绍展示;ASCll编码表;转义字符;语句和语句分类(空语句、表达式语句、函数调用语句、复合语句、控制语句);注释 /**/ 不支持嵌套注释

2025-06-16 22:03:28 356

原创 21.【C++11】(“{}”列表初始化、右值引用和移动语义、引用折叠和完美转发)

C++11引入了多项关键特性。在列表初始化方面,C++11统一了初始化方式,支持内置类型和自定义类型的{}初始化,并引入std::initializer_list支持容器初始化。右值引用和移动语义是核心改进,通过区分左值/右值、左值引用/右值引用,实现了资源的高效转移。文章详细解析了移动构造/移动赋值的实现原理,及其在传值返回和容器操作中的应用场景。此外,还探讨了完美转发机制,通过引用折叠和forward模板保持参数原始类型属性。这些特性共同提升了C++的性能表现和代码简洁性

2025-05-31 18:59:21 564

原创 03.【Qt开发】Qt新建初始代码介绍、实现界面打印helloworld

本文介绍了Qt应用程序开发的基础知识,包括项目结构、编译过程和两种实现"Hello World"的方式。主要内容涵盖:1. Qt项目文件结构(.pro文件配置说明,头文件和源文件组织);2. QApplication核心类的作用。两种实现“helloworld”的方法:1. 图形化界面设计方法;2. 纯代码实现控件创建。

2025-05-29 17:05:11 1022

原创 02.【Qt开发】Qt Creator介绍及新建项目流程

本文详细介绍了Qt Creator集成开发环境的使用方法。第一部分讲解了如何创建桌面快捷方式,并详细说明了Qt Creator的界面布局和功能模块,包括菜单栏、模式选择、构建套件选择器等8个主要组成部分。第二部分重点介绍了新建项目的完整流程:从模板选择到项目配置,详细说明了location、构建系统、Details、Translation等步骤的设置要点。文章还对编辑界面的各个功能区域进行了说明,包括左边栏的文件管理、代码编辑区的导航功能、UI设计界面的组件拖放以及构建区的运行调试选项。

2025-05-27 19:13:01 1301

原创 20.【C++进阶】用哈希表封装myunordered_map和myunordered_set

本文分析了哈希表的实现框架,并模拟实现unordered_map和unordered_set。模拟实现中,通过HashTable模板类复用哈希表功能,分别定义MapKeyOfT和SetKeyOfT仿函数来提取键值。迭代器实现采用单链表思路,难点在于operator++处理跨桶遍历。最终实现的unordered_map支持[]操作符,通过修改insert返回pair<iterator,bool>实现。

2025-05-27 17:15:00 890

原创 19.【C++进阶】unordered_map和unordered_set的使用、哈希表的实现

本文主要介绍了哈希表及其实现方式。首先分析了unordered_set和unordered_map与set/map的差异,包括key要求、迭代器特性和性能比较。随后详细讲解了哈希表的核心概念,包括哈希函数设计(除法散列、乘法散列、全域散列等)、哈希冲突处理方法(开放定址法和链地址法)。重点实现了两种冲突解决方案:线性探测的开放定址法和哈希桶的链地址法,并讨论了扩容策略、负载因子控制等关键技术点。文章还探讨了key类型转换、字符串特化等实际问题,为理解和实现高效哈希容器提供了完整的技术路线。

2025-05-26 17:22:55 1143

原创 18.【C++进阶】封装红黑树实现mymap和myset

本文分析了map和set的源码实现,重点探讨了其核心框架和红黑树(rb_tree)的泛型设计。map和set通过红黑树实现,map存储键值对,set仅存储键。文章还讨论了红黑树的插入、删除和查找操作,并指出源码中命名风格的不一致性。接着,文章模拟实现了map和set,复用了红黑树框架,并通过仿函数解决了插入时的比较问题。最后,文章详细介绍了迭代器的实现,包括++和--操作符的逻辑,并展示了如何通过红黑树实现map的[]操作符。整体上,文章通过源码分析和模拟实现,深入探讨了map和set的底层实现机制。

2025-05-26 17:21:41 586

原创 17.【C++进阶】红黑树实现(二叉搜索树,通过对任何一条从根到叶子的路径上各个结点的颜色进行约束)

红黑树是一种自平衡的二叉搜索树,通过在每个节点上增加颜色标记(红色或黑色)并遵循特定规则,确保树的高度平衡。其核心规则包括:根节点为黑色、红色节点的子节点必须为黑色、从任一节点到其子节点的路径上黑色节点数量相同。这些规则保证了红黑树的最长路径不超过最短路径的两倍,从而维持近似平衡。红黑树的插入操作通过变色和旋转(单旋或双旋)来维护平衡,时间复杂度为O(log n)。与AVL树相比,红黑树的平衡要求较为宽松,旋转次数较少,适合频繁插入和删除的场景。红黑树广泛应用于C++ STL中的map和set等容器。

2025-05-23 12:16:46 1022

原创 16.【C++进阶】AVL树的实现(自平衡二叉查找树,通过控制高度差去控制平衡)

文章讲述了AVL树,AVL树是一种自平衡二叉搜索树。其核心特性是左右子树的高度差绝对值不超过1,通过平衡因子(右子树高度减左子树高度)来维护平衡。AVL树的高度控制在logN,使得增删查改操作的时间复杂度为O(logN),相比普通二叉搜索树有显著提升。插入操作时,按二叉搜索树规则插入后,更新路径上的平衡因子,若出现不平衡则通过旋转(左旋、右旋、左右双旋、右左双旋)恢复平衡。AVL树的查找与普通二叉搜索树相同,效率为O(logN)。以及AVL树的实现

2025-05-23 12:11:24 717

原创 01. 【Qt开发】Qt介绍及Qt开发环境搭建(2025.05最新下载方式)

Qt简介(发展史、支持的平台、版本、优点及应用场景的介绍);Qt SDK安装流程-2025.05最新版官方下载安装流程,包括步骤的详细注释说明。

2025-05-22 18:34:29 1869 2

原创 结课作业自选01. 内核空间 MPU6050 体感鼠标驱动程序(二)(完整实现流程)

本文介绍了基于MPU6050传感器的体感鼠标驱动程序的实现流程。代码通过I2C总线与MPU6050通信,读取加速度数据并转换为鼠标位移,同时支持按键检测功能。主要流程包括:模块加载时自动注册I2C驱动,设备树匹配成功后执行探测函数mpu_mouse_probe,初始化设备并启动定时器。定时器到期后触发回调函数timer_callback,调度工作队列处理函数accel_work_handler,读取加速度数据并应用低通滤波,最终通过虚拟鼠标控制实现体感功能。代码还包含GPIO初始化、按键去抖动等细节处理。

2025-05-22 08:29:29 913

原创 结课作业自选01. 内核空间 MPU6050 体感鼠标驱动程序(一)

1. linux嵌入式系统内核介绍,内核程序的编写,包括必要的流程和函数。2. 几个内核驱动的示例:内核获取gpio状态,内核控制led灯,内核实现mpu6050体感鼠标。包括实现流程、代码详解、函数解释、执行指令等。

2025-05-22 08:28:53 650

原创 结课作业03. 混杂设备驱动led流水灯实现

本文介绍了如何在Linux内核中编写一个混杂设备驱动程序(gpios-misc-drv.c),控制3个LED灯。该驱动程序通过写入/读出3个字节来设定和读取3个GPIO引脚的电平状态,每个字节代表一个引脚。驱动程序加载后会自动生成/dev/gpio-misc设备节点。文章详细描述了驱动程序的实现流程,包括模块初始化、GPIO引脚配置、混杂设备注册、文件操作结构体定义以及read和write函数的实现。此外,还提供了一个应用程序(gpios-misc-app)的伪代码,展示了通过调用驱动程序实现流水灯效果。

2025-05-21 15:45:04 975

原创 结课作业01. 用户空间 MPU6050 体感鼠标驱动程序

linux开发板通过uinput创建虚拟鼠标,通过mpu6050的加速度数据控制体感鼠标移动,使用开发板的按键模拟鼠标左右键,包括功能实现流程、函数详解及源代码。完成虚拟体感鼠标功能实现。

2025-05-21 15:41:37 1414

原创 15.【C++进阶】map和set的使用(关联式容器)

文章介绍了C++ STL中的序列式容器和关联式容器,重点讲解了set和map系列的使用。set用于存储唯一键值,map用于存储键值对,两者都支持迭代器遍历和自定义比较函数。multiset和multimap则允许键值重复。文章还详细介绍了set和map的构造、增删查操作,以及如何使用迭代器和[]操作符进行数据修改。最后,通过示例代码展示了如何利用map统计水果出现次数,并对比了multimap与map的差异。

2025-05-20 10:12:21 770

原创 03. Linux嵌入式系统学习笔记(三)(用户空间驱动程序练习:体感光标实现mpu+i2c+framebuffer)

本文章讲解了linux嵌入式开发板的四个实例:1.shell脚本实现流水灯。2.i2c接收mpu6050的数据并转换成加速度打印。3.framebuffer在屏幕映射虚拟内存,操作虚拟内存在频幕上打印光标。4.根据2和3实现体感光标可控制。

2025-05-12 09:00:00 586

原创 0X. Linux嵌入式系统(课堂笔记)

虚拟机linux与开发板通过usb连接;通过网络将虚拟机和开发板进行桥接并实现文件的拷贝提取等操作,在开发板实现白屏、按键使用等案例

2025-05-08 16:19:48 792

原创 14.【C++进阶】二叉搜索树(二叉搜索树的增、删、差及代码实现,key_value的概念及实现)

C++二叉搜索树(BST)是一种有序二叉树,左子树的值≤根节点,右子树的值≥根节点,支持高效查找、插入和删除。理想情况下时间复杂度为O(logN),但若退化为单支树则降至O(N)。插入和查找通过值比较定位位置;删除分四种情况处理,双子节点时采用替换法。文档提供了C++实现代码,并区分了纯Key搜索(如车牌识别)和Key/Value搜索(如字典翻译)的应用场景。由于BST可能不平衡,需进一步学习AVL树或红黑树来优化性能。

2025-04-21 09:09:41 819

原创 13.【C++进阶】多态(多态的定义、概念及实现,虚函数和抽象类)

C++的多态机制,包括编译时多态(如函数重载)和运行时多态(通过虚函数实现)。运行时多态需满足两个条件:基类指针或引用调用虚函数,且派生类重写该虚函数。文件详细解析了虚函数表、动态绑定与静态绑定的区别,以及纯虚函数和抽象类的作用。此外,还介绍了协变、析构函数重写、override和final关键字,并通过代码示例说明多态的实现原理和应用场景。

2025-04-14 09:48:26 814

原创 12.【C++进阶】继承(继承的概念和使用、基类成员的访问、作用域、虚继承)

C++继承的概念和使用、继承基类成员的访问方式的变化、继承类模板;基类和派生类的作用域、隐藏规则;派生类的默认成员函数;继承与友元、继承与静态成员;多继承、虚继承、菱形继承;继承和组合的介绍及代码示例。

2025-04-07 18:33:00 1072

原创 11.【C++】模板进阶(函数模板特化、类模板全特化和偏特化、模板的分离编译)

C++模板的分类:类型形参模板和非类型形参模板。模板特化的概念及使用:函数模板特化,类模板特化(全特化、偏特化)。模板的生命和定义推荐放在一个文件中。模板的优缺点

2025-03-31 14:20:56 765

原创 10.【C++】stack(栈)、queue(队列)和priority_queue(堆)的使用及模拟实现

C++stack(栈)、queue(队列)和priority_queue(堆)的介绍及使用,及通过vector、list、deque的封装模拟实现stack、queue、priority_queue。容器适配器的概念介绍。

2025-03-27 13:19:14 947

原创 00.【Linux系统编程】 Linux初识(云服务器设置CentOS并使用、Xshell链接云服务器)

Linux初识(云服务器设置CentOS并使用、Xshell链接云服务器),华为云免费申请一个月的云服务器;下载Xshell,并通过Xshell连接华为云服务器进行操作。

2025-03-27 13:08:26 636

原创 02. Linux嵌入式系统学习笔记(二)(编写C程序进行文件操作、模块化编程makefile的使用)

Linux系统级文件I/O通过open/read/write/close实现低层文件读写,结合临时文件与rename确保数据安全;模块化编程使用头文件声明接口与源文件分离实现,借助Makefile的变量、依赖规则及自动变量($@, $^)自动化编译,实现增量构建与高效代码管理。

2025-03-26 13:43:22 870

原创 01. Linux嵌入式系统学习笔记(一)(linux基础指令)

本文通过一系列实战练习,系统性地介绍了 Linux 系统管理、Shell 脚本编程及内核源码分析的核心操作。涵盖文件管理、进程控制、网络文件系统(NFS)配置、磁盘镜像操作等基础技能,并结合三个实际脚本案例(贡献者统计、危险函数检测、内核彩蛋查找),深入解析 Shell 脚本的编写与优化方法。

2025-03-21 20:18:39 952

原创 09.【C++】list链表(STL中的列表容器,C++封装的带头双向链表,可实现指定类型的增删查改,迭代器操作等功能)

C++list的介绍及使用,list相当于C++集成的链表的库(list使用模板定义,使用时要指定数据类型),可实现增删查改,迭代器操作等功能。本文介绍了常见list接口的使用以及list的模拟实现。

2025-03-17 11:19:01 792

原创 08.【C++】vector(STL中的序列容器,C++封装的顺序表,可实现指定类型的增删查改、迭代器操作等功能)

C++vector的介绍及使用,vector相当于C++集成的顺序表的库(vector使用模板定义,使用时要指定数据类型),可实现增删查改,空间大小查看,迭代器操作等功能。本文介绍了常见vector接口的使用以及vector的模拟实现。

2025-03-10 18:58:42 586

原创 07.【C++】STL简介和string类的使用(string类对象的输入cin>>、输出<<、尾插+=、访问[ ]、获取对象size、capacity等以及string类的模拟实现)

C++string类的使用,string类的函数,对字符串的各种操作,包括:构造、拷贝构造、获取字符串对象大小size、获取空间大小capacity、string类对象的访问operator[]的运算符重载;string对象的插入insert、尾插append,operator+=、删除erase等;string类对象的cin输入>>,cout输出<<等。本文介绍了常见string接口的使用以及string的模拟实现。

2025-03-03 21:34:28 920

原创 06.【C++】模板初阶(template<typename T>,充分复用函数,函数模板和类模板的使用)

C++函数模板和类模板的使用(用模板解决相同功能的函数处理不同类型变量复用的问题,想一想活字印刷术。想到自己写Swap,需要Swap(int a, int b),Swap(double a, double b),用模板只需要写一个template<typename T> void Swap(T a, T b),可解决上述一类的问题

2025-02-25 10:54:36 1013

原创 05.【C++】内存管理(C++内存申请new,释放delete的概念及使用[代替C语言中的malloc和free],递归出现栈溢出的原因)

C++内存申请new,释放delete的概念及使用(用来代替C语言中的malloc和free),堆、栈空间大小,为什么递归时可能出现栈溢出,new和delete的实现原理。

2025-02-17 21:38:47 922

原创 04.【C++】类和对象(下)(初始化列表、static静态成员、友元friend[类外函数使用类私有成员]、内部类、匿名对象等)

C++的初始化列表的使用及约束条件(引用成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则会编译报错。),类型转换,static静态成员的用法,友元声明(突破类的访问限定符,外部函数可以使用类的私有和保护成员),内部类,匿名对象,对象拷贝时编译器的优化。

2025-02-17 14:21:34 1275

原创 03.【C++】类和对象(中)(构造函数-函数名与类名相同的成员函数、析构函数、拷贝构造函数、赋值运算符重载等定义及使用)

C++默认成员函数介绍及使用,包括:构造函数(函数名与类名相同的成员函数),析构函数(函数名为类名前加~),拷贝构造函数(函数名与类名相同的构造函数的重载),赋值运算符重载,取地址运算符重载。以及日期类的实现(日期加减)。附有相关示例及文字解释。

2025-02-15 16:26:51 1048

C++用哈希表封装unordered-map和unordered-set

C++用哈希表封装unordered_map和unordered_set

2025-05-27

C++封装红黑树实现mymap和myset

C++封装红黑树实现mymap和myset

2025-05-26

C++-红黑树的实现完整代码

C++-红黑树的实现完整代码

2025-05-23

C++-AVL树的实现

C++-AVL树的实现

2025-05-23

内核空间 MPU6050 体感鼠标驱动程序

内核空间 MPU6050 体感鼠标驱动程序

2025-05-21

混杂设备驱动led流水灯实现

混杂设备驱动led流水灯实现,该驱动控制 3 个 LED,通过写入/读出 3 个字节来设定、读入 3 个引脚电平。每个字节代表一个引脚。

2025-05-21

用户空间 MPU6050 体感虚拟鼠标驱动程序

用户空间 MPU6050 体感虚拟鼠标驱动程序

2025-05-21

linux嵌入式系统内核实现mpu6050体感鼠标移动功能(无按键)

linux嵌入式系统内核实现mpu6050体感鼠标移动功能(无按键)

2025-05-16

linux嵌入式开发板用户驱动体感光标实现

linux嵌入式开发板用户驱动体感光标实现

2025-05-08

C++二叉搜索树key-value的实现

C++二叉搜索树key_value的实现

2025-04-11

C++二叉搜索树的实现代码

C++二叉搜索树的实现代码

2025-04-11

C++stack(栈)、queue(队列)、priority-queue(堆)的模拟实现

用C++的vector、list和deque实现C++stack(栈)、queue(队列)、priority_queue(堆)

2025-03-03

C++list的模拟实现

C++list的模拟实现,构造,拷贝构造,析构函数;“=”," * ","->"运算符重载;begin(),end()函数;空间容量:size,empty等;增删查改:push_back,push_front,pop_back,pop_front,insert,erase。迭代器和const迭代器实现,用模板复用迭代器类,erase函数调用时iterator迭代器失效等。代码及测试

2025-02-27

C++日期类的实现,包括日期+,+=,-,-=和&gt;,&lt;,&gt;=,&lt;=,==,!= ;日期 - 日期 得天数 ;流提取&gt;&gt;,流插入&lt;&lt; 运算符重载等

C++日期类的实现,包括日期+,+=,-,-=和>,<,>=,<=,==,!= ;日期 - 日期 得天数 ;流提取>>,流插入<< 运算符重载等

2025-02-15

C++vector的模拟实现

C++vector的模拟实现,构造,拷贝构造,析构函数;“=”,“[ ]”运算符重载;begin(),end(),函数;空间容量:size,capacity,empty等;增删查改:push_back,pop_back,insert,erase,resize,reserve。代码及测试

2025-02-25

C++string类的模拟实现

C++string类的模拟实现。包括默认构造,拷贝构造,析构函数;运算符重载:=、[ ]、==、!=、<、<=、>、>=;输入输出运算符重载<<、>>;转C字符串c_str()、清空数据clear()、获取字符个数size、提前开空间reserve、尾插字符push_back、尾插字符串append、+=运算符重载、插入insert、删除erase、查找find、复制拷贝substr、输入一行gerline的实现。

2025-02-21

巡迹小车 - 副本 (2).zip

七路寻迹小车代码

2021-07-26

空空如也

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

TA关注的人

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