ARM架构(二)—— arm v7-a/v8/v9寄存器介绍
1、ARM v7-A寄存器
1.1 通用寄存器
V7 V8开始 FIQ个IRQ优先级一样,
通用寄存器:31个
1.2 程序状态寄存器
CPSR是程序状态毒存器,保存条件标志位,中断禁止位,当前处理器模式等控制和状态位。每种异常模式下还存在SPSR,保存进入异常模式前的CPSR寄存器值,用于异常处理完成后恢复CPSR的状态。User和Sys不属于异常模式,没有CPSR寄存器,在User模式下,受限的CPSR存器称谓APSR(Application Program Status Register)。ARMV7-A中CPSR寄存器的信息如下图所示。
Field | 作用 |
---|---|
N | ALU返回运算结果是否为负数 |
Z | ALU返回运算结果是否为0 |
C | ALU运算是否发生进位 |
V | ALU运算是否发生溢出 |
Q | cumulative saturation |
J | ARM是否处于 Jazelle 状态 |
E | 控制load/store字节序 |
A | disables asynchronous aborts,User模式不能操作 |
I | 使能/去使能IRQ,User模式不能操作 |
F | 使能/去使能FIQ,User模式不能操作 |
T | ARM和Thumb状态标志位 |
GE | 用于某些SIMD(Single Instruction, Multiple Data)指令 |
M[4:0] | 处理器模式:FIQ,IRQ,ABT,SVC,UND,MON,HYP。User模式不能操作 |
1.3 Coprocessor 15(CP15)寄存器
在ARM v7 上所有的系统寄存器都是按CP15寄存器操作,使用MRC 和MCR指令操作。【ARM V8和ARM V9之后可以直接操作系统寄存器,通过MRS指令操作。】
————————————————————————————————————————————————
MRC p15,0,r0,c1,c0,0; Read System Contril Register configuration data 读协处理器到通用寄存器
ORR r0,r0,#(1<<2) ;set C bit
ORR r0,r0,#(1<<12) ;set I bit
ORR r0,r0,#(1<<11) ;set Z bit
MCR p15 ,0, r0,c1,c0,0 ; Write System Contril Register configuration data 从通用寄存器写回到协处理器
————————————————————————————————————————————————
思考:
1.协处理器是做什么的?
它是Core中,专门用来操作系统寄存器的,所有系统寄存器通过co-processor操作的。
2.aarch64中有没有协处理器?
没有了,后面V8,V9架构之后直接对系统寄存器进行操作。
1.4 系统控制寄存器(cp15.sctlr)
系统控制寄存器SCTLR(System Control Register )用于控制内存,系统功能以及提供状态信息。
2 ARM v8 & ARMv9寄存器介绍
本节内容来自网上
这里介绍的都是AArch64的寄存器。
寄存器分类:
1.general purpose
2.PSTATE Special
3.Other(如sctlr)
4.ID
5.Memory
6.Cache,Address,TLB
7. pmu
8. Exception,Reset
9. Root
10.Secure
11.Virt
12.Timer
13.Thread
14.IMP DEF
15.Debug
16.Trace
17.CTI
18.Float
19.Legacy
20.RAS
21.MPAM
22.Pointer authentication
23.AMU
24.GIC,GICD,GICR,GICC,GICV.GICH,GITS
2.1 AArch64 general-purpose registers
AArch64执行状态提供了32个在任何时间任何特权级下都可访问的64位的通用寄存器每个寄存器都有64位宽,它们通常被称为寄存器X0-X30。
每个AArch64 64位通用寄存器(X0-X30)也具有32位(W0-W30)形式。
32位W寄存器取自相应的64位X寄存器的低32位。也就是说,W0映射到X0的低32位,W1映射到X1的低32位。
从W寄存器读取时,忽略相应X寄存器高32位,并保持其它不变。写入W寄存器时,将X寄存器的高32位设置为零。
eg:将0xFFFFFFFF写入W0会将X0设置为0x00000000FFFFFFFF。
2.2 AArch64 special registers
除了31个核心寄存器外,还有几个特殊的寄存器。
注意:没有被称为X31或W31的寄存器。许多指令被编码,例如:31代表零寄存器ZR(WZR/XZR)。还有一组受限制的指令,其中对一个或多个参数进行编码,使数字31表示堆栈指针(SP)。
当访问零寄存器时,所有写操作都被忽略,所有读操作返回0。请注意,64位形式的SP寄存器不使用X前缀。
在ARMv8体系结构中,当CPU运行在AArch64状态时,异常返回状态保存在每个异常级别的以下专用寄存器中:
- Exception Link Register (ELR).
- Saved Processor State Register (SPSR).
每个异常级别都有一个专用的SP寄存器,但它不用于保存返回状态
2.2.1 零寄存器
零寄存器当用作源寄存器时读操作的结果为零,当用作目标寄存器时则将结果丢弃。你可以在大多数指令中但不是所有指令中使用零寄存器。
2.2.2 栈指针
在ARMv8体系结构中,要使用的栈指针的选择在一定程度上与异常级别是分开的。默认情况下,发生异常时会选择目标异常级别的SPELn作为栈指针。例如,当触发到EL1的异常时,就会选择SP_EL1作为栈指针。每个异常级别都有自己的栈指针,SP_EL0、SP_EL1、SP EL2和SP _EL3。
当AArch64处于ELO以外的异常级别时,处理器可以使用:
- 与该异常级别相关联的一个专用的64位栈指针(SP_ELn)
- 与ELO关联的栈指针(SP_EL0)
ELO永远只能访问SP ELO.
t后缀表示选择了SP_EL0栈指针。h后缀表示选择了SP_ELn栈指针。
虽然大多数指令都无法使用SP寄存器。但是有一些形式的算术指令可以操作SP。
eg:ADD指令可以读写当前的栈指针以调整函数中的栈指针。
ADD SP,SP, #x10 // Adjust sp to be x10 bytes before its current value
2.2.3 程序计数器
原来的ARMv7指令集的一个特性是R15作为程序计数器(PC),并作为一个通用寄存器使用。PC寄存器的使用带来了一些编程技巧,但它为编译器和复杂的流水线的设计引入了复杂性。在ARMv8中删除了对PC的直接访问,使返回预测更容易,并简化了ABI规范。
PC永远不能作为一个命名的寄存器来访问。但是,可以在某些指令中隐式的使用PC,如PC相对加载和地址生成。PC不能被指定为数据处理或加载指令的目的操作数。
2.2.4 异常链接寄存器(ELR)
异常链接寄存器保存异常返回地址。
2.2.5程序状态保存寄存器(SPSR)
当异常发生时,CPSR中的处理器状态将保存在相关的程序状态保存寄存器(SPSR)中,其方式类似于ARMV7。SPSR保存着异常发生之前的PSTATE的值,用于在异常返回时恢复PSTATE的值。
AArch64下各bit的含义:
bit | 含义 |
---|---|
N | 负数标志位,如果结果为负数,则N=1;如果结果为非负数,则N=0。 |
Z | 零标志位,如果结果为零,Z=1,否则Z=0。 |
C | 进位标志位 |
V | 溢出标志位 |
SS | 软件步进标志位,表示当一个异常发生时,软件步进是否开启 |
IL | 非法执行状态位 |
D | 程序状态调试掩码,在异常发生时的异常级别下,来自监视点、断点和软件单步调试事件中的调试异常是否被屏蔽。 |
A | SError(系统错误)掩码位 |
I | IRQ掩码位! |
F | FIQ掩码位 |
M[4] | 异常发生时的执行状态,0表示AArch64 |
M[3:0] | 异常发生时的mode或异常级别 |
2.3 Processor State处理器状态
AArch64没有直接与ARMv7当前程序状态寄存器(CPSR)等价的寄存器。在AArch64中,传统CPSR的组件作为可以独立访问的字段提供。这些状态被统称为处理器状态(PSTATE)。
AArch64的处理器状态或PSTATE字段有以下定义:
bit | Description |
---|---|
N | Negative condition flag |
Z | Zero condition flag |
C | Carry condition flag |
V | oVerflow condition flag |
D | Debug mask bit. |
A | SError mask bit. |
I | IRO mask bit. |
F | FlO mask bit. |
SS | FlO mask bit. |
IL | Illegal execution state bit. |
EL(2) | Exception level. |
nRW | Execution state:0=64-bit 1 =32-bit |
SP | Stack Pointer selector:0=SP ELO1=SP ELn |
在AArch64中,你可以通过执行ERET指令从一个异常中返回,这将导致SPSRELn被复制到PSTATE中。这将恢复ALU标志、执行状态、异常级别和处理器分支。从这里开始,将继续从ELR ELn中的地址开始执行。
PSTATE.N,Z.C,V字段可以在EL0级别访问。 其他的字段可以在EL1或更高级别访问,但是这些字段在ELO级别未定义。
2.3.1 Processor State 使用示例
Operand | PSTATEfields | Notes |
---|---|---|
DAIFSet | D,A,I,F | Directly sets any of the PSTATE.(D A L E} bits to 1 |
DAIFCIr | D,A,I,F | Directly clears any of the PSTATE.(D, A, I, F} bits to 0 |
Switch to the runtime stack i.e. SP ELO
ldr x2,[sp,#CTX EL3STATE OFFSET + CTX RUNTIME SP]
MoV x20,sp
msr spsle , #MODE SP ELO
mov sp,x2
2.4 系统寄存器
在AArch64中,系统配置通过系统寄存器进行控制,并使用MSR和MRS指令进行访问。这与ARMV7-A形成了鲜明对比,在ARMV7-A中,这些寄存器通常通过协处理器15(CP15)操作来访问。寄存器的名称会告诉你可以访问它的最低异常级别。
eg:
- TTBRO EL1可以从EL1、EL2和EL3访问,
- TTBRO EL2可以从EL2和EL3访问
可以采用以下形式来访问系统寄存器
MRS xO,TTBRO EL1//Move TTBRO EL1 into x8
MSR TTBRO EL1,x0// Move xe into TTBRO EL1
下表来自网上
ARM架构的之前版本使用协处理器来进行系统配置。 但是,AArch64不支持协处理器。
下表显示了异常级别,这些异常级别具有每个寄存器的单独副本。 例如,单独的辅助控制寄存器(ACTLR)以ACTLR_EL1,ACTLR_EL2和ACTLR_EL3的形式存在。
名称 | 寄存器 | 说明 | n的允许值 |
---|---|---|---|
ACTLR_ELn | 辅助控制寄存器 | 控制处理器特定的功能。 | 1,2,3 |
CCSIDR_ELn | 当前缓存大小ID寄存器 | 提供有关当前所选缓存的体系结构的信息。 | 1 |
CLIDR_ELn | 缓存级别ID寄存器 | 在每个级别上实现的单个或多个高速缓存的类型缓存层次结构的一致性级别和统一级别。 | 1,2,3 |
CNTFRQ_ELn | 计数器频率寄存器 | 报告系统计时器的频率。 | 0 |
CNTPCT_ELn | 计数器物理计数寄存器 | 保持64位的当前计数值。 | 0 |
CNTKCTL_ELn | 计数器内核控制寄存器 | 控制从虚拟计数器生成事件流。还控制从EL0访问物理计数器,虚拟计数器,EL1物理计时器和虚拟计时器。 | 1 |
CNTP_CVAL_ELn | 计数器物理计时器比较值寄存器 | 保存EL1物理计时器的比较值。 | 0 |
CPACR_ELn | 协处理器访问控制寄存器 | 控制对跟踪,浮点和SIMD功能的访问。 | 1 |
CSSELR_ELn | 缓存大小选择寄存器 | 通过指定所需的缓存级别和缓存类型(指令或数据缓存),选择当前的缓存大小ID寄存器CCSIDR_EL1。 | 1 |
CNTP_CTL_ELn | 计数器物理控制寄存器 | 控制EL1物理计时器的寄存器。 | 0 |
CTR_ELn | 缓存类型寄存器 | 有关集成缓存体系结构的信息。 | 0 |
DCZID_ELn | 数据缓存零ID寄存器 | 指示数据缓存零根据虚拟地址(DCZVA)系统指令写入字节值为0的块大小。 | 0 |
ELR_ELn | 异常链接寄存器 | 保存导致异常的指令的地址。 | 1,2,3 |
ESR_ELn | 异常综合特征寄存器 | 包括有关异常原因的信息。 | 1,2,3 |
FAR_ELn | 故障地址寄存器 | 保存虚拟错误地址。 | 1,2,3 |
FPCR | 浮点控制寄存器 | 控制浮点扩展行为。该寄存器中的字段映射到AArch32 FPSCR中的等效字段。 . | |
FPSR | 浮点状态寄存器 | 提供浮点系统状态信息。该寄存器中的字段映射到AArch32 FPSCR中的等效字段。 . | |
HCR_ELn | Hypervisor 配置寄存器 | 控制虚拟化设置,并将异常情况捕获到EL2。 | 2 |
MAIR_ELn | 存储器属性间接寄存器 | 在ELn的阶段1翻译的Long-descriptor格式转换表项中,提供对应于可能值的存储器属性编码。 | 1,2,3 |
MIDR_ELn | 主ID寄存器 | 代码运行的处理器类型(部件号和版本)。 | 1 |
MPIDR_ELn | 多处理器密切关系的寄存器 | 处理器和群集ID,在多核或群集系统中。 | 1 |
RVBAR_ELn | 基于地址寄存器的重置向量 | 保存重置向量的基地址,以便发送给ELn的任何异常。 | 1,2,3 |
SCR_ELn | 安全配置寄存器 | 控制安全状态和EL3的异常情况。 | 3 |
SCTLR_ELn | 系统控制寄存器 | 控制架构功能,例如MMU,缓存和对齐检查。 | 0,1,2,3 |
SPSR_ELn | 保存的程序状态寄存器 | 当发生异常时,保持已保存的处理器状态。 | abt,fiq,irq,und,1,2,3 |
TCR_ELn | 转换控制寄存器 | 确定哪个转换表基地寄存器定义了转换表行走(translation table walk)的基地址,该基地址是ELn中,内存访问阶段1转换所需要的。还控制转换表格式并保存可缓存和可共享的信息。 | 1,2,3 |
TPIDR_ELn | 用户读/写线程ID寄存器 | 为了操作系统管理的目的,提供一个在ELn上执行的软件可以存储线程标识信息的位置。 | 0,1,2,3 |
TPIDRRO_ELn | 用户只读线程ID寄存器 | 提供在EL1或更高版本上执行的软件可以存储线程标识信息的位置。为了操作系统管理的目的,在EL0上执行的软件可以看到这些信息。 | 0 |
TTBR0_ELn | 转换表基址寄存器0 | 保存转换表0的基地址,以及它占用的内存的信息。这是ELn内,内存访问阶段1转换的转换表之一。 | 1,2,3 |
TTBR1_ELn | 转换表基址寄存器1 | 保存转换表1的基地址,以及它占据的存储器的信息。这是在EL0和EL1内,内存访问阶段1转换的转换表之一 | 1 |
VBAR_ELn | 基于向量的地址寄存器 | 保存异常基地址,以便发送到ELn的任何异常 | 1,2,3 |
VTCR_ELn | 虚拟化转换控制寄存器 | 控制来自非安全EL0和EL1的内存访问阶段2转换所需的转换表步行。还保存访问的可缓存和可共享信息。 | 2 |
VTTBR_ELn | 虚拟化转换表基址寄存器 | 保存来自非安全EL0和EL1的内存访问阶段2转换的转换表的基地址。 | 2 |
2.5 其他寄存器(如sctlR)
系统控制寄存器(SCTLR)是一个用来控制标准内存、配置系统能力、提高处理器核状态信息的寄存器。
并不是所有bit在EL1都可用,各bit的含义如下:
- UCI设置此位后,在AArch64中为DCCVAU、DCCIVAC、DCCVAC和ICIVAU指令启用ELO访问,
- EE 异常字节顺序:0 小端;1大端
- EOE ELO显式数据访问的字节序:0 小端;1 大端
- WXN 写权限不可执行nTWE不陷入WFE,此标志为1表示WFE作为普通指令执行
- nTWI不陷入WFI,此标志为1表示WFI作为普通指令执行
- UCT 此标志为1时,开启AArch64的EL0下访问CTR_ELO存器
- DNE ELO 下访问 DC AVA指令,0 禁止执行,1 允许执行
- I开启指令缓存,这是在EL0和EL1下的指令缓存的启用位。对可缓存的正常内存的指令访问被缓存。
- UMA 用户屏蔽访问。当EL0使用AArch64,控制从EL0的中断屏蔽访问。
- SED 禁止SETEND。在ELO使用AArch32禁ISETEND指令。0 使能;1 禁止
- ITD 禁止IT指令:0 IT指令有效; 1IT指令被当作16位指令。仅另外16位指令或32位指令的头16位可以使用,这依赖于实现
- CP15BEN CP15 barrier使能。如果实现了,它是AArch32 CP15DMB,DSB和ISB barrier操作的使能位
- SAO ELO的栈对齐检查使能位
- SA栈对齐检查使能位
- C数据cache使能。EL0和EL1的数据访问使能位。对cacheable普通内存的数据访问都被缓存
- A 对齐检查使能位
- M 使能MMU
为访问SCTLR ELn,使用:
MRS <Xt>,SCTLR ELn // Read SCTLR ELn into xt
MSR SCTLR ELn,<Xt>//write xt to SCTLR ELn
3. A64指令集介绍
1、ISA :Instruction System ArchitectureA
- AArch64:指的是架构
- A64:指的是指令集
- arm64:指的是Linux Kernel中的aarch64体系
2、AArch64的指令集架构
3.1.指令集总结
相关文章:
![](https://i-blog.csdnimg.cn/direct/133063a53137424b8f365e90d718bac4.png)
ARM架构(二)—— arm v7-a/v8/v9寄存器介绍
1、ARM v7-A寄存器 1.1 通用寄存器 V7 V8开始 FIQ个IRQ优先级一样, 通用寄存器:31个 1.2 程序状态寄存器 CPSR是程序状态毒存器,保存条件标志位,中断禁止位,当前处理器模式等控制和状态位。每种异常模式下还存在SPS…...
![](https://i-blog.csdnimg.cn/direct/e26b7b2d93804c8095c751b27773cc4e.png)
C++合作开发项目:美术馆1.0
快乐星空MakerZINCFFO 合作入口:CM工作室 效果图: 代码: (还有几个音乐!) main.cpp #include <bits/stdc.h> #include <windows.h> #include <conio.h> #include <time.h> #in…...
![](https://www.ngui.cc/images/no-images.jpg)
QT 5 同时使用Q_DECLARE_METATYPE(pointdata) 和继承 QObjectUserData
在Qt框架中,QObjectUserData 和 Q_DECLARE_METATYPE() 宏都与Qt的元对象系统有关,但它们的使用方式有一些特别的限制和兼容性问题。 关于QObjectUserData: QObjectUserData 是一个用来存储用户数据的类。在Qt中,每个 QObject 可以…...
![](https://i-blog.csdnimg.cn/direct/80c4563163694494ba7e03d0d78a2279.png)
【MySQL进阶之路 | 高级篇】范式概述与第一范式
1. 范式简介 在关系型数据库中,关于数据表的设计的基本原则,规则就称为范式。可以理解为,一张数据表的设计结果需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 范式的英文名是Normal …...
![](https://i-blog.csdnimg.cn/direct/c55810a0f1c64467a4ed7037175b09a1.png)
Open-TeleVision复现及机器人迁移
相关信息 标题 Open-TeleVision: Teleoperation with Immersive Active Visual Feedback作者 Xuxin Cheng1 Jialong Li1 Shiqi Yang1 Ge Yang2 Xiaolong Wang1 UC San Diego1 MIT2主页 https://robot-tv.github.io/链接 https://robot-tv.github.io/resources/television.pdf代…...
![](https://i-blog.csdnimg.cn/direct/c94067dd26cb41c78e76374cd5ad205f.png)
Notepad++换安装路径之后,右键打开方式报错:Windows无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目。的处理方法
把Notepad添加到右键打开方式,可以参考下面的3篇文章添加: https://blog.csdn.net/xiaoerbuyu1233/article/details/88287747 https://blog.csdn.net/qq_44000337/article/details/120277317 https://www.cnblogs.com/zhrngM/p/12899026.html 这里主要是…...
![](https://www.ngui.cc/images/no-images.jpg)
【Flutter 面试题】 使用成熟状态管理库的弊端有哪些?
【Flutter 面试题】 使用成熟状态管理库的弊端有哪些? 文章目录 写在前面口述回答补充说明写在前面 🙋 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主,51CTO专家博主。2023博客之星TOP153。 👏🏻 正在学 Flutter 的同学,你好! 😊 …...
![](https://www.ngui.cc/images/no-images.jpg)
Apache Commons技术详解
文章目录 简介官网链接原理基础使用Commons LangCommons Collections 高级使用Commons IOCommons Math 优缺点优点缺点 总结 简介 Apache Commons 是 Apache 软件基金会下的一个项目,旨在提供可重用的Java组件。这些组件覆盖了广泛的编程任务,从字符串处…...
![](https://i-blog.csdnimg.cn/direct/e0c366f6c6ef4536a4f10ce83d39323e.png)
怎样使用 Juicer tools 的 dump 命令将.hic文件转换为交互矩阵matrix计数文件 (Windows)
创作日志: 万恶的生信…一个scHiC数据集没有提供处理好的计数文件,需要从.hic转换。Github一个个好长的文档看了好久才定位到 juicer tools 的dump命令,使用起来比想象中简单。 一、下载Juicer tools 注意:使用Juicer tools的前提…...
![](https://img-blog.csdnimg.cn/direct/2861b78ad75f44c6abd3d1de3121c944.png)
【Docker】Docker Desktop - WSL update failed
问题描述 Windows上安装完成docker desktop之后,第一次启动失败,提示:WSL update failed 解决方案 打开Windows PowerShell 手动执行: wsl --set-default-version 2 wsl --update...
![](https://www.ngui.cc/images/no-images.jpg)
基于rsync\unlink 等一套本机备份跨机备份历史备份清理shell 脚本
一 摘要 本文主要介绍一套本地备份、跨机器备份、历史备份清理脚本,使用场景如数据库备份等 二 环境 linux 系列系统 基本都支持,个别命令可能需要微调。 2.1 实验环境 [rootlocalhost rsync]# cat /etc/centos-release CentOS Linux release 7.9.2…...
![](https://i-blog.csdnimg.cn/direct/ba509d28a9ce4bcbafaea30d994979e0.png)
使用nginx实现一个端口和ip访问多个vue前端
前言:由于安全组要求,前端页面只开放一个端口,但是项目有多个前端,此前一直使用的是一个前端使用单独一个端口进行访问,现在需要调整。 需要实现:这里以80端口为例,两个前端分别是:p…...
![](https://i-blog.csdnimg.cn/direct/a3bb1c60e87549b689fc6f313e48903c.png)
Linux云计算 |【第一阶段】SERVICES-DAY5
主要内容: 源码编译安装、rsync同步操作、inotify实时同步、数据库服务基础 实操前骤:(所需tools.tar.gz与users.sql) 1.两台主机设置SELinnx和关闭防火墙 setenforce 0 systemctl stop firewalld.service //停止防火墙 sy…...
![](https://i-blog.csdnimg.cn/direct/7356bafe4f96476ab5d39c9dd650dfa2.jpeg)
IP第一次综合实验
一、实验拓扑 二、实验要求 1、R6为ISP,接口IP地址均为公有地址,该设备只能配置地址之后不能冉对其进行任何配置 2、R1-R5为局域网,私有Ip地址192.168.1.0/24,请合理分配 3、R1、82、R4,各有两个环回IP地址;R5,R6各…...
![](https://www.ngui.cc/images/no-images.jpg)
Could not load dynamic library ‘cudart64_100.dll‘
python代码报错 Could not load dynamic library cudart64_100.dll; dlerror: cudart64_100.dll not found 2024-07-22 14:19:21.931639: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine…...
![](https://i-blog.csdnimg.cn/direct/86a02a0aa9494b9282d52558a955d192.png)
四大引用——强软弱虚
目录 一、强引用 二、软引用 三、弱引用 四、虚引用 一、强引用 强引用是在程序代码之中普遍存在的,类似于“Object obj new Object()”,obj变量引用Object这个对象,就叫做强引用。当内存空间不足,Java虚拟机宁愿抛出OutOfMe…...
![](https://i-blog.csdnimg.cn/direct/c5afc7012c6642019c3a2647e9e488d9.png)
MySQL--索引(2)
InnoDB 1.索引类型 主键索引(Primary Key) 数据表的主键列使用的就是主键索引。 一张数据表有只能有一个主键,并且主键不能为 null,不能重复。 在 mysql 的 InnoDB 的表中,当没有显示的指定表的主键时,InnoDB 会自动先检查表中是…...
![](https://www.ngui.cc/images/no-images.jpg)
JVM类加载机制详解
Java在运行期才对类进行加载到内存、连接、初始化过程。这使得Java应用具有极高的灵活性和拓展性,可以依赖运行期进行动态加载和动态连接。 主要加载哪些?Java中的数据类型分为基本数据类型和引用数据类型,基本数据类型由虚拟机预先定义&…...
![](https://i-blog.csdnimg.cn/direct/45e0fcff30804c1c985e0edd33310a76.png)
【MATLAB实战】基于UNet的肺结节的检测
数据: 训练过程图 算法简介: UNet网络是分割任务中的一个经典模型,因其整体形状与"U"相似而得名,"U"形结构有助于捕获多尺度信息,并促进了特征的精确重建,该网络整体由编码器,解码器以及跳跃连接三部分组成。 编码器由…...
![](https://i-blog.csdnimg.cn/direct/aa847fb322714e25a72981e548dfd33c.png)
Elasticsearch基础(五):使用Kibana Discover探索数据
文章目录 使用Kibana Discover探索数据 一、添加样例数据 二、数据筛选 三、保存搜索 使用Kibana Discover探索数据 一、添加样例数据 登录Kibana。在Kibana主页的通过添加集成开始使用区域,单击试用样例数据。 在更多添加数据的方式页面下方,单击…...
![](https://i-blog.csdnimg.cn/direct/a4bd76a89d8348f79944ec27be5f0534.png#pic_center)
爬取百度图片,想爬谁就爬谁
前言 既然是做爬虫,那么肯定就会有一些小心思,比如去获取一些自己喜欢的资料等。 去百度图片去抓取图片吧 打开百度图片网站,点击搜索xxx,打开后,滚动滚动条,发现滚动条越来越小,说明图片加载…...
![](https://i-blog.csdnimg.cn/direct/6b7909bb46784c9ea065a314ee6d3983.png)
HTTP 缓存
缓存 web缓存是可以自动保存常见的文档副本的HTTP设备,当web请求抵达缓存时,如果本地有已经缓存的副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。使用缓存有如下的优先。 缓存减少了冗余的数据传输缓存环节了网络瓶颈的问题…...
![](https://www.ngui.cc/images/no-images.jpg)
设计模式实战:图形编辑器的设计与实现
简介 本篇文章将介绍如何设计一个图形编辑器系统,系统包括图形对象的创建、组合、操作及撤销等功能。我们将通过这一项目,应用命令模式、组合模式和备忘录模式来解决具体的设计问题。 问题描述 设计一个图形编辑器系统,用户可以创建并操作图形对象,将多个图形对象组合成…...
![](https://img-blog.csdnimg.cn/direct/c4ee6ed3fc8441eeba4d4b6cddc009ec.png)
.NET 情报 | 分析某云系统添加管理员漏洞
01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失…...
![](https://www.ngui.cc/images/no-images.jpg)
vue检测页面手指滑动距离,执行回调函数,使用混入的语法,多个组件都可以使用
mixin.ts 定义滑动距离的变量和检测触摸开始的方法,滑动方法,并导出两个方法 sendTranslateX.value > 250 && sendTranslateY.value < -100是向上滑动,满足距离后执行回调函数func,并在一秒内不再触发,一…...
![](https://www.ngui.cc/images/no-images.jpg)
opencv 优势
OpenCV(开源计算机视觉库)是一个广泛使用的计算机视觉和机器学习软件框架。它最初由Intel开发,后来由Itseez公司维护,最终于2015年成为非营利组织OpenCV.org的一部分。OpenCV的目的是实现一个易于使用且高效的计算机视觉框架,支持实时视觉应用。 以下是关于OpenCV的一些关…...
![](https://img-blog.csdnimg.cn/img_convert/5e87661fcb04b48081cfd3a31020c319.jpeg)
1-如何挑选Android编译服务器
前几天,我在我的星球发了一条动态:入手洋垃圾、重操老本行。没错,利用业余时间,我又重新捣鼓捣鼓代码了。在接下来一段时间,我会分享我从服务器的搭建到完成Android产品开发的整个过程。这些东西之前都是折腾过的&…...
![](https://www.ngui.cc/images/no-images.jpg)
【JS逆向课件:第十六课:Scrapy基础2】
ImagePipeLines的请求传参 环境安装:pip install Pillow USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36需求:将图片的名称和详情页中图片的数据进行爬取&a…...
![](https://www.ngui.cc/images/no-images.jpg)
使用 PowerShell 自动化图像识别与鼠标操作
目录 前言功能概述代码实现1. 引入必要的程序集2. 定义读取文件行的函数3. 定义加载图片的函数4. 定义查找小图像在大图像中的位置的函数5. 定义截取全屏的函数6. 定义模拟鼠标点击的函数7. 定义主函数 配置文件示例运行脚本结语全部代码提示打包exe 下载地址 前言 在日常工作…...
![](https://i-blog.csdnimg.cn/direct/66e5537c43f843f3a48788913c343b91.png)
组队学习——支持向量机
本次学习支持向量机部分数据如下所示 IDmasswidthheightcolor_scorefruit_namekind 其中ID:1-59是对应训练集和验证集的数据,60-67是对应测试集的数据,其中水果类别一共有四类包括apple、lemon、orange、mandarin。要求根据1-59的数据集的自…...
![](https://images2015.cnblogs.com/blog/986702/201608/986702-20160820115111671-336898257.png)
文山网站建设报价/石家庄网站建设seo公司
RIPng --------------------------------------------------------- UDP:521 多播地址:FF02::9 ---------------------------------------------------------------------------- 工作机制与报文处理过程与RIP一样 配置࿱…...
![](/images/no-images.jpg)
学生创业做网站制作设计/淘宝友情链接怎么设置
题目 竞赛:2022招商银行专场竞赛 D题:商店促销活动 n(n<1e5)件商品, 第i件商品,要么去商店A买,花费ai(ai<1e4),要么去商店B买,花费bi(bi<1e4) 两个商店有不同的优惠活动ÿ…...
![](https://img-blog.csdnimg.cn/20201007162120463.gif#pic_center)
武汉seo软件/苏州seo关键词优化外包
随机产生一些直线,当直线相交时产生交点,直线不断移动,交点的位置也随之改变。 <!doctype html> <html> <head> <meta charset"utf-8"> <title>Canvas绘制点线相交</title> <style>body…...
![](/images/no-images.jpg)
wordpress写文章没有分类目录/适合小学生的新闻事件
自动化运维之Ansible Asible概述与核心组件 Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功…...
![](https://s1.51cto.com/attachment/201103/14/1628315_1300097730N9eT.png)
怎么做vip电影网站/西安网站建设哪家好
附件中是我根据原版zabbix-1.8.4的汉化,重新修改的。希望对初学者有所帮助。 (1)将zabbix网站下的include/locales目录下的汉化文件cn_zh.inc.php进行备份 (2)将附件中的文件解压后放到zabbix网站下的include/locales目…...
![](/images/no-images.jpg)
医程通 网站做的太/天津百度快速排名优化
tcpdump是一个用于截取网络分组,并输出分组内容的工具。 tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对…...