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

DS18B20 温度传感器实验探索与实践分享​

DS18B20 温度传感器实验探索与实践分享

在嵌入式系统开发领域,温度监测是常见的应用场景。本次实验聚焦于 DS18B20 温度传感器,旨在掌握其工作原理、单总线通信方式,以及实现温度采集与数码管显示,同时开启温度报警功能。接下来,就带大家深入了解整个实验过程。

一、实验目的与内容概述

本次实验主要有三大目标:一是掌握数码管的使用方式,实现数据的可视化呈现;二是深入理解 DS18B20 温度传感器的工作原理,包括其独特的单总线传输机制;三是熟练运用单总线通信方式,完成单片机 MCU 与 DS18B20 之间的数据传输。实验内容围绕学习 DS18B20 的单总线传输,通过单片机 I/O 实现温度采集,并将采集到的温度数据在数码管上显示,同时设置温度报警阈值,当温度超过阈值时触发嗡鸣器报警。

二、实验设计与关键模块解析

(一)整体思路

本实验利用数码管动态显示技术,实现温度五个位的同时显示。程序先判断是否输入转换命令,若有则发送读取温度指令,接着依次读取数据的低字节和高字节,并将其合并。随后,将合并后的数据转换为数码管可显示的段码数,存储在数组中。最后,将转换后的数据与预设阈值比较,根据比较结果决定是否报警并显示温度。

(二)程序流程图

(三)主要模块设计与代码分析

  1. 读温度模块
  • 设计思路:依据单总线协议,逐位从传感器数据线读取数据。初始化变量byte存储字节数据,通过八次循环,每次循环读取一位数据。循环中先拉低数据线,再释放并延时等待数据稳定,然后读取数据存入byte相应位置,循环结束返回读取的字节数据。
  • 代码分析

uchar Ds18b20ReadByte()

{

uchar byte, bi;

uint i, j;

for(j=8; j>0; j--)

{

DSPORT = 0;//先将总线拉低1us

i++;

DSPORT = 1;//然后释放总线

i++;

i++;//延时6us等待数据稳定

bi = DSPORT; //读取数据,从最低位开始读取

/*将byte左移一位,然后与上右移7位后的bi,注意移动之后移掉那位补0。*/

byte = (byte >> 1) | (bi << 7);

i = 4; //读取完之后等待48us再接着读取下一个数

while(i--);

}

return byte;

}

  1. 温度转换模块
  • 设计思路:datapros函数接收温度值,将其转换为数码管显示格式。先判断温度正负,负数则添加负号并转换为正数补码形式,接着将温度值乘以 0.0625 再乘以 100,进行四舍五入处理。然后将处理后的温度值分解为各个位数,将对应段码存入DisplayData数组,同时提取百位值用于报警判断。
  • 代码分析
 

void datapros(int temp) // 温度处理函数,将温度值转换为数码管显示数据

{

float tp; // 临时变量,用于存储温度值的转换结果

if(temp < 0) // 如果温度值小于0

{

DisplayData[0] = 0x40; // 显示负号

temp = temp - 1; // 温度值取反并加1

temp = ~temp; // 对温度值取反

tp = temp; // 将结果存储到临时变量tp

temp = tp * 0.0625 * 100 + 0.5; // 将温度值转化为对应的显示值

}

else // 如果温度值大于等于0

{

DisplayData[0] = 0x00; // 不显示负号

tp = temp; // 将温度值存储到临时变量tp

temp = tp * 0.0625 * 100 + 0.5; // 转换温度值为对应的显示值

}

// 分别计算出各个数字的显示编码

DisplayData[1] = smgduan[temp / 10000]; // 显示万位

DisplayData[2] = smgduan[temp % 10000 / 1000]; // 显示千位

DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80; // 显示百位,带小数点

DisplayData[4] = smgduan[temp % 100 / 10]; // 显示十位

DisplayData[5] = smgduan[temp % 10]; // 显示个位

temp1 = temp % 10000 / 100; // 提取温度的百位值,用于后续报警判断

}

  1. 显示模块
  • 设计思路:DigDisplay函数实现数码管动态显示。通过循环控制 6 个数码管,利用switch语句根据循环变量设置位选信号,选择当前显示的数码管。然后将对应显示数据通过P0端口发送,发送后延时控制显示时间,最后清零P0端口避免干扰,利用视觉暂留效应实现同时显示效果。
  • 代码分析
 

void DigDisplay() // 数码管显示函数,控制数码管的显示

{

u8 i;

for(i = 0; i < 6; i++) // 循环控制6个数码管的显示

{

switch(i) // 控制不同的数码管显示

{

case(0): // 显示第1个数码管

LSA = 0; LSB = 0; LSC = 0;

break;

case(1): // 显示第2个数码管

LSA = 1; LSB = 0; LSC = 0;

break;

case(2): // 显示第3个数码管

LSA = 0; LSB = 1; LSC = 0;

break;

case(3): // 显示第4个数码管

LSA = 1; LSB = 1; LSC = 0;

break;

case(4): // 显示第5个数码管

LSA = 0; LSB = 0; LSC = 1;

break;

case(5): // 显示第6个数码管

LSA = 1; LSB = 0; LSC = 1;

break;

}

P0 = DisplayData[5 - i]; // 将显示数据传递给P0端口

delay(85); // 延时,控制数码管的显示时间

P0 = 0x00; // 清除P0端口,避免干扰

}

}

  1. 报警模块
  • 设计思路:检查温度是否超过 30 度,若超过则蜂鸣器鸣叫 2000 次,每次间隔 10 毫秒。鸣叫结束后,重新读取并显示温度,最后关闭蜂鸣器。
  • 代码分析
 

if(temp1 >= 30) // 如果温度超过30度,蜂鸣器报警

{

u16 i = 2000;

while(i--) // 蜂鸣器持续鸣叫2000次

{

BEEP = !BEEP; // 切换蜂鸣器状态

delay(10); // 延时控制蜂鸣器鸣叫频率

}

datapros(Ds18b20ReadTemp()); // 重新读取并处理温度

DigDisplay(); // 更新数码管显示

i = 0;

BEEP = 0; // 关闭蜂鸣器

}

三、实现效果展示

经过代码编写与调试,实验取得了预期效果。正常情况下,数码管能够准确显示当前温度值,如图 1 所示。当用手指触碰传感器,使温度超过 30 度时,蜂鸣器立即发出报警声,同时数码管持续显示实时温度,如图 

四、实验总结与心得体会

(一)心得体会

通过本次实验,我对单片机编程和硬件交互有了更深入的理解。从温度传感器数据读取到数码管显示,再到报警功能实现,每一个环节都让我体会到嵌入式系统开发的魅力与挑战。同时,也提升了自己解决实际工程问题的能力,尤其是在时序控制和调试方面积累了宝贵经验。

(二)遇到的困难与解决方法

  1. 编程模型不熟悉:初期因对单片机编程模型陌生,在编写温度读取和处理函数时困难重重。通过查阅数据手册和在线教程,逐步熟悉 51 单片机寄存器和编程模型,改进了相关代码。
  1. 硬件连接错误:硬件连接不正确导致无法读取温度数据。经仔细检查电路图并多次尝试,确保了 DS18B20 传感器与单片机 I/O 端口的正确连接,使传感器正常工作。
  1. 延时函数问题:延时函数不精确影响数码管显示和蜂鸣器报警逻辑。通过调整延时函数循环计数,精确控制时间,改善了显示和报警效果。

这次 DS18B20 温度传感器实验不仅是一次技术实践,更是一次学习成长的过程。希望我的分享能对大家在嵌入式系统开发学习中有所帮助,如果你在实验过程中有任何问题或新的想法,欢迎在评论区交流讨论!

相关文章:

DS18B20 温度传感器实验探索与实践分享​

DS18B20 温度传感器实验探索与实践分享 在嵌入式系统开发领域&#xff0c;温度监测是常见的应用场景。本次实验聚焦于 DS18B20 温度传感器&#xff0c;旨在掌握其工作原理、单总线通信方式&#xff0c;以及实现温度采集与数码管显示&#xff0c;同时开启温度报警功能。接下来&…...

RT_Thread——内存管理

文章目录 一、为什么要自己实现内存管理二、RT-Thread 的内存管理方法2.1 小内存管理算法2.2 slab 管理算法2.3 memheap 管理算法 三、Heap 相关的函数3.1 rt_system_heap_init3.2 rt_malloc/rt_realloc/rt_calloc2.3 rt_free2.4 rt_malloc_sethook/rt_free_sethook 一、为什么…...

Temporary failure in name resolution

这个错误 ping: baidu.com: Temporary failure in name resolution 通常表示 DNS 解析的问题&#xff0c;也就是说你的系统无法通过域名服务器解析 baidu.com 的 IP 地址。 解决方案&#xff1a; 检查 DNS 配置( 有效 )&#xff1a; 确保系统的 DNS 配置是正确的。你可以检查 …...

【动手学深度学习】1.4~1.8 深度学习的发展及其特征

目录 1.4. 起源1.5. 深度学习的发展1.6. 深度学习的成功案例1.7. 特点1.8. 小结 1.4. 起源 深度学习的起源可追溯至多个领域的长期发展&#xff1a; 统计学基础&#xff1a;早期统计学方法&#xff08;如伯努利分布、高斯分布、最小均方算法&#xff09;和估计思想&#xff08…...

深度学习之序列建模的核心技术:LSTM架构深度解析与优化策略

LSTM深度解析 一、引言 在深度学习领域&#xff0c;循环神经网络&#xff08;RNN&#xff09;在处理序列数据方面具有独特的优势&#xff0c;例如语音识别、自然语言处理等任务。然而&#xff0c;传统的 RNN 在处理长序列数据时面临着严重的梯度消失问题&#xff0c;这使得网…...

Gartner研究报告《Generative AI 赋能Digital Commerce的三种路径》学习心得

一、研究背景 随着生成式 AI(GenAI)技术的迅速发展,其在数字商务领域的应用受到了广泛关注。这篇研究报告深入探讨了 GenAI 在数字商务中的角色以及它如何与现有的数字商务技术相结合来发挥优势,为应用领导者提供了关于如何利用 GenAI 优化技术投资策略的见解。 二、GenA…...

解锁 YOLOv8 新潜能:EfficientViT 主干网络的优化实践与实验数据解读

文章目录 一、YOLO 系列主干网络的发展历程二、EfficientViT&#xff1a;YOLOv8 主干网络的新宠&#xff08;一&#xff09;EfficientViT 的核心优势&#xff08;二&#xff09;EfficientViT 在 YOLOv8 中的集成与实现 三、实验对比&#xff1a;EfficientViT vs. MobileNet 系列…...

【前端基础】12、CSS的overflow(visible、hidden、scroll、auto)【注:只有最基础的说明。】

一、overflow的作用 用于控制内容溢出时的行为。 二、overflow的使用 visible&#xff1a;超出的部分正常显示&#xff08;默认设定&#xff09; hidden&#xff1a;超出的部分隐藏显示&#xff08;直接裁剪掉&#xff09; scroll&#xff1a;超出的部分滚动显示 滚动条…...

创建一个element plus项目

当然可以&#xff01;下面是一个 Vue 3 Element Plus 的最简单完整示例&#xff0c;它包括&#xff1a; 使用 <el-button> 按钮组件点击按钮后用 ElMessage 弹出提示 ✅ 1. 安装并初始化项目&#xff08;如果还没创建项目&#xff09; 你可以用官方推荐的方式快速创建…...

openCV1.1 Mat对象

imread(“D:\souse\duoxile.jpg”, IMREAD_COLOR); 功能: 从指定路径读取图像文件并解码为OpenCV的Mat对象 第一个参数: 文件路径 类型: const string&描述: 要读取的图像文件的绝对或相对路径示例: “D:\souse\duoxile.jpg” 或 “./images/test.png”第二个参数: 读取模…...

C++:array容器

array容器是序列容器&#xff0c;它的特点是&#xff1a;静态&#xff0c;固定数目。可以看作更安全的数组。 它还有一些成员函数&#xff0c;如begin&#xff08;&#xff09;&#xff1a;返回指向容器中第一个元素的随机访问迭代器。 #include<iostream>//数组容器 #…...

26、AI 预测性维护 (燃气轮机轴承) - /安全与维护组件/ai-predictive-maintenance-turbine

76个工业组件库示例汇总 AI 预测性维护模拟组件 (燃气轮机轴承) 概述 这是一个交互式的 Web 组件,旨在模拟基于 AI 的预测性维护 (Predictive Maintenance, PdM) 概念,应用于工业燃气轮机的关键部件(例如轴承)。它通过模拟传感器数据、动态预测剩余使用寿命 (RUL),并根…...

特种兵参会

出发&#xff08;5.15&#xff09; 有了去年去5月去深圳参加OpenTenBase工委会成立的经验&#xff0c;今年这个时候去广州就一定要在下午16点前起飞。恰好到了候机口有蔚来的牛屋&#xff0c;进去躺了一会。飞机顺利到达广州。晚上小聚 总监约了祁总&#xff0c;我们相识多年&…...

手搓四人麻将程序

一、麻将牌的表示 在麻将游戏中&#xff0c;总共有一百四十四张牌&#xff0c;这些牌被分为多个类别&#xff0c;每个类别又包含了不同的牌型。具体来说&#xff0c;麻将牌主要包括序数牌、字牌和花牌三大类。序数牌中&#xff0c;包含有万子、条子和筒子&#xff0c;每种花色…...

一命通关单调栈

前言 我们只是卑微的后端开发。按理说&#xff0c;我们是不需要学这些比较进阶的算法的&#xff0c;可是&#xff0c;这个世界就是不讲道理。最开始&#xff0c;想法是给leetcode中等题全通关&#xff0c;我又不打ACM我去天天钻研hard干嘛&#xff0c;于是碰见单调栈树状数组的…...

NV009NV010美光闪存颗粒NV011NV012

NV009NV010美光闪存颗粒NV011NV012 美光NV009-NV012闪存颗粒技术解析与行业应用全景 一、核心技术架构与制程突破 美光NV009至NV012系列闪存颗粒基于第九代3D TLC架构&#xff0c;通过垂直堆叠技术突破传统2D平面存储的物理限制。该架构将存储单元分层排列&#xff0c;如同将…...

线程、线程池、异步

目录 什么是线程 什么是线程池 什么是异步 异步与线程关系 JS中的异步 什么是线程 线程 Thread 是计算机执行的最小单位&#xff0c;是 进程 内的一个实体&#xff0c;可以被操作系统独立调用和执行 线程可以理解为进程内的“程序执行流”&#xff0c;一个进程可以包含多…...

docker面试题(4)

Docker与Vagrant有何不同 两者的定位完全不同 Vagrant类似于Boot2Docker&#xff08;一款运行Docker的最小内核&#xff09;&#xff0c;是一套虚拟机的管理环境&#xff0c;Vagrant可 以在多种系统上和虚拟机软件中运行&#xff0c;可以在Windows、Mac等非Linux平台上为Docker…...

双检锁(Double-Checked Locking)单例模式

在项目中使用双检锁&#xff08;Double-Checked Locking&#xff09;单例模式来管理 JSON 格式化处理对象&#xff08;如 ObjectMapper 在 Jackson 库中&#xff0c;或 JsonParser 在 Gson 库中&#xff09;是一种常见的做法。这种模式确保了对象只被创建一次&#xff0c;同时在…...

建立java项目

java端: 在idea里面新建一个java,maven项目(springboot): 注意:JDK与java都得是一样的 添加基本的依赖项: 也可以在pom.xml中点击这个,从而跳转到添加依赖 建立三层架构: 在相应的java类中添加代码: <1.UserController package com.example.demo.controller;import com…...

Go语言内存共享与扩容机制 -《Go语言实战指南》

切片作为 Go 中的高频数据结构&#xff0c;其内存共享机制和自动扩容策略直接影响程序性能与行为&#xff0c;深入理解这两者&#xff0c;是高效使用切片的关键。 一、切片的内存结构回顾 切片是对底层数组的一个抽象&#xff0c;其本质是一个结构体&#xff1a; type slice …...

如果教材这样讲--单片机IO口Additional Functions和 Alternate Functions的区别

不管是硬件工程师还是嵌入式软件工程师&#xff0c;都应该能够熟练的看懂数据手册&#xff0c;尤其是英文。在设计单片机外围电路时&#xff0c;工程师需要了解单片机的GPIO口的各项功能来满足自己的设计需求&#xff0c;单片机小白们在查看单片机数据手册时&#xff0c;看到Ad…...

《Effective Java(第三版)》笔记

思维导图 1-4章 5-8章 9-12 章 资料 源码&#xff1a;https://github.com/jbloch/effective-java-3e-source-code...

实践大模型提示工程(Prompt Engineering)

任务目标 本文将结合实战营中的具体案例&#xff0c;分享在提示词设计、模型调用及复杂任务拆解中的实践心得&#xff0c;希望能为读者打开一扇通往 AI 开发实战的窗口。 书生浦语官方链接 实践一——写一段话介绍书生浦语实战营 在提示工程中&#xff0c;第一点给出清晰的…...

东莞一锂离子电池公司IPO终止,客户与供应商重叠,社保缴纳情况引疑

作者&#xff1a;小熊 来源&#xff1a;IPO魔女 5月17日&#xff0c;深交所发布公告称&#xff0c;东莞市朗泰通科技股份有限公司&#xff08;简称朗泰通科技&#xff09;已主动撤回其IPO申请。该公司本次IPO原拟募集资金7.0208亿元&#xff0c;保荐机构为国金证券股份有限公…...

互联网大厂Java求职面试:Spring Cloud微服务架构与AI集成挑战

互联网大厂Java求职面试&#xff1a;Spring Cloud微服务架构与AI集成挑战 引言 在当前快速发展的互联网行业中&#xff0c;Java开发者在面对复杂的分布式系统设计时&#xff0c;需要掌握从微服务架构到AI模型集成的多种技能。本文通过一场模拟面试&#xff0c;深入探讨了基于…...

解决C#泛型类参数无法带参数实例化的问题

概要 本文提供了一个基于C#表达式目录树的方法来解决泛型参数不能调用带参数的构造方法来实例化的问题。 C#泛型的限制 我们看如下的代码&#xff0c;User类需要一个泛型类&#xff0c;泛型类是要以CreditCard为基类。 class User<T> where T :CreditCard, new() {pr…...

微型化GNSS射频前端芯片AT2659S:L1频段多系统支持,SOT23-6封装

AT2659S是一款采用SiGe技术的低噪声放大器&#xff08;LNA&#xff09;&#xff0c;相比传统CMOS工艺&#xff0c;它在功耗和噪声性能上进行了显著优化。该芯片支持L1频段的多模卫星导航系统&#xff0c;包括北斗二代、GPS、伽利略和Glonass&#xff0c;适用于高灵敏度的GNSS接…...

【图像大模型】深度解析RIFE: 基于中间流估计的实时视频插帧算法

基于深度学习的视频插帧算法RIFE技术解析与实战指南 一、项目背景与技术原理1.1 视频插帧技术概述1.2 RIFE核心创新1.3 算法原理详解1.3.1 网络架构1.3.2 损失函数设计1.3.3 时间自适应训练 二、项目部署与执行指南2.1 环境配置2.2 模型推理2.2.1 快速测试2.2.2 视频处理 2.3 模…...

Docker安装Fluentd采集中间件

Fluentd 简介 &#xff1a;Fluentd 是一个高性能、可扩展的数据收集与聚合工具&#xff0c;能够统一数据收集和消费&#xff0c;实现各种数据源到各种数据接收器的高效传输&#xff0c;广泛应用于日志收集等领域。 功能特点 &#xff1a; 统一日志收集 &#xff1a;支持从各种…...

【攻防实战】MacOS系统上线Cobalt Strike

如果巅峰留不住&#xff0c;那就重走来时路 前言 目前在一些攻防项目中遇到的互联网大厂&#xff0c;很多员工使用的都是MacOS主机。研究过程中发现网上这方面分享比较少&#xff0c;这里记录分享一下。 插件安装 配置cna基础文件&#xff0c;注意路径名不能包含中文或特殊…...

基于Resnet-34的树叶分类(李沐深度学习基础竞赛)

目录 一&#xff0c;数据集介绍 1.1 数据集下载 1.2 数据集介绍 二&#xff0c;Resnet-34介绍 三&#xff0c;模型训练 四&#xff0c;模型预测 五&#xff0c;测试结果 5.1 测试集结果 5.2 预测结果 5.3 总结 一&#xff0c;数据集介绍 1.1 数据集下载 本数据集下载…...

PCB设计实践(二十三)什么是阻抗匹配,需要做啥

PCB设计中的阻抗匹配是高速数字电路、射频通信、信号完整性等领域的核心技术&#xff0c;其重要性贯穿从基础理论到复杂系统设计的全流程。本文将从工程实践角度深入探讨阻抗匹配的本质原理、应用场景、设计方法、常见误区及解决方案&#xff0c;全面解析这一影响现代电子设备性…...

网络世界的“变色龙“:动态IP如何重构你的数据旅程?

在深秋的下午调试代码时&#xff0c;我偶然发现服务器日志中出现异常登录记录——IP地址显示为某个境外数据中心。更有趣的是&#xff0c;当我切换到公司VPN后&#xff0c;这个"可疑IP"竟自动消失在了防火墙监控列表中。这个瞬间让我意识到&#xff1a;现代网络架构中…...

Chrome浏览器捕获hover元素样式

–前言– 某些元素&#xff0c;只有hover上去才会看到触发效果&#xff0c;但是鼠标移开就找不到element元素&#xff0c;导致无法调试样式。下属两种方案可参考&#xff1a; 文章目录 一、方式1&#xff1a;通过class伪类触发二、方式2&#xff1a;通过断点调试2.1控制台切换到…...

嵌入式自学第二十五天(5.21)

&#xff08;1&#xff09;二进制文件读写操作&#xff1a; 例&#xff1a; #include<stdio.h> int main() { FILE *fp fopen("a.out","r"); FILE *fp1 fopen("app","w"); if(NULL fp || NULL fp1) { …...

golang库源码学习——Pond,小而精的工作池库

pond 是一个轻量级的 Goroutine 池库&#xff0c;用于高效管理并发任务。它提供了灵活的配置选项和多种策略&#xff0c;适合处理高并发场景。 GitHub - alitto/pond at v1 一、特点&#xff1a; 1.轻量级 pond 的代码库非常精简&#xff0c;它的V1版本仅有四个业务文件&#…...

Microbiome医口经典思路:退烧药物代谢过程如何进行多组学分析?

乙酰氨基酚&#xff08;APAP&#xff09;&#xff0c;俗称扑热息痛&#xff0c;是应用最广泛的镇痛和解热药物之一。以往的研究主要集中在分离APAP降解菌株&#xff0c;了解其降解代谢途径。但微生物群与对乙酰氨基酚之间的相互作用、对乙酰氨基酚降解基因的分布特征以及对乙酰…...

微信小程序AI大模型流式输出实践与总结

背景 让Cursor生成小程序中大模型调用内容回复的流式输出时一直有问题&#xff0c;参考整理此文章。 参考原文&#xff1a;https://blog.csdn.net/weixin_47684422/article/details/145859543 一、什么是流式传输&#xff1f; 流式传输&#xff08;Streaming&#xff09;指的…...

操作系统理解(xv6)

xv6操作系统项目复习笔记 宗旨&#xff1a;只记大框架&#xff0c;不记细节&#xff0c;没有那么多的时间 一、xv6的页表是如何搭建的&#xff1f; xv6这个项目中&#xff0c;虚拟地址用了39位&#xff08;27位12位&#xff08;物理内存page偏移地址&#xff09;&#xff09…...

2024CCPC辽宁省赛 个人补题 ABCEGJL

Dashboard - 2024 CCPC Liaoning Provincial Contest - Codeforces 过题难度 B A J C L E G 铜奖 4 953 银奖 6 991 金奖 8 1664 B&#xff1a; 模拟题 // Code Start Here string s;cin >> s;reverse(all(s));cout << s << endl;A&#xff1a;很…...

Sentinel原理与SpringBoot整合实战

前言 随着微服务架构的广泛应用&#xff0c;服务和服务之间的稳定性变得越来越重要。在高并发场景下&#xff0c;如何保障服务的稳定性和可用性成为了一个关键问题。阿里巴巴开源的Sentinel作为一个面向分布式服务架构的流量控制组件&#xff0c;提供了从流量控制、熔断降级、…...

Python 训练营打卡 Day 31

文件的规范拆分和写法 把一个文件&#xff0c;拆分成多个具有着独立功能的文件&#xff0c;然后通过import的方式&#xff0c;来调用这些文件。这样具有几个好处&#xff1a; 可以让项目文件变得更加规范和清晰可以让项目文件更加容易维护&#xff0c;修改某一个功能的时候&a…...

vue+srpingboot实现多文件导出

项目场景&#xff1a; vuesrpingboot实现多文件导出 解决方案&#xff1a; 直接上干货 <el-button type"warning" icon"el-icon-download" size"mini" class"no-margin" click"exportSelectedFiles" :disabled"se…...

学习 Pinia 状态管理【Plan - May - Week 2】

一、定义 Store Store 由 defineStore() 定义&#xff0c;它的第一个参数要求独一无二的id import { defineStore } from piniaexport const useAlertsStore defineStore(alert, {// 配置 })最好使用以 use 开头且以 Store 结尾 (比如 useUserStore&#xff0c;useCartStore&a…...

linux中cpu内存浮动占用,C++文件占用cpu内存、定时任务不运行报错(root) PAM ERROR (Permission denied)

文章目录 说明部署文件准备脚本准备部署g++和编译脚本使用说明和测试脚本批量部署脚本说明执行测试定时任务不运行报错(root) PAM ERROR (Permission denied)报错说明处理方案说明 我前面已经弄了几个版本的cpu和内存占用脚本了,但因为都是固定值,所以现在重新弄个用C++编写的…...

数据湖和数据仓库的区别

在当今数据驱动的时代&#xff0c;企业需要处理和存储海量数据。数据湖与数据仓库作为两种主要的数据存储解决方案&#xff0c;各自有其独特的优势与适用场景。本文将客观详细地介绍数据湖与数据仓库的基本概念、核心区别、应用场景以及未来发展趋势&#xff0c;帮助读者更好地…...

OceanBase 开发者大会,拥抱 Data*AI 战略,构建 AI 数据底座

5 月 17 号以“当 SQL 遇见 AI”为主题的 OceanBase 开发者大会在广州举行&#xff0c;因为行程的原因未能现场参会&#xff0c;仍然通过视频直播观看了全部的演讲。总体来说&#xff0c;这届大会既有对未来数据库演进方向的展望&#xff0c;也有 OceanBase 新产品的发布&#…...

鸿蒙HarmonyOS最新的组件间通信的装饰器与状态组件详解

本文系统梳理了鸿蒙&#xff08;HarmonyOS&#xff09;ArkUI中组件间通信相关的装饰器及状态组件的使用方法&#xff0c;重点介绍V2新特性&#xff0c;适合开发者查阅与实践。 概述 鸿蒙系统&#xff08;HarmonyOS&#xff09;ArkUI提供了丰富的装饰器和状态组件&#xff0c;用…...

OneDrive登录,账号跳转问题

你的OneDrive登录无需密码且自动跳转到其他账号&#xff0c;可能是由于浏览器或系统缓存了登录信息&#xff0c;或存在多个账号的关联。以下是分步解决方案&#xff1a; 方案三对我有效。 强制手动输入密码 访问登录页面时&#xff1a; 在浏览器中打开 OneDrive网页版。 点击…...