[嵌入式系统-37]:龙芯1B 开发学习套件 -6-协处理器CP0之CPU异常处理与外部中断控制器的中断处理
目录
一、CP0概述
1.1 CP0概述
1.2 龙芯异常exception与中断interrupt的区别
二、CPU协处理器的异常处理
三、外部中断与外部中断控制器
3.1 外部中断源
3.2 如何配置外部中断源
3.3 外部中断的中断向量表
3.2.1 软件中断向量表结构定义:ls1b_irq.c
3.2.2 软件中断向量表定义:ls1b_irq.c和ls1b_irq.h
3.3.3 默认的中断处理或中断服务程序:ls1b_irq.c
3.3.4 中断向量表的初始化
3.3.5 安装用户自定义的中断服务程序的安装与移除
一、CP0概述
1.1 CP0概述
龙芯1B协处理器CP0(Coprocessor 0)是龙芯处理器(Loongson)中的一个重要组成部分,主要用于管理处理器的系统级行为和状态信息。CP0是一个与主处理器CPU紧密集成的协处理器,它的功能主要有以下几个方面:
-
地址转换和虚拟存储管理MMU:CP0可以实现物理地址的解析和转换,支持虚拟存储管理,使得应用程序可以像访问物理内存一样方便地访问虚拟内存区域。
-
异常和中断处理(本文要深入讨论的部分):CP0是处理器内部异常exception和外部中断Interrupt处理的核心,它存储了异常和中断向量表、错误状态码等信息,并负责中断的响应和异常处理程序的执行。
-
性能计数器和性能分析:CP0中还包括可编程的性能计数器和时钟戳记寄存器,可以用于对程序的性能分析和调优,并支持操作系统的性能监控功能。
-
系统控制寄存器:CP0中还包含了一些系统级别的控制寄存器,可以用于修改处理器的运行状态,如设置缓存策略、开/关写缓冲等。
总之,龙芯1B协处理器CP0是Loongson处理器的重要组成部分,它管理和控制处理器中的系统级行为和状态信息,为操作系统和应用程序提供了重要的支持和保障。
1.2 龙芯异常exception与中断interrupt的区别
龙芯处理器中的异常(exception)和中断(interrupt)在概念上是有区别的,它们分别代表了不同类型的事件和处理机制:
-
异常(Exception):异常是指在程序执行过程中出现的一种非正常事件,通常是由指令执行时产生的,可以看作是处理器内部的问题。异常可以是因为错误的操作码、内存访问冲突、算术错误等原因导致的,需要处理器暂停当前指令的执行并执行相应的异常处理程序。异常通常由处理器本身或者处理器内部逻辑主动触发,它跳转到异常处理程序,处理完异常后再恢复到正常指令流程。
-
中断(Interrupt):中断是指来自外部设备的一种请求,要求处理器暂停当前正在执行的程序,转而执行与中断相关的处理程序。中断是处理器响应外部事件的一种方式,可以是来自设备的信号或者时钟,需要处理器打断当前执行的指令流程,执行相应的中断服务程序,处理完中断后再返回到被中断的程序继续执行。
在龙芯处理器中,异常和中断的区别在于触发原因和处理方式上:异常通常是由指令执行过程中的内部错误或意外情况引发,需要处理器内部去处理;而中断是由外部事件触发,需要处理器响应外部设备的请求。处理器在接收到异常或中断信号后,会根据具体情况执行相应的处理程序,保证系统的稳定运行和正确性。
二、CPU协处理器的异常处理
三、外部中断与外部中断控制器
3.1 外部中断源
龙芯1B SOC芯片内置简单、灵活的中断控制器。
1B芯片的中断控制器除了管理 GPIO输入的中断信号外,中断控制器还处理内部设备引起的中断。所有的中断寄存器的位域安排相同,一个中断源对应其中一位。
SOC的中断控制器共四个中断线输出连接到CPU模块,分别对应 INT0, INT1, INT2, INT3。
SOC芯片中断控制器本身能够支持 64个内部中断和 64个 GPIO的中断,最大一共128个硬件外部中断源,这128个中断源分为四组,每组最大支持32个中断源,分别归组为:INT0, INT1, INT2, INT3。
其中 INT0和 INT1分别对应于 64个内部中断的前后 32位,INT2和 INT3对应于 64个外部 GPIO中断。但龙芯1B的实现过程中,并非所有的中断源都被使用,部分中断源是保留未使用,
具体中断源如下表所示:
从上图可以看出:
(1)GPIO31、GPIO62、GPIO63都未使用,属于保留位,因此一个64-3=61个GPIO中断源。
(2)并非所有的INT0和INT1的外设中断都被使用上,实际上,龙芯1B SOC芯片,并没有那么多外设,因此,大量的位都是闲置的,属于保留为,未定义其行为。
3.2 如何配置外部中断源
3.3 外部中断的中断向量表
3.2.1 软件中断向量表结构定义:ls1b_irq.c
/* 中断向量表 */
typedef struct isr_tbl
{void (*handler)(int, void *); // 中断句柄unsigned int arg; // 参数
} isr_tbl_t;
3.2.2 软件中断向量表定义:ls1b_irq.c和ls1b_irq.h
定义龙芯1B实际支持的中断源(去除保留位)
/******************************************************************************
* Interrupt Vector Numbers
* MIPS_INTERRUPT_BASE should be 32 (0x20)
******************************************************************************/
/*
* CP0 Cause ($12) IP bit(15:8)=IP[7:0],
* IP[1:0] is soft-interrupt
* Status($13) IM bit(15:8) if mask interrupts
*
*/
#define LS1B_IRQ_SW0 (MIPS_INTERRUPT_BASE + 0) # 协处理器的软中断
#define LS1B_IRQ_SW1 (MIPS_INTERRUPT_BASE + 1) # 协处理器的软中断
#define LS1B_IRQ0_REQ (MIPS_INTERRUPT_BASE + 2) # 协处理器的中断请求0
#define LS1B_IRQ1_REQ (MIPS_INTERRUPT_BASE + 3) # 协处理器的中断请求1
#define LS1B_IRQ2_REQ (MIPS_INTERRUPT_BASE + 4) # 协处理器的中断请求2
#define LS1B_IRQ3_REQ (MIPS_INTERRUPT_BASE + 5) # 协处理器的中断请求3
#define LS1B_IRQ_PERF (MIPS_INTERRUPT_BASE + 6) # 协处理器的性能统计中断
#define LS1B_IRQ_CNT (MIPS_INTERRUPT_BASE + 7) # 协处理器的计数或tick中断,操作系统调度使用
/*
* Interrupt Control 0 Interrupts: 中断控制器0支持的外设中断数量:29个
*/
#define LS1B_IRQ0_BASE (MIPS_INTERRUPT_BASE + 8)
#define LS1B_UART0_IRQ (LS1B_IRQ0_BASE + 2)
#define LS1B_UART1_IRQ (LS1B_IRQ0_BASE + 3)
#define LS1B_UART2_IRQ (LS1B_IRQ0_BASE + 4)
#define LS1B_UART3_IRQ (LS1B_IRQ0_BASE + 5)
#define LS1B_CAN0_IRQ (LS1B_IRQ0_BASE + 6)
#define LS1B_CAN1_IRQ (LS1B_IRQ0_BASE + 7)
#define LS1B_SPI0_IRQ (LS1B_IRQ0_BASE + 8)
#define LS1B_SPI1_IRQ (LS1B_IRQ0_BASE + 9)
#define LS1B_AC97_IRQ (LS1B_IRQ0_BASE + 10)
#define LS1B_DMA0_IRQ (LS1B_IRQ0_BASE + 13)
#define LS1B_DMA1_IRQ (LS1B_IRQ0_BASE + 14)
#define LS1B_DMA2_IRQ (LS1B_IRQ0_BASE + 15)
#define LS1B_PWM0_IRQ (LS1B_IRQ0_BASE + 17)
#define LS1B_PWM1_IRQ (LS1B_IRQ0_BASE + 18)
#define LS1B_PWM2_IRQ (LS1B_IRQ0_BASE + 19)
#define LS1B_PWM3_IRQ (LS1B_IRQ0_BASE + 20)
#define LS1B_RTC0_IRQ (LS1B_IRQ0_BASE + 21)
#define LS1B_RTC1_IRQ (LS1B_IRQ0_BASE + 22)
#define LS1B_RTC2_IRQ (LS1B_IRQ0_BASE + 23)
#define LS1B_TOY0_IRQ (LS1B_IRQ0_BASE + 24)
#define LS1B_TOY1_IRQ (LS1B_IRQ0_BASE + 25)
#define LS1B_TOY2_IRQ (LS1B_IRQ0_BASE + 26)
#define LS1B_RTC_IRQ (LS1B_IRQ0_BASE + 27)
#define LS1B_TOY_IRQ (LS1B_IRQ0_BASE + 28)
#define LS1B_UART4_IRQ (LS1B_IRQ0_BASE + 29)
#define LS1B_UART5_IRQ (LS1B_IRQ0_BASE + 30)
/*
* Interrupt Control 1 interrupts:中断控制器1支持的外设中断:4个
*/
#define LS1B_IRQ1_BASE (MIPS_INTERRUPT_BASE + 40)
#define LS1B_EHCI_IRQ (LS1B_IRQ1_BASE + 0)
#define LS1B_OHCI_IRQ (LS1B_IRQ1_BASE + 1)
#define LS1B_GMAC0_IRQ (LS1B_IRQ1_BASE + 2)
#define LS1B_GMAC1_IRQ (LS1B_IRQ1_BASE + 3)
/*
* Interrupt Control 2 interrupts (GPIO):中断控制器2支持的GPIO中断数:31个
*/
#define LS1B_IRQ2_BASE (MIPS_INTERRUPT_BASE + 72)
#define LS1B_GPIO0_IRQ (LS1B_IRQ2_BASE + 0)
#define LS1B_GPIO1_IRQ (LS1B_IRQ2_BASE + 1)
#define LS1B_GPIO2_IRQ (LS1B_IRQ2_BASE + 2)
#define LS1B_GPIO3_IRQ (LS1B_IRQ2_BASE + 3)
#define LS1B_GPIO4_IRQ (LS1B_IRQ2_BASE + 4)
#define LS1B_GPIO5_IRQ (LS1B_IRQ2_BASE + 5)
#define LS1B_GPIO6_IRQ (LS1B_IRQ2_BASE + 6)
#define LS1B_GPIO7_IRQ (LS1B_IRQ2_BASE + 7)
#define LS1B_GPIO8_IRQ (LS1B_IRQ2_BASE + 8)
#define LS1B_GPIO9_IRQ (LS1B_IRQ2_BASE + 9)
#define LS1B_GPIO10_IRQ (LS1B_IRQ2_BASE + 10)
#define LS1B_GPIO11_IRQ (LS1B_IRQ2_BASE + 11)
#define LS1B_GPIO12_IRQ (LS1B_IRQ2_BASE + 12)
#define LS1B_GPIO13_IRQ (LS1B_IRQ2_BASE + 13)
#define LS1B_GPIO14_IRQ (LS1B_IRQ2_BASE + 14)
#define LS1B_GPIO15_IRQ (LS1B_IRQ2_BASE + 15)
#define LS1B_GPIO16_IRQ (LS1B_IRQ2_BASE + 16)
#define LS1B_GPIO17_IRQ (LS1B_IRQ2_BASE + 17)
#define LS1B_GPIO18_IRQ (LS1B_IRQ2_BASE + 18)
#define LS1B_GPIO19_IRQ (LS1B_IRQ2_BASE + 19)
#define LS1B_GPIO20_IRQ (LS1B_IRQ2_BASE + 20)
#define LS1B_GPIO21_IRQ (LS1B_IRQ2_BASE + 21)
#define LS1B_GPIO22_IRQ (LS1B_IRQ2_BASE + 22)
#define LS1B_GPIO23_IRQ (LS1B_IRQ2_BASE + 23)
#define LS1B_GPIO24_IRQ (LS1B_IRQ2_BASE + 24)
#define LS1B_GPIO25_IRQ (LS1B_IRQ2_BASE + 25)
#define LS1B_GPIO26_IRQ (LS1B_IRQ2_BASE + 26)
#define LS1B_GPIO27_IRQ (LS1B_IRQ2_BASE + 27)
#define LS1B_GPIO28_IRQ (LS1B_IRQ2_BASE + 28)
#define LS1B_GPIO29_IRQ (LS1B_IRQ2_BASE + 29)
#define LS1B_GPIO30_IRQ (LS1B_IRQ2_BASE + 30)
/*
* Interrupt Control 3 source bit (GPIO):中断控制器3支持的GPIO中断数:30个。
*/
#define LS1B_IRQ3_BASE (MIPS_INTERRUPT_BASE + 104)
#define LS1B_GPIO32_IRQ (LS1B_IRQ3_BASE + 0)
#define LS1B_GPIO33_IRQ (LS1B_IRQ3_BASE + 1)
#define LS1B_GPIO34_IRQ (LS1B_IRQ3_BASE + 2)
#define LS1B_GPIO35_IRQ (LS1B_IRQ3_BASE + 3)
#define LS1B_GPIO36_IRQ (LS1B_IRQ3_BASE + 4)
#define LS1B_GPIO37_IRQ (LS1B_IRQ3_BASE + 5)
#define LS1B_GPIO38_IRQ (LS1B_IRQ3_BASE + 6)
#define LS1B_GPIO39_IRQ (LS1B_IRQ3_BASE + 7)
#define LS1B_GPIO40_IRQ (LS1B_IRQ3_BASE + 8)
#define LS1B_GPIO41_IRQ (LS1B_IRQ3_BASE + 9)
#define LS1B_GPIO42_IRQ (LS1B_IRQ3_BASE + 10)
#define LS1B_GPIO43_IRQ (LS1B_IRQ3_BASE + 11)
#define LS1B_GPIO44_IRQ (LS1B_IRQ3_BASE + 12)
#define LS1B_GPIO45_IRQ (LS1B_IRQ3_BASE + 13)
#define LS1B_GPIO46_IRQ (LS1B_IRQ3_BASE + 14)
#define LS1B_GPIO47_IRQ (LS1B_IRQ3_BASE + 15)
#define LS1B_GPIO48_IRQ (LS1B_IRQ3_BASE + 16)
#define LS1B_GPIO49_IRQ (LS1B_IRQ3_BASE + 17)
#define LS1B_GPIO50_IRQ (LS1B_IRQ3_BASE + 18)
#define LS1B_GPIO51_IRQ (LS1B_IRQ3_BASE + 19)
#define LS1B_GPIO52_IRQ (LS1B_IRQ3_BASE + 20)
#define LS1B_GPIO53_IRQ (LS1B_IRQ3_BASE + 21)
#define LS1B_GPIO54_IRQ (LS1B_IRQ3_BASE + 22)
#define LS1B_GPIO55_IRQ (LS1B_IRQ3_BASE + 23)
#define LS1B_GPIO56_IRQ (LS1B_IRQ3_BASE + 24)
#define LS1B_GPIO57_IRQ (LS1B_IRQ3_BASE + 25)
#define LS1B_GPIO58_IRQ (LS1B_IRQ3_BASE + 26)
#define LS1B_GPIO59_IRQ (LS1B_IRQ3_BASE + 27)
#define LS1B_GPIO60_IRQ (LS1B_IRQ3_BASE + 28)
#define LS1B_GPIO61_IRQ (LS1B_IRQ3_BASE + 29)
#define LS1B_MAXIMUM_VECTORS (LS1B_GPIO61_IRQ+1)
#define BSP_INTERRUPT_VECTOR_MIN 0
#define BSP_INTERRUPT_VECTOR_MAX LS1B_MAXIMUM_VECTORS
备注:中断向量表中一共支持8 + 29 + 4 + 31 + 30 = 8 + 33 + 61 = 102个中断。
中断向量表:
static isr_tbl_t isr_table[BSP_INTERRUPT_VECTOR_MAX];
3.3.3 默认的中断处理或中断服务程序:ls1b_irq.c
/** 默认中断 */
static void mips_default_isr(int vector, void *arg)
{unsigned int sr;unsigned int cause;mips_get_sr(sr);mips_get_cause(cause);printf("Unhandled isr exception: vector 0x%02x, cause 0x%08X, sr 0x%08X\n",vector, cause, sr);while (1);
}
3.3.4 中断向量表的初始化
/* * 初始化*/
void mips_init_isr_table(void)
{unsigned int i;for (i=0; i<BSP_INTERRUPT_VECTOR_MAX; i++) {isr_table[i].handler = mips_default_isr;isr_table[i].arg = i;}
}
使用默认的中断服务程序mips_default_isr初始化中断向量表。
3.3.5 安装用户自定义的中断服务程序的安装与移除
void ls1x_install_irq_handler(int vector, void (*isr)(int, void *), void *arg)
{if ((vector >= 0) && (vector < BSP_INTERRUPT_VECTOR_MAX)){mips_interrupt_disable();isr_table[vector].handler = isr;isr_table[vector].arg = (unsigned int)arg;mips_interrupt_enable();}
}void ls1x_remove_irq_handler(int vector)
{if ((vector >= 0) && (vector < BSP_INTERRUPT_VECTOR_MAX)){mips_interrupt_disable();isr_table[vector].handler = mips_default_isr;isr_table[vector].arg = vector;mips_interrupt_enable();}
}
相关文章:

[嵌入式系统-37]:龙芯1B 开发学习套件 -6-协处理器CP0之CPU异常处理与外部中断控制器的中断处理
目录 一、CP0概述 1.1 CP0概述 1.2 龙芯异常exception与中断interrupt的区别 二、CPU协处理器的异常处理 三、外部中断与外部中断控制器 3.1 外部中断源 3.2 如何配置外部中断源 3.3 外部中断的中断向量表 3.2.1 软件中断向量表结构定义:ls1b_irq.c 3.2.2…...

前端实现一个绕圆心转动的功能
前言: 今天遇到了一个有意思的需求,如何实现一个元素绕某一个点来进行圆周运动,用到了一些初高中的数学知识,实现起来还是挺有趣的,特来分享🎁。 一. 效果展示 我们先展示效果,如下图所示&…...

【vue.js】文档解读【day 2】 | 响应式基础
如果阅读有疑问的话,欢迎评论或私信!! 本人会很热心的阐述自己的想法!谢谢!!! 文章目录 响应式基础声明响应式状态(属性)响应式代理 vs 原始值声明方法深层响应性DOM 更新时机有状态方法 响应式…...

element-ui radio 组件源码分享
今日简单分享 radio 组件的实现原理,主要从以下三个方面来分享: 1、radio 页面结构 2、radio 组件属性 3、radio 组件方法 一、radio 页面结构 1.1 页面结构如下: 二、radio 属性 2.1 value / v-model 属性,类型为 string / …...

1-安装rabbitmq
rabbitmq官网: https://www.rabbitmq.com/docs/download 本机环境:mac,使用orbstack提供的docker 使用docker部署rabbitmq docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management 然后报错…...

C/C++编程-理论学习-通信协议理论
通信协议理论 protobuf简述 protobuf 简述 作用: 1. 将结构化数据 序列化 进行信息通信、存储。意为,数据结构化管理;意为,对结构化的数据进行序列化,便于发送、存储。可类比XML、JSON。 弊端: 1. buffe…...

【Apache Camel】基础知识
【Apache Camel】基础知识 Apache Camel是什么Apache Camel基本概念和术语CamelContextEndpointsRoutesRouteBuilderComponentsMessageExchangeProcessorsDomain Specific Language(DSL) Apache Camel 应用执行步骤Apache Camel 示意图参考 Apache Camel…...

Python之访问集合的迭代器
对迭代器的理解对于我们访问数据量大是有很大的帮助,将介绍它。 一、概念 迭代:是访问集合元素的一种方式,按照某种顺序逐个访问集合中的每一项。 可迭代对象:能够被迭代的对象,称为可迭代对象 判定依据:能…...

【Spring连载】使用Spring Data访问 MongoDB----对象映射之基于类型的转换器
【Spring连载】使用Spring Data访问 MongoDB----对象映射之基于类型的转换器 一、自定义转换二、转换器消歧(Disambiguation)三、基于类型的转换器3.1 写转换3.2 读转换3.3 注册转换器 一、自定义转换 下面的Spring Converter实现示例将String对象转换为自定义Email值对象: R…...

在ubuntu上安装hadoop完分布式
准备工作 Xshell安装包 Xftp7安装包 虚拟机安装包 Ubuntu镜像源文件 Hadoop包 Java包 一、安装虚拟机 创建ubuntu系统 完成之后会弹出一个新的窗口 跑完之后会重启一下 按住首先用ctrlaltf3进入命令界面,输入root,密码登录管理员账号 按Esc 然后输入 …...

Python 语句(二)【循环语句】
循环语句允许执行一个语句或语句组多次,其程序流程图如下: 在python中有三种循环方式: while 循环 当判断条件为 true 时执行循环体,否则退出循环体。for 循环 重复执行语句嵌套循环 (在while循环体中嵌套for循环&…...

(3)(3.3) MAVLink高延迟协议
文章目录 前言 1 配置 2 说明 3 消息说明 前言 ArduPilot 支持 MAVLink 高延迟协议(MAVLink High Latency)。该协议专为卫星或 LoRA 等低带宽或高成本链路而设计。 在此协议中,每 5s 只发送一次 HIGH_LATENCY2 MAVLink 信息。对 MAVLink 命令或请求(…...

【异常处理】Vue报错 Component template should contain exactly one root element.
问题描述 启动VUE项目后控制台报错: Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.翻译为:组件模板应该只包含一个根元素 查看vue代码࿰…...

Eth-trunk隧道
目录 Eth-trunk (划为二层) 二层trunk 三层交换机 网关冗余 Eth-trunk (划为二层) 一,...

【Ubuntu】将多个python文件打包为.so文件
1.为什么要将python打包为.so文件? 保护源码 2.实战例子 a.安装相应的包 pip install cython 验证安装是否成功 cython --version b.实战的文件目录和内容 hi.py # This is a sample Python script.# Press ShiftF10 to execute it or replace it with your…...

FreeRtos自学笔记3-----参考正点原子视频
FreeRtos任务的创建与删除 任务的创建与删除本质上是调用FreeRtos的API函数。 API函数: 1.xTaskGreate():动态创建任务函数; 2.xTaskGreateStatic();静态创建任务函数; 3.xTaskDelete():任务删除 动态创建任务:任务的任务控制块以…...

使用J-Link Commander通过J-LINK以命令的形式来访问ARM通用MCU
通常我们的操作是写好程序然后将程序下载到芯片里面,然后运行程序来进行相应的操作,其实还可以使用 J − L i n k C o m m a n d e r J-Link\quad Commander J−LinkCommander通过 J − L I N K J-LINK J−LINK以命令的形式来简单访问ARM通用MCU…...

19.删除链表的倒数第N个节点
19.删除链表的倒数第N个节点 力扣题目链接(opens new window) 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 示例 1: 输入:head [1,2,3,4,5], n…...

【Linux C | 网络编程】广播概念、UDP实现广播的C语言例子
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

java 面向对象 day3
这里写目录标题 1、 内部类1.1 成员内部类 静态内部类1.2 局部内部类1.3 匿名内部类[重点] 2、枚举2.1 使用枚举类 设计单例模式2.2 小实例 3、泛型3.1 认识泛型3.2 泛型类3.3 泛型接口3.4 泛型方法3.5 注意事项 1、 内部类 内部类 就是定义在一个类中的类 1.1 成员内部类 静…...

Flink 大数据 学习详情
参考视频: 尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 核心目标: 数据流上的有状态的计算 具体说明: Apache Flink是一个 框架 和 分布式处理引擎,用于对 无界(eg:kafka) 和…...

[项目设计] 从零实现的高并发内存池(四)
🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[高并发内存池] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 目录 6.内存回收 6.1 ThreadCache回收内存 6.2 CentralCache回收内存 Rele…...

02.URL的基本知识和使用
一.认识 URL 1. 为什么要认识 URL ? 虽然是后端给我的一个地址,但是哪部分标记的是服务器电脑,哪部分标记的是资源呢?所以为了和服务器有效沟通我们要认识一下 2. 什么是 URL ? 统一资源定位符,简称网址ÿ…...

人工智能指数报告2023
人工智能指数报告2023 主要要点第 1 章 研究与开发第 2 章 技术性能第 3 章 人工智能技术伦理第 4 章 经济第 5 章 教育第 6 章 政策与治理第 7 章 多样性第 8 章 舆论 人工智能指数是斯坦福大学以人为本的人工智能研究所(HAI)的一项独立倡议,…...

Android如何对应用进行系统签名
一、使用命令 获取签名文件 从系统源码环境中获取签名相关文件: platform.x509.pem、platform.pk8 、signapk.jar platform.x509.pem、platform.pk8 位于 ../build/target/product/security 目录下。signapk.jar 位于 ../out/host/linux-x86/framework 目录下。 …...

【系统安全加固】Centos 设置禁用密码并打开密钥登录
文章目录 一,概述二,操作步骤1. 服务器端生成密钥2. 在服务器上安装公钥3.下载私钥到本地(重要,否则后面无法登录)4. 修改配置文件,禁用密码并打开密钥登录5. 重启sshd服务6. 配置xshell使用密钥登录 一&am…...

关于我在项目中封装的一些自定义指令
什么是指令 在Vue中提供了一套为数据驱动视图更为方便的操作,这些操作被称为指令系统。我们看到的v-来头的行内属性,都是指令,不同的指令可以完成或者实现不同的功能。 除了核心功能默认内置的指令(v-model和v-show)…...

react经验11:访问循环渲染的子组件内容
前有访问单个子组件的需求,现在进一步需要访问循环渲染中的子组件。 访问单个子组件的成员 实施步骤 子组件//child.tsx export declare type ChildInstance{childMethod:()>void } const Child(props:{value:stringonMounted?:(ref:ChildInstance)>void …...

Java开发工程师面试题(业务功能)
一、订单超时未支付自动关闭的几种实现方式。 定时任务扫描:在订单创建时,为订单创建一个定时任务,并设置一个超时时间。后端服务器会定期检查任务的创建时间是否超过了超时时间。如果是,则将订单设置为关闭状态。这种方案需要后…...

BUUCTF-Misc-百里挑一
题目链接:BUUCTF在线评测 (buuoj.cn) 下载附件打开是一个流量包文件: 全是在传图片时候的流量,先把图片保存出来文件–>导出对象–>HTTP–>保存到一个文件夹 然后使用kali下的exiftool找到了一半flag exiftool *|grep flag 另外一半…...