自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 理解双向链表的优势:利用双向链表实现LRU算法

由于LRU算法的特性,需要不断的对链表进行添加以及移位的操作(添加新入元素,移位:最近访问的元素加到链表头,最近访问的元素要移动到链表尾),所以。所以用双向链表的优势,可以只用一个head头节点就可以用O(1)复杂度查找到链表头与链表尾的位置。接下来从新建LRU链表,添加元素, 移位元素(即最近访问的元素移位)来介绍此算法。

2023-07-13 16:58:56 449

原创 2022 xv6 lab: COW实验(copy-on-write)代码实现

基于riscv实现的简易unix内核xv6的实验cow

2022-10-16 18:35:43 2212 4

原创 float浮点数相比较会导致的错误!(浮点数精度导致的坑!!!)

浮点数精度导致的坑!

2022-09-15 16:59:30 894

原创 XV6-RISCV操作系统环境搭建流程(ubuntu-18)

XV6-RISCV在ubuntu下的环境搭建

2022-09-07 11:40:58 686

原创 C++文件I/O流:用fsteam实现对CSV文件的读写

【代码】C++文件I/O流:用fsteam实现对CSV文件的读写。

2022-08-31 13:28:24 499

原创 分享一个打印浮点型数据的十六进制形式的函数

话不多说,先上代码inline void printfloat_16(const float fnum){ uint8_t* c = (uint8_t*)&fnum; //指针指向低位字节的地址,所以最先传给c的是低位字节 printf("0x"); for(auto i = 3;i >= 0;i--) printf("%02x",c[i]); //先获得的是低位字节,所以应该把低位字节放在最

2022-04-27 19:34:50 2703

原创 基于LCM(C++)的双机通信测试(linux主机+upboard)

1.测试案例介绍 2.linux主机 subscriber代码 3.upboard publisher代码1.测试案例简绍 (1)upboard连接路由器,linux主机连接路由器wifi,使二者处于同一局域网下 (2)upboard作为publisher,每隔2seconds发布一则消息,linux主机作为subscriber,接收到消息后在终端打印接受的消息。2.linux主机subscriber代码subscriber.cpp#include "subscriber.h"S

2022-04-22 10:40:30 5733 2

原创 用C++写一个简易的矩阵运算类

前段时间做了一个机器人的仿真开发,需要用到矩阵运算,于是自己写了一套,分享出来。easyMat.h:class easyMat {private: uint16_t row; uint16_t col; public: float ** data; easyMat(uint16_t r, uint16_t c); easyMat(easyMat & e); ~easyMat() { for (au

2021-12-08 18:03:55 613

原创 堆排序方法学习记录

1.堆(完全二叉树)中寻找位置需要的三个重要的公式1.结点 i 的父节点为(i-1)/2 (除根节点外)2.结点 i 的左子女为 2i+13.结点 i 的右子女为 2i+22.下滑调整算法siftdown与最大堆的建立下滑调整算法只对局部范围有效。也就是对当前子树(父节点,左孩,右孩)有效,只有进行了交换,算法才会往下滑,所以利用siftdown进行堆建立时,必须从堆的最后一个子树开始(最后一个父节点),逐步向上调整至根节点void siftDown(vector<int> V,

2021-11-21 11:51:59 444

原创 一个C++新建链表时很容易混淆的经典错误

**1.错误:**在作者刷题时,遇到了一个情况,需要用到两个链表去完成一个操作:用first指针储存链表p的首元素的地址,用于做return(函数返回链表首地址),在这个过程中,p在不断的扩展,接收新元素。以下是错误代码:ListNode *mergeTwoLists(ListNode * l1, ListNode * l2) { ListNode *p, *first = new ListNode; int count = 0; do {//此处代码忽略,即p链表扩充的操作,与总结无关

2021-10-20 19:01:47 221

原创 int*与int*&

很多CPPers都会对指针和引用的使用感到头疼,特别是在两者混用的时候。而指针和引用一个最大的用途就是作为函数形参。以下为本人总结的一些int* 与 int*&在作为函数形参的使用中的区别1.int* value指针大家都不陌生,指针在作为函数形参时,最广泛的用途就是传入数组的首地址,进而在函数中对数组进行操作。int Calc(int *value){ //value则为数组value[]的首地址 //可以直接使用value[]操作数组}所以,用int* value作为

2021-09-04 10:50:20 8147

原创 基于串级pid控制系统的两轴无人机云台设计

1.云台串级pid思路介绍2.硬件介绍3.程序介绍

2021-02-09 21:17:32 4967 11

原创 基于FreeRTOS的stm32程序初始化底层搭建(hal库)

采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。**FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。**而且最重要的一点,freertos完全免费,而且非常方便移植,...

2020-03-04 13:02:44 2506

原创 基于HAL库stm32f407FreeRTOS操作系统的麦克纳姆轮PPM遥控OLED实时显示陀螺仪走直线小车

HAl库设置主控引脚接收机用FS- R-XSROLED使用的是9.7寸IIC-OLED陀螺仪是MPU9250小车全部外观贴出部分代码部分开发过程经验总结:1.由于小车用的是麦轮,所以震荡较大,但是接收机这一类精密电子仪器会被震荡影响输出值,所以一定要做好避震。2.麦轮最好加上橡胶轮套,可以加大摩擦的同时,有利于陀螺仪角度闭环pid的整定。贴出源码网盘:链接:https...

2020-03-01 09:50:38 3473 11

原创 stm32驱动mpu6050、mpu6500、mpu9250心得

浅谈自己使用mpu陀螺仪的一些心得。mpu6050/mpu6500驱动这里是用的原子哥的用虚拟IIC驱动mpu6050代码,之前我一直是用硬件IIC驱动,但是听大神说虚拟IIC比硬件IIC要稳定,尝试之后发现确实比较稳定。而且个人觉得由于虚拟IIC可以在任意IO口开设,所以相较于硬件IIC更加方便。另外贴出我使用MPU9250的驱动程序,也是使用了原子哥的,MPU9250是集合了MPU6...

2020-02-11 21:35:53 14545 6

空空如也

空空如也

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

TA关注的人

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