单片机的中断系统
作者简介
彭煜轩,男,银川科技学院计算机与人工智能学院,2022级计算机与科学技术8班本科生,单片机原理及应用课程第3组。
指导老师:王兴泽
电子邮件:1696409709@qq.com
前言
本篇文章是参考《单片机原理及应用(c语言版)第2版》杨居义·编著教材编写的笔记
由彭煜轩、马梅,李军,余文兵,杜国祥同学共同完成此篇文章,其中马梅同学负责新建项目内容,李军,余文兵负责新建源程序文件内容,杜国祥负责编译程序内容,彭煜轩负责
Proteus软件仿真内容
认识单片机的中断系统
中断的概念
CPU在执行程序的过程中,由于外界的原因,无法尽快终止CPU当前的程序执行,而去执行相应的处理程序,待处理结束后,在回来继续执行开始被终止的程序,这种陈旭在执行过程中由于外界的原因被中间打断的情况被称为“中断“。
中断的作用
可以实现CPU与外部设备的并行工作,提高CPU利用效率
可以实现CPU对外部事件的实时处理,进行实时控制
实现多项任务的实时切换
单片机的中断系统的基本组成
中断源:中断源是出发中断亲求的硬件或者软件事件,常见的中断源:外部中断:来自外部设备的信号(例如按键输入,外部传感器,外部硬件事件等),内部中断:来自单片机内部的事件,如定时器溢出,看门狗定时器溢出,串口接收数据等。
中断请求(IRQ):当中断源触发时,它会向单片机发出中断请求信号,要求暂停当前程序的执行并转去处理中断。
中断向量:每种终端源都有一种对应的中断向量号,指向该中断源的服务程序入口地址,中断向量通常保存自强中断向量表中。中断向量是一个指针表,每一个中断源有一个唯一的入口地址,处理器通过查找向量表来找到对应的服务程序。
中断控制寄存器:中断控制寄存器用于控制中断的启用、禁止、优先级等。它可以使得程序选择性地启用或禁用某些中断,设置中断的优先级,并且在发生中断时,确定是否触发中断响应。
中断服务程序(ISR, Interrupt Service Routine):每个中断源都对应一个中断服务程序。中断服务程序用于处理该中断源引发的事件,如读取外部数据、清除中断标志等。中断服务程序是由程序员预先编写的特定代码,通常会执行一系列操作来处理中断事件。
80C51 中断系统具有五个中断源,它们是:
外部中断 0(INT0):该中断源是通过外部引脚 P3.2 触发的,可以由外部信号(如按键、传感器等)触发。外部中断 0 可以响应低电平触发或下降沿触发,具体取决于相应控制寄存器(如 TCON)的配置。
外部中断 1(INT1):该中断源是通过外部引脚 P3.3 触发的,类似于外部中断 0。外部中断 1 也可以响应低电平触发或下降沿触发,具体同样由控制寄存器(如 TCON)决定。
定时器 0 中断(Timer0):该中断源是由定时器 0(T0)溢出引发的。定时器 0 工作在定时器或计数器模式下,当定时器溢出时,会触发该中断。它常用于周期性任务的执行。
定时器 1 中断(Timer1):该中断源是由定时器 1(T1)溢出引发的。定时器 1 也有类似定时器 0 的功能,通常用于更复杂的时间控制或计数任务。
串行通信中断(Serial Interrupt):该中断源是由串行通信的接收或发送事件触发的。当串行接收到数据或完成发送时,会触发串行中断。这个中断通常用于串行数据通信的处理。
80C51 中断系统具有两个优先级,它们是:高优先级和低优先级。
这两个优先级通过中断优先级控制寄存器 IP 和 IE(中断使能寄存器)进行设置和管理。
高优先级(High Priority)
高优先级的中断源会在低优先级的中断源未响应时被立即响应。即使低优先级中断正在处理中,高优先级中断会抢占并立即处理中断请求。高优先级的中断包括外部中断 0、定时器 0 中断、外部中断 1 和定时器 1 中断。
低优先级(Low Priority)
低优先级的中断会在高优先级中断未处理完之前被挂起,直到高优先级中断处理完毕才会响应低优先级中断。串行通信中断(Serial Interrupt)通常是一个低优先级的中断。
80C51 中断系统具有四个寄存器,它们是:
TCON(定时器控制寄存器)
TCON 寄存器控制定时器和外部中断的启动、停止及相关状态。它包含了溢出标志位、启动控制位和外部中断触发方式等。
TCON 的位说明:
TF0:定时器 0 溢出标志位
TF1:定时器 1 溢出标志位
TR0:定时器 0 启动控制位
TR1:定时器 1 启动控制位
IE0:外部中断 0 标志位
IE1:外部中断 1 标志位
IT0:外部中断 0 触发方式
IT1:外部中断 1 触发方式
SCON(串行控制寄存器)
SCON 是 80C51 单片机用于控制串行通信的寄存器。它包含了控制串行通信的相关配置位,包括波特率、数据格式、启用串行口等功能。
SCON 的位说明:
TI(发送中断标志):该位为 1 时,表示串行口发送完成,可以准备下一次发送。如果该位为 0,则表示串行口正在发送数据。
RI(接收中断标志):该位为 1 时,表示串行口接收到数据,可以读取接收到的字符。如果该位为 0,则表示串行口未接收到数据。
80C51 中断系统具有四个寄存器,它们是:
IE(中断使能寄存器)
该寄存器用于控制各个中断源的使能状态。通过设置相应的位,可以启用或禁用外部中断、定时器中断、串行中断等。
IE 的位说明:
EA:全局中断使能位(1 为启用所有中断,0 为禁用所有中断)
ES:串行通信中断使能
ET1:定时器 1 中断使能
EX1:外部中断 1 使能
ET0:定时器 0 中断使能
EX0:外部中断 0 使能
IP(中断优先级寄存器)
该寄存器用于设置中断源的优先级。80C51 单片机具有两级中断优先级,可以通过此寄存器设定哪些中断为高优先级,哪些为低优先级。
IP 的位说明:
IP0:外部中断 0 优先级
IP1:定时器 0 中断优先级
IP2:外部中断 1 优先级
IP3:定时器 1 中断优先级
IP4:串行通信中断优先级
实践案例
使用定时器T1中断方式控制P3口的8位LED灯闪烁
任务描述:使用定时器/计数器T1工作于方式1,采用中断方式控制P3口LED的闪烁,闪烁周期为100ms即亮50sm,熄灭50ms
电路图如下所示
代码图如下所示:
效果图如下所示:
TCON— 定时器 / 计数器控制寄存器
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
D7到D4为定时器
IT1 / IT0:外中断 1/0 触发方式控制位。当 ITi = 0 时,外部中断 1/0 为电平触发方式。当 ITi = 1 时,外部中断 1/0 为脉冲触发方式。
IE1 / IE0:外部中断 1/0 标志。I Ei = 1,外部中断 1/0 向 CPU 申请中断。
SCON— 串行口控制寄存器
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
D7到D2为通信
TI:串行发送中断标志 CPU 将数据写入发送缓冲器 SBUF 时,就启动发送,每发送完一个串行帧,硬件将使 TI 置位。
RI:串行接收中断标志 在串行口允许接收时,每接收完一个串行帧,硬件将使 RI 置位。
80C51 中断入口地址分配
MCS-51 单片机中断源的自然优先级、入口地址及中断编号
中断源 | 自然优先级 | 中断入口地址 | C51 编译器对中断的编号 |
外部中断 0 | 高 | 0003H | 0 |
定时器 T0 溢出中断 | 000BH | 1 | |
外部中断 1 | 0013H | 2 | |
定时器 T1 溢出中断 | 001BH | 3 | |
串行通信中断 RI 或 TI | 低 | 0023H | 4 |
C 语言编写中断服务函数的格式如下:
函数类型 函数名 (形式参数列表) [interrupt n] [using m]
其中,interrupt 后面的 n 是中断编号,取值为 0~4;using 中的 m 表示使用的工作寄存器组号(如不声明,则默认用第 0 组)。
例如,定时器 T0 的中断服务函数可以用如下方法编写:
Void Time0 (Void) interrupt 1 using 0
// 定时器 T0 的中断服务函数,T0 的中断编号为 1,使用
第 0 组工作寄存器
{
…… // 中断服务程序
}
80C51 外部中断扩展
单片机仅有两个外部中断输入端。
可用两种方法扩展:
定时器 T0、T1。(工作在计数方式下)
中断和查询结合。
用定时器作外部中断源
例:将定时器 T0 扩展为外部中断源。
解:将定时器 T0 设定为方式 2(自动恢复计数初值),
TH0 和 TF0 的初值均设置为 FFH,允许 T0 中断,CPU 开放中断,
源程序如下:
TMOD=0x06;
TH0=0xff;
TL0=0xff;
TR0=1;
ET0=1;
EA=1;
...
T0 引脚每输入一个负跳变,TF0 都会置 1,向 CPU 请求中断,T0 引脚相当于边沿触发的外部中断源输入线。
中断和查询相结合
图:一个外中断扩展城多个外中断的原理图
Void int_1 () interrupt 2 // 外部中断 1 中断类型号为 2
{
unsigned char i;
P1 = 0xff; // 读 P1 口引脚前先全部置 1
i = P1; // 在 P1 口引脚状态读入变量 i
i &= 0x0f; // 采用与操作屏蔽掉 i 的高 4 位
Switch (i)
}
{
case 0x01: exint0(); break; /调用函数 exint0 (),EXINTT0 中断服务,此处省略/
case 0x02: exint1(); break; /调用函数 exint1 (),EXINTT1 中断服务,此处省略/
case 0x04: exint2(); break; /调用函数 exint2 (),EXINTT2 中断服务,此处省略/
case 0x08: exint3(); break; /调用函数 exint3 (),EXINTT3 中断服务,此处省略/
Default: break;
}
中断系统的应用
中断系统的初始化实质上是针对 4 个与中断有关的特殊功能寄存器 TCON、SCON、IE 和 IP 进行控制和管理,具体步骤如下所示。
(1) 开 CPU 中断总开关(EA)。
(2) 设置中断允许寄存器 IE 中相应的位,确定各个中断源是否允许中断。
(3) 对多级中断设置中断优先级寄存器 IP 中相应的位,确定各中断源的优先级别。
(4) 设置定时器控制寄存器 TCON 中相应的位,确定外部中断是边沿触发还是电平触发的触发方式。
实践案例
用外中断控制 P2 口 8 个 LED 亮灭
任务描述: P3.3 引脚(/INT1)上接按键 S,使用外中断控制 P2 口 8 个 LED 亮灭。当第一次按下按键 S 时,P2 口 8 位 LED 就亮,再次按下 S 按键,P2 口 8 个 LED 就灭,如此循环,就可看见 LED 灯亮灭两种状态,
电路图如图所示。
代码如图所示
相关文章:
单片机的中断系统
作者简介 彭煜轩,男,银川科技学院计算机与人工智能学院,2022级计算机与科学技术8班本科生,单片机原理及应用课程第3组。 指导老师:王兴泽 电子邮件:1696409709qq.com 前言 本篇文章是参考《单片机原理…...
Java基础面向对象(接口高级)
高版本的接口 JDK8.0 普通的公开非抽象方法(默认方法) [public] default 返回值类型 方法名(形参列表){//操作语句 } default: 在此位置身份为非抽象标识 接口中的非抽象方法实现类不需要进行重写且通常不会进行重写 当父类与接口的方法体出现冲突时, 优先执行父类内容 (类优…...
OpenCV圆形标定板检测算法findCirclesGrid原理详解
OpenCV的findCirclesGrid函数检测圆形标定板的流程如下: findCirclesGrid函数源码: //_image,输入图像 //patternSize,pattern的宽高 //_centers,blobs中心点的位置 //flags,pattern是否对称 //blobDetector,这里使用的是SimpleBlobDetector bool cv::findCirclesGrid(…...
Linux 网卡收包流程如下
Linux 网卡收包流程如下 网卡收到数据包将数据包从网卡硬件缓存移动到服务器内存中(DMA方式,不经过CPU)通过硬中断通知CPU处理CPU通过软中断通知内核处理经过TCP/IP协议栈处理应用程序通过read()从socket buffer读取数据 网卡丢包 我们先看下ifconfig的输出&#…...
普中51单片机——LED流水灯模块
1、GPIO概念 GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。51 单片机芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、 控制以及数据采集的功能。 1.1、GPIO分类 &a…...
Linux 各个目录作用
刚毕业的时候学习Linux基础知识,发现了一份特别好的文档快乐的 Linux 命令行,翻译者是happypeter,作者当年也在慕课录制了react等前端相关的视频,通俗易懂,十分推荐 关于Linux的目录,多数博客已有详细介绍…...
【包教包会】CocosCreator3.x——重写Sprite,圆角、3D翻转、纹理循环、可合批调色板、不影响子节点的位移旋转缩放透明度
一、效果演示 重写Sprite组件,做了以下优化: 1、新增自变换,在不影响子节点的前提下位移、旋转、缩放、改变透明度 新增可合批调色板,支持色相、明暗调节 新增圆角矩形、3D透视旋转、纹理循环 所有功能均支持合批、原生平台&…...
腾讯阅文集团Java后端开发面试题及参考答案
Java 的基本数据类型有哪些?Byte 的数值范围是多少? Java 的基本数据类型共有 8 种,可分为 4 类: 整数类型:包括 byte、short、int 和 long。byte 占 1 个字节,其数值范围是 - 128 到 127,用于表示较小范围的整数,节省内存空间,在处理一些底层的字节流数据或对内存要求…...
Kafka如何保证消息可靠?
大家好,我是锋哥。今天分享关于【Kafka如何保证消息可靠?】面试题。希望对大家有帮助; Kafka如何保证消息可靠? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka通过多种机制来确保消息的可靠性,主要包…...
【layui】tabs 控件内通过 iframe 加载url 方式渲染tab页面
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>tabs 内部使用 iframe 嵌套 url 页面</title><link rel"stylesheet" href"../../../libs/layui/layui-2.4.5/dist/css/layui.css"><scr…...
EtherCAT转DeviceNe台达MH2与欧姆龙CJ1W-DRM21通讯案例
一.案例背景 台达MH2设备通常采用EtherCAT通信协议,这种协议在高速实时通信方面表现出色,适合设备之间的快速数据交换和精准控制。而欧姆龙CJ1W-DRM21 模块基于DeviceNet通信协议,DeviceNet在工业现场总线领域应用广泛,侧重于设备…...
清华、智谱团队:「6000亿合成交错语音文本」预训练,问答性能提升近3倍
与基于文本的大语言模型(LLM)相比,语音语言模型(SpeechLM)接受语音输入并生成语音输出,能够实现更自然的人机交互。然而,传统的 SpeechLM 因缺乏无监督语音数据和并行语音-文本数据,…...
Python办公——openpyxl处理Excel每个sheet每行 修改为软雅黑9号剧中+边框线
目录 专栏导读背景1、库的介绍①:openpyxl 2、库的安装3、核心代码4、完整代码5、最快的方法(50万行44秒)——表头其余单元格都修改样式总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️…...
遇到问题:hive中的数据库和sparksql 操作的数据库不是同一个。
遇到的问题: 1、hive中的数据库和sparksql 操作的数据库不同步。 观察上面的数据库看是否同步 !!! 2、查询服务器中MySQL中hive的数据库,发现创建的位置没有在hdfs上,而是在本地。 这个错误产生的原因是&…...
《网络攻防实践》实践五报告
1.实践内容 防火墙 (1)基本概念 所谓“防火墙”是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种建立在现代通信网络技术和信息安全技术基础上的应用性安全技术,隔离技术。越来…...
深入傅里叶级数与傅里叶变换:从基础到应用
傅里叶分析是数学、物理和工程领域的一项基础工具,其核心思想是将复杂的信号或函数分解为一系列简单的正弦和余弦函数的叠加。本文将带你从傅里叶级数入门,逐步深入傅里叶变换的概念及其应用场景。 一、傅里叶级数:周期信号的分解 1. 什么是傅…...
C++入门一
一、命名空间 #include <stdio.h> int rand 0; int main() {printf("hello world\n");printf("%d\n", rand); } 这样是可以运行的,可是当我们加入一个头文件的时候 #include <stdio.h> #include <stdlib.h> int rand 0;…...
Spring Boot 项目集成camunda流程引擎
Spring Boot 项目集成camunda流程引擎 camunda地址 camunda中文地址 使用camunda开源工作流引擎有:通过docker运行、使用springboot集成、部署camunda发行包、基于源代码编译运行等多种方式。 文本重点介绍如何在Spring Boot应用程序中如何集成Camunda Platform开…...
Ubuntu20.04编译安装Carla全过程
前言 Carla的安装是我现阶段解决的第一个问题,现记录一下我安装Carla的过程以及我在安装过程中遇到的一些问题。 一、安装前准备 1、硬件环境 carla是一款基于UE4开发的模拟仿真软件,本身对硬件的要求比较高。 我是windows与ubuntu双系统࿰…...
typecho 自动订阅 RSS
昨天学习了一下 RSS 订阅知识之后,经过一番百度搜索,终于在自己的博客上实现了 RSS 订阅功能,但苦于技术有限,不能对 Feed 文件进行定时缓存,每次打开链接都会比较延迟。今天继续对这个功能进行了学习,突然…...
MFC图形函数学习13——在图形界面输出文字
本篇是图形函数学习的最后一篇,相关内容暂告一段落。 在图形界面输出文字,涉及文字字体、大小、颜色、背景、显示等问题,完成这些需要系列函数的支持。下面做简要介绍。 一、输出文本函数 原型:virtual BOOL te…...
11.25.2024刷华为OD
文章目录 HJ76 尼科彻斯定理(观察题,不难)HJ77 火车进站(DFS)HJ91 走格子方法,(动态规划,递归,有代表性)HJ93 数组分组(递归)语法知识…...
Python练习55
Python日常练习 题目: 补充函数getLastDay(y,m),其功能是计算y年m月共有多少天。 --------------------------------------------------------- 注意: 部分源程序给出如下。请勿改动主函数main和其它函数中的 任何内容,…...
DDR5和DDR4之区别(The Difference between DDR5 and DDR4)
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 DDR是什么意思? DDR5和D…...
分层架构 IM 系统之 Router 架构分析
通过前面文章的分析,我们已经明确,Router 的核心职责是作为中央存储记录在线客户端的连接状态,Router 在本质上是一个内存数据库。 内存是一种易失性的存储,既如此,Router 的可用性如何保障呢? 副本是分布…...
用函数实现模块化程序设计(七)--数组作为函数参数(排序算法)
调用有参函数时,需要实参,实参可以是常量,变量,表达式,数组元素的作用与变量相当,凡是变量出现的地方都可用数组代替,数组元素可以用作函数实参,数组名可以作实参和形参,…...
M31系列LoRa分布式IO模块功能简介
M31系列LoRa 分布式 IO 模块简介 M31系列LoRa分布式IO主机模块是一款强大的无线远程控制与采集设备,该设备采用 LoRa 无线技术(内置了无线模块),可通过串口或远程 LoRa 组网设备发送 Modbus RTU 指令进行控制,可搭配E…...
Dockerfile 安装echarts插件给java提供服务
java调用echarts插件,生成图片保存到磁盘然后插入到pptx中报表。 Dockerfile文件内容: #基础镜像,如果本地仓库没有,会从远程仓库拉取 openjdk:8 FROM docker.io/centos:centos7 #暴露端口 EXPOSE 9311 # 避免centos 日志输出 …...
学习threejs,使用VideoTexture实现视频Video更新纹理
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️VideoTexture 视频纹理 二、…...
【二分查找】Leetcode例题
【1】69. x 的平方根 - 力扣(LeetCode) 🍡解题思路:首先想到的是暴力查找,从1开始依次比较x与num*num的大小,然后找出满足num*num<x且(num1)*(num1)>x的num值;再来看看能不能优化一下&…...
稳定运行的以MySQL数据库为数据源和目标的ETL性能变差时提高性能方法和步骤
在ETL(Extract, Transform, Load)过程中,数据源和目标都为MySQL数据库时,性能变差可能由多种原因引起。提高以MySQL为数据源和目标的ETL性能需要综合考虑数据库性能、ETL任务的处理方式、硬件资源和工具的选择。通过批量处理、并行…...
Springboot(四十九)SpringBoot3整合jetcache缓存
上文中我们学习了springboot中缓存的基本使用。缓存分为本地caffeine缓存和远程redis缓存。现在有一个小小的问题,我想使用本地caffeine缓存和远程redis缓存组成二级缓存。还想保证他们的一致性,这个事情该怎么办呢? Jetcache框架为我们解决了这个问题。 JetCache是一个…...
JVM 参数前缀 -XX: 含义 详解
在 Java 虚拟机(JVM)中,参数前缀 -XX: 表示的是 JVM 的非标准(实验性)选项。这些参数用于调整和优化 JVM 的性能、垃圾回收行为、内存分配策略等。 1. 参数分类 -XX: 参数大致分为三类,根据其格式区分&…...
【Mac】安装Gradle
1、说明 Gradle 运行依赖 JVM,需要先安装JDK,Gradle 与 JDK的版本对应参见:Java Compatibility IDEA的版本也是有要求Gradle版本的,二者版本对应关系参见:Third-Party Software and Licenses 本次 Gradle 安装版本为…...
证明切平面过定点的曲面是锥面
目录 证明:切平面过定点的曲面是锥面. 证明:切平面过定点的曲面是锥面. 证明: 方法一: 设曲面 S : r r ( u , v ) S:\mathbf{r}\mathbf{r}(u,v) S:rr(u,v)的切平面过定点 P 0 P_0 P0,其位置向量为 p 0 . \mathbf{p}_0. p0…...
【WPS】【EXCEL】将单元格中字符按照分隔符拆分按行填充到其他单元格
问题:实现如下图的效果 解答: 一、函数 IFERROR(TRIM(MID(SUBSTITUTE($A$2,",",REPT(" ",LEN($A$2))),(ROW(A1)-1)*LEN($A$2)1,LEN($A$2))),"") 二、在单元格C2中填写如下函数 三、全选要填充的单元格并且按CTRLD 函数…...
工作:三菱PLC防止程序存储器爆满方法
工作:三菱PLC防止程序存储器爆满方法 一、防止程序存储器爆满方法1、编程时,添加行注释时,记得要选“外围”,这样不会占用PLC程序存储器内存;2、选择“外围”的注释,前面会有个*星号,方便检查 二…...
【计算机组成原理】1位预测机制与2位预测机制详解
1位预测机制与2位预测机制详解 在计算机体系结构中,分支预测是为了提高流水线效率而对分支指令执行结果进行预测的技术。1位预测机制和2位预测机制是两种常见的分支预测策略,它们通过预测分支是否发生来决定是否跳转。 一、1位预测机制 1位预测机制是…...
基于SpringBoot+Vue的靓车汽车销售网站-无偿分享 (附源码+LW+调试)
目录 1. 项目技术 2. 功能菜单 3. 部分功能截图 4. 研究背景 5. 研究目的 6. 可行性分析 6.1 技术可行性 6.2 经济可行性 6.3 操作可行性 7. 系统设计 7.1 概述 7.2 系统流程和逻辑 7.3 系统结构 8. 数据库设计 8.1 数据库ER图 (1)材料分…...
ESP32-S3模组上跑通ES8388(13)
接前一篇文章:ESP32-S3模组上跑通ES8388(12) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回解析了es8388_init函数中的第6段代码,本回继续往下解析。为了便于理解和回顾,再次贴出es8388_init函数源码,在…...
洛谷 P1651 塔(DP)
题目传送门https://www.luogu.com.cn/problem/P1651 解题思路 设 表示前 个积木,两塔高度差为 (第一个比第二个高多少),的最大高度。 易得: 首先,不选当前的积木: 其次,选当前…...
去哪儿Java开发面试题及参考答案
怎么设置缓存能更快让用户收到数据? 要设置缓存以更快让用户收到数据,可从以下几方面着手。首先,选择合适的缓存位置很关键。将缓存放置在离用户近的地方,如 CDN 缓存,能极大缩短数据传输距离与时间。对于动态内容,可在应用服务器本地设置内存缓存,像使用 Ehcache 等库,…...
DDOS分布式拒绝服务攻击
DDOS分布式拒绝服务攻击 简单来说 传统的DOS就是一台或者多台服务对一个受害目标(服务器,路由,ip,国家)进行攻击,当范围过大时就是DDOS。目的就是通过大规模的网络流量使得正常流量不能访问受害目标&…...
AI后端工程师面试题的内容
AI后端工程师面试题主要包括以下几个方面的内容: 一、技术基础和项目经验: 1. 微服务架构的理解和应用:请描述你对微服务架构的理解,并举例说明一个你参与过的微服务项目,阐述你在该项目中扮演的角色和所承…...
使用go语言写一个脚本 实现WebSockt连接 用户发送a 得到返回b
在Go语言中实现一个简单的WebSocket服务器,该服务器能够接收客户端发送的“a”并返回“b”,可以按照以下步骤进行。首先,确保你的环境中已经安装了Go语言环境。接下来,你需要安装一个WebSocket库来处理WebSocket连接。这里我们使用…...
浏览器中输入一个URL后,按下回车后发生了什么
URL ,统一资源定位符, 简单点就是网址 ip 或域名 端口号 资源位置 参数 锚点 大致流程 URL 解析DNS 查询TCP 连接处理请求接受响应渲染页面 1 .输入一个网址之后,首先浏览器通过查询 DNS ,查找这个 URL 的 IP …...
ISO26262-(Timing Monitoring)在多核MCU的TPU上功能安全ASILB与ASILD有什么区别
在多核微控制器(MCU)的时间保护方面,针对功能安全ASIL B与ASILD等级的设计和实施存在显著差异,这些差异主要体现在系统对时间关键性操作的保障程度、故障检测能力、以及系统响应的严格性上。 ASIL B 级别: 时间关键性:在ASIL B等级,系统设计注重于识别并处理大部分可能…...
【大数据学习 | 面经】Spark 3.x 中的AQE(自适应查询执行)
Spark 3.x 中的自适应查询执行(Adaptive Query Execution,简称 AQE)通过多种方式提升性能,主要包括以下几个方面: 动态合并 Shuffle 分区(Coalescing Post Shuffle Partitions): 当 …...
mdcsoft服务器网络安全解决方案-SQL注入解决
mdcsoft服务器网络安全解决方案 最近几周,很多站被SQL注入攻击频繁,很多服务器被入侵,网站被攻击,为解决以上问题,我们开发了 以下系列软件及制定了系列解决方案.追究原因,全部都是认为引起的,由…...
防火墙之自定义链
自定义链的概念 自定义链(Custom Chain)通常是指在计算机网络中,根据特定需求创建的自定义规则链。这些规则链可以用于处理网络数据包,例如防火墙规则、路由规则等。自定义链的主要目的是为了提高网络管理的灵活性和可定制性。 …...