当前位置: 首页 > news >正文

STM32-温湿度上传OneNET项目

一、项目需求

使用 ESP8266 连接 OneNET 云平台,并通过 MQTT 协议上传 DHT11 获取的温湿度值。

二、项目框图

三、DHT11工作原理

参考于良许嵌入式手把手教你玩转DHT11(原理+驱动) | 良许嵌入式

3.1 正常工作验证 #​ 

上电后,「电源指示灯/POWER」红灯亮,表示上电成功,正常工作。 

3.2 DHT11工作时序 #​  

3.2.1 整体工作时序 #​  

DHT11 整体工作时序为:主机发送开始信号、DHT11 响应输出、主机接收 40bit 数据(湿度数据+温度数据+校验值),结束信号(可选)。

具体过程如下: 

1.  总线空闲状态为高电平,主机拉低总线等待 DHT11 响应, 主机把总线拉低必须大于 18ms,保证 DHT11 能检测到起始信号; 

2.  主机发送开始信号结束后,拉高总线电平并延时等待 20-40us 后,读取 DHT11 的响应信号;  

3.  DHT11 接收到主机的开始信号后,等待微处理器开始信号结束,发送 80us 低电平响应信号;  

4.  DHT11 发送 80us 高电平准备发送数据;  

5.  DHT11 发送 40bit 数据(湿度数据+温度数据+校验值)。   

过程 主机 DHT11  1 拉低>18ms   2 拉高20~40us   3   响应 80us 低电平  4   拉高 80us  5   发送 40bit 数据(湿度数据+温度数据+校验值) 

 

3.2.2 起始及响应信号 #​  

总流程讲完介绍一下细分流程: 首先主机拉低总线至少 18ms,然后再拉高总线,延时 20~40us,此时起始信号(有时也叫复位信号)发送完毕。 

DHT11 检测到复位信号后,触发一次采样,并拉低总线 80us 表示响应信号,告诉主机数据已经准备好了。

DHT11 之后拉高总线 80us,然后开始传输数据。如果检测到响应信号为高电平,则 DHT11 初始化失败,请检查线路是否连接正常。 

3.2.3 读时序 #​  

DHT11 开始传输数据。每 1bit 数据都以 50us 低电平开始,告诉主机开始传输一位数据了。DHT11 以高电平的长短定义数据位是 0 还是 1:

当 50us 低电平过后拉高总线,高电平持续 26~28us 表示 0,高电平持续 70us 表示数据 1。 

当最后 1bit 数据传送完毕后,DHT11 拉低总线 50us,表示数据传输完毕,随后总线由上拉电阻拉高进入空闲状态。 

位数据0表示方式: 以 50us 低电平开始,高电平持续 26~28us 表示 0。

位数据1表示方式: 以 50us 低电平开始,高电平持续 70us 表示 1。 

3.3 DHT11数据格式 #​ 

DHT11 的 DATA 传输一次完整的数据为 40bit,按照高位在前,低位在后的顺序传输。 

数据格式为:8bit 湿度整数数据 + 8bit 湿度小数数据 + 8bit 温度整数数据 + 8bit 温度小数数据 + 8bit 校验位,

一共 5 字节(40bit)数据。 正常情况下,前四个字节的和刚好与校验位相等,通过这种机制可以保证数据传输的准确性。

四、项目实现

复制项目文件19-串口打印

重命名59-DHT11

新建文件dht11

dht11.c

dht11.h

打开项目工程

加载文件

书写头文件

编译

编程思路:

1、之前的模块都需要init函数,而这里的dht11反倒不需要init函数,因为dht11只有一个data的IO口。DHT11的一个data口用于输入和输出,所以需要对DHT11的IO口做一个配置,则需要:dht11_gpio_input,dht11_gpio_output两个函数。

2、接下来是DHT11的起始信号及响应信号需要:dht11_start

3、读时序:dht11_read_byte

4、将读出的数据,存储下来,用指针(地址)承接:dht11_read

5、因为是单总线协议,所以先进行一个封装

        判断1位数据,当IO口电平等于高电平的时候,延时50微妙,判断当下是高电平还是低电平,如果是高电平,则传出来的数据是1,否则就是0,

while(!DHT11_DQ_IN);
        delay_us(50);
        if(DHT11_DQ_IN == 1)
        {
            temp = 1;
            while(DHT11_DQ_IN);
        }
        else
            temp = 0;

        我们知道,一个字节有8位,所以这段代码要执行八次,才是一位,定义一个UINT8_T的变量,这个变量有8位,将受到的一位字节存放在这个变量的像左移一位。

    for(i=0; i<8; i++){
        while(!DHT11_DQ_IN);
        delay_us(50);
        if(DHT11_DQ_IN == 1)
        {
            temp = 1;
            while(DHT11_DQ_IN);
        }
        else
            temp = 0;
        byte = byte << 1;
        byte |= temp;
    }

上面这个函数,是用来返回发送过来的一个字节,DHT11会返回5个字节,所以上述操作,要执行5次,并且第五位是校验位,前四位的和等于第五位时,才证明没有发送错数据,官方文档要求,DH11不可以一直在返回数据,需要延长2s


    for(i=0; i<5; i++)
    {
        dht11_data[i] = dht11_read_byte();
    }
    if(dht11_data[0]+dht11_data[1]+dht11_data[2]+dht11_data[3] == dht11_data[4])
    {
        memcpy(result,dht11_data,4);//将dht11_data中四个数据复制给result
        printf("湿度:%d.%dRH ,",dht11_data[0],dht11_data[1]);
        printf("温度:%d.%d℃ \r\n",dht11_data[2],dht11_data[3]);
    }
    delay_ms(2000);

        在esp8266中需要重写esp8266_send_data函数,因为以前的esp8266_send_data函数是用来模仿printf,所以需要重写函数,用来发送数据

//两个参数分别是:要发送的数据,和要发送数据的长度
void esp8266_send_data(char *data,uint16_t len)
{
    //清空发送缓冲区
    esp8266_rx_clear();
    //发送数据函数
    HAL_UART_Transmit(&esp8266_handle,(unsigned char*)data,len,100);
}

在OneNet创建产品和设备

三元组很重要:产品id,设备id,密钥

设备id的获取,将设备导入出来,就会有一个表,其中有设备id

 将代码中上面部分,按自己的东西改写,

相关文章:

STM32-温湿度上传OneNET项目

一、项目需求 使用 ESP8266 连接 OneNET 云平台&#xff0c;并通过 MQTT 协议上传 DHT11 获取的温湿度值。 二、项目框图 三、DHT11工作原理 参考于良许嵌入式手把手教你玩转DHT11&#xff08;原理驱动&#xff09; | 良许嵌入式 3.1 正常工作验证 #​ 上电后&#xff…...

HTML 中的 Canvas 样式设置全解

在 HTML5 中&#xff0c;<canvas> 元素提供了一个强大的绘图接口&#xff0c;允许开发者通过 JavaScript 实现各种图形和动画效果。为了充分利用 <canvas> 的功能&#xff0c;理解其样式设置是至关重要的。本文将详细介绍如何在 HTML 中设置 <canvas> 的各种…...

【Java】File 类

目录 File 类File 类构造方法常见成员方法判断与获取创建与删除获取并遍历 File 类 File 对象表示一个路径&#xff0c;可以是文件的路径&#xff0c;也可以是文件夹的路径 这个路径可以是存在的&#xff0c;也允许是不存在的 绝对路径和相对路径的区别&#xff1a; 绝对路径…...

SAP S4HANA Administration (Mark Mergaerts Bert Vanstechelman)

SAP S4HANA Administration (Mark Mergaerts Bert Vanstechelman)...

特征提取:如何从不同模态中获取有效信息?

在多模态学习中,特征提取是一个至关重要的过程。它是将原始数据(如文本、图像、视频和语音等)转化为机器能够理解和处理的特征的核心步骤。不同于传统的单一模态任务,在多模态学习中,如何有效地从每种模态中提取出有意义的信息并进行融合,直接影响到最终模型的性能和准确…...

2025年-G14-Lc88-278.第一个坏版本 -java版

1.题目描述 第一个坏版本 你是一名产品经理&#xff0c;目前领导一个团队开发新产品。不幸的是&#xff0c;你产品的最新版本未通过质量检查。由于每个版本都是基于前一个版本开发的&#xff0c;所以坏版本之后的所有版本也都是坏的。假设你有 n 个版本 [1, 2, …, n]&#xff…...

计算机网络————(一)HTTP讲解

基础内容分类 从TCP/IP协议栈为依托&#xff0c;由上至下、从应用层到基础设施介绍协议。 1.应用层&#xff1a; HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程&#xff1a…...

大语言模型架构:从基础到进阶,如何理解和演变

引言 你可能听说过像 ChatGPT 这样的 AI 模型&#xff0c;它们能够理解并生成自然语言文本。这些模型的背后有着复杂的架构和技术&#xff0c;但如果你了解这些架构&#xff0c;就能明白它们是如何工作的。今天&#xff0c;我们将用简单的语言&#xff0c;逐步介绍大语言模型的…...

科普mfc100.dll丢失怎么办?有没有简单的方法修复mfc100.dll文件

当电脑频繁弹窗提示“mfc100.dll丢失”或应用程序突然闪退时&#xff0c;这个看似普通的系统文件已成为影响用户体验的核心痛点。作为微软基础类库&#xff08;MFC&#xff09;的核心组件&#xff0c;mfc100.dll直接关联着Visual Studio 2010开发的大量软件运行命脉。从工业设计…...

什么是虚拟内存?它的作用是什么?

虚拟内存概念 虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存&#xff08;一个连续完整的地址空间&#xff09;。但是实际上&#xff0c;它通常是被分隔成多个物理内存碎片&#xff0c;还有部分暂时存储在外部磁盘存储器上&#xff0c;在…...

SAP任命Simon Davies为亚太区总裁,领导重组后的亚太地区业务

2025年2月19日&#xff0c;SAP宣布任命Simon Davies为新任亚太区总裁&#xff0c;负责领导公司重组后的亚太地区业务。Davies将常驻新加坡&#xff0c;全面负责SAP在亚太地区的战略、运营、人员管理、销售、服务、合作伙伴关系及盈利能力。他的职责范围涵盖韩国、澳大利亚、新西…...

Markdown使用方法文字版解读

[TOC](这里写自定义目录标题) # Markdown编辑器 你好&#xff01; 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 ## 新的改变 我们对Markdown编辑器进行了…...

QT移植,交叉编译至泰山派RK3566开发板,.pro文件解析

备注 交叉编译到开发板,会有各种奇奇怪怪的问题, 直接命令行安装 QTCREATOR和 QtBase,就在板子上搞个桌面系统编译,最后把桌面关掉。 配置文件解析 配置文件丢这里,后面有空整理下。 说下大概的注意点, 安装路径(qtcreator远程部署的路径)、 动态库路径和…...

Liunx(CentOS-6-x86_64)系统安装MySql(5.6.50)

一&#xff1a;安装Liunx&#xff08;CentOS-6-x86_64&#xff09; 安装Liunx&#xff08;CentOS-6-x86_64&#xff09; 二&#xff1a;下载MySql&#xff08;5.6.50&#xff09; MySql下载官网 二&#xff1a;安装MySql 2.1 将mysql上传到Liunx 文件地址 /usr/local/ 2…...

使用 deepseek实现 go语言,读取文本文件的功能,要求支持 ascii,utf-8 等多种格式自适应

使用 deepseek实现 go语言&#xff0c;读取文本文件的功能&#xff0c;要求支持 ascii&#xff0c;utf-8 等多种格式自适应我要用 chatgpt&#xff0c;也问过&#xff0c;但是比 deepseek 还是差一个级别&#xff0c;具体如下&#xff1a; package mainimport ("bufio&qu…...

当电脑上有几个python版本Vscode选择特定版本python

查看当前vscode用的python版本命令 Import sys print(sys.version) 修改VSCODE解释器 打开 VSCode。 按下 CtrlShiftP打开命令面板。 输入 Python: Select Interpreter 并选择它。 从弹出的列表中选择你安装的 Python 解释器。如果你有多个 Python 版本&#xff08;例如…...

大一计算机的自学总结:一维差分与等差数列差分

前言 差分和前缀和一样&#xff0c;也是很重要的基础算法。 一、一维差分 1.内容 当给出一个数组&#xff0c;每次操作让数组某个区间上的值全增加&#xff0c;最后要求返回整个数组的结果。若是一次一次去遍历&#xff0c;时间复杂度肯定很难看。差分可以做到在时间复杂度…...

学习dify第一天:整体架构分析

使用marscode AI插件 从分析最火的dify开始学习使用ai提速首先安装插件功能快捷键使用这个工具如何学习项目首先学习dify那就先上官网看文档开始从docker构建脚本学起看下docker-compose.yamldify里边服务的组件现在看api和web模块api项目根目录有Makefile文件,用于构建api和w…...

C语言的内存分配:malloc和free

使用库函数分配和管理内存。在运行时&#xff0c;分配更多的内存给程序使用&#xff0c;主要工具是malloc函数&#xff0c;这个函数接受一个参数&#xff1a;所需要要的内存字节数。malloc函数会找到合适的空闲内存块&#xff0c;这样的内存是匿名的&#xff0c;即malloc分配了…...

为什么 JSON 不能序列化 set

为什么 JSON 不能序列化 set JSON&#xff08;JavaScript Object Notation&#xff09;作为一种广泛使用的数据交换格式&#xff0c;虽然功能强大&#xff0c;但它无法直接序列化 set 类型。本文将从设计原理、实现限制和实际应用角度&#xff0c;探讨这一现象的原因及解决方案…...

XUnity.AutoTranslator-Gemini——调用Google的Gemini API, 实现Unity游戏中日文文本的自动翻译

XunityAutoTranslator-Gemini-API 本项目是一个使用 Flask 框架和 Google Gemini GenAI 模型构建的 Web API 服务&#xff0c;用于将日文unity游戏文本翻译成简体中文。 日文游戏文本AI翻译API (基于Google Gemini) 本项目是一个使用 Flask 框架和 Google Gemini GenAI 模型…...

深刻理解构件生产线

我们可以将构件生产线类比为软件开发中的一种高效、模块化的构建方式。下面&#xff0c;我将结合Java编程的概念来详细讲解构件生产线的含义和实现方式。 一、构件生产线的概念 构件生产线在软件开发中&#xff0c;类似于工厂中的自动化生产线&#xff0c;它通过将复杂的软件…...

nlp 自然语言处理+bert model +问答系统 question answer system(python 完整代码)

pre-trained bert model 预训练好的Bert模型 本地实现问答系统 用这条命令将bert下载到本地: model.save_pretrained("path/to/model") 也有参考这篇文章 https://colab.research.google.com/drive/1uSlWtJdZmLrI3FCNIlUHFxwAJiSu2J0-#scrollTo=AaweLnNXGhTY …...

【Excel】【VBA】根据内容调整打印区域

Excel VBA&#xff1a;自动调整打印区域的实用代码解析 在Excel中&#xff0c;我们经常需要调整打印区域。今天介绍一段VBA代码&#xff0c;它可以根据C列的内容自动调整打印区域。 Dim ws As Worksheet Dim lastRow As Long Dim r As Long 设置当前工作表 Set ws ActiveSh…...

【读书笔记·VLSI电路设计方法解密】问题53:什么是逻辑综合

逻辑综合是将期望的电路行为的抽象形式&#xff08;通常以RTL表示&#xff09;转换为基于逻辑门&#xff08;标准单元&#xff09;的设计实现的过程。这一过程由具有复杂算法的自动综合工具完成。逻辑综合的结果是网表&#xff0c;它由各种标准单元和特殊宏单元组成。该网表的功…...

Redis 的备份机制

Redis 的备份机制 Redis 是一个高性能的基于内存的键值存储数据库&#xff0c;虽然所有操作都在内存中完成&#xff0c;但 Redis 也提供了持久化机制来确保数据的可靠性和可恢复性。这主要通过 RDB 和 AOF 两种备份机制实现。 RDB&#xff08;Redis Database Backup&#xff…...

CountDownlatch实现原理

文章目录 类图及概要核心方法await() 方法await(long timeout, TimeUnit unit) 方法countDown() 方法getCount() 方法 总结 类图及概要 CountDownLatch 内部有个计数器&#xff0c;并且这个计数器是递减的 。 下面就通过源码看看 JDK 开发组在何时初始化计数器&#xff0c;在何…...

如何为自己的 PDF 文件添加密码?在线加密 PDF 文件其实更简单

随着信息泄露和数据安全问题的日益突出&#xff0c;保护敏感信息变得尤为重要。加密 PDF 文件是一种有效的手段&#xff0c;可以确保只有授权用户才能访问或修改文档内容。本文将详细介绍如何使用 CleverPDF 在线工具为你的 PDF 文件添加密码保护&#xff0c;确保其安全性。 为…...

现代未来派品牌海报徽标设计无衬线英文字体安装包 THANKS LAB

THANK LAB 是一种高级未来主义的软字体&#xff0c;将时尚的现代设计与光滑圆润的边缘相结合&#xff0c;营造出大胆而平易近人的美感。这款字体非常适合品牌、海报、标题、UI/UX 和科幻主题项目&#xff0c;旨在激发创造力。THANK LAB Futuristic Soft Font 完全支持拉丁字母、…...

基于Flask框架的食谱数据可视化分析系统的设计与实现

【Flask】基于Flask框架的食谱数据可视化分析系统的设计与实现 &#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 在当今数字化时代&#xff0c;信息可视化已成为一种高效的数据理解和传播手段。…...

Mac arm架构使用 Yarn 全局安装 Vue CLI

dgqdgqdeMacBook-Pro spid-admin % vue --version zsh: command not found: vue要使用 Yarn 安装 Vue CLI&#xff0c;你可以执行以下命令&#xff1a; yarn global add vue/cli这个命令会全局安装 Vue CLI&#xff0c;让你可以使用 vue 命令创建、管理 Vue.js 项目。以下是一…...

矩阵-旋转图像

旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。输入&#xff1a;二维数组 输出&#xff1a;void 思路&#xff1a;tempM…...

自用开发的商标和工作小工具!

近日普推知产老杨把个人小站改了版&#xff0c;也把以前业余开发的小工具做了下优化和增加了一些新的小工具&#xff0c;这些在线小工具手机和电脑双适应&#xff0c;普推老杨日常也在用&#xff0c;主要在商标方面和内容制做。 商标名称图样免费生成主要用在可以生成符合商标申…...

基于腾讯云大模型知识引擎×DeepSeek构建八字、六爻赛博算卦娱乐应用

引言 随着DeepSeek的火爆&#xff0c;其强大的思维链让不少人越用越香&#xff0c;由于其缜密的思维和推理能力&#xff0c;不少人开发出了不少花里胡哨的玩法&#xff0c;其中一种就是以八字、六爻为代表的玄学文化正以“赛博玄学”的新形态席卷年轻群体。 针对于八字、六爻…...

八股文实战之JUC:静态方法的锁和普通方法的锁

1、对于staic同步方法锁住的是class类模板&#xff08;Class对象&#xff09; 对象是线程&#xff08;调用者&#xff09; 调用者只有获取资源的锁才能调用 2、普通同步方法 锁住的资源是class对象 对象是线程&#xff08;调用者&#xff09;即&#xff1a; 静态同步方法&a…...

VTK知识学习(42)-基本的图形操作(三)

1、网格平滑 1&#xff09;概述 现代扫描技术的发展使得获取点云数据不再困难&#xff0c;通过曲面重建技术可以获取表面网格来表示各种复杂的实体。但是点云数据中往往存在噪声&#xff0c;这样得到的重建网格通常都需要进行平滑处理。 拉普拉斯平滑是一种常用的网格…...

代码随想录算法训练营day40(补0208)

买卖股票专栏 1.买卖股票最佳时机 贪心法&#xff0c;好想 题目 121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖…...

python基于深度学习实现遮挡人脸识别系统的详细方案

以下是一个基于深度学习实现遮挡人脸识别系统的详细方案,使用Python语言: 一、需求理解 遮挡人脸识别系统旨在准确识别出即使面部部分被遮挡(如口罩、眼镜等)的人的身份。该系统将利用深度学习技术,结合合适的数据集进行训练,以达到较高的识别准确率。 二、系统架构 …...

【Python爬虫(43)】云端探秘:Python分布式爬虫部署攻略

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…...

Java集合框架大师课:从青铜到王者的数据结构指南(一)

&#x1f680; Java集合框架大师课&#xff1a;从青铜到王者的数据结构指南&#xff08;一&#xff09; &#x1f31f; 系列定位&#xff1a;全网最懂小白的JCF实战教程 | 建议搭配IDE边学边练 &#x1f3af; 学习路线图 第一章&#xff1a;初识JCF江湖 1.1 什么是JCF&#xf…...

Vmware虚拟机Ubantu安装Docker、k8s、kuboard

准备工作: 切换用户&#xff1a;su root关闭防火墙: sudo ufw diasble关闭swap: systemctl stop swap.target systemctl status swap.target systemctl disable swap.target #开机禁用 systemctl stop swap.img.swap systemctl status swap.img.swap关闭虚拟交换分区 vim /…...

Java面试——Tomcat

优质博文&#xff1a;IT_BLOG_CN 一、Tomcat 顶层架构 Tomcat中最顶层的容器是Server&#xff0c;代表着整个服务器&#xff0c;从上图中可以看出&#xff0c;一个Server可以包含至少一个Service&#xff0c;用于具体提供服务。Service主要包含两个部分&#xff1a;Connector和…...

游戏引擎学习第113天

仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板&#xff1a;优化的基本过程 在游戏编程中&#xff0c;优化是一个非常重要的学习内容&#xff0c;尤其是想要成为专业开发者时。优化的核心是理解代码的执行速度&#xff0c;以及如何提升其性能。在这个阶段&#xff0c;已经…...

【EB-02】TC397 Tresos 最小工程配置

TC397 Tresos 最小工程配置 1. 新建demo 工程2. 配置消除错误2.1 ResourceM 设置2.2 McalLib模块配置3. 生成代码3.1 校验工程3.2 生成代码1. 新建demo 工程 新建工程 设置工程名称 选择芯片型号 选择添加模块 得到最小工程需求模块 2. 配置消除错误 2.1 ResourceM 设置 设置芯…...

深入理解WebSocket接口:如何使用C++实现行情接口

在现代网络应用中&#xff0c;实时数据传输变得越来越重要。通过WebSocket&#xff0c;我们可以建立一个持久连接&#xff0c;让服务器和客户端之间进行双向通信。这种技术不仅可以提供更快的响应速度&#xff0c;还可以减少不必要的网络流量。本文将详细介绍如何使用C来实现We…...

前端面试题

以下是一些前端面试题: 一、HTML/CSS部分 如何实现一个元素的背景颜色渐变效果,并且在不同浏览器中保持兼容性? 答案: 对于现代浏览器,可以使用标准的CSS渐变语法。 线性渐变示例(从左到右,红色到蓝色):background: linear - gradient(to right, red, blue);径向渐变…...

Win11 24h2 不能正常使用ensp的问题(已解决)

因为Win11 24h2的内核大小更改&#xff0c;目前virtualbox在7.1.4中更新解决了。所以Win11 24H2系统版本无法使用 5.x.xx的virtualbox版本&#xff0c;virtualbox对于这个5.x.xx版本早已停止维护&#xff0c;所以这个以后不会有调整。 对应的报错代码是 virtualbox错误代码&…...

Hyper-V初探

听说window自带虚拟机&#xff0c;小窃喜了一下&#xff0c;这样就不用下载第三方虚拟机软件了&#xff1a;VMware或者Oracle VirtualBox&#xff0c;但是本地搜索一看&#xff0c;发现没有安装&#xff0c;百度了一下说家庭中文版是个阉割版的系统&#xff0c;只有教育版&…...

IP协议

IP协议介绍 IP地址&#xff1d;目标网络&#xff0b;目标主机 IP协议是网络层协议 IP报头格式 [IP报头图片] IP报头解析 4 位版本号(version): 指定 IP 协议的版本, 对于 IPv4 来说, 就是 4. 4 位头部长度(header length): IP 头部的长度是多少个 32bit, 也就是 length 4…...

Django Admin: 实现基于数据库实际值的动态过滤器

在 Django Admin 中,我们经常需要使用 list_filter 来为管理界面添加过滤功能。然而,有时我们希望过滤器能够动态地反映数据库中的实际值,而不是依赖于预定义的选项。本文将介绍如何实现一个基于数据库实际值的动态过滤器,以 ECR 仓库的区域过滤为例。 问题背景 在管理 E…...