自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 资源 (23)
  • 收藏
  • 关注

原创 01-LED-Blink-Demo(开发环境esp-idf)

【代码】01-LED-Blink-Demo(开发环境esp-idf)

2023-01-31 21:15:24 274 1

原创 Linux文件系统

。。。。。。

2022-12-10 11:17:47 172

原创 freeRTOS任务管理

这个小节讲述的是任务的优先级别,设置 获取等操作通过freeRTOS的API文档可以知道每一个任务优先级是从0到 configMAX_PRIORITIES - 1(0代表空闲优先级,configMAX_PRIORITIES - 1是我们可以人为设置的优先级,而且数值越大,说明任务的优先级越高),这个configMAX_PRIORITIES 定义在FreeRTOSConfig.h头文件中。好,我们打开之前的示例,进行修改,获取任务函数的优先级。/*

2022-12-09 17:01:51 322

原创 Linux系统IO

所谓文件IO就是指文件的 输入(input)和 输出(output)Linux 把大部分系统资源当作文件并呈现给用户,用户只需按照文件 I/O 的方式,就能完成数据的输入输出。普通文件,即一般意义上的文件、磁盘文件;设备文件,代表的是系统中一个具体的设备;管道文件、 FIFO 文件,一种特殊文件,常用于进程间通信;套接字(socket)文件,主要用在网络通信方面。Linux 系统提供的文件 I/O 接口函数,是以最基本的系统服务形式提供的,又称它们为基本 I/O 函 数。

2022-12-09 13:30:17 744

原创 chsh更换shell询问密码

【代码】chsh更换shell询问密码。

2022-10-03 16:45:30 393

原创 win11无法设置移动热点

WIN10电脑热点打不开、win11电脑热点打不开,都可以参照操作,费力九牛二虎之力,终于搞定,分享给遇见同类问题的同学,希望能帮助解决你的烦恼。2、设备管理器(双击)——网络适配器(打开)——找到下图类似箭头选项——键-单击-启用设备。3、搜索——移动热点(点击-打开)——移动热点(选项-开)1、此电脑——右键——管理——设备管理器 (打开)注意:如果出现多个,都选择启用设备!win11无法设置移动热点。

2022-09-21 12:12:51 14459

原创 ubuntu初始化安装

此时,按Command+Q退出终端后重启终端,就可以使用zsh的终端了。zsh设置过于复制,但是我们可以使用Oh-my-zsh来快速配置,可以看后文Oh-my-zsh的配置方法。可以看到,其中的/bin/zsh就是zsh了。ubuntu为了保证用户的操作不会破坏系统,默认是禁用root用户的,我们需要手动开启root用户。如果有~/.zshrc文件,最好提前备份,否则本脚本自动更改原本的.zshrc文件为zshrcBak。然后使用root用户登录系统,保证后续的操作都不受权限的限制。

2022-09-19 16:02:30 717 1

原创 human_face_recognition(AI开发框架esp-who)

BOOT按键的状态的不同也会触发不同的事件,通过register_button()的函数将BOOT按键的状态输出到xQueueKeyState按键的状态队列缓冲区里,再通过register_event()函数输出一个事件队列xQueueEventLogic,最后通过register_human_face_recognition()函数将xQueueAIFrame作为帧输入流传入 xQueueEventLogic传入一个事件队列,帧的输出流设置为NULL,结果将显示在终端上。

2022-09-14 10:13:53 375

原创 code_recognition(AI开发框架esp-who)

app_main.capp_peripherals.capp_peripherals.h调用xTaskCreatePinnedToCore()函数将decode_task函数创建任务,在freeRTOS实时性操作系统中运行decode_task()任务函数中做了以下操作:app_camera_init()初始化摄像头后,如果返回值不等于ESP_OK,说明摄像头初始化失败,调用vTaskDelete(NULL);删除任务并退出摄像头初始化后会输出一个帧的输出流,调用esp_camera_fb_ge

2022-09-14 10:08:41 772

原创 C语言编译过程

使用预处理器把源文件test.c经过预处理生成test.i文件,预处理用于将所有的#include头文件以及宏定义替换成其真正的内容。

2022-09-14 09:36:39 280

原创 linux配置文件共享

通过Samba服务器,实现Windows与Ubuntu之间共享文件,主要通过以下几个步骤:一、Ubuntu开启Samba服务器二、Ubuntu配置共享目录和用户权限三、Windows开启Samba客户端四、访问共享目录。

2022-09-13 17:05:13 1271

原创 适用于windows的ubuntu子系统出现WSL2:Temporary Failure in Name Resolution解决方法

【代码】适用于windows的ubuntu子系统出现WSL2:Temporary Failure in Name Resolution解决方法。

2022-09-09 09:54:55 1332

原创 color_detection(AI开发框架esp-who)

同样,BOOT按键的状态也需要进行记录,通过register_button()将BOOT按键的状态输出到xQueueGPIOKeyState队列缓冲区中。调用register_color_detection()函数将帧的输入流xQueueAIFrame和事件队列xQueueEventLogic传入,输出一个作为帧的输出流的队列缓冲区xQueueLCDFrame,再调用register_lcd()函数将xQueueLCDFrame作为帧的输入流传入,即可显示到LCD屏幕上。

2022-08-22 10:25:15 209

原创 cat_face_detection(AI开发框架esp-who)

😀第二步:此时xQueueAIFrame队列缓冲区里面放置着摄像头获取到的图片,调用register_cat_face_detection()的函数,将xQueueAIFrame队列缓冲区作为帧的输入流传入,register_cat_face_detection()函数中会通过AI模型计算,识别到猫脸,然后帧的输出流设置为NULL,至此猫脸检测的结果就显示到终端上了。pixel_fromat是像素的设置,frame_size是每一帧的大小,fb_count是帧的缓冲区的数量 frame_o是帧的输出流。

2022-08-21 18:17:19 1308 1

原创 mutex互斥量

xSemaphoreCreateMutex()创建mutex互斥量,vTaskSuspendAll()挂起任务调度器,使用xTaskCreate()函数创建任务,xTaskResumeAll()恢复任务调度器。大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况,其他线程无法获得这种变量。但有时候,很多变量都需要在线程间共享,这样的变量称为共享变量,可以通过数据的共享,完成线程之间的交互。我们为了解决带来的一系列问题,我们需要一把锁。多个线程并发的操作共享变量,会带来一些问题。

2022-08-19 11:55:26 166 2

原创 计数型信号量

1.事件计数:每次事件发生,事件处理函数将释放信号量(信号量计数值加1),其他处理任务会获取信号量(信号量计数值减1)来处理事件。假设有一家停车场,总共有10个空闲停车位,当一个车放置在停车位中,空闲停车位减少1,当一个车从停车位中开出,空闲停车位增加1,那么计数型信号量就可以理解为空闲停车位,也可以理解为有效地 可以用的资源的数目。对于carInTask()的函数,调用uxSemaphoreGetCount()函数获取到计数型信号量的数目,调用xSemaphoreTake()获取信号量。

2022-08-19 11:53:42 706 1

原创 二进制信号量

我们在app_main()中调用xSemaphoreCreateBinary()函数,创建一个二进制信号量,创建完后使用xSemaphoreGive()函数释放创建的信号量,使用xTaskCreate()创建任务。二进制信号量能够满足任务间的互斥和同步,需要的系统开销最小,因此也称快速信号量。在myTask1()和myTask2()中先获取信号量,循环打印后释放信号量。本小节就来认识二进制信号量的创建等过程。xSemaphore:创建的信号量句柄。创建一个二进制信号量,并返回一个句柄。

2022-08-19 11:51:18 453 1

原创 软件定时器

一个软件定时器(或者只是一个“定时器”)允许一个函数在未来的一个设定的时间执行。由计时器执行的函数被称为计时器的回调函数。计时器从启动到执行它的回调函数之间的时间称为计时器的周期。简单地说,计时器的回调函数在计时器的周期到期时执行。改变软件定时器的周期 xTimer:正在分配新时段的计时器。首先要调用xTimerCreate()函数去创建定时器,并给软件定时器传入一个回调函数TimerCallBack()。调用pcTimerGetName()函数返回创建计时器时分配给计时器的人类可读文本名称。

2022-08-19 11:46:11 598

原创 Queue邮箱

写数据端wirteTask()写入一个数据到邮箱队列中,readTask()从邮箱队列中读取数据,可以通过写数据的方式来控制readTask()读数据端的执行方向。

2022-08-19 11:27:18 134

原创 Queue集合

在接收数据端recTask设置为:当队列集合中的某一个队列存在数据,则会返回相应存在数据的队列的句柄给recTask,recTask会根据相应的队列句柄去相对应的队列中取数据。上图讲述的是三个发送数据端分别向对应的队列中发送数据,sendTask1发送数据111到队列1中,sendTask2发送数据222到队列2中,sendTask3发送数据333到队列3中。接收数据端recTask如何接收数据呢?

2022-08-19 11:25:37 131 1

原创 Queue的多进单出模型

这里值得提一句的是,三个发送数据端可以赋予相同的优先级,也可以赋予不同的优先级,这是根据实际情况去调整的。对于接收数据端,要比三个数据端赋予的优先级还要大才可以,这也是为了保证当消息队列缓冲区中存放了数据,接收端的任务函数可以立即取出并进行处理。在这个延时过程中,发送数据端不断的向队列中发送数据,由于队列是FIFO(First in First Out)先进先出的特点,最先进入的数据会最先被接收数据端取到。创建三个发送数据的任务函数,具体的可以参考上一小节,发送数据的函数创建好后,再创建接收数据的函数。

2022-08-19 11:14:12 131

原创 Queue的三种数据传递

队列是任务间通信的主要形式。它们可以用于在任务之间、中断和任务之间发送消息。在大多数情况下,它们被用作线程安全的FIFO (First In First Out)缓冲区,新数据被发送到队列的后面,尽管数据也可以发送到队列的前面。一个sendTask向队列发送数据,一个recTask从队列中接收数据。

2022-08-19 11:05:58 630

原创 ESP32的电容touch和外部中断

ESP32的电容touch和外部中断代码编写#include <Arduino.h>// 定义外部中断的Mode// 0: 无中断,读取Touch值// 1:Touch中断,执行 TouchEvent()// 2: 外部IO的中断#define EXT_ISR_MODE 0void TouchEvent(){ Serial.printf("Touch Event.\r\n");}void PinIntEvent(){ Serial.printf("P

2022-04-26 20:02:20 3366 2

原创 点亮ESP32自带的小灯

#include <Arduino.h>int LED = 2;//定义二号引脚void setup(){ pinMode(LED, OUTPUT);//将引脚2号设置为输出引脚 /* void pinMode(uint8_t pin, uint8_t mode); 设置引脚的模式 常用的引脚模式有: 输出模式OUTPUT, 输入模式INPUT, 输入上拉模式INPUT_PULLUP */}void loop

2022-04-26 17:12:03 1302 1

原创 ESP32作为服务器,使用网页控制LED小灯

ESP32作为服务器,使用网页控制LED小灯项目描述ESP32-S开发板加入局域网,使用platformIO编写好ESP32的代码后,编译下载到ESP32中,访问ESP32的IP地址,使用网页控制连接着的LED小灯项目准备:ESP32-S开发板 一根数据线 电脑 LED小灯开发环境:vscode + PlatformIO原理剖析这个ESP32作为服务器,浏览器作为客户端,这是一个简单的B/S架构。在这个项目中我们说为什么要电脑和ESP32加入同一个局域网?从前面的有关于Linux

2022-04-25 13:17:58 10213 6

原创 链队的基本操作

/** * @author:qq_45671732 * @version:1.0 */#include "bits/stdc++.h"using namespace std;#define MAXQSIZE 100#define OK 0#define ERROR -1typedef struct QNode { int data; struct QNode *next;} QNode, *QueuePtr;typedef struct { QueueP

2022-04-19 10:29:28 115

原创 循环队列的基本操作

/** * @author:qq_45671732 * @version:1.0 */#include "bits/stdc++.h"using namespace std;#define OK 0#define ERROR -1#define MAXQSIZE 100typedef struct { int *base; int front; int rear;} SqQueue;int InitQueue(SqQueue &Q) {

2022-04-19 09:59:04 2143

原创 顺序栈的基本操作

/** * @author:qq_45671732 * @version:1.0 */#include "bits/stdc++.h"using namespace std;#define MAXSIZE 100#define OK 0#define ERROR -1typedef struct SqStack { int *base; int *top;} SqStack;int InitStack(SqStack &S) { //栈的初始化

2022-04-14 10:22:17 2261

原创 单链表(快慢指针问题)

/* * 快慢指针: * 带有头结点的单链表L, 设计一个尽可能高效的算法求L中的中间结点 */#include "bits/stdc++.h"using namespace std;#define ERROR -1#define OK 0typedef struct LNode { int elem;//结点的数据域 struct LNode *next;//结点的指针域} LNode, *LinkList;int TheTailInterpolation(Li

2022-04-13 13:39:27 1018

原创 机器学习环境配置

机器学习环境配置CUDA的安装配置CUDA依赖于英伟达的显卡查看电脑的显卡型号是否支持CUDA的安装https://developer.nvidia.com/zh-cn/cuda-gpus可以在英伟达的控制面板中查看显卡的驱动程序版本我自己的如图所示:按照自己的驱动程序的版本去查看可以安装的CUDA版本https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html我自己可以安装的CUDA版本信息如下:之后可以在浏览

2022-04-11 11:24:14 366

原创 单链表的基本操作和实现

单链表的基本操作和实现#include "bits/stdc++.h"using namespace std;typedef struct Lnode { string e;//结点的数据域 struct Lnode *next;//结点的指针域} Lnode, *LinkList;//LinkList为指向结构体Lnode的指针类型int InitList_L(LinkList &L);int DestroyList_L(LinkList &L);i

2022-01-14 12:22:30 265 1

原创 操作系统第一章习题

1.设计现代OS的主要目标是什么?方便性 有效性 可扩充性 开放性2.OS的作用可以表现在哪几个方面?OS作为用户和计算机硬件系统之间的接口OS作为计算机系统资源的管理者OS实现了对计算机资源的抽象3.为什么说操作系统实现了对计算机资源的抽象?IO设备管理软件实现了对计算机硬件操作的第一个层次的抽象;文件管理软件实现了对硬件资源操作的第二个层次的抽象;依此类推,如果在文件管理软件上再覆盖一层面向用户的窗口软件,则用户便可再窗口环境下方便地使用计算机,从而形成一台功能更强的虚拟机;OS是铺

2021-12-20 16:09:25 3123

原创 渗透测试之信息收集(二)

新建一个shell脚本

2021-08-30 19:17:09 81

原创 渗透测试之信息收集

渗透测试之信息收集

2021-08-28 17:32:58 83

原创 servlet

文章目录servletservlet介绍servlet的生命周期servletservlet介绍servlet是一个小程序,可以直接部署在服务器上直接运行,servlet最底层是一个接口,是sun公司提供的一套规范。当前的HttpServlet的直接父类是GenericServlet,GenericServlet是servlet接口的实现类。HttpServlet类提供了一些抽象的方法,用于加载当前小程序servlet的生命周期init()方法 第一次访问这个控制器的时候 初始化方法servi

2021-08-26 15:50:32 131

原创 HTML常用的元素介绍

HTML常用的元素介绍a元素a元素用于超链接。a元素的常见属性如下:href属性全称是hyper reference(引用),表示跳转地址跳转地址:由一个页面跳转到另一个页面跳转到某个锚点:也就是跳转到一个页面的不同位置<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head&g

2021-08-14 14:50:54 2553

原创 体验java web

文章目录体验java webJSP介绍JSP的特性体验java webIDEA2021创建java web项目参考如下文章:Intellij IDEA2021.1创建Java web项目(超详细)JSP介绍在新创建好的java web项目中的web目录下创建一个index1.jsp文件,IDEA会生成一段代码:<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head&

2021-08-13 18:17:49 117

原创 HTML初识

文章目录HTMLHTML简单介绍HTML的文本元素HTMLHTML简单介绍<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <!--超链接--> <a href="https://www.bilibili.com/">bi

2021-08-11 11:13:31 1670

原创 centos安装源

centos7安装源:http://mirrors.aliyun.com/centos/7/os/x86_64/centos8安装源: https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/

2021-08-05 11:20:16 635

原创 XML的编写

文章目录XML什么是XML如何编写格式良好的XMLXML什么是XMLXML是一个可扩展标记语言。XML和操作系统编程语言的开发平台无关,可以实现不同系统之间的数据交换。XML的规范XML文档内容是由一系列标签元素组成的。<元素名 属性名=“属性值”>元素内容</元素名>属性值用引号包裹一个元素可以有多个属性属性值不可以直接包含< &不建议使用的字符" ’ >使用IDEA新建一个XML文件,先尝试编写一个XML文件:<?xml

2021-08-03 13:50:44 4781

C++资料,,,,,,,,,,,,,,,,,,,,,

C++资料

2022-04-15

顺序表的基本操作.cpp

顺序表的基本操作。。。。。。。。。。。。。。。。。。。。。。

2021-12-15

maltego.zip

子域名收集。。。。。。。。。。。。。。。。。。。。。。。。。。。

2021-08-28

jar-package.zip

包含自己常用的zip和jar包

2021-08-02

链栈的基本操作,以数制转换为示例

链栈的基本操作,以数制转换为示例

2021-06-03

单链表的基本操作,实验环境:visuai studio2019

单链表的基本操作,实验环境:visuai studio2019

2021-06-01

SequenList.7z

C语言实现顺序表的基本操作的代码

2021-05-27

windows下的java编译器和jdk.zip

windows下的java编译器和jdk.zip

2021-02-27

java文档Java上课的文档PPT.zip

java文档Java上课的文档PPT.zip

2021-02-27

jdk.tar

jdk15的压缩包,通用linux

2021-01-30

VSCodiumUserSetup-x64-1.52.1.exe

vscode的开源版本的windows安装包

2021-01-30

codium-1.52.1-1608165610.el7.x86_64.rpm

vscode的开源版本的rpm安装包

2021-01-30

LibreOffice_7.0.4_Linux_x86-64_rpm.tar.gz

libreoffice的rpm安装包的压缩包

2021-01-30

Anaconda3-2020.11-Windows-x86.exe

anaconda3-2020.11windows的安装包

2021-01-30

mysql.tar的常用的rpm包的压缩包

mysql5.7的rpm安装包以及相关的包

2021-01-30

cmder.7z的压缩包

cmder.7z

2020-12-03

OpenJDK15U-jdk_x64_windows_openj9_windowsXL_15.0.1_9_openj9-0.23.0.zip

OpenJDK15U-jdk_x64_windows_openj9_windowsXL_15.0.1_9_openj9-0.23.0.zip是java的二进制安装包

2020-12-03

arduino课设.ino

arduino课设.ino。

2020-12-03

GeoGebra-Windows-Installer-6-0-609-0.exe

GeoGebra-Windows-Installer-6-0-609-0.exe数学绘图软件,包含平面,2D,3D等等。

2020-12-03

arduino常用库文件压缩包

arduino常用库文件压缩包,包含了arduino编写时的常用库文件,包括了绝大部分文件。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

2020-12-03

通讯录管理系统.cpp

添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人 显示联系人:显示通讯录中所有联系人的信息 删除联系人:按照姓名进行删除指定的联系人 查找联系人:按照姓名查看指定的联系人的信息 修改联系人:按照姓名重新修改指定的联系人 清空联系人:清空通讯录中所有的信息 退出通讯录:退出当前使用的通讯录

2020-07-29

通讯录管理系统.exe

通讯录管理系统是一个可以记录亲人、好友信息的工具。实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人 显示联系人:显示通讯录中所有联系人的信息 删除联系人:按照姓名进行删除指定的联系人 查找联系人:按照姓名查看指定的联系人的信息 修改联系人:按照姓名重新修改指定的联系人 清空联系人:清空通讯录中所有的信息 退出通讯录:退出当前使用的通讯录

2020-07-29

学生宿舍信息管理系统.c

学生宿舍信息管理系统包括:创建文本文件 读取文本文件 按照姓名 房号 学号 等进行查询 增加 删除 修改等记录。

2020-06-27

空空如也

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

TA关注的人

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