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

基于stm32电梯管理系统设计

基于stm32电梯管理系统设计

      • ==这里记录一下以前自己做的嵌入式课程设计,报告中的图片和文字太多了,全部一个一个把搬过来太麻烦了,需要完整文本和代码自行q我963160156,也可在微信公众号 *高级嵌入式软件* 里回复 *电梯* 查看完整版文章==
  • 摘要
  • 关键词
  • 一、课题概述
    • 1.1市场调研
    • 1.2 需求分析
  • 二、课题实施方案
    • 2.1 硬件总体方案
    • 2.2 性能指标
    • 2.3 开发平台
  • 三、课程实施详述
    • 3.1 各模块设计
      • 3.1.1 主控芯片
      • 3.1.2 oled显示屏
      • 3.1.3 按键模块
      • 3.1.4 电机驱动
      • 3.1.4 语音模块
    • 3.2 软件编程
      • 3.2.1 主函数
      • 3.2.2 按键消抖程序
      • 3.2.3 oled显示程序
      • 3.2.4 电机驱动程序
      • 3.2.4 语音模块程序
  • 四、系统测试及结果分析
    • 4.1 系统测试
    • 4.2 结果分析
  • 总结与展望
  • 参考文献
  • 附录

这里记录一下以前自己做的嵌入式课程设计,报告中的图片和文字太多了,全部一个一个把搬过来太麻烦了,需要完整文本和代码自行q我963160156,也可在微信公众号 高级嵌入式软件 里回复 电梯 查看完整版文章


摘要

世界上第一台电梯是由美国的奥的斯公司制造的。自从这第一台电梯于 1987 年问世以来,对生活在城市的楼宇中特别是高楼大厦中的人们的生活和工作带来了巨大的便利。随着社会经济的飞速发展,电梯与人们的生活越来越密不可分
本设计的电梯系统采用的是stm32 微处理器。STM32处理器是基于 Cortex-M3 架构的嵌入式微处理器MCU,其中 Cortex-M3 架构是 ARM 公司推出的。STM32 处理器具有高速、高集成度、低功耗、高可靠性等优点。正是由于 STM32 处理器具有这些优点,它正适合运用于电梯控制。本设计中的电梯控制系统主要运用了 STM32处理器 GPIO 口操作和其精确地定时功能。该电梯系统一共分6个部分,它们是 STM32处理器、电源系统、oled显示屏、键盘、LED 小灯、直流电机驱动模块。这些部分是直接与 STM32的GPIO 口连接的,所以它们占用的 GPIO 口较多。

关键词

STM32处理器;Cortex-M3 架构:直流电机驱动模块

一、课题概述

1.1市场调研

电梯是一种由电动机作为驱动力的竖直升降设备,装有立方体吊舱并设有电梯门用于多层建筑乘人或载运货物。它的轿厢运行在至少两列平行竖直的或近似平行竖直的刚性轨道之间,一般服务与超过规定高度的楼宇内。轿厢尺寸与结构形式使于乘客出入或装卸货物。而自从第一台电梯在美国问世 100 多年以来,由于社会科学与经济的不断前进以及人们物质生活状况的不断改善,电梯与人们的生活越来越息息相关,已成为人们工作和生活中不可或缺的一项十分重要的垂直交通运输工具。
自 20 世纪以来,企球科学技术获得了飞速的发展,尤其是计算机技术、电子技术自动控制技术、网络技术、等都得到了质的飞跃,并迅速转换为先进的生产力,渗透到了社会的各个领域和各个方面,深刻的影响了人们日常的工作方式及生活方式电梯行业在科学技术飞速发展过程中也同样获益颇多。电梯的控制方式以及拖动方式均发生了很大的变化。
100 多年来,中国的电梯行业发展经历了下面儿个阶段 :@依赖电梯进口阶段(1950 年以前),在这一阶段我国的电梯全部来源于进口,仅仅拥有大约 1101台电梯;2自主研发生产阶段 (1950~1980 年),在这个阶段我国可以自主的研发、设计和生产电梯。在这个阶段我国一共生产和安装电梯大约1 万台的电梯,@建立合资企业整个行业飞速发展阶段(自 1980 年改革开放至今),这个阶段我国总制造和安装了多达 40 万台电梯。现在,我国已成为全球最大的电梯制造国和最庞大的新装电梯市场。2006 年,在我国大陆的电梯总产量达到 16.8 万台,全国正在用的电梯达到了770314 台。在如此庞大的电梯市场需求的推动下电梯行业获得了广阔的发展舞台。20 世纪80 年代初,日本三菱公司首次在电梯拖动控制系统中变压变频调速(VWFVariable VoltageVariable Frequency),这导致了电梯的拖动方式的一次重大变革,与之前的交流调压调速驱动、交流双速电机驱动等方式相比,WVF 驱动方式具有电机发热量小、高效率、节能、污染小、高性能等优点。而近些年来,交流永磁同步电机的问世,被认为是在变压变频调速技术出现以后,电梯拖动技术的又一项十分重大的技术变革。这是因为交流永磁同步电机具有基本无需维护,结构紧凑,更加安全可靠、节能、传动效率高、更高的性价比的优点,并减少了对环境的污染。同样是在上个世纪 80 年代,微计算机技术被应用于电梯控制系统中,单片机等微处理器及可编程逻辑控制器的出现把电梯控制技术推进了·个全新高速的发展时期,电梯控制系统的网络化、智能化开始进入了人们的视野,并且成为研究的新热点。

1.2 需求分析

随着社会的发展,利用坚固耐用的金属梁作为建筑支撑物,建筑师和工程师可以建成数百米高、直冲云霄的摩天大楼。在如今各种高楼大厦已经数不胜数,如果没有电梯,这些高楼大厦基本上将无法使用。因此乘坐电梯也必然成为众生活中的一部分而作为电梯的大脑一一电梯控制器,它的高效运行和智能化已经成为电梯运行中必不可少的重要器件。本设计的电梯控制器是基于 STM32 来设计的。随着信息化技术的发展,嵌入式系统已经成为当前 IT 产业界一个非常热门的话题。因其高效、低成本、高可靠性、丰富的代码以及应用程序可扩展性、可移植性等一系列优点,越来越多地应用在信息化产品中。本设计以一个实际的应用实例,从开发板、集成开发环境的构建方式和作业方式、嵌入式系统的硬件和软件设计、JTAG调试方法,掌握嵌入式系统开发方法。
电梯是标志现代物质文明的垂直运输工具、是机电一体化的复杂运输设备。它涉及电子技术、机械工程、电力电子技术、微电脑技术、电力拖动系统和土建工程等多个科学领域。尽管电梯的品种繁多,但目前使用的电梯绝大多数为电力拖动、钢丝绳曳引式结构。从电梯各构件部分的功能上看,可分为八个部分:曳引系统、导向系统、轿厢、门系统、重量平衡系统、电力拖动系统、电气控制系统和安全保护系统。作为高层建筑物上下交通运输的重要设备,越来越多的机电专业将参与电梯技术方面的工作,为了掌握电梯的结构和控制技术就有必要把这庞大的集机械、电气、传感器于一体的产品模拟化,用 PLC、单片机、微机、变频器等控制手段去开发多功能应用软件,对提高学生的综合应用程序设计能力也将是非常有益和非常有效的。因此设计了一套完整的电梯控制系统,该系统可以和任何自动控制单元相连接作为下位机,也可以单独使用作为一般主控系统,验证各种电梯调度算法。
1.3 实施过程
本设计通过 ARM 微控制器模拟实现电梯的控制。
(1)需研究ARM Cortex-M3 微控制器结构,基ARM Cortex-M3 的 stm32开发板及相关键盘控制模块、GPIO 模块等,keil 集成开发环境:
(2) 研究单部电梯调度算法,并选择或设计一个合适的算法;
(3)了解实验开发板上和关使件电路设计;
(4)用 c 语言完成系统软件设计,并在实验开发板上调试,完成电梯的上行、下行、停止、开门、关门、等动作,要求每一个动作在规定时问内完成。

二、课题实施方案

2.1 硬件总体方案

该电梯控制系统由 stm32 开发板、电源系统、键盘、LED 指示小灯、4位8段数码管、电机驱动模块、语音播报模块等组成。如图 2.1

图2.1 系统的硬件结构

各功能模块简介:
(1)电源系统:为整个系统提供+5V 电源;
(2)按键:每个键位互不影响用以控制电梯运行状态;
(3)LED 指示小灯:用以指示小健是否被按下和电梯门开关状态;
(4)电机驱动模块:用于驱动电机和控制电机正反转及转速;
(5)STM32 开发板:通过写入程序代码来控制电梯的运行状态;
(6)oled显示屏:用于显示每层电梯外部电梯所在的层数。
(7)语音模块:用于播放提示每层电梯外部电梯所在的层数。

2.2 性能指标

(1)显示:本设计要求实现5层控制,电梯运行时应有相应指示灯亮,以示电梯正在上行或下行,实时显示电梯所在楼层位置。(2)升降控制:当某层有呼叫有相应呼叫信号显示。电梯模型作相应的运动,并准确平层,当有多人同时进行电梯请求时,需要对请求信号排序.
(3)平层时呼叫信号消失,并进行开门、关门操作,平层结束时给出提示信号。要求平均每层运行时间不超过5秒。
(4)具备不可逆响应的功能:电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向呼叫均无效。电梯门不关上,启动电梯运行无效。

2.3 开发平台

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会事半功倍。

三、课程实施详述

3.1 各模块设计

3.1.1 主控芯片

STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。除了被我们熟知的STM32,ST公司还有SPC5X系列、STM8系列等,具体参数如下:

3.1.2 oled显示屏

OLED(Organic Light-Emitting Diode),又称为有机电激光显示、有机发光半导体(Organic Electroluminescence Display,OLED)。OLED属于一种电流型的有机发光器件,是通过载流子的注入和复合而致发光的现象,发光强度与注入的电流成正比。OLED在电场的作用下,阳极产生的空穴和阴极产生的电子就会发生移动,分别向空穴传输层和电子传输层注入,迁移到发光层。当二者在发光层相遇时,产生能量激子,从而激发发光分子最终产生可见光。
IIC oled屏幕驱动原理:
处理器和芯片间的通信可以形象的比喻成两个人讲话:
1、你说的别人得能听懂:双方约定信号的协议。
2、2、你的语速别人得能接受:双方满足时序要求。
IIC总线的信号类型:

开始信号:
处理器让SCL时钟保持高电平,然后让SDA数据信号由高变低就表示一个开始信号。同时IIC总线上的设备检测到这个开始信号它就知道处理器要发送数据了。

停止信号:
处理器让SCL时钟保持高电平,然后让SDA数据信号由低变高就表示一个停止信号。同时IIC总线上的设备检测到这个停止信号它就知道处理器已经结束了数据传输,我们就可以各忙各个的了,如休眠等。

3.1.3 按键模块

当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定的接通,在断开时也不会一下子彻底断开,而是在闭合和断开的瞬间伴随了一连串的抖动;
按键时间:按键稳定闭合时间长短是由操作人员决定的,通常都会在 100ms 以上,刻意快速按的话能达到 40-50ms 左右,很难再低了;大致时间可以通过在1s时间正常可按多少次来计算;

当检测到按键状态变化时,不是立即去响应动作,而是先等待闭合或断开稳定后再进行处理,即为按键消抖。
按键消抖:可分为硬件消抖和软件消抖。
在按键模块上我们选择软件消抖。
最简单的消抖原理,就是当检测到按键状态变化后,先等待一个 10ms 左右的延时时间,让抖动消失后再进行一次按键状态检测,如果与刚才检测到的状态相同,就可以确认按键已经稳定的动作了。

3.1.4 电机驱动

“STM32F1 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器 (CNT)构成。STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产 生输出波形(输出比较和 PWM)等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长 度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的, 没有互相共享的任何资源。”
简单说就是这个定时器就是定时器,可以理解为计时用的。
详细讲呢就是它其实是一个计数器,就是用来数数的,结合了你的芯片工作频率和你可以自己设置的预分频数,设置后就可以作为定时器使用。举个例子哈,我之前用的STM32F103设置的的频率是72MHz,就是72 * 10 ^ 6 Hz。这个数字代表啥子咧,Hz你很熟悉呗,你可以超级简单地理解为它1s之内可以工作这么多次。而不同的定时器可能在不同的总线上面,APB1总线的频率是36MHz,APB2的频率是72MHz,假设我设置一个在APB1总线上的定时器,预分频数设置成为36,那么我的这个定时器就被设置成了36 * 10 ^ 6 / 36 Hz的这么一个 计数器 ,1s之内可以数1000000个数。然后是“重装载值”,就是说计数值达到这个重装载值后就把计数值归零。假设我设置为1000哈,那么我们一起来看,用我设好的这个定时器数到1000需要几秒钟?结果是1000/1000000=1*10 ^-3 s,也就是0.001s,1ms。
然后是占空比了,设置占空比需要设定一个“比较值”,当计数器计数到这个值的时侯我们就可以做一个操作,比如输出高电平,然后在计数值没达到的时候输出低电平,或者反着来也行,都是可以通过代码实现的,那么显而易见哈,这个比较值必须要比重装载值要小才可以。接着看一下这个图就容易明白了。

就是说信号在计数值达到比较值之后电信号发生变化。

3.1.4 语音模块

本模块是一款高集成度的语音合成模块,可实现中文、英文、数字的语音合成;并且支持用户的命令词或提示音的定制需求。控制简单,使用 UART 接口直接和主板通信。支持多种方式查询芯片的工作状态,包括:查询状态管脚电平、通过读芯片自动返回的回传、发送查询命令获得芯片工作状态的回传。芯片支持 Power Down 模式。使用控制命令可以使芯片进入 Power Down 模式。复位芯片可以使芯片从 Power Down 模式恢复到正常工作模式。

系统框架图
最小系统包括:控制器模块、 SYN6288 语音合成芯片、功放模块和喇叭。主控制器和 SYN6288 语音合成芯片之间通过 UART 接口连接,控制器可通过通讯接口向 SYN6288 语音合成芯片发送控制命令和文本, SYN6288 语音合成芯片把接收到的文本合成为语音信号输出,输出的信号经功率放大器进行放大后连接到喇叭进行播放。
语音播报模块连接到工业派或者专家版车,串口使用UART5,电压是3.3V,注意电源的的电压和方向,引脚不对应可能会烧坏器件。具体线序如表5-1
语音播报模块 工业派 专家版车
3V3 J12-5脚 J23-7脚
GND J12-7脚 J6-2脚
RXD J5-14脚 J6-3脚
TXD J5-13脚 J6-4脚
表5-1

1)将TTL转USB转口线连接板卡的J1和PC机的USB口,串口线序如表5-2
黑 J1-G脚
白 J1-T脚
绿 J1-R脚
红 不接

3.2 软件编程

程序流程图:

3.2.1 主函数

3.2.2 按键消抖程序

3.2.3 oled显示程序

3.2.4 电机驱动程序

(1)定时器PWM初始化(timer.c)

(2)控制引脚初始化(timer.c)
在这里插入图片描述

驱动电机函数
TIM_SetCompare1(TIM3,400); //预装载值1000与400比较,占空比40%

3.2.4 语音模块程序

在这里插入图片描述

四、系统测试及结果分析

4.1 系统测试

在这里插入图片描述
略…

4.2 结果分析

本设计以STM32F103单片机为核心控制器,加上其他的模块一起组成基于单片机的电梯控制模拟的整个系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STM32F103单片机,其主要作用是获取输入部分数据,经过内部处理,控制输出部分。内机输入由四部分组成,
第一部分是OLED模块,通过该模块显示当前的电梯层数;
第二部分是电机驱动模块ULN2003步进电机及驱动模块,该模块用于模拟电梯的上下行,控制电梯的上升和下降;
第三部分是独立按键,通过八个独立按键开关门、选择楼层、呼叫报警;
第四部分是供电电路,给整个系统进行供电。
第五部分是语音模块,复杂播报电梯当前所在的层数。

总结与展望

我本来对 stm32一点不了解,但是经过一个学期的努力我从零开始逐渐了解了stm32 开发板的结构和功能,特别是 stm32的 GPIO 功能,精确的定时功能,以及中断功能。我通过看视频,查资料,做实验最终掌握了 stm32 开发板的程序下载和使用。在做课程设计过程中,我发现stm32的GPIO口的功能很强大。stm32一共有 AB、C、D四种 56个GPIO 口,每个GPIO 口一共有7个寄存器控制,有8种工作模式这给我的毕业设计带了很大的便利。同时 stm32 的定时功能相对51 单片机及arm7等其他平台具有更精确的定时功能,这就使我设计的电梯控制系统在时间控制上能够更加精确。
电梯我以前天天都在乘坐,但从来都没有去了解过,通过这次毕业设计我对电梯控制系统的工作原理、运行方式、发展历史都有了更加深入的了解。电梯是一个复杂的电路系统,它涉及到了层数的算法、电机正转反转的控制、电梯门的控制,电梯安全系统等。虽然在设计这个电梯控制系统过程中碰到了很多困难,但我没有被这些困难吓倒,而是通过查资料,向老师和同学请教,再结合自己的思考探索,最终一一解决了这难题,完成了课程设计。

参考文献

1、《8051 单片机实践与应用》无金戊、沈庆阳、郭庭吉编著:清华大学出版社
2、《MCS-51 单片机实验指导》张友德、杨胜球编著: 复旦大学出版社
3、何斌.电梯群控系统设计与应用[ D ].南京理工大学,2006
4、王君明,电梯模型控制系统设计[I。湖北水利水电职业技术学院学报,200645
5、余兆棠,叶远呈,萧仁理.电梯控制系统改良与实现[J]. 电子测试,2006.
6、张汉杰,王锡仲,朱学莉.现代电梯控制技术[M].哈尔滨工业大学出版社,2001.
7、架延东.电梯控制技术[M]. 北京: 中国建筑工业出版社.1997
8、《单片机原理及应用技术》余发山,王福忠:中国矿业大学,2003
9、《北方工业大学学报》第10 卷第1期1998年3 月
10、《全国大学生电子设计竞赛获奖作品选编》(1994-1995)
11、《实用遥控电路》肖景和,赵健著:人民邮电出版社
12、《单片机应用系统设计》何立民: 北京航空航天大学出版社

附录

#include "stm32f4xx.h"
#include "oled.h"
#include "bmp.h"
#include "LED.h"
#include "stdio.h"
#include "elevator.h"
#include "stdlib.h"
#define LOW '0'
#define HIGH '9'static uint8_t floor_now='1';
static uint8_t floor_request='0';
static uint8_t floor_end='0';
static int check=0;
void USART1_IRQHandler(void)
{uint8_t data;if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET){data = USART_ReceiveData(USART1);if(!(floor_end>=LOW&&floor_end<=HIGH)&&!(floor_request>=LOW&&floor_request<=HIGH))check=1;else{if(floor_end=='0' ){floor_end = data;PFout(9)=0;PFout(10) = 1;			}else  if(floor_request==0&&floor_request>=LOW&&floor_request<=HIGH){floor_request=data;PFout(9)=1;PFout(10) = 0;}USART_ClearITPendingBit(USART1,USART_IT_RXNE);}
}
}int main(void)
{LED_Config();OLED_Init();OLED_Clear();USART1_Init(9600);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);printf("当前:%c楼\r\n",floor_now);while(1){if(check==1){	printf("请输入正确楼层\r\n");check=0;}else if(floor_end!='0'){	//floor_end=floor_end-48;if(floor_now!=floor_end){		while(floor_now<floor_end){				//显示上升过程floor_now++;printf("上升中---当前:%c楼,目的:%c楼\r\n",floor_now,floor_end);OLED_ShowChar(63,40,floor_now,16);//OLED_Clear();OLED_ShowCHinese(63,2,0);OLED_ShowCHinese(80,2,1);OLED_ShowNum( 46, 2, floor_now, 1, 9);Delay_ms(400);					}while(floor_now>floor_end){//显示下降过程printf("下降中---当前:%c楼,目的:%c楼\r\n",floor_now,floor_end);floor_now--;OLED_ShowNum( 46, 2, floor_now, 1, 2);Delay_ms(400);}if(floor_request!='0')floor_end=floor_request;printf("目的%c楼\r\n",floor_end);	}		     }floor_end='0';floor_request='0';			}	
}

相关文章:

基于stm32电梯管理系统设计

基于stm32电梯管理系统设计这里记录一下以前自己做的嵌入式课程设计&#xff0c;报告中的图片和文字太多了&#xff0c;全部一个一个把搬过来太麻烦了,需要完整文本和代码自行q我963160156&#xff0c;也可在微信公众号 *高级嵌入式软件* 里回复 *电梯* 查看完整版文章摘要关键…...

Spring中的FactoryBean 和 BeanFactory、BeanPostProcessor 和BeanFactoryPostProcessor解析

文章目录FactoryBean 和 BeanFactory后置处理器BeanPostProcessor 和 BeanFactoryPostProcessorBeanPostProcessorBeanFactoryPostProcessorFactoryBean 和 BeanFactory BeanFactory接⼝是容器的顶级接⼝&#xff0c;定义了容器的⼀些基础⾏为&#xff0c;负责⽣产和管理Bean的…...

【C++从入门到放弃】类和对象(上)

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《C从入门到放弃》 &#x1f466;个人简介&#xff1a;一名双非编程菜鸟&#xff0c;在这里分享自己的编程学习笔记&#xff0c;欢迎大家的指正与点赞&#xff0c;谢谢&#xff01; 类和对…...

什么牌子的蓝牙耳机便宜好用?四款高品质蓝牙耳机推荐

随着时代的发展&#xff0c;蓝牙耳机的使用频率越来越高&#xff0c;不少人外出时除了带手机外&#xff0c;蓝牙耳机也成为了外出必备的数码产品之一。现在的蓝牙耳机品牌众多&#xff0c;什么牌子的蓝牙耳机便宜好用&#xff1f;下面&#xff0c;我来给大家推荐四款高品质的蓝…...

eddsa 算法

信息安全课程设计&#xff1a;eddsa 算法 一、项目要求 使用 C 语言开发&#xff1b;可以实现公私钥生成、签名、认证&#xff1b;只需要手动输入明文&#xff0c;代码会自动生成公私钥、签名、认证&#xff1b;记录公私钥生成、签名、认证的时间&#xff1b;在 VS 上运行&am…...

Xcode Developer Document 开发者文档

总目录 iOS开发笔记目录 从一无所知到入门 文章目录IntroDeveloper Documentation 打开方式菜单栏点击 &#xff5c; 快捷键方式另一种打开方式Intro 2016年我在学校学Java的时候&#xff0c;要查某个Java类/方法的用法还得自己手动下载一种.chm格式的开发文档文件&#xff0c…...

IntelliJ插件开发教程之新建项目

JetBrains公司系列产品IDEA、WebStrom、PyCharm、CLion、GoLand等都是基于IntelliJ Platform开发而成&#xff0c;掌握IntelliJ插件开发技能便能拥有提升开发效率的终极武器。本教程Demo源码请微信公众号“开发效率”进行获取。阅读原文如果您是JetBrains产品的用户&#xff0c…...

解决SpringBoot中@RequestBody不能和Multipart同时传递的问题

问题描述 今天在做文件上传的时候&#xff0c;遇到了这么一个错误日志&#xff1a; Resolved[org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘multipart/form-data;boundary--------------------------771899451541318130280588;charsetUTF-8’…...

【华为OD机试模拟题】用 C++ 实现 - 统计匹配的二元组个数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明统计匹配的二元组个数题目输入输出描述示例一输入输出说明示例二输入输出说明备注Code使用说明 参加华为od机试,一定要注意不要完全背诵代码&...

Vuex 面试题总结 的历史汇总!

一.vuex是什么&#xff1f;怎么使用&#xff1f;哪种功能场景使用它&#xff1f; Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。简单来说就是&#xff1a;应用…...

Redis缓存更新策略与缓存穿透、雪崩等问题的解决

文章目录一、缓存更新策略1、三种策略2、策略选择3、主动更新的方案二、缓存存在的问题1、缓存穿透2、缓存雪崩3、缓存击穿三、解决缓存问题1、自定义分布式锁2、解决缓存穿透问题3、解决缓存击穿问题一、缓存更新策略 1、三种策略 内存淘汰&#xff1a;redis自带的内存淘汰机…...

OSI和TCP/IP网络模型细讲

文章目录一、OSI七层参考模型二、TCP/IP体系结构三、TCP/IP参考模型四、沙漏计时器形状的TCP/IP协议族五、两种国际标准对比相似之处不同之处一、OSI七层参考模型 OSI参考模型共分为7层&#xff0c;低三层面向通信&#xff0c;可用软硬件实现&#xff1b;高三层面向信息处理&am…...

【正点原子FPGA连载】第十九章FreeRtos Hello World实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十九章FreeRto…...

php mysql高校田径运动会成绩管理系统

第一章 引言 1 1.1 选题背景 1 1.2 编写目的 2 1.3 目标 2 1.4 功能需求 3 第二章 开发工具介绍 4 2.1 PHP 4 2.2 APACHE 5 2.3 MYSQL数据库 5 2.4 运行环境 WINDOWS XP 6 2.5 XAMPP 6 2.6 DREAMWEAVE8 6 2.7 EDITPLUS 7 第三章 需求…...

scrum敏捷项目管理软件三款

Leangoo领歌Leangoo是国产的一个项目管理软件&#xff0c;www.leangoo.com &#xff0c; 专门的Scrum敏捷开发工具&#xff0c;看板的管理方式&#xff0c;高度可视化。它支持敏捷开发全流程。从产品路线图-需求-迭代-缺陷-测试-上线。燃尽图&#xff0c;工作量&#xff0c;迭代…...

【项目设计】高并发内存池(二)[高并发内存池整体框架设计|threadcache]

&#x1f387;C学习历程&#xff1a;入门 博客主页&#xff1a;一起去看日落吗持续分享博主的C学习历程博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 也许你现在做的事情&#xff0c;暂时看不到成果&#xff0c;但不要忘记&…...

西电编译原理期末核心考点汇总(期末真题+相关知识点)

文章目录前言一、正规式1.1 相关知识点1.1.1 正规式定义1.1.2 辅助定义1.2 历年真题二、二义文法2.1 相关知识点2.1.1 二义性概念2.2 历年考题三、全部短语、直接短语和句柄3.1 相关知识点3.1.1 短语&#xff0c;直接短语和句柄定义3.1.2 短语&#xff0c;直接短语和句柄例题3.…...

追梦之旅【数据结构篇】——详解C语言实现二叉树

详解C语言实现二叉树~&#x1f60e;前言&#x1f64c;什么是二叉树&#xff1f;二叉树的性质总结&#xff1a;整体实现内容分析&#x1f49e;1.头文件的编写&#xff1a;&#x1f64c;2.功能文件的编写&#xff1a;&#x1f64c;1&#xff09;前序遍历的数值来创建树——递归函…...

独家 | Gen-1——可以改变视频风格的AI模型

翻译&#xff1a;吴振东校对&#xff1a;张睿毅本文约1000字&#xff0c;建议阅读3分钟 本文简单介绍了Runway公司的发展史&#xff0c;以及他们新推出的生成式AI模型Gen-1&#xff0c;可用于通过应用文本提示或者参考图像所指定的任意风格&#xff0c;将现有视频转换为新视频。…...

戴尔dell inspiron-5598电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。硬件型号驱动情况主板X99 K9 v2 Machinist处理器i5-10210U / *i7-10510U已驱动内存20GB已驱动硬盘1000GB SAMSUNG 860 QVO SATA已驱动显卡Intel UHD 620已驱动声卡Realtek ALC3204/236已驱动网卡RTL8168H Gigabit Ethernet已…...

3.2 网站图的爬取路径

深度优先与广度优先方法都是遍历树的一种方法&#xff0c;但是网站的各个网页 之间的关系未必是树的结构&#xff0c;它们可能组成一个复杂的图形结构&#xff0c;即有回路。如果在前面的网站中每个网页都加一条Home的语句&#xff0c;让每个网页都能回到主界面&#xff0c;那么…...

《SQL基础》12. SQL优化

SQL优化SQL优化数据插入insert优化大批量插入数据主键优化order by优化group by优化limit优化count优化count用法update优化SQL优化 数据插入 insert优化 如果我们需要一次性往数据库表中插入多条记录&#xff0c;可以从以下三个方面进行优化。 批量插入手动控制事务主键顺…...

fork之后是子进程先执行还是父进程先执行

CFS(完全公平调度器)是Linux内核2.6.23版本开始采用的进程调度器&#xff0c;它的基本原理是这样的&#xff1a;设定一个调度周期(sched_latency_ns)&#xff0c;目标是让每个进程在这个周期内至少有机会运行一次&#xff0c;换一种说法就是每个进程等待CPU的时间最长不超过这个…...

2023年java初级面试题(5道)

一、两个对象值相同(x.equals(y) true)&#xff0c;但却可有不同的hash code&#xff0c;这句话对不对&#xff1f;答&#xff1a;不对&#xff0c;如果两个对象x和y满足x.equals(y) true&#xff0c;它们的哈希码&#xff08;hash code&#xff09;应当相同。Java对于eqauls…...

【内网安全】——Linux权限维持

作者名&#xff1a;白昼安全主页面链接&#xff1a; 主页传送门创作初心&#xff1a; 以后赚大钱座右铭&#xff1a; 不要让时代的悲哀成为你的悲哀专研方向&#xff1a; web安全&#xff0c;后渗透技术每日鸡汤&#xff1a; 钱至少对于现在的我来说&#xff0c;的确是万能的在…...

Linux 真实使用内存计算

获取Linux内存信息&#xff0c;可通过cat /proc/meminfo查看&#xff0c;比如&#xff0c;Ubuntu 20.04.5 LTS上会显示以下信息&#xff1a; leoyaDESKTOP-LMR:~$ cat /proc/meminfo MemTotal: 16017572 kB MemFree: 15637472 kB MemAvailable: 15533140 kB Bu…...

Unity Jobsystem ECS

简介随着ECS的加入&#xff0c;Unity基本上改变了软件开发方面的大部分方法。ECS的加入预示着OOP方法的结束。随着实体组件系统ECS的到来&#xff0c;我们在Unity开发中曾使用的大量实践方法都必须进行改变以适应ECS&#xff0c;也许不少人需要些时间适应ECS的使用&#xff0c;…...

Java中创建线程有哪几种方式

1.继承Thread类 总结&#xff1a;通过继承 Thread 类&#xff0c;重写 run() 方法&#xff0c;而不是 start() 方法 Thread 类底层实现 Runnable 接口类只能单继承 接口可以多继承2.实现Runnable接口 总结&#xff1a;通过实现 Runnable 接口,实现 run() 方法&#xff0c;依然…...

C++【string类用法详细介绍string类模拟实现解析】

文章目录string 类用法介绍及模拟实现一、string介绍二、string类常用接口1. string类对象的常见构造接口2.string类对象的常见容量接口3.string类对象的常见修改接口4. string类对象的常见访问及遍历接口5.string其他接口1.不常用查找接口2.字符替换3.字符串拼接4.字符串排序5…...

常见的开发模型和测试模型

软件的生命周期软件开发阶段的生命周期需求分析->计划->设计->编码->测试->运维软件测试阶段的生命周期需求分期->测试计划->测试设计与开发->执行测试->测试评估开发模型瀑布模型可以看到,这个模型和我们上面的软件开发生命周期很相似采用的是线性…...

wordpress主动提交百度/济南网络优化网站

今年9月10号华为开发者大会中&#xff0c;华为正式开源发布了鸿蒙os 2.0系统&#xff0c;鸿蒙终于开放给开发者&#xff0c;目前只能用来做指挥屏/手表/车机。华为手机版本的鸿蒙系统则要到今年的12月才提供。在9月10号我就去鸿蒙gitee上的开源代码库中参观&#xff0c;主要是看…...

建小网站多少钱/做seo推广一年大概的费用

国内it软件外包公司排行榜是怎么样的由于互联网技术的快速发展&#xff0c;特别是手机移动端的的普及&#xff0c;使得企业越来越需要开发自己自己的软件&#xff0c;但是软件开发人才缺口很大&#xff0c;企业没有这个技术实力去开发自己的软件&#xff0c;对于中小企业也不好…...

成品网站灬源码1688/友妙招链接

lds后缀的文件是一个linker script&#xff0c;是一个链接器脚本文件。它用来描述链接器要如何链接生成一个目标执行文件&#xff0c;一般我们在编译C语言程序时&#xff0c;都不会创建lds文件&#xff0c;那是因为libc中已经暗含了链接文件。如果我们编译一个汇编文件&#xf…...

淘宝做seo要建网站吗/大连中小企业网络营销

1.1 &#xff08;无效&#xff09;// 验证本地缓存的链接是否可以访问 // pathImg为链接 target为data中变量名的字符串getValidateImage (pathImg, target) {console.log(pathImg)var imgObj new Image()imgObj.src pathImgif ((imgObj.width > 0 && imgObj.hei…...

怎么做没有后台程序的网站/企业如何做网站

Collection&#xff1a;是集合的顶层接口&#xff0c;它的子体系有重复的&#xff0c;有唯一的&#xff0c;有有序的&#xff0c;有无序的。 Collection的功能概述&#xff1a; 1.添加功能&#xff1a;boolean add(Object obj):添加一个元素boolean addAll(Collection c):添加…...

北京响应式网站建设费用/高级搜索入口

旋转字符串 解法一&#xff1a;暴力移位法 初看此题&#xff0c;可能最先想到的方法是按照题目所要求的&#xff0c;把需要移动的字符一个一个地移动到字符串的尾部&#xff0c;如此我们可以实现一个函数LeftShiftOne(char* s, int n) &#xff0c;以完成移动一个字符到字符串…...