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

(51单片机)矩阵按键密码锁表白(C语言代码编撰)(矩阵按键教程)(LCD1602浅教程)

目录

源代码

 main.c

MatrixKey.c

MatrixKey.h

LCD1602.c

 LCD1602.h

 Delay.c

Delay.h

运行效果图:

第一步:

第二步:

第三步:

第四步:

 代码解析与教程:

延时函数Delay

 LCD1602

 MatrixKey模块


源代码

如上图将7个文放在Keli5 中即可,然后烧录在单片机中就行了

烧录软件用的是STC-ISP,不知道怎么安装的可以去看江科大的视频:

【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】https://www.bilibili.com/video/BV1Mb411e7re?p=2&vd_source=ada7b122ae16cc583b4add52ad89fd5e

源代码:

 main.c

//mian.c#include <STC89C5xRC.H>
#include	"Delay.h"
#include	"LCD1602.h"
#include	"MatrixKey.h"unsigned char KeyNum;
unsigned int Password,Count;void main(){LCD_Init();LCD_ShowString(1,1,"Password:");//上行显示LCD_ShowNum(2,1,0,4);//下行初始显示while(1){KeyNum=MatrixKey();if(KeyNum){//检测是否摁按键if(KeyNum<=10){//检测摁按键的按键是否小于10,输入密码if(Count<4){Password*=10;//密码左移一位,利用当前数乘10得Password+=KeyNum%10;	//将10变成0,并且每次获得新输入的数Count++;//配合if条件最大位数为4,限制密码位数}}LCD_ShowNum(2,1,Password,4);//更新显示屏}if(KeyNum==11){//按键是否等于于11,确认密码if(Password==301){//在此自定义密码(可改6666等,这里用的301)LCD_ShowString(1,14," OK");//如果密码等于6666,显示OKDelay(2000);//OK显示2秒LCD_ShowNum(2,1,0,4);//刷新显示LCD_ShowString(1,1,"zxy I Love You ");LCD_ShowString(1,16,"!");LCD_ShowNum(2,1,520,3);LCD_ShowNum(2,6,1314,4);LCD_ShowString(2,10,"  mua !");}else{LCD_ShowString(1,14,"ERR");//如果密码不等于6666,显示ERRLCD_ShowNum(2,1,0,4);//刷新显示Password=0;//密码清零Count=0;//计数清零}}if(KeyNum==12){//清空当前密码LCD_ShowString(1,14,"   ");//刷新当前状态LCD_ShowNum(2,1,0,4);//刷新显示Password=0;//密码清零Count=0;//计数清零}}
}

MatrixKey.c

//MatrixKey.c#include <STC89C5xRC.H>
#include	"Delay.h"
#include	"LCD1602.h"
#include	"MatrixKey.h"//矩阵按键源代码unsigned char MatrixKey(){unsigned char KeyNumber=0;//矩阵按键第一列P1=0xFF;P13=0;if(P17==0){Delay(20);while(P17==0);//防抖操作Delay(20);KeyNumber=1;}if(P16==0){Delay(20);while(P16==0);Delay(20);KeyNumber=5;}if(P15==0){Delay(20);while(P15==0);Delay(20);KeyNumber=9;}if(P14==0){Delay(20);while(P14==0);Delay(20);KeyNumber=13;}//矩阵按键第二列P1=0xFF;P12=0;if(P17==0){Delay(20);while(P17==0);Delay(20);KeyNumber=2;}if(P16==0){Delay(20);while(P16==0);Delay(20);KeyNumber=6;}if(P15==0){Delay(20);while(P15==0);Delay(20);KeyNumber=10;}if(P14==0){Delay(20);while(P14==0);Delay(20);KeyNumber=14;}//矩阵按键第三列P1=0xFF;P11=0;if(P17==0){Delay(20);while(P17==0);Delay(20);KeyNumber=3;}if(P16==0){Delay(20);while(P16==0);Delay(20);KeyNumber=7;}if(P15==0){Delay(20);while(P15==0);Delay(20);KeyNumber=11;}if(P14==0){Delay(20);while(P14==0);Delay(20);KeyNumber=15;}//矩阵按键第四列P1=0xFF;P10=0;if(P17==0){Delay(20);while(P17==0);Delay(20);KeyNumber=4;}if(P16==0){Delay(20);while(P16==0);Delay(20);KeyNumber=8;}if(P15==0){Delay(20);while(P15==0);Delay(20);KeyNumber=12;}if(P14==0){Delay(20);while(P14==0);Delay(20);KeyNumber=16;}return KeyNumber;
}

MatrixKey.h

//MatrixKey.h#ifndef __MatrixKey_H__
#define __MatrixKey_H__//矩阵按键头文件unsigned char MatrixKey();
#endif

LCD1602.c

//LCD1602.c#include <STC89C5xRC.H>
//LCD1602源代码//引脚配置:
sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_EN=P2^7;
#define LCD_DataPort P0//函数定义:
/*** @brief  LCD1602延时函数,12MHz调用可延时1ms* @param  无* @retval 无*/
void LCD_Delay()		//@11.0592MHz
{unsigned char i, j;i = 11;j = 190;do{while (--j);} while (--i);
}/*** @brief  LCD1602写命令* @param  Command 要写入的命令* @retval 无*/
void LCD_WriteCommand(unsigned char Command)
{LCD_RS=0;LCD_RW=0;LCD_DataPort=Command;LCD_EN=1;LCD_Delay();LCD_EN=0;LCD_Delay();
}/*** @brief  LCD1602写数据* @param  Data 要写入的数据* @retval 无*/
void LCD_WriteData(unsigned char Data)
{LCD_RS=1;LCD_RW=0;LCD_DataPort=Data;LCD_EN=1;LCD_Delay();LCD_EN=0;LCD_Delay();
}/*** @brief  LCD1602设置光标位置* @param  Line 行位置,范围:1~2* @param  Column 列位置,范围:1~16* @retval 无*/
void LCD_SetCursor(unsigned char Line,unsigned char Column)
{if(Line==1){LCD_WriteCommand(0x80|(Column-1));}else if(Line==2){LCD_WriteCommand(0x80|(Column-1+0x40));}
}/*** @brief  LCD1602初始化函数* @param  无* @retval 无*/
void LCD_Init()
{LCD_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关LCD_WriteCommand(0x06);//数据读写操作后,光标自动加一,画面不动LCD_WriteCommand(0x01);//光标复位,清屏
}/*** @brief  在LCD1602指定位置上显示一个字符* @param  Line 行位置,范围:1~2* @param  Column 列位置,范围:1~16* @param  Char 要显示的字符* @retval 无*/
void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char)
{LCD_SetCursor(Line,Column);LCD_WriteData(Char);
}/*** @brief  在LCD1602指定位置开始显示所给字符串* @param  Line 起始行位置,范围:1~2* @param  Column 起始列位置,范围:1~16* @param  String 要显示的字符串* @retval 无*/
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String)
{unsigned char i;LCD_SetCursor(Line,Column);for(i=0;String[i]!='\0';i++){LCD_WriteData(String[i]);}
}/*** @brief  返回值=X的Y次方*/
int LCD_Pow(int X,int Y)
{unsigned char i;int Result=1;for(i=0;i<Y;i++){Result*=X;}return Result;
}/*** @brief  在LCD1602指定位置开始显示所给数字* @param  Line 起始行位置,范围:1~2* @param  Column 起始列位置,范围:1~16* @param  Number 要显示的数字,范围:0~65535* @param  Length 要显示数字的长度,范围:1~5* @retval 无*/
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{unsigned char i;LCD_SetCursor(Line,Column);for(i=Length;i>0;i--){LCD_WriteData(Number/LCD_Pow(10,i-1)%10+'0');}
}/*** @brief  在LCD1602指定位置开始以有符号十进制显示所给数字* @param  Line 起始行位置,范围:1~2* @param  Column 起始列位置,范围:1~16* @param  Number 要显示的数字,范围:-32768~32767* @param  Length 要显示数字的长度,范围:1~5* @retval 无*/
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length)
{unsigned char i;unsigned int Number1;LCD_SetCursor(Line,Column);if(Number>=0){LCD_WriteData('+');Number1=Number;}else{LCD_WriteData('-');Number1=-Number;}for(i=Length;i>0;i--){LCD_WriteData(Number1/LCD_Pow(10,i-1)%10+'0');}
}/*** @brief  在LCD1602指定位置开始以十六进制显示所给数字* @param  Line 起始行位置,范围:1~2* @param  Column 起始列位置,范围:1~16* @param  Number 要显示的数字,范围:0~0xFFFF* @param  Length 要显示数字的长度,范围:1~4* @retval 无*/
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{unsigned char i,SingleNumber;LCD_SetCursor(Line,Column);for(i=Length;i>0;i--){SingleNumber=Number/LCD_Pow(16,i-1)%16;if(SingleNumber<10){LCD_WriteData(SingleNumber+'0');}else{LCD_WriteData(SingleNumber-10+'A');}}
}/*** @brief  在LCD1602指定位置开始以二进制显示所给数字* @param  Line 起始行位置,范围:1~2* @param  Column 起始列位置,范围:1~16* @param  Number 要显示的数字,范围:0~1111 1111 1111 1111* @param  Length 要显示数字的长度,范围:1~16* @retval 无*/
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{unsigned char i;LCD_SetCursor(Line,Column);for(i=Length;i>0;i--){LCD_WriteData(Number/LCD_Pow(2,i-1)%2+'0');}
}

 LCD1602.h

//LCD1602.h#ifndef __LCD1602_H__
#define __LCD1602_H__//LCD1602头文件
//用户调用函数:
void LCD_Init();
void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char);
void LCD_ShowString(unsigned char Line,unsigned char Column,char *String);
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length);
void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);
void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length);#endif

 Delay.c

//Delay.c#include <STC89C5xRC.H>
#include <INTRINS.H>//延时函数
void Delay(unsigned int xms)		//@11.0592MHz
{unsigned char i, j;while(xms){i = 2;j = 199;do{while (--j);} while (--i);xms--;}
}

Delay.h

//Delay.h#ifndef __Delay_H__
#define __Delay_H__//延时函数头文件
void Delay(unsigned int xms);
#endif

运行效果图:

第一步:

初始化显示,按下开关后显示如下

第二步:

在矩阵按键中按S1-S10,对应数字1-9,S10是0,输入密码(可以自己修改)

第三步:

输入完后,按S11(S12是清空当前输入,S13-S16,暂时没有绑定按键,可自行设置)确定验证密码,正确右上角显示OK(2秒),错误显示ERR

  • 注:因为编译器会将0开头的数字认为是八进制,因次想要实现0开头的密码必须使用字符串来,在本代码中我将忽略第一个0的情况,例如:0123,输入123,就可以实现显示0123时密码正确

第四步:

密码正确会,2秒后会跳转新界面,显示你表白的内容(可自己更改)

 代码解析与教程:

延时函数Delay
  • 包含源代码与头文件,不需要知道怎么实现的会用即可,后续使用,直接将头文件和源代码拿过来用即可;例如:Delay(1000)就是延迟1秒(单位毫秒)
 LCD1602
  • 包含源代码与头文件,不需要知道怎么实现的会用即可,后续使用,直接将头文件和源代码拿过来用即可;使用格式:(参考江科大的视频素材)

  • LCD1602相关重要知识:
    • LCD1602有两上下两行显示屏,每行各有16个小显示屏,如上图中的LCD_ShowString(1,3,"Hello"),第一个参数是第一行还是第二行,第2个参数是对应第几行的第几个小显示屏,最后一个是输出的东西,同理,到LCD_ShowNum(1,9,123,3)里,前三个和前面一样,最后一个参数是显示的位数,不够就在前面补0,例如输入1,参数为4,显示就是0001,输入23,参数为3,显示就是023

  • 上图是LCD1602的开发原理模块图,由图可知,P10-P17是控制显示屏的重点;像矩阵那样,S1,由P17和P13控制,同理,其他按键一样,由于开发板限制,我们一般使用列遍历来控制按键,例如:S1,S5,S9,S13他们四个共用P13,所以将其为1列,将P13设定为1,P17设定为0,S1就会亮,其他按键同理。
 MatrixKey模块
  • 包含源代码与头文件,需要知道怎么实现,会用
  • 如上LCD1602相关知识所言,将P1=0xFF,就可以实现将所有的IO接口设定为1,这时只需要将上述的原理图拿出来,就可以控制哪个亮了,如下:
//矩阵按键第四列P1=0xFF;P10=0;if(P17==0){Delay(20);while(P17==0);Delay(20);KeyNumber=4;}if(P16==0){Delay(20);while(P16==0);Delay(20);KeyNumber=8;}if(P15==0){Delay(20);while(P15==0);Delay(20);KeyNumber=12;}if(P14==0){Delay(20);while(P14==0);Delay(20);KeyNumber=16;}return KeyNumber;

将其他都设置成1之后,又将P10设为0,打开第四列,判断P17是否按下(看原理图,也就是第四个按键),随后加上防抖操作(中间那三行),然后按下之后,执行KeyNumber=4;代码;以此类推即可。

 效果视频:

(51单片机)矩阵按键密码锁表白(C语言代码编撰)(矩阵按键

 注:该代码是本人自己所写,可能不够好,不够简便,欢迎大家指出我的不足之处。如果遇见看不懂的地方,可以在评论区打出来,进行讨论,或者联系我。上述内容全是我自己理解的,如果你有别的想法,或者认为我的理解不对,欢迎指出!!!如果可以,可以点一个免费的赞支持一下吗?谢谢各位彦祖亦菲!!!!!

相关文章:

(51单片机)矩阵按键密码锁表白(C语言代码编撰)(矩阵按键教程)(LCD1602浅教程)

目录 源代码 main.c MatrixKey.c MatrixKey.h LCD1602.c LCD1602.h Delay.c Delay.h 运行效果图&#xff1a; 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; 代码解析与教程&#xff1a; 延时函数Delay LCD1602 MatrixKey模块 源代…...

C++20新增内容

C20 是 C 语言的一次重大更新&#xff0c;它引入了许多新特性&#xff0c;使代码更现代化、简洁且高效。以下是 C20 的主要新增内容&#xff1a; 1. 概念&#xff08;Concepts&#xff09; 概念用于约束模板参数&#xff0c;使模板编程更加直观和安全。 #include <concept…...

思维链、思维树、思维图与思维森林在医疗AI编程中的应用蓝图

在医疗AI编程中,思维链(Chain of Thought, CoT)、思维树(Tree of Thoughts, ToT)、思维图(可能指知识图谱或逻辑图)以及思维森林(Forest-of-Thought, FoT)等技术框架通过模拟人类认知和推理过程,显著提升了AI在复杂医疗场景中的决策能力和可解释性: 1. 思维链(CoT)…...

[GN] Python3基本数据类型 -- 与C的差异

文章目录 前言Python3的基本数据类型6个标准的数据类型NumbersStringListtupleSetsDictionaries Python运算符逻辑 运算符成员运算符身份运算符 Python3 数字Python3 序列序列切片序列相加序列相乘序列相关内置函数 Python3 列表访问列表的值更新列表删除列表元素拼接列表嵌套列…...

TCP基础篇(一)

文章目录 1.TCP 是如何保证可靠性的?2. 滑动窗口机制3 超时重传4.TCP 报文格式5. 什么是 TCP 协议5.1 如何唯一确定一个 TCP 连接 6.TCP 三次握手过程6.1 可以两次握手吗? 7.TCP 的四次挥手7.1 为什么客户端要等待2MSL&#xff1f; 8.linux 中查看 TCP 的连接9.TCP 为什么要有…...

Spring-IOC部分

Spring-IOC部分 1.SpringBean的配置详解&#xff08;Bean标签&#xff09; &#xff08;1&#xff09;scope 默认情况下&#xff0c;单纯的Spring环境Bean的作用范围有两个&#xff1a;Singleton和Prototype singleton&#xff1a;单例&#xff0c;默认值&#xff0c;Spring…...

使用GitHub Actions构建CI/CD流程

GitHub Actions 简介 GitHub Actions 是一种自动化软件开发工作流的方式&#xff0c;与 GitHub.com 深度集成。开发人员可以通过配置 GitHub Actions 来实现基于事件触发的自动工作流&#xff0c;比如&#xff0c;当有任意用户向 master 分支提交代码时&#xff0c;自动执行一…...

Ubuntu服务器 无法正常启动redis

当我们在阿里云服务器上启动redis服务 运行下述命令时 service redis-server start 会出现如下报错 Failed to start redis-server.service: Unit redis-server.service not found. 如图&#xff1a; 解决方案&#xff1a; 通过以下命令重新安装Redis&#xff1a; sudo apt…...

MySQL 索引原理

一、索引基础概念 1. 索引是什么&#xff1f; 定义&#xff1a;索引是帮助MySQL高效获取数据的有序数据结构&#xff0c;类似书籍的目录。核心作用&#xff1a;减少磁盘I/O次数&#xff0c;提升查询速度&#xff08;以空间换时间&#xff09;。 2. 索引的优缺点 优点缺点加…...

前端快速入门学习3——CSS介绍与选择器

1.概述 CSS全名是cascading style sheets,中文名层叠样式表。 用于定义网页样式和布局的样式表语言。 通过 CSS&#xff0c;你可以指定页面中各个元素的颜色、字体、大小、间距、边框、背景等样式&#xff0c;从而实现更精确的页面设计。 HTML与CSS的关系&#xff1a;HTML相当…...

WPF 免费UI 控件HandyControl

示例效果和代码 直接可以用 Button 按钮 | HandyOrg 1.安装 , 输入 HandyControl 2.<!--配置HandyControl--> <!--配置HandyControl--> <ResourceDictionary Source"pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/> …...

【代码艺廊】pyside6桌面应用范例:homemade-toolset

在研发测试日常工作中&#xff0c;通常会遇到很多琐碎的事情&#xff0c;占用我们工作的时间和精力&#xff0c;从而导致我们不能把大部分的注意力放在主要的工作上面。为了解决这个问题&#xff0c;除了加人之外&#xff0c;我们通常会开发一些日常用的效率工具&#xff0c;比…...

Hive 常见面试 300 问

一、Hive 基础概念 什么是 Hive?它的主要用途是什么? Hive 与传统关系型数据库有什么区别? 简述 Hive 的架构,各个组件的作用是什么? 解释 Hive 中的元数据,它存储在哪里? Hive 支持哪些数据格式?各自的特点是什么? 什么是 Hive 表的分区?为什么要使用分区? 什么是 …...

OpenMinus 源码深度解析:从 React 模式到多智能体架构实现

OpenMinus 源码深度解析&#xff1a;从 React 模式到多智能体架构实现 本文基于 2024 年 3 月 9 日最新代码版本解析&#xff0c;完整代码已上传至 GitHub&#xff08;附项目地址https://github.com/mannaandpoem/OpenManus&#xff09; 一、项目背景与核心价值 1.1 项目定位 …...

【Linux网络与网络编程】04.TCP Socket编程

一、TCP Socket编程接口 // 创建套接字 int socket(int domain, int type, int protocol); // 参数&#xff1a; // domain&#xff1a;域&#xff08;协议家族&#xff09;&#xff0c;这里使用 AF_INET 表示进行网络编程 // type&#xff1a;网络通信传输的类型&#xff0…...

初识数据结构——算法效率的“两面性”:时间与空间复杂度全解析

&#x1f4ca; 算法效率的“两面性”&#xff1a;时间与空间复杂度全解析 1️⃣ 如何衡量算法好坏&#xff1f; 举个栗子&#x1f330;&#xff1a;斐波那契数列的递归实现 public static long Fib(int N) {if(N < 3) return 1;return Fib(N-1) Fib(N-2); }问题&#xf…...

CCF GESP C++编程 八级认证真题 2025年3月

C 八级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 答案 B C B A D D D 一、单选题 第 1 题 国家“以旧换新”政策仍在继续&#xff0c;小杨家决定在家里旧的冰箱、电视、洗衣机、微波炉中选两种换新。其中&#xff0c;冰箱有4种型号可选&#xff0c;电视有6种型号可选&#xff0c…...

React: hook相当于函数吗?

一、Hook 是一个函数&#xff0c;但不仅仅是函数 函数的本质 Hook 确实是一个 JavaScript 函数&#xff0c;例如 useState、useEffect 或自定义 Hook 都是函数。它们可以接受参数&#xff08;如初始状态值或依赖项数组&#xff09;&#xff0c;并返回结果&#xff08;如状态值和…...

Git 从入门到精通(开源协作特别版)

&#x1f9e0; Git 从入门到精通&#xff08;开源协作特别版&#xff09; ✅ 基础命令 &#x1f9f0; 高级用法 &#x1f6e0;️ 开源实战技巧 &#x1f30d; GitHub 社区协作 适合&#xff1a;从0开始 → 熟练开发者 → 参与/维护开源项目 &#x1f530; 第1章&#xff1a;…...

《探索边缘计算:重塑未来智能物联网的关键技术》

最近研学过程中发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…...

什么是缓存穿透、缓存雪崩、缓存击穿?

什么是缓存&#xff1f; 缓存就是数据交换的缓冲区&#xff0c;是存贮数据的临时地方&#xff0c;一般读写性能较高。 怎么防止缓存穿透&#xff1f; 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到…...

洛谷题单3-P4956 [COCI 2017 2018 #6] Davor-python-流程图重构

题目描述 在征服南极之后&#xff0c;Davor 开始了一项新的挑战。下一步是在西伯利亚、格林兰、挪威的北极圈远征。 他将在 2018 年 12 月 31 日开始出发&#xff0c;在这之前需要一共筹集 n 元钱。 他打算在每个星期一筹集 x 元&#xff0c;星期二筹集 xk 元&#xff0c;……...

解决浏览器报错Mixed Content

前端代码写死了访问后端的请求为&#xff1a;http://service.xxx.com:8080/api/&#xff0c;前端代码中混合内容&#xff08;Mixed Content&#xff09; 导致的。浏览器使用https访问站点时&#xff0c;这个请求会被拦截&#xff0c;并且浏览器打印 login.vue:151 Mixed Conten…...

HCIP【BGP协议(详解)】

目录 1 BGP协议产生背景 2 BGP协议特性 2.1 自治系统间路由传播 2.2 路由矢量协议 2.3 防环机制 2.4 基于TCP传输 2.5 路由更新机制 2.6 丰富的路由属性 2.7 支持CIDR和路由聚合 2.8 路由过滤和策略控制 2.9 动态对等体功能 3 BGP基本术语 4 BGP规划问题 4.1 路…...

集合与容器:List、HashMap(II)

一、ArrayList 是集合框架中最核心的动态数组实现&#xff0c;高频使用的容器之一。 1. 核心数据结构 基于数组实现&#xff0c;维护elementData数组存储元素&#xff1a; transient修饰的elementData不会被默认序列化&#xff08;通过自定义序列化逻辑优化存储&#xff09;…...

mac 安装MySQL

1、打开官网&#xff0c;点击Downloads 2、在downloads页面选择MySQL Community Server 3、选择对应的设备和版本&#xff0c;点击下载 4、下载选择 5、下载完成后&#xff0c;点击安装 6、next 到Configguration 时要输入密码&#xff08;千万别忘记&#xff09; 7.最后输…...

Pascal语言的软件开发工具

使用Pascal语言的软件开发工具 引言 随着计算机科学的发展&#xff0c;编程语言层出不穷&#xff0c;程序员们在开发时可以选择多种多样的工具。而Pascal语言作为一种历史悠久的程序设计语言&#xff0c;尽管在当今编程语言的生态中已不再是主流&#xff0c;但其优雅的语法和…...

vue组件开发:什么是VUE组件?

什么是VUE组件 在我们实际开发过程中你也许会发现有很多代码是重复的&#xff0c;它们可能是一个按钮、一个表单、一个列表等等&#xff0c;其中最为显著的应该是列表。 以CSDN的首页为例&#xff1a; 上述截图中的文章列表可能会在多处出现&#xff0c;比如此截图是精选博客…...

如何在Springboot的Mapper中轻松添加新的SQL语句呀?

在如今的软件开发界&#xff0c;Spring Boot可是非常受欢迎的框架哦&#xff0c;尤其是在微服务和RESTful API的构建上&#xff0c;真的是让人爱不释手&#xff01;今天&#xff0c;我们就来聊聊如何为Spring Boot项目中的Mapper添加新的SQL语句吧&#xff01;说起来&#xff0…...

微服务架构: SpringCloud服务注册与发现详解

# 微服务架构: SpringCloud服务注册与发现详解 一、什么是微服务架构 微服务架构简介 微服务架构&#xff08;Microservices Architecture&#xff09;是一种以一组小型服务应用程序构建系统的软件架构风格。每个服务运行在自己的进程中&#xff0c;通过精简的HTTP API进行通信…...

现代简约杂志海报包装网页设计无衬线英文字体安装包 Seriusans – Condensed Sans Display Font

Seriusans 是一种 Condensed Sans Display 字体&#xff0c;将现代简约与大胆融为一体。其狭窄而醒目的字体营造出强大的存在感&#xff0c;使其成为有影响力设计的绝佳选择&#xff0c;例如海报、杂志标题、品牌、包装、网页设计、运动图形、社论布局、广告活动、企业演示&…...

C/C++的条件编译

一、什么是条件编译&#xff1f; 条件编译是指在编译阶段根据某些条件来决定是否编译某段代码。这通常通过预处理指令来实现&#xff0c;比如 #if、#ifdef、#ifndef、#else、#elif 和 #endif。 二、为什么使用条件编译&#xff1f; ​​跨平台开发​​&#xff1a;不同的操作…...

视野,,地面覆盖,重叠需求,FPS,飞行速度等的计算公式

一、计算相机视野与重叠需求 1. 相机参数 IDS UI-5280CP&#xff1a; 分辨率&#xff1a;2456x2054 像素。传感器&#xff1a;假设为 1/1.8" CMOS&#xff08;常见型号&#xff09;&#xff0c;尺寸约 6.78 mm&#xff08;宽&#xff09; 5.67 mm&#xff08;高&#xf…...

ARXML文件解析-1

目录 1 摘要2 ARXML文件2.1 作用及典型应用场景2.2 **ARXML文件的结构树**2.3 TAG&#xff08;XML元素&#xff09;2.4 ARXML文件关键元素解析2.4.1 XML声明与处理指令2.4.2 XML注释2.4.3 ADMIN-DATA元素2.4.3 语言相关元素2.4.5 AR-PACKAGE体系结构2.4.6. 数据转换框架2.4.7 S…...

传统开发者视角:智能合约与区块链数据库探秘

前言 在上一篇文章:探秘区块链开发:智能合约在 DApp 中的地位及与传统开发差异中我为大家从传统开发者的角度讲解了一下什么是智能合约。 简单的来说智能合约对于传统前端开发者可以说是API接口,而后端开发者则可以说是负责接口逻辑的程序。 然而从传统的开发意识跳跃到D…...

游戏引擎学习第204天

回顾并为今天的内容做铺垫 好&#xff0c;现在开始这一集。今天我们将进行一些用户界面编程&#xff0c;觉得这是一个展示如何编写这类代码的好时机。很多人对如何做用户界面代码都很好奇&#xff0c;所以展示一下如何编写是非常有意义的。 我之所以在现在的这个地方做这些工…...

蓝桥杯2024年第十五届省赛真题-R 格式

题目链接&#xff1a; 思路&#xff1a; 通过数组模拟d的每一位&#xff0c;逐位进行计算&#xff0c;从而实现对d的精确处理。 代码&#xff1a; #include<bits/stdc.h> #define int long long using namespace std; const int N 2020;int n; string s; vector<i…...

Haskell语言的区块链安全

Haskell语言在区块链安全中的应用 引言 随着区块链技术的发展&#xff0c;它已经成为金融、供应链管理、身份认证等多个领域的重要基础设施。然而&#xff0c;区块链的安全性问题一直是行业关注的焦点。为了确保区块链的安全性&#xff0c;开发者需要选择合适的编程语言来编写…...

BUUCTF-web刷题篇(11)

20.admin 这道题很可能用admin或者伪造admin进行登录&#xff0c;用admin进行登录&#xff0c;随便填写密码进不去&#xff0c;发现页面有register、login&#xff0c;用admin注册提示已经被注册。 方法一&#xff1a;&#xff08;burp爆破&#xff09; 进入登陆界面&#x…...

TensorFlow

TensorFlow 是一个由 Google 开发并开源的机器学习和深度学习库&#xff0c;被广泛应用于各类机器学习项目。以下为你详细介绍&#xff1a; 概述 TensorFlow 最初是为了满足 Google 内部大规模机器学习需求而研发&#xff0c;后于 2015 年开源。它提供了一个强大且灵活的生态…...

分子生成的深层次层次变分自编码器 - DrugHIVE 测评

一、背景介绍 DrugHIVE 来源于南加州大学定量与计算生物学系的 Remo Rohs 为通讯作者的文章&#xff1a;《Structure-Based Drug Design with a Deep Hierarchical Generative Model》。文章链接&#xff1a;https://pubs.acs.org/doi/10.1021/acs.jcim.4c01193。该文章在 202…...

54.大学生心理健康管理系统(基于springboot项目)

目录 1.系统的受众说明 2.相关技术 2.1 B/S结构 2.2 MySQL数据库 3.系统分析 3.1可行性分析 3.1.1时间可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.1.4 技术可行性 3.1.5 法律可行性 3.2系统流程分析 3.3系统功能需求分析 3.4 系统非功能需求分析 4.系统设计…...

Linux文件特殊权限管理及进程和线程

acl 权限优先级 拥有者 > 特殊指定用户 > 权限多的组 >权限少的组 > 其他 mask阈值 mask是能够赋予指定用户权限的最大阀值 当设定完毕文件的acl列表之后用chmod缩小了文件拥有组的权力 mask会发生变化 恢复&#xff1a; setfacl -m m: 权限 :rwx 文件/…...

Vue2+Vue3 45-90集学习笔记

Vue2Vue3 45-90集学习笔记 小兔鲜首页 页面开发思路&#xff1a; 分析页面&#xff0c;按模块拆分组件&#xff0c;搭架子&#xff08;局部注册或全局注册&#xff09; 局部注册&#xff1a;App.js中 导入&#xff08;import&#xff09;&#xff0c;注册&#xff08;compon…...

【Web 服务器】的工作原理

&#x1f310; Web 服务器的工作原理 Web 服务器的主要作用是 接收客户端请求&#xff08;通常是浏览器发出的 HTTP/HTTPS 请求&#xff09;&#xff0c;处理请求&#xff0c;并返回相应的数据&#xff08;如网页、图片、API 响应等&#xff09;。 &#x1f4cc; 工作流程 1️…...

LeetCode 5 -- 区间DP | 中心拓展算法

题目描述 最长回文子串 数据规模为 5e5&#xff0c;必须 manacher 算法 1. DP 由于 r e v e r s e ( ) reverse() reverse() 的时间复杂度是 O ( N ) O(N) O(N)&#xff0c;因此暴力肯定是不行的。 d p dp dp 的思路&#xff1a;如果 s [ l . . r ] s[l..r] s[l..r] 是一个…...

IntelliJ IDEA中Spring Boot 3.4.x+集成Redis 7.x:最新配置与实战指南

‌前言 Spring Boot 3.4.x作为当前‌最新稳定版本‌&#xff0c;全面支持Java 17与Jakarta EE 10规范。本文以‌Spring Boot 3.4.1‌和‌Redis 7.x‌为例&#xff0c;详解如何在IDEA中快速接入Redis&#xff0c;涵盖‌最新依赖配置‌、‌数据序列化优化‌、‌缓存注解‌及‌高…...

数仓建模中计算累计销量

在数仓建模中计算累计销量&#xff0c;通常需要结合时间维度和业务逻辑设计合理的模型与计算逻辑。以下是分步骤的实现思路和示例&#xff1a; 1. 模型设计 累计销量的计算通常基于星型模型或雪花模型&#xff0c;核心结构包括&#xff1a; 事实表&#xff1a;记录每一笔销售…...

(多看) CExercise_05_1函数_1.2计算base的exponent次幂

题目&#xff1a; 键盘录入两个整数&#xff1a;底(base)和幂指数(exponent)&#xff0c;计算base的exponent次幂&#xff0c;并打印输出对应的结果。&#xff08;注意底和幂指数都可能是负数&#xff09; 提示&#xff1a;求幂运算时&#xff0c;基础的思路就是先无脑把指数转…...

Pollard‘s Rho 算法

Pollard’s Rho 算法&#xff1a;一场数学与计算机科学的巧妙结合 在现代计算机科学中&#xff0c;素数分解、整数因子化问题有着广泛的应用&#xff0c;尤其是在密码学领域。然而&#xff0c;当面对一个大合数时&#xff0c;寻找其因子仍然是一个非常复杂的问题。我们常常依赖…...