基于单片机中药存放环境监测系统的实现
基于单片机中药存放环境监测系统的实现
项目开发背景
随着现代中药的广泛应用,中药材的存储环境对其质量有着至关重要的影响。温湿度、烟雾、火灾等环境因素,若不加以控制,将会导致中药材失效或变质。因此,设计一个基于单片机的中药存放环境监测系统显得尤为重要。该系统通过实时监测温湿度、烟雾浓度、火灾情况等环境参数,确保中药存放环境处于适宜的状态,从而保证中药材的品质,减少因环境问题引发的损失。
本项目基于STM32F103C8T6单片机作为核心控制单元,通过多种传感器对环境进行实时采集,并通过液晶显示屏和Wi-Fi无线通讯将监测数据展示给用户,达到环境预警和安全保障的目的。
设计实现的功能
- 温湿度采集与监控:使用DHT11温湿度传感器实时监控中药存放房间的温度和湿度,确保温湿度符合要求。
- 烟雾监测:通过烟雾传感器检测存放环境中的烟雾浓度,及时发现火灾隐患。
- 火灾监测:利用火灾传感器检测中药存放环境中是否有火灾发生,保证环境安全。
- 环境预警:设置温湿度、烟雾、火灾等阈值,当超过设定值时,系统自动触发警报(蜂鸣器),提示用户注意。
- 紧急处理机制:当温度、湿度、烟雾或火灾参数超标时,系统自动启动排气通道进行换气或散热处理。
- 数据展示与实时监控:通过液晶显示屏显示当前环境数据,提供温度、湿度、烟雾浓度、火灾监测结果等信息。
- 手机端监控与管理:通过Wi-Fi模块实现手机APP与设备之间的通信,使用户可以在手机端查看实时数据并进行远程监控。
- 数据存储与历史记录:监测数据可存储并备份,便于后期查阅和分析,确保数据的长期有效性。
项目硬件模块组成
- 主控芯片 STM32F103C8T6
作为本系统的核心控制单元,STM32F103C8T6具有丰富的I/O口,支持多种外设接口(如SPI、I2C、USART等),能够满足传感器的数据采集、处理和通信要求。 - DHT11 温湿度传感器
用于实时采集存储环境的温度和湿度数据,输出数字信号,通过单片机读取数据进行处理。 - 烟雾传感器
该传感器能够检测空气中的烟雾浓度,通过模拟输出提供实时的烟雾浓度数据。 - 火灾传感器
用于检测火灾发生的初期征兆,如温度剧增、火焰感应等。输出信号通过单片机读取,用于判断是否有火灾发生。 - 蜂鸣器
当环境参数超过设定阈值时,蜂鸣器发出警报声音,提醒用户注意。 - 排气通道控制模块
该模块用于控制中药存储房的排气系统,系统可根据传感器数据自动开启排气口进行散热或通风。 - LCD液晶显示屏(1602或类似)
用于显示当前监测到的温度、湿度、烟雾浓度、火灾报警等数据,提供直观的实时反馈。 - Wi-Fi模块(如ESP8266)
通过Wi-Fi模块与手机APP连接,实现远程数据监控和管理。 - 电源管理模块
提供系统稳定的电源,支持单片机及各个模块的工作。
设计思路
总体架构
本系统的设计包括硬件和软件两大部分,硬件部分由STM32F103C8T6单片机作为控制中心,外围集成了多种传感器用于环境数据采集,包括温湿度传感器、烟雾传感器、火灾传感器等,同时利用LCD液晶屏实时显示数据,并通过Wi-Fi模块实现手机端的数据访问。
在软件部分,首先要实现对各个传感器的数据读取和处理,并对数据进行实时监控。其次,设置阈值,当环境数据超过设定的阈值时,触发报警机制(蜂鸣器和排气通道)。最后,通过Wi-Fi将监测数据传输到手机APP,用户可以远程查看和管理数据。
数据采集与处理
- 温湿度采集:通过DHT11传感器读取温湿度数据,并将数据传输给单片机进行处理。
- 烟雾采集:通过烟雾传感器读取烟雾浓度数据,并在程序中进行转换和阈值判断。
- 火灾采集:通过火灾传感器获取火灾报警信号,判断是否发生火灾。
环境监测与预警
当温湿度、烟雾浓度或火灾传感器的读数超过预设阈值时,系统会触发警报并启动相应的紧急处理机制,例如开启蜂鸣器警告和自动启动排气系统。
数据存储与历史记录
通过STM32F103C8T6的内存或外接存储器(如SD卡)保存历史数据,方便后期查询和分析。
无线通讯
通过Wi-Fi模块实现系统与手机端的通信,手机APP将实时显示温湿度、烟雾、火灾等监测数据,确保用户可以远程掌握存储环境状况。
系统功能总结
功能模块 | 描述 |
---|---|
温湿度监测 | 实时监测中药存储房的温湿度,确保环境适宜 |
烟雾监测 | 检测存储房内的烟雾浓度,及时发现潜在的火灾隐患 |
火灾监测 | 检测火灾初期征兆,预防火灾事故发生 |
环境预警 | 设置温湿度、烟雾、火灾阈值,超标时触发报警机制 |
紧急处理机制 | 超标时启动排气通道进行通风或散热,降低环境风险 |
数据展示与实时监控 | LCD显示屏展示环境数据,便于现场查看和管理 |
手机APP监控与管理 | 通过Wi-Fi模块连接手机,远程查看实时监测数据 |
数据存储与历史记录 | 保存环境监测数据,便于查询和分析 |
使用的模块的技术详情介绍
1. DHT11 温湿度传感器
-
工作原理:DHT11通过内置的温湿度感应元件来测量环境的温度和湿度。它通过单总线协议与单片机进行数据通信。
-
技术参数
:
- 温度测量范围:0℃到50℃
- 湿度测量范围:20%到90%
- 精度:温度±2℃,湿度±5%
2. 烟雾传感器
- 工作原理:烟雾传感器通过对空气中气体的吸收与反射变化,检测烟雾浓度。输出模拟信号,可通过ADC接口输入单片机。
- 技术参数:
- 输出信号:模拟电压信号
- 检测浓度:300-1000ppm烟雾
3. 火灾传感器
- 工作原理:火灾传感器通过检测环境温度变化或火焰的存在来判断是否发生火灾,常用红外线火焰传感器或热敏电阻。
- 技术参数:
- 检测温度范围:30℃-50℃
- 检测方式:红外或热敏电阻
4. Wi-Fi模块 (ESP8266)
- 工作原理:ESP8266通过UART接口与单片机通信,实现Wi-Fi功能,能够将环境数据发送至云平台或手机APP。
- 技术参数:
- 支持802.11b/g/n Wi-Fi标准
- 支持TCP/IP协议
STM32代码设计
以下是基于STM32F103C8T6的中药存放环境监测系统的 main.c
代码。其他子模块(如温湿度传感器、烟雾传感器、火灾传感器、蜂鸣器、LCD显示、Wi-Fi等)的代码已经编写好。代码实现了主要功能:环境数据的采集、报警机制、LCD显示和Wi-Fi通讯。
#include "stm32f10x.h"
#include "DHT11.h" // 包含DHT11传感器的代码
#include "SmokeSensor.h" // 包含烟雾传感器的代码
#include "FireSensor.h" // 包含火灾传感器的代码
#include "Buzzer.h" // 包含蜂鸣器控制代码
#include "LCD1602.h" // 包含LCD显示控制代码
#include "WiFi.h" // 包含Wi-Fi通讯控制代码// 定义环境监测阈值
#define TEMP_THRESHOLD_HIGH 30 // 温度高于30度时报警
#define TEMP_THRESHOLD_LOW 10 // 温度低于10度时报警
#define HUMIDITY_THRESHOLD_HIGH 80 // 湿度高于80%时报警
#define HUMIDITY_THRESHOLD_LOW 30 // 湿度低于30%时报警
#define SMOKE_THRESHOLD 500 // 烟雾浓度超过500时报警// 环境参数存储
float current_temp = 0;
float current_humidity = 0;
int smoke_level = 0;
int fire_alarm = 0;// 函数声明
void System_Init(void);
void Environment_Monitoring(void);
void Alert_System(void);
void Display_Data(void);
void WiFi_Transmit_Data(void);int main(void)
{// 系统初始化System_Init();while (1){// 环境监测Environment_Monitoring();// 判断是否超出报警阈值Alert_System();// 显示环境数据Display_Data();// 通过Wi-Fi上传数据WiFi_Transmit_Data();}
}// 系统初始化函数
void System_Init(void)
{// 1. 初始化硬件LCD_Init(); // 初始化LCDBuzzer_Init(); // 初始化蜂鸣器DHT11_Init(); // 初始化DHT11传感器SmokeSensor_Init(); // 初始化烟雾传感器FireSensor_Init(); // 初始化火灾传感器WiFi_Init(); // 初始化Wi-Fi模块// 2. 其他硬件初始化GPIO_Init(); // 初始化GPIO
}// 环境监测函数
void Environment_Monitoring(void)
{// 读取DHT11传感器数据current_temp = DHT11_Read_Temperature();current_humidity = DHT11_Read_Humidity();// 读取烟雾传感器数据smoke_level = SmokeSensor_Read();// 读取火灾传感器数据fire_alarm = FireSensor_Read();
}// 报警系统函数
void Alert_System(void)
{// 检查是否超出温度阈值if (current_temp > TEMP_THRESHOLD_HIGH || current_temp < TEMP_THRESHOLD_LOW){Buzzer_On(); // 开启蜂鸣器报警// 可以增加排气通道控制的代码}else{Buzzer_Off(); // 关闭蜂鸣器}// 检查湿度是否超出阈值if (current_humidity > HUMIDITY_THRESHOLD_HIGH || current_humidity < HUMIDITY_THRESHOLD_LOW){Buzzer_On(); // 开启蜂鸣器报警// 可以增加排气通道控制的代码}else{Buzzer_Off(); // 关闭蜂鸣器}// 检查烟雾浓度是否超标if (smoke_level > SMOKE_THRESHOLD){Buzzer_On(); // 开启蜂鸣器报警// 可以增加排气通道控制的代码}else{Buzzer_Off(); // 关闭蜂鸣器}// 检查火灾传感器if (fire_alarm == 1){Buzzer_On(); // 开启蜂鸣器报警// 可以增加排气通道控制的代码}else{Buzzer_Off(); // 关闭蜂鸣器}
}// 数据显示函数
void Display_Data(void)
{// 在LCD上显示环境数据LCD_Clear();LCD_SetCursor(0, 0);LCD_Printf("Temp: %.2f C", current_temp);LCD_SetCursor(1, 0);LCD_Printf("Humidity: %.2f %%", current_humidity);LCD_SetCursor(2, 0);LCD_Printf("Smoke: %d", smoke_level);LCD_SetCursor(3, 0);LCD_Printf("Fire: %s", fire_alarm ? "Detected" : "Safe");
}// Wi-Fi数据传输函数
void WiFi_Transmit_Data(void)
{// 将环境数据通过Wi-Fi发送到手机APP或服务器WiFi_Send_Data("Temperature", current_temp);WiFi_Send_Data("Humidity", current_humidity);WiFi_Send_Data("Smoke", smoke_level);WiFi_Send_Data("Fire", fire_alarm ? 1 : 0);
}// 延时函数
void delay_ms(uint32_t ms)
{uint32_t i, j;for (i = 0; i < ms; i++){for (j = 0; j < 8000; j++){__NOP(); // 空操作,等待时间}}
}
代码分析
- 硬件初始化:
System_Init()
函数进行所有外设(如LCD、蜂鸣器、传感器、Wi-Fi)的初始化。
- 环境监测:
Environment_Monitoring()
函数从各个传感器(DHT11、烟雾传感器、火灾传感器)中获取实时数据。
- 报警机制:
Alert_System()
函数根据各个传感器的数据判断是否超出设定的阈值,如果超标则启动蜂鸣器报警,并根据需要启动排气通道。
- 数据展示:
Display_Data()
函数使用LCD显示屏展示实时环境数据,包括温度、湿度、烟雾浓度和火灾报警状态。
- Wi-Fi通信:
WiFi_Transmit_Data()
函数将环境数据通过Wi-Fi模块发送至手机APP或云端服务器,方便远程监控。
相关文章:
基于单片机中药存放环境监测系统的实现
基于单片机中药存放环境监测系统的实现 项目开发背景 随着现代中药的广泛应用,中药材的存储环境对其质量有着至关重要的影响。温湿度、烟雾、火灾等环境因素,若不加以控制,将会导致中药材失效或变质。因此,设计一个基于单片机的…...
从零开始开发纯血鸿蒙应用之UI封装
从零开始开发纯血鸿蒙应用 一、题引二、UI 组成三、UI 封装原则四、实现 lib_comps1、封装 UI 样式1.1、attributeModifier 属性1.2、自定义AttributeModifier<T>类 2、封装 UI 组件 五、总结 一、题引 在开始正文前,为了大家能够从本篇博文中,汲…...
0101java面经
1.Java 中有哪些垃圾回收算法? 标记 - 清除算法(Mark - Sweep) 基本原理:标记 - 清除算法是最基础的垃圾回收算法之一。它分为两个阶段,首先是标记阶段,从根对象(如栈帧中的局部变量、静态变量等引用的对…...
逐行讲解大模型流式输出 streamer 源码
目录 简介TextStreamer 基础流式输出TextIterateStreamer 迭代器流式输出本地代码模型加载并前端展示streamlit 输出显示gradio 输出显示 vllm 部署模型并前端展示streamlit 输出显示gradio 输出显示 备注 简介 本文详细讲解了大模型流式输出的源码实现,包括TextSt…...
springboot533图书管理系统(论文+源码)_kaic
摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,图书信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…...
Dell服务器升级ubuntu 22.04失败解决
ubuntu系统原版本20.04,服务器dell T40. 执行apt update后,再执行apt upgrade。 apt update执行成功,但apt upgrade执行中断,提示如下: Checking package manager Reading package lists... Done Building dependen…...
sql列转行 行转列
列转行 在 SQL 中,转换数据以按列排列的值成为按行排列的值(即所谓的“列转行”或“列转行”)是常见的数据操作需求。这个操作在不同的数据库管理系统中可以通过不同的技术手段来实现。以下是几种常见的数据库系统中实现列转行的方法&#x…...
【在Python中生成随机字符串】
在Python中生成随机字符串,你可以使用random模块结合字符串操作来实现。以下是一个简单的例子,展示了如何生成一个指定长度的随机字符串,该字符串可以包含字母(大写和小写)以及数字: import random import…...
Qt解决可执行程序的图标问题(CMake)
通常情况下,我们编译生成的可执行程序的图标长这个样子: 可以看到他的图标非常丑陋。。。 要想改变图标,你需要通过以下方式: CMakeLists.txt : cmake_minimum_required(VERSION 3.10)project(CountCode VERSION 1.0 LANGUAGE…...
婴儿四维影像生成AI人脸照片-大模型 Agent(智能体)实践
婴儿四维影像生成AI人脸照片-大模型 Agent(智能体)实践 在当今科技飞速发展的时代,大模型 Agent(智能体)作为一种创新的技术范式,正逐渐崭露头角。它依托强大的大模型能力,通过可视化设计与流程编排,以无代码或低代码的方式,为开发者提供了构建各种功能性应用程序的便…...
XIAO Esp32 S3 网络摄像头——3音视频监控
1、介绍 之前分别介绍了音频和视频的接收,本文是整合了前2篇文章,实现了音视频的同时获取。 效果: 用xiao esp35 s3自制一个网络摄像头 2、适用场景广泛 家庭安防 无论是门前监控,还是室内安全,自制摄像头可以让你轻松把握每个角落,实时查看视频流,防止任何潜在风险。…...
【GIS教程】高程点制作DEM并使用ArcgisPro发布高程服务Elevation Layer
文章目录 应用场景数据源操作步骤1、数据加载2、创建TIN3、TIN转栅格4、发布高程服务 应用场景 我有高程点和等高线数据,我需要将其发布成高程服务,在 Portal 中直接使用,或者通过 Javascript API 进行调用。 数据源 数据源为dwg格式的地形…...
C++设计模式:状态模式(自动售货机)
什么是状态模式? 状态模式是一种行为型设计模式,它允许一个对象在其内部状态发生改变时,动态改变其行为。通过将状态相关的逻辑封装到独立的类中,状态模式能够将状态管理与行为解耦,从而让系统更加灵活和可维护。 通…...
智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之11 方案再探之2 项目文件(修改稿1)
(以下内容是第二次重建项目(“方案再探”)时的项目附件。) 为AI聊天工具添加一个知识系统 Part1 人性化&去中心化 前情提要 这一次我们暂时抛开前面对“智能工厂的软件设计”的考虑--其软件智能 产品就是 应用程序。直接将这些思维方式和方法论 运…...
Android 系统 Activity 系统层深度定制的方法、常见问题以及解决办法
Android 系统 Activity 系统层深度定制的方法、常见问题以及解决办法 目录 引言Activity 系统层概述Activity 系统架构图Activity 系统层深度定制的方法 4.1 自定义 Activity 生命周期4.2 自定义 Activity 启动流程4.3 自定义 Activity 转场动画4.4 自定义 Activity 窗口管理4…...
java并发之BlockingQueue
种类 类名特性ArrayBlockingQueue由数组结构组成的有界阻塞队列LinkedBlockingQueue由链表结构组成的有界的阻塞队列(有界,默认大小 Integer.MAX_VALUE,相当于无界)PriorityBlockingQueue支持优先级排序的无界阻塞队列DelayQueue…...
Python AI 教程之五: 强化学习
强化学习 强化学习:概述 强化学习 (RL) 是机器学习的一个分支,专注于在特定情况下做出决策以最大化累积奖励。与依赖具有预定义答案的训练数据集的监督学习不同,强化学习涉及通过经验进行学习。在强化学习中,代理通过执行操作并通过奖励或惩罚获得反馈来学习在不确定、可…...
uniapp——App下载文件,打开文档(一)
uniapp如何下载文件、打开文件 文章目录 uniapp如何下载文件、打开文件下载文件下载文件成功返回数据格式 打开文档处理 iOS 打开文件可能失败问题 相关API: uni.downloadFileuni.openDocument 注意: 只支持 GET 请求,需要 POST的ÿ…...
【信息系统项目管理师】高分论文:论信息系统项目的沟通管理(监控更新改造项目)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、制定沟通管理计划2、管理沟通3、监督沟通论文 2017年8月,我作为项目经理参加了某省委党校校园监控更新改造项目的建设,该项目投资共500万元人民币,建设工期为3个月,通过该项目的建设,实现了安全防…...
鸿蒙应用开发(1)
可能以为通过 鸿蒙应用开发启航计划(点我去看上一节) 的内容,就足够了,其实还没有。 可是我还是要告诉你,你还需要学习新的语言 -- ArkTS。 ,ArkTS是HUAWEI开发的程序语言。你需要学习这门语言。这会花费你…...
基于JavaWeb的汽车维修保养智能预约系统
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…...
CAN总线波形中最后一位电平偏高或ACK电平偏高问题分析
参考:https://zhuanlan.zhihu.com/p/689336144 有时候看到CAN总线H和L的差值波形的最后一位电平会变高很多,这是什么原因呢? 实际上这是正常的现象,最后一位是ACK位。问题描述为:CAN总线ACK电平偏高。 下面分析下原因…...
高等数学学习笔记 ☞ 无穷小与无穷大
1. 无穷小 1. 定义:若函数当或时的极限为零,那么称函数是当或时的无穷小。 备注: ①:无穷小描述的是自变量的变化过程中,函数值的变化趋势,绝不能认为无穷小是一个很小很小的数。 ②:说无穷小时…...
Docker Compose编排
什么是 Docker Compose? Docker Compose 是 Docker 官方推出的开源项目,用于快速编排和管理多个 Docker 容器的应用程序。它允许用户通过一个 YAML 格式的配置文件 docker-compose.yml 来定义和运行多个相关联的应用容器,从而实现对容器的统一管理和编…...
Node.js 处理 GeoPackage 数据的开源库:@ngageoint/geopackage介绍
使用 Node.js 处理 GeoPackage 数据的开源库:@ngageoint/geopackage 随着地理信息系统(GIS)和空间数据的广泛应用,OGC 的 GeoPackage 格式因其轻量、跨平台和高性能的特点,成为处理地理空间数据的重要工具。而对于 Node.js 开发者来说,@ngageoint/geopackage 是一个功能…...
21.<基于Spring图书管理系统②(图书列表+删除图书+更改图书)(非强制登录版本完结)>
PS: 开闭原则 定义和背景 开闭原则(Open-Closed Principle, OCP),也称为开放封闭原则,是面向对象设计中的一个基本原则。该原则强调软件中的模块、类或函数应该对扩展开放,对修改封闭。这意味着一个软件实体…...
MySQL日志体系的深度解析:功能与差异
优质博文:IT-BLOG-CN 一、binlog binlog记录数据库表结构和表数据变更,比如update/delete/insert/truncate/create,它不会记录select。存储着每条变更的SQL语句和XID事务Id等等。binlog日志文件如下: [root192.168.10.11]# mysq…...
电商项目-数据同步解决方案(四)商品下架同步更新ES索引库数据
商品下架索引库删除数据 一、 需求分析和业务逻辑 商品下架后将商品从索引库中移除。 主要应用技术有: 消息队列-RabbitMQ ,分布式搜索引擎-ElasticSearch,Eureka,Canal,Feign远程调用 (1)在…...
Kafka
目录 一、什么是Kafka 核心组件 特性 使用场景 安装与配置 二、Kafka的使用 安装 ZooKeeper 和 Kafka 安装 ZooKeeper 安装 Kafka 配置 ZooKeeper 和 Kafka 配置 ZooKeeper 配置 Kafka 启动 ZooKeeper 和 Kafka 创建 Topic 编写生产者代码 编写消费者代码 运行…...
SAP SD学习笔记22 - VF04,VF06,VF24 等一括请求处理
上一篇学习了请求传票(发票)的拷贝管理。 SAP SD学习笔记21 - 请求传票的数据流(拷贝管理)-CSDN博客 本章继续学习 SAP SD的内容。 目录 1,VF04 - 一括请求处理(开票到期清单) 2,…...
JR-RLAA系20路模拟音频多功能编码器
JR-RLAA系20路模拟音频多功能编码器 产品特色 (1)工业级19英寸标准设备,内置双电源 (2)内嵌Web Server,支持远程Web页面登陆后的统一配置操作 (3)支持20路音频输入 (4)支持Dolby Digital(AC-3) ,MPEG-2,AAC-LC/HE-AAC&#x…...
数据结构复习 (二叉查找树,高度平衡树AVL)
1.二叉查找树: 为了更好的实现动态的查找(可以插入/删除),并且不超过logn的时间下达成目的 定义: 二叉查找树(亦称二叉搜索树、二叉排序树)是一棵二叉树,其各结点关键词互异,且中根序列按其关键词递增排列。 等价描述: 二叉查找…...
深入浅出梯度下降与反向传播
文章目录 1. 前言2. 基本概念2.1 一元函数的导数2.2 偏导数2.3 方向导数2.4 梯度2.5 均方误差 3. 梯度下降3.1 梯度下降的公式3.2 梯度下降的类型(优化器) 4. 反向传播4.1 反向传播的基本步骤4.2 反向传播的数学推导 5. 实战5.1 手动求导5.2 自动求导5.3…...
PLC(01)
一.职业规划 电路----------------->电工------------------>电气-------------------plc---------------------DCS--------------------> 机器人 二.交流电直流电的概念 1.交流电AC alternating current 大小方向随时间发生周期性变化 2.直流电 Direct current…...
如何通过本地部署的DIFY辅助学习算法(PS可以辅助帮你学习任何想学习的资料)
如何通过本地部署的DIFY辅助学习算法(PS可以辅助帮你学习任何想学习的资料 一 提升知识库的大小容量1.1 调大知识库的基础配置修改.env文件1.2 通过docker compose 重启加载最新配置1.3 重新上传知识库 二 搭建算法知识库的学习助手2.1 text embedding 模型对比2.1.1 如何选择合…...
深入探讨服务器虚拟化:架构、技术与应用
1. 引言 在现代IT基础设施中,服务器虚拟化已成为一种不可或缺的技术。它不仅提高了资源利用率,还增强了系统的灵活性和可管理性。随着企业对高效、灵活和可扩展IT环境的需求不断增加,服务器虚拟化技术的应用愈发广泛。本文将深入探讨服务器虚…...
C++笔记之尾后迭代器
C笔记之尾后迭代器 code review! 参考笔记 1.C笔记之尾后迭代器 2.C笔记之迭代器失效问题处理 在C中,尾后迭代器(通常称为 past-the-end iterator)是指指向容器中最后一个元素之后的位置的迭代器。它并不指向任何有效的元素,而是…...
2024年总结【第五年了】
2024年总结 北国绕院扫雪,南方围炉烹茶,且饮一杯无? 执笔温暖不曾起舞日子里的点点滴滴,誊写一段回忆,还以光阴一段副本。 那么你要听一支新故事吗?第五年总结的片碎。 衣单天寒,走趟流星孤骑…...
EasyExcel(环境搭建以及常用写入操作)
文章目录 EasyExcel环境搭建1.创建模块 easyexcel-demo2.引入依赖3.启动类创建 EasyExcel写1.最简单的写入1.模板2.方法3.结果 Write01.xlsx 2.指定字段不写入Excel1.模板2.方法3.结果 Write02.xlsx 3.指定字段写入excel1.模板2.方法3.结果 Write03.xlsx 4.按照index顺序写入ex…...
JVM类加载器
什么是类加载器 类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。 类加载器只参与加载过程中的字节码获取并加载到内存这一部分 类加载器的分类 类加载器分为两类,一类是Java代码中实现的࿰…...
druid连接池参数配置
最近发现生产环境经常有数据库连接超时的问题,排查发现是druid连接池参数设置不合理导致 总结问题如下: 为了防止僵尸连接,k8s ipvs做了连接超时限制,如果TCP连接闲置超过900s(15分钟),客户端再尝试通过这个连接去发起…...
【机器学习】Kaggle实战信用卡反欺诈预测(场景解析、数据预处理、特征工程、模型训练、模型评估与优化)
构建信用卡反欺诈预测模型 建模思路 本项目需解决的问题 本项目通过利用信用卡的历史交易数据,进行机器学习,构建信用卡反欺诈预测模型,提前发现客户信用卡被盗刷的事件。 项目背景 数据集包含由欧洲持卡人于2013年9月使用信用卡进行交的…...
Linux(Ubuntu)下ESP-IDF下载与安装完整流程(2)
接前一篇文章:Linux(Ubuntu)下ESP-IDF下载与安装完整流程(1) 本文主要看参考官网说明,如下: 快速入门 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 Linux 和 macOS 平台工具链的标准设置 - ESP32-S3 - — ESP-IDF 编程指南 latest 文档 一、安装准备 1. Linux用...
SpringBoot3 快速启动框架
文章目录 1 SpringBoot3 介绍 1.1 SpringBoot3 简介1.2 快速入门1.3 入门总结 2 SpringBoot3 配置文件 2.1 统一配置管理概述2.2 属性配置文件使用2.3 YAML配置文件使用2.4 批量配置文件注入2.5 多环境配置和使用 3 SpringBoot 整合 springMVC 3.1 实现过程3.2 web相关配置3.3…...
Enum枚举类,静态常量类,静态类的区别
Enum枚举类,静态常量类,静态类的区别 Enum枚举类静态常量类静态类Enum枚举类,静态常量类,静态类的区别 Enum枚举类 Enum枚举类的结构组成和用法使用可以查阅 Enum枚举类与静态变量和静态数组的区别 静态常量类 public class St…...
解锁专利世界的钥匙 ——famiwei 网
在知识经济的时代,专利作为创新成果的重要体现,无论是对于企业、科研人员乃至整个社会的发展都具有举足轻重的意义。而在众多的专利网站中,famiwei 网为用户提供了一个全面、精准且高效的专利信息交流与服务的舞台。 一、卓越功能,开启专利探索之门 famiwei 网拥有一套强大的专…...
金融租赁系统的创新与发展推动行业效率提升
金融租赁系统的技术升级与创新 在当今快速发展的金融市场中,金融租赁系统的技术升级与创新充满了无限可能。想象一下,传统的租赁方式就像一位沉闷的老师,而新兴技术就如同一位活泼的学生,不断追求新鲜事物。通过自动化、人工智能…...
SQL-Server链接服务器访问Oracle数据
SQL Server 链接服务器访问 Oracle 离线安装 .NET Framework 3.5 方法一:使用 NetFx3.cab 文件 下载 NetFx3.cab 文件,并将其放置在 Windows 10 系统盘的 C:Windows 文件夹中。 以管理员身份运行命令提示符,输入以下命令并回车: …...
Sonic:开源Go语言开发的高性能博客平台
Sonic:一个用Go语言开发的高性能博客平台 简介 Sonic,一个以其速度如声速般快速而命名的博客平台,是一个用Go语言开发的高性能博客系统。正如其名字所暗示的,Sonic旨在提供一个简单而强大的博客解决方案。这个项目受到了Halo项目…...
【react】常见的性能优化 1
目录 常见的 React 性能优化手段 1. 使用 useMemo 和 useCallback 缓存数据和函数 2. 使用 React.memo 缓存组件 3. 组件懒加载 4. 合理使用 key 5. 在组件销毁时清除定时器/事件 6. 使用 Suspense 和 Lazy 拆分组件 7. 使用 Fragment 避免额外标记 8. 避免使用内联函…...