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

基于单片机技术的手持式酒精检测电路设计

基于STC89C52单片机的酒精检测仪设计

目录

  • 基于STC89C52单片机的酒精检测仪设计
  • 一、简介
  • 二、酒精测试仪总体方案设计
    • 2.1 酒精检测仪设计要求分析
    • 2.2 设计框图
  • 三、硬件设计
    • 3.1 酒精检测电路
    • 3.2 模数转换电路
    • 3.3 STC89c52单片机电路
    • 3.4 LED显示电路
    • 3.5 声光报警电路
    • 3.6 按键和复位电路
    • 3.7 电源电路
  • 四、软件设计
    • 4.1 主程序模块流程图设计
    • 4.2 模数转换模块流程图设计
    • 4.3 独立按键程序流程图设计
  • 五、系统测试与调试
    • 5.1 USB转串口驱动安装
    • 5.2 下载程序
    • 5.3 系统运行测试

一、简介

该项目是基于单片机设计的一个手持式的酒精检测仪,先进行了电路的设计,然后根据电路进行了实物的手工焊接制作,成品能够检测空气中的酒精含量,可以对人呼出的带有酒精的气体进行酒精浓度检测,当超过一定的浓度数值会进行报警。

项目代码,设计工具,技术文档,电路图,元件清单,实验结果图,开题报告,答辩技巧等等所有文件如下链接,可下载使用。

基于STC89C52单片机的酒精检测仪设计项目文件套装

二、酒精测试仪总体方案设计

2.1 酒精检测仪设计要求分析

酒精检测仪应具有以下特点:

(1)酒精检测仪以c52单片机为控制的主要部件,用LED的方式实现显示气体中酒精的浓度。还要具有用户与系统进行互动的按键、模数转换电路和MQ3传感器等部分。可以实现数据的接收,数据的分析。然后进行数据的存储、数据的计算等过程。

(2)系统小型化,便于携带,与用户的交互界面友好。

(3)系统具有性价比高,功率消耗比较低的特点,此外,软件设计简单易懂。

2.2 设计框图

本设计的框图如下图所示,MQ3气敏传感器输出电压信号,将此信号输出到模数转化器ADC0832,然后经模数转换器处理后,将模拟量的电压信号转换为由0和1组成的数字信号,送入单片机解决分析,单片机决定是否报警,同时将酒精浓度在数码管显示。工作流程图如下

在这里插入图片描述

图1 工作流程图

三、硬件设计

3.1 酒精检测电路

本系统可以对空气检测,测出其中的酒精含量。检测的时候用到的关键元件是MQ3传感器,可用于对酒后驾车的驾驶员的呼出气体的检测,也可以用于严禁酒后工作的工作人员进行检测与监督,还可以用于其他场合,比如需要对乙醇蒸汽进行检测的场合。其特点有如下几点:

(1)对酒精气体有很好的灵敏度也有很好的选择性

(2)具有很好的稳定性和长期的使用寿命

(3)驱动电路简单

主要性能指标:
在这里插入图片描述

图2 传感器性能指标

MQ-3酒精传感器在不同条件下具有不同的敏感性,其灵敏曲线如下图所示,横轴代表的是酒精的浓度,纵轴代表的是传感器的输出阻值,由图可看出,酒精浓度与传感器的输出阻值成反比的关系,不同的酒精浓度值对应不同的传感器输出阻值,因此,可以利用此特点将含有酒精的气体的浓度变化转换为模拟电压值的变化。
在这里插入图片描述

图3 传感器灵敏度曲线

MQ3气敏传感器阻值的变化率与酒精浓度成正比。也与外界环境的温度成正比。如下图所示。

通常来说,在使用前,应该将系统通电五分钟左右,以使酒精传感器能够达到一定的温度,这样才能提高传感器测量的准确度,同时也可以将它的误差降低到最低限度。
在这里插入图片描述

图4 传感器的特性

MQ-3酒精气体传感器的管脚电路如下图所示。该电路中,传感器的电阻值会跟随气体酒精含量的改变而改变。因此,当酒精浓度变化时,输出电压值也会发生改变。
在这里插入图片描述

图5 传感器的管脚图和测试电路

传感器模块的电路原理图如下,传感器利用它的特性将空气中的酒精含量的信号变换为电压信号,然后数据交给后面ADC0832处理,
在这里插入图片描述

图6 酒精传感器电路

3.2 模数转换电路

在系统实际应用中,被测的物理量好多都是模拟的数据量。这些模拟量要被单片机所识别,必须转化为电信号才行。而传感器可以实现这个过程,输出该物理量的电信号。之后将这些模拟电信号转化为数字量才能被单片机所识别,而后单片机对此数字量信号进行分析。在这个过程中,将模拟的数据转为数字数据的元件就是模数转换器。

该设计的转换器选用的是交常用的ADC0832,它的分辨率是八位的,而且性价比很高,在现代社会已经被好多地方采用。

ADC0832特点如下:

(1)分辨率8位

(2)A/D转换是双通道

(3)工作频率250KHZ转换时间是32μS;

(4)功耗一般为15mw

(5)商用的芯片工作温度为0°C 到70°C,工业的芯片温度为−40°C 到85°C;

ADC0832视图如下
在这里插入图片描述

图7 ADC管脚图

模数转换模块电路如下:
在这里插入图片描述

图8 模数转换电路

3.3 STC89c52单片机电路

本设计的控制部分采用的是STC89c52,运行时它的性能很高,而且上电后功率消耗很低,C52单片机和C51单片机有很多相似之处,比如说它们的内核相同, 89C52经过改进后也具有很多89C52不具备的功能,属于升级版本,单片机上集成了不计其数的电路,将CPU,输入输出电路、存储器、定时器、串行通信口、脉宽调制电路,显示驱动电路等缩小化到一个很小的芯片上,形成一个五脏具在的计算机系统,可以承担各种任务,这些任务在软件程序的控制下,可以准确无误的进行。

STC89C52的内部硬件结构如下图所示
在这里插入图片描述

图9 单片机硬件结构图

STC89C52的组成部件和特点有:

(1)有两种时钟机器周期,可以设置六或十二时钟机器周期。

(2)52单片机的指令代码可以兼容51单片机。

(3)当52单片机工作时,频率大约为零到四十兆赫兹,51单片机为零到八十兆赫兹。实际工作时,52单片机的工作频率也可能超过四十兆赫兹,可以达到四十八兆赫兹。

(4)一般工作电压在5V左右(5.5~3.4V)

(5)在52单片机上集成有512B的RAM数据存储器

(6)有三十五或三十九个专门的I/O口,准双向口有p1~p4,这和51单片机一样,在总线扩展时候要用到P0口。P0口有两种功能。一种是I/O口,另一种是开漏输出口。

(7)单片机的里面有很多具有特定功能的集成电路,包括复位电路,若外面的晶振的频率低于二十兆赫兹时,无需在外部重复添加复位电路,

(8)在52单片机的里面有专门的定时计数器,位数均为十六位,里面集成有三个这样的定时计数器。由于52单片机是51单片机的升级版本。52单片机内部的定时计数器可以兼容普通的51单片机。

STC89C52的几种工作模式如下:

(1)断电模式:在这种模式下,若突然发生断电,则将内存中的数据存储。单片机暂停的所有工作,等到下一个中断的时候继续工作,或者等到硬件复位的时候,单片机再次工作。它的功率消耗在0.1uA左右。

(2)空闲模式:在这样的模式下,CPU会放下所有工作,处于停止状态。但其他模块会正常运行。它的功率消耗在0.1uA左右。

(3)正常工作模式:就是单片机正常工作的时候。正常执行程序的模式。

单片机电路如下:
在这里插入图片描述

图10 单片机硬件结构图

3.4 LED显示电路

显示电路部分使用LED的方法。相对其他方式来说,LED价格比较划算,电路的结构比较简单。通过对其不同的管脚输入不同的电平从而使它发亮,然后显示出我们需要的数字图形。数码管有两种,就是七段和八段的数码管,八段的有小数点。数码管的接法有两种。本设计用的是共阳极的接法。

本课题选用的LED有四个共同端,每一个共同端控制一个数字的显示。1H是第一个数字,直到4H,依次类推。a、b、c、d、e、f、g、dp是数字的各个段,控制显示特定的数字。LED上这8个端都连接到单片机的P0口,也就是第一到第八号管脚。共同端1H~4H均连接到驱动电路,它可以使数码管显示亮度提高。由于各个数码管点亮的时间是2毫秒,所以看起来好像是几个数码管一同点亮,实际并非一同点亮的。人眼不会感到有闪烁感。动态显示可以节省很多I/O端口,功耗更低。本设计采用的就是动态显示。
在这里插入图片描述

图11 LED显示电路

3.5 声光报警电路

声光报警电路如图所示
在这里插入图片描述

图12 报警电路

当酒精浓度值高于设定的标准值时蜂鸣器会发出响声,二极管会不停的闪烁单片机发出周期的电平脉冲控制蜂鸣器和二极管同时工作。

3.6 按键和复位电路

  1. 复位电路
    在这里插入图片描述
图13 复位电路

复位电路如上图,与单片机的9号复位管脚接在一起。按键的按下与松开状态分别对应高低电位。若该管脚是低电平,则会致使系统复位。

  1. 按键电路

按键电路中的开关一端同接地,另一端接单片机的P2.0~P2.2三个管脚,其作用为设定报警阀值。
在这里插入图片描述

图14 按键电路

3.7 电源电路

电源电路如下图所示,电源开关的1号2号引脚和4号5号引脚是常开触点,2号3号和5号6号是常闭触点,当按下按键时候1号和2号或者4号与5号才会接通电源。
在这里插入图片描述

图15 电源电路

四、软件设计

4.1 主程序模块流程图设计

在这里插入图片描述

图16 主程序的流程图

在主程序中,首先要进行初始化的工作。由于beep被初始化为0,故当开机时候蜂鸣器会响一下,之后执行延时程序150ms,将单片机的输入输出口均初始化为1,执行定时器初始化函数,初始化定时器,然后进入后台while循环,之后会触发A/D转化,然后将电压值变化换算成酒精浓度变化,将酒精浓度显示在LED显示器,判断是否超过设定值,若超越设定值就进行报警,判断有没有按键按下,若有,进行按键的处理,否则继续循环。

4.2 模数转换模块流程图设计

在这里插入图片描述

图17 模数转换流程图

由于模数转换是在脉冲的下降沿触发的。因此在编程的时候须要做一定的延时。一般来说都是延时10ms。该模数转换程序是在第四个脉冲的下降沿开始接受数据。该过程运用for循环实现。在程序中的第二个for循环开始接收校验数据。程序最后进行与校验数据比对,若正确,就返回数据,否则返回0。在程序流程图中,首先是要延时。然后进行模数转换,随时判断是否已经转换结束。若已经完成转换,就可以获得数字量。然后将转换过来的数据送入处理程序中。将获取的数字量换算成相应的酒精浓度值。若转换还没有完成,则继续进行。

4.3 独立按键程序流程图设计

在这里插入图片描述

图18 按键程序流程图

在按键程序模块中,将P2=0x0f,也就是将四个功能键与单片机的接口设置为高电平。进入if条件句,判断P2口的电平是否有改变,若有改变,说明有按下按键的动作,最后获取键值。在程序框图中,首先将所有键与单片机的接口输出为高电平。若有按下的动作,则该引脚将会变为低电平。根据P2口的高低电平状态可判断用户按下了哪个键。如果用户按了某个键,则执行自己提前写好的延时函数。若没有按键按下,则继续进行判断,直到有按键按下才向下执行。当按键释放后进行键值传送,独立按键程序结束。

系统总体的电路图如下所示:
在这里插入图片描述

五、系统测试与调试

5.1 USB转串口驱动安装

当进行系统程序下载的时候,在电脑上找到USB驱动文件夹下的PL2303_Prolific_DriverInstaller_v130.exe。这是我们要安装的程序软件,点击右键,会在菜单出现打开按钮,单击打开,电脑屏幕出现一个对话框,告诉用户安装USB转串口驱动程序。当安装过后,将USB线与电脑接口连接,然后进入控制面板,找到打印机和其他硬件功能,在下面有个设备管理器。鼠标单击端口,会发现下面有Prolific USB-to-Serial CommPort(COMX)。在这里有一个串行口的号码,一定要记住此号码,因为在后面要用到。下载程序的时候要将此号码复制到对应的输入框中。在这之前一定要将要下载的程序在keil中写好,然后进行编译,之后点击链接。这些步骤完了之后,会看到在保存文件的位置有各种格式的该文件,我们需要的要下载的程序文件就是*.hex格式的文件。
在这里插入图片描述

图19 设被管理器截图

5.2 下载程序

在单片机下载软件文件夹下有一个STC_ISP_V481.exe程序文件,双击词程序文件会出现以下界面。
在这里插入图片描述

图20 程序下载界面

需要修改的有几个选项。要选择MCU类型,粘贴刚才的串行口的号码到对应的输入框。波特率的选择通常来说是两千四百或者是一千二百波特率。之后打开之前弄好的.hex格式的程序。现在就可以传输程序数据到单片机了。点击下载即可,之后根据出现的操作方法进行即可。
在这里插入图片描述

根据窗口提示,打开酒精检测仪的电源按钮,给MCU上电。然后等待芯片烧录成功,这些步骤完成过后,进行系统测试,看系统是否可以进行正常工作。

5.3 系统运行测试

到此,整个系统已基本完成,现在进行系统的测试与调试,当通上电源后,打开电源开关,系统发出滴一声,然后数码管亮起,显示00.如下图
在这里插入图片描述

图21 实物图一

表示当前气体酒精浓度为0ppm,按下阀值设置键,进入阀值设置模式。
在这里插入图片描述

图22 实物图二

按下阀值加键,设置阀值为14ppm。
在这里插入图片描述

图23 实物图三

在此按下阀值设置键,回到测试酒精浓度模式,分别在同等环境下测试饮酒人、未饮酒人以及正常空气中的酒精含量。结果是未饮酒人和正常空气的酒精含量均为0ppm,饮酒人的呼出气体酒精含量为35ppm。系统比较稳定,测试的系统反应很灵敏,运行正常。

相关文章:

基于单片机技术的手持式酒精检测电路设计

基于STC89C52单片机的酒精检测仪设计 目录 基于STC89C52单片机的酒精检测仪设计一、简介二、酒精测试仪总体方案设计2.1 酒精检测仪设计要求分析2.2 设计框图 三、硬件设计3.1 酒精检测电路3.2 模数转换电路3.3 STC89c52单片机电路3.4 LED显示电路3.5 声光报警电路3.6 按键和复…...

【车道线检测(0)】卷首语

车道线检测领域,早期的LaneNet、CondLaneNet等模型。现在在精度、实时性、复杂场景适应性等方面有了更多进展。 ​Head(输出头)的设计角度分类 在车道线检测任务中,Head(输出头)的设计角度直接影响模型的…...

记一次某网络安全比赛三阶段webserver应急响应解题过程

0X01 任务说明 0X02 靶机介绍 Webserver(Web服务器)是一种软件或硬件设备,用于接收、处理并响应来自客户端(如浏览器)的HTTP请求,提供网页、图片、视频等静态或动态内容,是互联网基础设施的核心…...

AI 越狱技术剖析:原理、影响与防范

一、AI 越狱技术概述 AI 越狱是指通过特定技术手段,绕过人工智能模型(尤其是大型语言模型)的安全防护机制,使其生成通常被禁止的内容。这种行为类似于传统计算机系统中的“越狱”,旨在突破模型的限制,以实…...

项目进度延误的十大原因及应对方案

项目进度延误主要源于以下十大原因:目标不明确、需求频繁变更、资源配置不足或不合理、沟通不畅、风险管理不足、缺乏有效的项目监控、技术难题未及时解决、团队协作效率低下、决策链过长、外部因素影响。其中,需求频繁变更是导致延误的关键因素之一&…...

瑞友客户端登录GS_ERP时,报错: 由于安全许可证服务器不能提供许可证,连接被中断的解决方法

瑞友客户端登录GS_ERP时,报错:由于安全许可证服务器不能提供许可证,连接被中断的解决方法 瑞友客户端登录GS_ERP时, 报错:由于安全许可证服务器不能提供许可证,连接被中断的解决方法是由于远程桌面连接协议…...

android wifi通过命令行打开2.4G热点

android系统支持2G和5G,但车机系统应用只支持5G,但是需要测试2.4G的射频 方法如下: 1、adb shell 进去,su 指定root权限,确保热点处于关闭状态 2、开启热点为www99999, 密码为12345678, wpa2的加密协议 cm…...

truncate,drop,delete分析

truncate,drop,delete对比分析 特性 TRUNCATE DROP DELETE **操作对象** 表中的所有数据 整个表及其所有数据 表中的特定数据 **是否保留表结构** 是 否 是 **是否可恢复** 不可恢复 不可恢复 可恢复 **性能** 高 高 低(逐行删除) …...

vue+flask图书知识图谱推荐系统

文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站,有好处! 编号: F025 架构: vueflaskneo4jmysql 亮点:协同过滤推荐算法知识图谱可视化 支持爬取图书数据,数据超过万条&am…...

什么是微前端?有什么好处?有哪一些方案?

微前端(Micro Frontends) 微前端是一种架构理念,借鉴了微服务的思想,将一个大型的前端应用拆分为多个独立、自治的子应用,每个子应用可以由不同团队、使用不同技术栈独立开发和部署,最终聚合为一个整体产品…...

prompts提示词经典模板

prompts.py 中的提示词模板详解 文件中定义了两个核心提示词模板:REASON_PROMPT 和 RELEVANT_EXTRACTION_PROMPT。这两个模板在 DeepResearcher 的推理过程中扮演着关键角色。下面我将详细解析这两个模板的结构和功能。 REASON_PROMPT 详解 REASON_PROMPT 是用于指…...

pytorch软件封装

封装代码,通过传入文件名,即可输出类别信息 上一章节,我们做了关于动物图像的分类,接下来我们把程序封装,然后进行预测。 单张图片的predict文件 predict.py 按着路径,导入单张图片做预测from torchvis…...

DAY02:【pytorch】计算图与动态图机制

一、引言 在深度学习框架中,计算图是理解自动求导和模型优化的核心概念。无论是PyTorch的动态图机制,还是TensorFlow早期的静态图模式,计算图都扮演着关键角色。本文将深入解析计算图的基本原理,并结合PyTorch代码演示动态图的运…...

基于元学习(Meta-Learning)的恶意流量检测

元学习(Meta-Learning),即“学会学习”(Learning to Learn),通过让模型从多个相关任务中提取通用知识,实现对新任务的快速适应。在恶意流量检测领域,元学习的核心价值在于从少量攻击样本中泛化出检测规则,尤其适用于新型攻击、定向APT攻击等数据稀缺场景。 一、元学习…...

JavaScript:游戏开发的利器

在近年来的科技迅速发展中,JavaScript 已逐渐成为游戏开发领域中最受欢迎的编程语言之一。它的跨平台特性、广泛的社区支持、丰富的库和框架使得开发者能够快速、有效地创建各种类型的游戏。本文将深入探讨 JavaScript 在游戏开发中的优势。 一、跨平台支持 JavaSc…...

玩转Docker | 使用Docker搭建pinry图片展示系统

玩转Docker | 使用Docker搭建pinry图片展示系统 前言一、Pinry介绍Pinry 简介Pinry 特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署pinry服务下载镜像创建容器检查容器状态检查服务端口安全设置四、访问pinry应用五、pinry基本使用5.1 注册pinry账号…...

DAPP实战篇:使用web3.js实现前端输入钱包地址查询该地址的USDT余额——前端篇

专栏:区块链入门到放弃查看目录-CSDN博客文章浏览阅读385次。为了方便查看将本专栏的所有内容列出目录,按照顺序查看即可。后续也会在此规划一下后续内容,因此如果遇到不能点击的,代表还没有更新。声明:文中所出观点大多数源于笔者多年开发经验所总结,如果你想要知道区块…...

企业信息化-系统架构师(九十八)

1在对一个软件系统进行设计与确认后,需要进行架构复审,架构复审目的标识潜在风险,及早发现架构的缺陷和漏洞,在架构复审过程中,主要由()决定架构满足需求,质量需求是否在设计中体现。…...

【C++算法】54.链表_合并 K 个升序链表

文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 23. 合并 K 个升序链表 题目描述: 解法 解法一:暴力解法 每个链表的平均长度为n,有k个链表,时间复杂度O(nk^2) 合并两个有序…...

阿里云CDN应对DDoS攻击策略

阿里云CDN遭遇DDoS攻击时,可通过以下综合措施进行应对,保障服务的稳定性和可用性: 1. 启用阿里云DDoS防护服务 阿里云提供专业的DDoS防护服务,通过流量清洗中心过滤恶意流量,确保合法请求正常传输。该服务支持按需选…...

MySQL8的索引跳跃扫描原理

#MySQL 8 的索引跳跃扫描(Index Skip Scan)原理 1. 什么是索引跳跃扫描?索引跳跃扫描(Index Skip Scan)是 MySQL 8.0.13 引入的一种优化技术,允许在某些情况下跳过联合索引的最左前缀字段,仍然…...

centos 启动nginx 服务器

✅ 如果你是通过 yum 安装的 Nginx(推荐方式): 🔹 启动 Nginx: sudo systemctl start nginx 🔹 设置开机自启(建议开启): sudo systemctl enable nginx &#x1f53…...

格式化输出

% 符号相关 数据类型代码 %s:字符串 示例:print("名字是 %s" % "Tom") → 名字是 Tom%c:字符/ASCII码 示例:print("%c" % 65) → A%d/%i:有符号整数 示例:print("年龄…...

[leetcode]动态规划:斐波那契数列

一.线性dp 1.0什么是线性dp 线性DP就是指状态的转移具有线性递推关系&#xff0c;每个状态只依赖之前的状态&#xff0c;按照线性顺序一步步递推下去。 1.1斐波那契数列问题 #include <iostream> #include <vector> using namespace std; int main() { in…...

HackMyVM - todd记录

HackMyVM - toddhttps://mp.weixin.qq.com/s/E_-hepdfY-0veilL1fl2QA...

【spark认任务提交】配置优先级顺序

配置优先级顺序 Spark-submit 命令行参数 (最高优先级)代码中通过 SparkConf 设置的参数 (在应用程序中直接设置)spark-defaults.conf 文件中的配置 实际应用中的建议 固定配置&#xff1a;将集群级别的默认配置放在 spark-defaults.conf 中应用特定配置&#xff1a;将应用特…...

如何建立高效的会议机制

建立高效的会议机制需做到&#xff1a;明确会议目标、制定并提前分发议程、控制会议时长、确保有效沟通与反馈、及时跟进执行情况。其中&#xff0c;明确会议目标是核心关键&#xff0c;它直接决定了会议的方向与效率。只有明确目标&#xff0c;会议才不会偏离初衷&#xff0c;…...

spark Core-RDD转换算子

1. map算子&#xff1a;对RDD中的数据逐条进行映射转换&#xff0c;可实现类型或值的转换。函数签名为 def map[U: ClassTag](f: T > U): RDD[U] 。 2. mapPartitions算子&#xff1a;以分区为单位处理数据&#xff0c;可进行任意处理。与 map 相比&#xff0c; map 是分区内…...

【图像处理】C++实现通用Raw图转Unpack14的高效方法

一、需求背景 在图像处理领域&#xff0c;我们经常需要处理各种位深的原始数据&#xff08;如Raw8、Unpack10等&#xff09;。某些高端相机或传感器会输出14位精度的图像数据&#xff0c;但受传输限制&#xff0c;实际存储时可能采用低位深打包。本文将实现一个通用转换函数&a…...

Vue3的Composition API与React Hooks有什么异同?

Vue3的一个重大更新点就是支持Composition API&#xff0c;而且也被业界称为hooks&#xff0c;那么Vue3的“Hooks”与React的Hooks有这么区别呢&#xff1f; 一、核心相似点 1. 逻辑复用与代码组织 都解决了传统类组件或选项式 API 中逻辑分散的问题&#xff0c;允许将相关逻…...

Gerrit的安装与使用说明(Ubuntu)

#本页面按192.168.60.148服务器举例进行安装配置 1.权限配置 ## 使用root或者有sudo权限用户执行 # 创建gerrit用户 sudo useradd gerrit # 设置gerrit用户的密码 sudo passwd gerrit # 增加sudo权限 sudo visudo 在root ALL(ALL:ALL) ALL行下添加如下内容 gerrit ALL(ALL:…...

如何在Git历史中抹掉中文信息并翻译成英文

如何在Git历史中抹掉中文信息并翻译成英文 在软件开发和版本控制领域&#xff0c;维护一个清晰、一致的代码历史记录是至关重要的。然而&#xff0c;有时我们可能会遇到需要修改历史提交的情况&#xff0c;比如删除敏感信息或修正错误。本文将详细探讨如何在Git历史中抹掉中文…...

Ubuntu利用docker将ONNX模型转换为RK3588模型

1.安装docker 下载教程 1.拉取镜像 方法一&#xff1a;通过命令拉取 # 下载官方Docker镜像sudo docker pull registry.cn-hangzhou.aliyuncs.com/rockchip/rknn-toolkit2:v2.3.0 方法二&#xff1a;通过rknn-toolkit2自带的直接安装 2.开始工作 创建工作目录并复制ONNX模型…...

Go:入门

文章目录 Hello, World命令行参数找出重复行GIF动画获取一个URL并发获取多个URL一个 Web 服务器其他 Hello, World Hello world package main import "fmt" func main() {fmt.Println("Hello, 世界") }package main表明这是一个可独立执行的程序包&#…...

深入理解 ResponseBodyAdvice 及其应用

ResponseBodyAdvice 是 Spring MVC 提供的一个强大接口&#xff0c;允许你在响应体被写入 HTTP 响应之前对其进行全局处理。 下面我将全面介绍它的工作原理、使用场景和最佳实践。 基本概念 接口定义 public interface ResponseBodyAdvice<T> {boolean supports(Metho…...

SpringBoot对接火山引擎大模型api实现图片识别与分析

文章目录 一、前言二、创建应用三、后端1.SDK集成2.调用Rest API 四、前端 一、前言 Spring AI实战初体验——实现可切换模型AI聊天助手-CSDN博客 如上&#xff0c;在上一篇博客&#xff0c;我们已经实现了spring ai对接本地大模型实现了聊天机器人&#xff0c;但是目前有个新…...

Java ---成员,局部变量与就近原则

成员变量 声明在类内部&#xff0c;但在方法、构造器或代码块之外的变量。 属于类的实例&#xff08;对象&#xff09;或类本身&#xff08;静态变量&#xff09;。 实例变量&#xff08;非静态成员变量&#xff09;&#xff1a; public class Person {private String name…...

基于libevent写一个服务器(附带源码)

使用libevent搭建服务器 服务器源码二级目录 使用开源框架&#xff0c;目的是减少程序员对一些精细的操作的误操作&#xff0c;也是为了让程序员能更好的对接业务而不是底层api的使用。 为何使用libevent&#xff0c;因为libevent开源已经有十几年了&#xff0c;能很好的承受数…...

2.2.3 Spark Standalone集群

搭建Spark Standalone集群需要完成多个步骤。首先&#xff0c;配置主机名、IP地址映射、关闭防火墙和SeLinux&#xff0c;并设置免密登录。接着&#xff0c;配置JDK和Hadoop环境&#xff0c;并在所有节点上分发配置。然后&#xff0c;下载并安装Spark&#xff0c;配置环境变量和…...

每天记录一道Java面试题---day38

说说类加载器双亲委派模型 回答重点 AppClassLoader的父加载器是ExtClassLoader&#xff0c;ExtClassLoader的父加载器是BootStrapClassLoader。JVM在加载一个类时&#xff0c;会调用AppClassLoader的laodClass方法来加载这个类&#xff0c;不过在这个方法中&#xff0c;会先…...

[ctfshow web入门] web33

信息收集 相较于上一题&#xff0c;这题多了双引号的过滤。我猜测这一题的主要目的可能是为了不让使用$_GET[a]之类的语句&#xff0c;但是$_GET[a]也是一样的 没有括号可以使用include&#xff0c;没有引号可以使用$_GET 可以参考[ctfshow web入门] web32&#xff0c;其中的所…...

【时时三省】(C语言基础)用switch语句实现多分支选择结构

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 if语句只有两个分支可供选择&#xff0c;而实际问题中常常需要用到多分支的选择。例如&#xff0c;学生成绩分类(85分以上为A等&#xff0c;70 ~ 84分为B等&#xff0c;60 ~ 69分为C等)&…...

为您的 Web 应用选择最佳文档阅读器

为显示选择合适的文档查看器是开发 Web 应用过程中至关重要的一步。文档查看器应能在提供功能性的同时&#xff0c;确保用户体验的流畅性。 开发人员必须评估多种因素&#xff0c;以确保效率、性能和兼容性。本文将帮助您了解影响用户文档浏览体验成功与否的关键指标。 渲染质…...

js逆向入门图灵爬虫练习平台第六题

地址&#xff1a;aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvNi8 观察可以发现请求头有有字段加密和响应结果加密 查看启动器 开始断点调试 直接复制里面的js内容&#xff0c;测试函数...

招商蛇口 | 回归生活本身,革新CID的143㎡改善标准

时光流转&#xff0c;城市向前。在西安这片千年文脉的沃土之上&#xff0c;招商蛇口已深耕11载&#xff0c;用21座标杆作品&#xff0c;为17000余户家庭筑就理想栖居。从曲江到高新&#xff0c;从城市更新到人居焕新&#xff0c;每一座作品都是对“美好生活承载者”使命的践行。…...

第6课:分布式多智能体系统架构

分布式多智能体系统架构&#xff1a;从算力协同到微服务部署的工程化实践 一、引言&#xff1a;当智能体规模突破百级&#xff1a;分布式架构为何成为必选项&#xff1f; 在多智能体系统&#xff08;MAS&#xff09;从“实验室Demo”走向“工业级应用”的过程中&#xff0c;传…...

Vue3 Teleport 深度解析与面试技巧

Vue3 Teleport 深度解析与面试技巧 一、Teleport 核心价值解析 1.1 诞生背景与设计哲学 DOM层级困境&#xff1a;传统组件树与视觉层级的矛盾样式污染问题&#xff1a;z-index层级管理的世纪难题逻辑解耦需求&#xff1a;业务逻辑与DOM结构的正交性要求 1.2 核心能力矩阵 能…...

断言与反射——以golang为例

断言 x.(T) 检查x的动态类型是否是T&#xff0c;其中x必须是接口值。 简单使用 func main() {var x interface{}x 100value1, ok : x.(int)if ok {fmt.Println(value1)}value2, ok : x.(string)if ok {//未打印fmt.Println(value2)} }需要注意如果不接受第二个参数就是OK,这…...

react函数组件中,className字符串、style对象如何在父子组件之间传递

一、需要传递的样式在父组件的scss文件中提前写好 子组件的dom解析后&#xff1a; 二、向子组件直接传递style对象...

WHAT - React Portal 机制:将子组件渲染到 DOM 的指定节点

文章目录 适合场景基本语法示例&#xff1a;Modal 弹窗1. 创建一个简单的 Modal.tsx2. 在 App 中使用 为什么要用 Portal&#xff1f;TypeScript 中 Portal 类型定义&#xff1f; 适合场景 React Portal 是 React 提供的一种机制&#xff0c;让你可以将子组件渲染到 DOM 的指定…...