【STM32设计】基于STM32的智能门禁管理系统(指纹+密码+刷卡+蜂鸣器报警)(代码+资料+论文)
本课题为基于单片机的智能门禁系统,整个系统由AS608指纹识别模块,矩阵键盘,STM32F103单片机,OLED液晶,RFID识别模块,继电器,蜂鸣器等构成,在使用时,用户可以录入新的指纹信息,注册新的IC卡,修改新的密码,也可以删除旧的指纹,注销旧的IC卡,用户可以通过密码,IC卡或者指纹三种方式打开门禁,当输入信息正确时继电器会动作打开门禁,如果信息错误蜂鸣器会进行报警提示。本系统从原理图设计,C语言编写等多个角度完成了整个系统的设计,并最终通过制作实物完全了目标,经过测试达到了预期效果。
资料下载:待更新。。。。
1、实现功能
(1)用户管理需求
注册新用户:系统需要提供注册新用户的功能,包括录入新的指纹信息、注册新的IC卡和设置新的密码。用户可以通过其中一种或多种方式进行身份验证。删除用户:系统需要提供删除旧用户的功能,允许管理员删除指纹信息、注销IC卡或重置密码。
(2)身份验证需求
密码验证:系统需要支持用户通过输入正确的密码来验证身份。IC卡验证:系统需要支持用户通过刷卡的方式进行身份验证。指纹验证:系统需要支持用户通过指纹识别模块进行身份验证。
(3)门禁控制需求
继电器控制:系统需要通过继电器实现对门禁的控制。当用户通过正确的身份验证方式后,继电器应该动作,打开门禁。报警提示:系统需要通过蜂鸣器进行报警提示,当用户输入的信息不正确时,蜂鸣器应该发出警报。
(4)用户界面需求
显示屏:系统需要配备OLED液晶屏幕,用于显示用户信息、菜单选项和操作结果等。用户可以通过液晶屏幕进行交互和操作。
(5)安全性需求
数据保护:系统需要保护用户数据的安全性,包括指纹信息、IC卡数据和密码。数据应该被加密存储,并采取相应的措施防止未经授权的访问。防止暴力破解:系统应该设置安全机制,如密码输入错误次数限制、防止暴力破解的策略。
(6)扩展性需求
RFID识别模块支持:系统需要支持RFID识别模块,允许用户通过刷卡方式进行身份验证。多用户管理:系统需要支持多个用户的管理,包括新增用户、删除用户和权限设置等功能。
可增加的功能:
主要元器件:
STM32F103C8T6最小系统板、
目录
- 资料下载:待更新。。。。
- 1、实现功能
- 2、硬件
- 3、代码
- 4、原理图/PCB
- 5、论文
2、硬件
硬件框图
本课题为基于单片机的智能门禁系统,整个系统由AS608指纹识别模块,矩阵键盘,STM32F103单片机,OLED液晶,RFID识别模块,继电器,蜂鸣器等构成,在使用时,用户可以录入新的指纹信息,注册新的IC卡,修改新的密码,也可以删除旧的指纹,注销旧的IC卡,用户可以通过密码,IC卡或者指纹三种方式打开门禁,当输入信息正确时继电器会动作打开门禁,如果信息错误蜂鸣器会进行报警提示。
实物
3、代码
STM32代码采用C语言,标准库编写,软件是keil5,关键代码有中文注释,看不懂可以VX问我
#include "stm32f10x.h"
#include <stdio.h>
#include <string.h>
#include "delay.h"
#include "sys.h"
#include "pwm.h"
#include "usart.h"
#include "timer.h"
#include "key4_4.h"
#include "stmflash.h"
#include "OLED.h"
#include "as608.h"
#include "rc522.h"
#include "rc522_user.h"
#include "IO_Init.h"
extern void Beep_Init(void); //蜂鸣器
int key;
u8 open_door_flag=0; //开门标志位
u16 user_ID=0; //保存指纹模块返回的用户ID,用于判断用户
u8 Password[6], Password2[6]={"123456"}; //六位用户密码,管理员密码
u8 password_eeror,rc522_error,figer_error; //错误次数
u16 Locked_time;
void open_door() //开门函数
{u8 i;if(open_door_flag>0) //ok,就开门{OLED_Clear();Relay=0;for(i=58;i<62;i++) //门已打开{OLED_ShowCH(32+i*16-16*58,1,i);}delay_ms(1700);delay_ms(1700);OLED_Clear();Relay=1;if(open_door_flag==1) //非管理员密码,自动回复原始状态open_door_flag=0;USART1_RX_STA=0;memset(USART1_RX_BUF,0,sizeof(USART1_RX_BUF));}
}void admin_show() //总管理界面显示
{int i;OLED_ShowStr(0,0,"A:",2);for(i=9;i<=10;i++) //指纹{OLED_ShowCH(i*16-16*8,0,i);}for(i=111;i<=112;i++) //管理{OLED_ShowCH(i*16-16*108,0,i);}OLED_ShowStr(0,4,"C:",2);for(i=17;i<=18;i++) //密码{OLED_ShowCH(i*16-16*16,4,i);}for(i=111;i<=112;i++) //管理{OLED_ShowCH(i*16-16*108,4,i);}OLED_ShowStr(0,6,"D:IC",2);for(i=111;i<=112;i++) //管理{OLED_ShowCH(i*16-16*108,6,i);}}
void oled_show() //界面显示
{u8 i;for(i=42;i<=45;i++) //欢迎使用{OLED_ShowCH(32+i*16-16*42,0,i);}for(i=115;i<=117;i++) //多功能{OLED_ShowCH(i*16-16*114,2,i);}for(i=39;i<=41;i++) //电子锁{OLED_ShowCH(i*16-16*35,2,i);}for(i=46;i<=49;i++) //请您开锁{OLED_ShowCH(32+i*16-16*46,6,i);}
// u16 i;
// for(i=116;i<=118;i++) //实验室
// {
// OLED_ShowCH(40+i*16-16*116,0,i);
// }
// for(i=119;i<=124;i++) //智能门禁系统
// {
// OLED_ShowCH(16+i*16-16*119,2,i);
// }
// for(i=125;i<=129;i++) // 设计与实现
// {
// OLED_ShowCH(24+i*16-16*125,6,i);
// }
}
void oled_init_show() //初始化界面显示
{u8 i;for(i=42;i<=45;i++) //欢迎使用{OLED_ShowCH(32+i*16-16*42,0,i);}for(i=113;i<=115;i++) //多功能{OLED_ShowCH(i*16-16*112,2,i);}for(i=39;i<=41;i++) //电子锁{OLED_ShowCH(i*16-16*35,2,i);}for(i=46;i<=49;i++) //请您开锁{OLED_ShowCH(32+i*16-16*46,6,i);}
}
void finger_check() //刷指纹开门验证
{u16 uid,i;uid=press_FR();if((uid<300)&&(uid>0)){open_door_flag=1;OLED_Clear(); //清屏 for(i=70;i<72;i++) //用户{OLED_ShowCH(i*16-16*70,4,i);}OLED_ShowStr(32,4,"ID:",2);figer_error=0;OLED_ShowNum(56,4,uid,3,16);delay_ms(1000);OLED_Clear(); //清屏}else if(uid==0xffff){ OLED_Clear(); //清屏 for(i=66;i<70;i++) //指纹错误{OLED_ShowCH(32+i*16-16*66,1,i);}Beep_Work(500,4);figer_error++;OLED_Clear(); //清屏}
}
void ADD_finger() //添加指纹
{int i=0;OLED_Clear();for(i=23;i<27;i++) //请按手指{OLED_ShowCH(16*i-23*16,0,i);}i=Add_FR();if(i>0){for(i=27;i<31;i++) //添加成功{OLED_ShowCH(16*i-16*27,4,i);}for(i=70;i<72;i++) //用户{OLED_ShowCH(i*16-16*70,6,i);}OLED_ShowStr(32,6,"ID:",2);OLED_ShowNum(56,6,user_ID,3,16);delay_ms(1000);}else{ for(i=31;i<35;i++) //添加失败{OLED_ShowCH(16*i-16*30,4,i);}delay_ms(1000);}OLED_Clear();
}
void figer_show() //指纹管理界面显示
{int i;OLED_ShowStr(0,0,"A:",2);for(i=7;i<=10;i++) //添加指纹{OLED_ShowCH(i*16-16*6,0,i);}OLED_ShowStr(0,2,"B:",2);for(i=11;i<=14;i++) //删除指纹{OLED_ShowCH(i*16-16*10,2,i);}
}
void finger_admin() //指纹管理
{int i;OLED_Clear();while(key!='*') //*退出{key=Key44_Scan();switch (key){case'A' :ADD_finger();break;//添加case'B' :PS_Empty();OLED_Clear(); for(i=97;i<103;i++) { OLED_ShowCH(16+16*i-16*97,2,i);}delay_ms(1800); OLED_Clear();break;//删除default :figer_show();break;//管理显示界面 }}OLED_Clear();
}void Esp8266_AP_Init() //ESP8266局域网开热点等待手机APP链接
{UsartPrintf(USART1,"AT\r\n"); delay_ms(1000);OLED_Clear();OLED_printf(0,0,"1 AT+CWMODE ");UsartPrintf(USART1,"AT+CWMODE=2\r\n"); //设置路由器模式1 station,模式2 AP,模式3 station+AP混合模式 delay_ms(1000);OLED_Clear();OLED_printf(0,0,"2 AT+CWSAP ");UsartPrintf(USART1,"AT+CWSAP=\"WIFI\",\"123456789\",11,4\r\n"); //AT+CWSAP="wifi_yuan","123456789",11,4 设置模块SSID:WIFI, PWD:密码 及安全类型加密模式(WPA2-PSK) delay_ms(1000);OLED_Clear();OLED_printf(0,0,"3 AT+CIPMUX ");UsartPrintf(USART1,"AT+CIPMUX=1\r\n"); //开启多连接模式,允许多个各客户端接入 delay_ms(1000);OLED_Clear();OLED_printf(0,0,"4 AT+CIPSERVER ");UsartPrintf(USART1,"AT+CIPSERVER=1,5000\r\n"); //启动TCP/IP 实现基于网络//控制 delay_ms(1000);OLED_Clear();OLED_printf(0,0,"5 AT+CIPSTO ");UsartPrintf(USART1,"AT+CIPSTO=0\r\n"); delay_ms(1000);OLED_Clear();
}int main(void) //主函数
{ vu16 falsh,reclen,t;SystemInit();delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 2组中断分组Relay_Init(); //继电器初始化Relay=0;Beep_Init(); //蜂鸣器初始化Beep = 0;OLED_Init(); //OLED初始化Relay=1;Beep =1;usart2_Init(57600); //串口2初始化 RC522_Init();Key44_Init(); //矩阵按键初始化oled_show(); //界面显示STMFLASH_Read(FLASH_PASSWORD_SAVE_ADDR,(u16*)Password,6); //读取密码 下载程序后,数据是0XFFSTMFLASH_Read(FLASH_ICcard_SAVE_ADDR,(u16*)ICCard_Name,IC_Card_Num*4); //读取密码 下载程序后,数据是0XFFTIM2_Int_Init(4999,7199);while(1){delay_ms(1);if(pass_cnt==0) //没有在密码输入的时候{IC_check();if(t++>50){t=0;finger_check(); //指纹检验}}password_cheak(); //密码检验oled_show(); //显示open_door(); //开门函数if(password_eeror>=3){password_eeror=2;Locked_time = 30;while(Locked_time--){OLED_printf(0,4," Locked:%d ",Locked_time);Beep_Work(1000,1);}OLED_printf(0,4," ");}while(open_door_flag==2) //输入管理员密码进入设置{key=Key44_Scan();switch (key){case'C' :password_admin();break; //密码管理case'A' :finger_admin(); break; //指纹管理case'D' :rc522_admin();break; //IC卡管理case'*' :open_door_flag=0;OLED_Clear(); break;//退出default :admin_show();break; //管理显示界面}}}
}
4、原理图/PCB
原理图和PCB都使用立创EDA绘制,对新手较为友好。可以导出为AD格式的文件
5、论文
本设计基于单片机的智能门禁系统,主要是结合单片机技术立足于产业应用而展开,全文针对目标功能进行关键器件的选择,电路图绘制,软件程序编写等等,在整个文章的章节结构上,大致如下:在第一章绪论对基于单片机的智能门禁系统课题的理论背景进行分析并引申出设计的必要性,在第二章则围绕基于单片机的智能门禁系统课题进行总体框架设计,确定整个系统中使用到的关键器件,在第三章则从硬件设计的角度,对每个模块完成硬件电路设计,从单片机最小系统到各个传感器应用电路,在第四章则对各模块完成程序流程的分析和绘制,在第五章则进行系统测试,针对硬件和软件进行联调,并最终完成整个系统的功能和测试。
相关文章:
【STM32设计】基于STM32的智能门禁管理系统(指纹+密码+刷卡+蜂鸣器报警)(代码+资料+论文)
本课题为基于单片机的智能门禁系统,整个系统由AS608指纹识别模块,矩阵键盘,STM32F103单片机,OLED液晶,RFID识别模块,继电器,蜂鸣器等构成,在使用时,用户可以录入新的指纹…...
【MVP 和 MVVM 相比 MVC 有哪些优化点?】
MVP 和 MVVM 相比 MVC 的优化及原因 1. MVC 的痛点 在传统 MVC 模式中: 视图(View)和模型(Model)直接交互:View 可能直接监听 Model 的变化(如观察者模式),导致耦合。…...
蓝桥云客 刷题统计
刷题统计 问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题? 输入格式 输入一行包含三个整数 a, b 和 …...
【28BYJ-48】STM32同时驱动4个步进电机,支持调速与正反转
资料下载:待更新。。。。 先驱动起来再说,干中学!!! 1、实现功能 STM32同时驱动4个步进电机,支持单独调速与正反转控制 需要资源:16个任意IO口1ms定时器中断 目录 资料下载:待更…...
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【代码篇】A题解题全流程(持续更新)
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【代码篇】A题解题全流程(持续更新) 环境配置: 显存>24GBPyTorch 2.3.0Python 3.12(ubuntu22.04)CUDA 12.1autoDL服务器平台,(好处:可以分享镜像&…...
迅为RK3568开发板驱动开发指南helloworld驱动实验-驱动的基本框架
Linux 驱动的基本框架主要由模块加载函数,模块卸载函数,模块许可证声明,模块参数,块导出符号,模块作者信息等几部分组成,其中模块参数,模块导出符号,模块作者信息是选的部分…...
Spring Boot 3.4.3 基于 JSqlParser 和 MyBatis 实现自定义数据权限
前言 在企业级应用中,数据权限控制是保证数据安全的重要环节。本文将详细介绍如何在 Spring Boot 3.4.3 项目中结合 JSqlParser 和 MyBatis 实现灵活的数据权限控制,通过动态 SQL 改写实现多租户、部门隔离等常见数据权限需求。 一、环境准备 确保开发环境满足以下要求: …...
软件工程面试题(二十三)
1、public class Test {public static void add(Integer i){int val=i.intValue(); val+=3; i=new Integer(val); } public static void main(String[] args) {Integer i=new Integer(0); add(i); System.out.println(i.intValue());...
spring boot 集成redis 中RedisTemplate 、SessionCallback和RedisCallback使用对比详解,最后表格总结
对比详解 1. RedisTemplate 功能:Spring Data Redis的核心模板类,提供对Redis的通用操作(如字符串、哈希、列表、集合等)。使用场景:常规的Redis增删改查操作。特点: 支持序列化配置(如String…...
leetcode-热题100(3)
leetcode-74-搜索二维矩阵 矩阵最后一列升序排序,在最后一列中查找第一个大于等于target的元素 然后在该元素所在行进行二分查找 bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {int n matrixSize;int m matrixColSize[0];in…...
【大模型系列篇】大模型基建工程:使用 FastAPI 构建 SSE MCP 服务器
今天我们将使用FastAPI来构建 MCP 服务器,Anthropic 推出的这个MCP 协议,目的是让 AI 代理和你的应用程序之间的对话变得更顺畅、更清晰。FastAPI 基于 Starlette 和 Uvicorn,采用异步编程模型,可轻松处理高并发请求,尤…...
基于大模型预测风湿性心脏病二尖瓣病变的多维度诊疗研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型技术概述 2.1 大模型的原理与架构 2.2 在医疗领域的应用现状 三、术前评估与预测 3.1 患者数据收集与分析 3.1.1 临床数据收集 3.1.2 影像数据处理 3.2 大模型预测模型建立 3.2.1 数据预处理 3.…...
5.模型训练-毕设篇
vgg: base_model_vgg13 models.vgg13(pretrainedTrue) base_model_vgg13.classifier[-1] nn.Linear(4096, num_classes) base_model_vgg13.to(device)(b_img_rgb.to(device)).shapebase_model_vgg13 models.vgg13(pretrainedTrue) 作用:加载预训练的…...
[物联网iot]对比WIFI、MQTT、TCP、UDP通信协议
第一步:先理解最基础的关系(类比快递) 假设你要给朋友寄快递: Wi-Fi:相当于“公路和卡车”,负责把包裹从你家运到快递站。 TCP/UDP:相当于“快递公司的运输规则”。 TCP:顺丰快递&…...
【含文档+PPT+源码】基于Python的股票数据可视化及推荐系统的设计与实现
项目介绍 本课程演示的是一款基于Python的股票数据可视化及推荐系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Python学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行…...
LeetCode算法题(Go语言实现)_23
题目 给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid ,返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。 如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。 一、代码实现 func equalPairs…...
Windows家庭版如何开启Hyper-V与关闭Hyper-V
在Windows中如果要安装桌面版Docker,那么Hyper-V一定是需要开启的,在专业版操作系统上,这个功能直接就可以勾选开启,重启之后就即可生效,但在家庭版的操作系统上,默认是没有这个选择项的,这时候我们就需要借助于命令去开启它。本文,整理了一键开启Hyper-V服务和一键关闭…...
C# 中充血模型和贫血模型
在C#中,充血模型(Rich Domain Model)和贫血模型(Anemic Domain Model)是两种截然不同的领域建模方式,核心区别在于业务逻辑的归属。以下是通俗易懂的解释: 1. 贫血模型ÿ…...
C++中的继承
#include <iostream> using namespace std;// 武器类(基类) class Weapon { protected:int atk; // 攻击力public:// 构造函数Weapon(int atk 0) : atk(atk) {}// 虚拟析构函数virtual ~Weapon() {}// set 和 get 接口void setAtk(int atk) {this…...
Uubuntu20.04复现SA-ConvONet步骤
项目地址: tangjiapeng/SA-ConvONet: ICCV2021 Oral SA-ConvONet: Sign-Agnostic Optimization of Convolutional Occupancy Networks 安装步骤: 一、系统更新 检查系统是否已经更新到最新版本: sudo apt-get update sudo apt-get upgra…...
Blender模型导入虚幻引擎设置
单位系统不一致 Blender默认单位是米(Meters),而虚幻引擎默认使用**厘米(Centimeters)**作为单位。 当模型从Blender导出为FBX或其他格式时,如果没有调整单位,虚幻引擎会将1米(Blen…...
大数据Spark(五十五):Spark框架及特点
文章目录 Spark框架及特点 一、Spark框架介绍 二、Spark计算框架具备以下特点 Spark框架及特点 一、Spark框架介绍 Apache Spark 是一个专为大规模数据处理而设计的快速、通用的计算引擎。最初由加州大学伯克利分校的 AMP 实验室(Algorithms, Machines, and Pe…...
深入理解Python asyncio:从入门到实战,掌握异步编程精髓
文章目录 前言一、asyncio基础概念1.1 什么是异步编程?1.2 asyncio核心组件 二、asyncio核心用法详解2.1 事件循环管理2.2协程与任务2.3 异步上下文管理器 三、asyncio高级特性3.1 异步生成器3.2异步队列3.3 异步锁和信号量 四、asyncio实战项目4.1 高性能Web爬虫4.…...
线段树,单点,区间修改查阅
#PermanentNotes/algorithm 思想 首先关于树有许多类型,这里我们主要首线段树,整体思想就是将一个大区间进行拆分,拆分成各个小区间,在我们进行查找,更新时,就是对区间的查找更新 类型 初始化,构建树 代码 const int Z 1e7; const ll INF 1e18; const int maxn 1e5 10…...
音视频(二)ffmpeg编译及推流
FFmpeg 大名鼎鼎,就不多介绍了 1:环境 win11_amd64 ffpmeg download:https://git.ffmpeg.org/ffmpeg.git ffmpeg msys2 download:https://www.msys2.org/ vs2022 (c 写demo用) 用别的也行 usb2.0 摄像头(有点老) opencv 看上传的…...
syslog 与 Linux 内核日志系统全面解析
在 Linux 系统中,日志是进行系统调试、故障排查和系统安全分析的重要手段。syslog 和内核日志是 Linux 日志组成的核心组件。本文将从原理、实现、配置、常见问题分析等综合解析,全面解读 Linux 下的日志机制。 一、syslog 系统概述 1.1 什么是 syslog …...
SQL问题分析与诊断(8)——关键信息(2)
8.2. 关键信息 8.2.2. 警告 查询计划中,可能会看到出现于操作符上的小图标,特别是黄色或红色的感叹号。这些图标都是警告。并非每个警告都指示一个严重问题,但发现时请检查该图标的属性窗口,其将包含该警告图标的具体细节。 8.…...
HCIA/HCIP基础知识笔记汇总
HCIA/HCIP基础知识笔记汇总 ICT产业链: 上游:芯片制造、元器件生产、光纤光缆制造 中游:硬件组装、软件开发、网络建设维护 下游:电信服务、互联网服务、终端产品 VLAN端口类型: access :…...
vue3 动态路由
定义: 对路由的添加通常是通过 routes 选项来完成的,但是在某些情况下,你可能想在应用程序已经运行的时候添加或删除路由 1. 动态添加路由规则 场景 在应用初始化时,可能需要根据用户的角色或权限动态添加路由规则。 实现 im…...
《Linux内存管理:实验驱动的深度探索》大纲
《Linux内存管理:实验驱动的深度探索》 ——通过递进式实验与问题剖析,从入门到精通 第一部分:初探内存——基础概念与简单实验 目标:理解内存的基本行为,学会观察和提问 第1章 内存初体验:从"free…...
【C语言】深入理解指针(五):sizeof、strlen与数组指针的那些事儿
前言 在C语言的学习中,指针始终是一个让人又爱又恨的话题。它强大而灵活,但同时也充满了陷阱。今天,我们就来深入探讨一下指针相关的几个重要知识点:sizeof和strlen的区别,以及数组和指针在笔试题中的那些常见问题。希…...
CMake学习-- install 指令详细说明
目录 CMake中install命令的用法背景知识使用方法项目结构示例代码CMakeLists.txt构建和安装 详细介绍安装库和头文件安装可执行文件安装额外的文件安装目录结构使用安装的库 总结 CMake中install命令的用法 背景知识 在软件开发过程中,构建和安装是两个重要的环节…...
Cannot find a valid baseurl for repo: centos-sclo-sclo/x86_64
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpmyum clean allyum macache fast 编辑配置文件 /etc/yum.repos.d/zabbix.repo and enable zabbix-frontend repository. [zabbix-frontend]...enabled1... 下载相关…...
uniapp 微信小程序 使用ucharts
文章目录 前言一、组件功能概述二、代码结构分析2.1 模板结构 总结 前言 本文介绍一个基于 Vue 框架的小程序图表组件开发方案。该组件通过 uCharts 库实现折线图的绘制,并支持滚动、缩放、触摸提示等交互功能。文章将从代码结构、核心方法、交互实现和样式设计等方…...
空调开机启动后发出噼里啪啦的异响分析与解决
背景 当空调使用时由于制冷或制热运转时(关机后可能也会出现),塑料件热胀冷缩引起,可能会出现“咔咔”的声音;空调冷媒在空调内管路流动时会出现轻微的“沙沙”的声音;也有可能是新装的空调摆风轴出现响声…...
Python爬虫第3节-会话、Cookies及代理的基本原理
目录 一、会话和Cookies 1.1 静态网页和动态网页 1.2 无状态HTTP 1.3 常见误区 二、代理的基本原理 2.1 基本原理 2.2 代理的作用 2.3 爬虫代理 2.4 代理分类 2.5 常见代理设置 一、会话和Cookies 大家在浏览网站过程中,肯定经常遇到需要登录的场景。有些…...
《自然-方法》2024年度技术:空间蛋白质组学(spatial proteomics)
李升伟 编译 《自然-方法》第21卷 2195-2196页 (2024) 解析组织空间蛋白质组的技术,正成为图谱级研究项目的基石。这些项目正在兑现其承诺,帮助人类理解健康和疾病状态下的生物复杂性。 人类天生充满探索欲。我们热爱勘测未知疆域,并随之绘…...
pip安装timm依赖失败
在pycharm终端给虚拟环境安装timm库失败( pip install timm),提示你要访问 https://rustup.rs/ 来下载并安装 Rust 和 Cargo 直接不用管,换一条命令 pip install timm0.6.13 成功安装 简单粗暴...
【工具变量】全国分省低空经济高质量发展数据(2012-2023年)
测算方式:参考CSSCI《北京航空航天大学学报(社会科学版)》沈映春(2024)老师的做法,如商图指标构建图所示。 包含内容: 样例代码: 样例数据: 参考文献:沈映春,张豪兴.数字基础设施建设…...
【Kubernetes】如何使用 kubeadm 搭建 Kubernetes 集群?还有哪些部署工具?
使用 kubeadm 搭建 Kubernetes 集群是一个比较常见的方式。kubeadm 是 Kubernetes 提供的一个命令行工具,它可以简化 Kubernetes 集群的初始化和管理。下面是使用 kubeadm 搭建 Kubernetes 集群的基本步骤: 1. 准备工作 确保你的环境中有两台或更多的机…...
Java 枚举类 Key-Value 映射的几种实现方式及最佳实践
Java 枚举类 Key-Value 映射的几种实现方式及最佳实践 前言 在 Java 开发中,枚举(Enum)是一种特殊的类,它能够定义一组固定的常量。在实际应用中,我们经常需要为枚举常量添加额外的属性,并实现 key-value 的映射关系。本文将详细…...
JavaScript instanceof 运算符全解析
JavaScript instanceof 运算符全解析 核心语义: 判断一个对象(object)是否属于某个构造函数(constructor)或类的实例,基于原型链(prototype chain)实现类型检测。 一、JavaScript 中的基础用法 1. 语法结构 object instanceof constructor 返回值:布尔值(true/fal…...
问题大集09-如何实现vite创建的react项目的配置别名路径@
(1)如何实现vite创建的react项目的配置别名路径 1)直接修改 Vite 配置文件 ①打开项目根目录下的 vite.config.js 文件(如果没有则新建),添加 resolve.alias 配置(新增resolve部分)…...
鸿蒙开发_TS快速入门_TS中模块化操作_模块的导入导出---纯血鸿蒙HarmonyOS5.0工作笔记008
然后我们再来看鸿蒙中的模块如何导入导出。 其实就跟Java中的import是一个意思的。 只不过我们如果想把一个类中的某个方法导入到另一个类中, 那么首先要在这个类中去导出这个方法。 可以看到导出的关键字是export。 然后导入的关键字是import。 然后我们写个例子去看一下,…...
算法设计与分析之“分治法”
分治法(Divide and Conquer)是一种高效的算法设计策略,其核心思想是将复杂问题分解为多个子问题,递归求解后再合并结果。以下是分治法的详细介绍: 一、分治法的基本步骤 分治法遵循以下三步流程: 分解&…...
java 静态内部类
java 静态内部类 一、位置二、特点三、静态内部类的实例化四、代码示例一:演示特点一五、代码示例二:演示特点二六、代码实例三:演示特点三七、代码实例四:演示特点四 文章同步更新(更好的排版):…...
Axure疑难杂症:完美解决文本框读取、赋值、计数(玩转文本框)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:玩转文本框 主要内容:文本框读取、赋值、验证、计数 应用场景:验证码、文本限制、文本取值、文本赋值等场景 案例展示&…...
Python数据可视化-第2章-使用matplotlib绘制简单图表
环境 开发工具 VSCode库的版本 numpy1.26.4 matplotlib3.10.1 ipympl0.9.7教材 本书为《Python数据可视化》一书的配套内容,本章为第2章 使用matplotlib绘制简单图表 本文主要介绍了折线图、柱形图或堆积柱形图、条形图或堆积条形图、堆积面积图、直方图、饼图或…...
国产系统服务器识别不到SATA盘
在使用浪潮、海光、华三等系列服务器安装操作系统的时候提示没有足够的存储空间,其实是有两块512的SATA硬盘的,但是他没有识别到。 需要给硬盘做raid存储阵列才能让系统识别到他,下面是在BIOS中配置RAID的方法。 1、重启机器,按下…...
解决小程序video控件在真机和上线后黑屏不播放问题
小程序上线后,mp4格式的视频无法点击是黑屏,但是测试得时候在微信开发者工具中能够打开正常播放 原因:编码格式不能是vp9 微信开发者工具本地设置中把这个打开勾选。 排查:可以换一个视频尝试能不能真机播放,如果能&a…...