【RISC-V 指令集】RISC-V DSP 扩展指令集介绍(一)
前言:
本笔记是基于对RISC-V DSP扩展指令集文档总结的,《P-ext-proposal.pdf》文档的关键内容如下:
主要介绍了RISC-V的P扩展指令集及其相关细节。
首先,对P扩展指令进行了概述,并列出了其与其他扩展重复的指令。
接着,详细描述了P扩展的子集,包括Zbpbo扩展和Zpn扩展(适用于RV32和RV64)的指令。
此外,还提供了仅适用于RV64的详细指令描述。
文档还介绍了新的用户控制和状态寄存器,并提供了指令编码表。最后,列出了因RVB重叠而被移除的指令。
这份文档为RISC-V的P扩展指令集提供了全面而详细的信息,包括指令的描述、编码、以及与其他扩展的关系。这对于理解、开发和优化基于RISC-V架构的系统非常有价值。同时,文档也提醒了开发者在使用P扩展时需要注意的兼容性和优化问题。
1. 介绍
数字信号处理(DSP)已成为现代电子系统的重要技术。广泛的现代应用利用DSP算法解决特定领域的问题,包括传感器融合、伺服电机控制、音频解码/编码、语音合成和编码、MPEG4解码、医学成像、计算机视觉、嵌入式控制、机器人、人机交互等。
提出的P指令集扩展提高了RISC-V CPU IP产品的DSP算法处理能力。通过添加RISC-V P指令集扩展,RISC-V CPU现在可以以更低的功耗和更高的性能运行这些各种DSP应用程序。
2. 缩写定义和术语
2.1 缩写定义
-
r.H == rH1: r[31:16],r.L == r.H0: r[15:0]
- r.H 表示寄存器的高 16 位(位 31 到 16),等同于 rH1。
- r.L 表示寄存器的低 16 位(位 15 到 0),等同于 r.H0。
-
r.B3: r[31:24],r.B2: r[23:16],r.B1: r[15:8],r.B0: r[7:0]
- r.B3 到 r.B0 分别表示从高位到低位的 8 位段。
-
r.B[x]: r[(x8+7):(x8+0)]
- r.B[x] 表示从第 x 个 8 位段开始的 8 位数据。
-
r.H[x]: r[(x16+15):(x16+0)]
- r.H[x] 表示从第 x 个 16 位段开始的 16 位数据。
-
r.W[x]: r[(x32+31):(x32+0)]
- r.W[x] 表示从第 x 个 32 位段开始的 32 位数据。
-
r.D[x]: r[(x64+63):(x64+0)]
- r.D[x] 表示从第 x 个 64 位段开始的 64 位数据。
-
r[xU]: 64 位数的上 32 位;xU 代表包含此上部分 32 位值的 GPR(通用寄存器)编号。
-
r[xL]: 64 位数的下 32 位;xL 代表包含此下部分 32 位值的 GPR 编号。
-
r[xU].r[xL]: 由一对 GPR 形成的 64 位数。
-
s>>: 有符号算术右移。
-
u>>: 无符号逻辑右移。
-
u<<: 逻辑左移,从右侧移入 0。
-
SAT.Qn(): 饱和至 [-2n, 2n-1] 范围内,若发生饱和,则设置 OV 标志。
-
SAT.Um(): 饱和至 [0, 2m-1] 范围内,若发生饱和,则设置 OV 标志。
-
ROUND(): 表示“四舍五入”,即向最高有效位加 1。
这些缩写定义和术语提供了对特定指令集或处理器架构中使用的寄存器和操作的简化表示。它们通常用于硬件描述语言、汇编语言或低级编程中,以简化复杂操作和提高代码可读性。
2.2. 术语
• Q格式(Qm.n):它描述了一个有符号的二进制定点数格式。“m”是包括符号位和整数位在内的位数,位于假想的二进制点之前,而“n”是跟随其后的分数位数。这种表示法代表一个在-2^(m-1)(包含)和2^(m-1)(不包含)范围内的有符号二进制定点值,该范围内有2^(m+n)个唯一值。例如,Q1.15表示一个在-1(包含)和1(不包含)范围内的数,该范围内有65536个唯一值。
• Qn:Q1.n的缩写格式。例如,Q7,Q15,Q31,Q63。
• Um:它表示一个无符号的二进制数,范围在0到(2^m)-1之间。
3. RISC-V P 扩展指令
3.1. SIMD 数据处理指令
3.1.1. 16位加法和减法指令
基于32位字元素内的两种16位算术运算类型的组合,SIMD 16位加/减指令可以分为6个主要类别:加法(两个16位加法)、减法(两个16位减法)、交叉加和减(一个加法和一个减法)、交叉减和加(一个减法和一个加法)、直接加和减(一个加法和一个减法)以及直接减和加(一个减法和一个加法)。
基于处理溢出条件的方式,SIMD 16位加/减指令可以分为5组:环绕(丢弃溢出)、有符号减半(通过丢弃最低有效位来保留溢出)、无符号减半、有符号饱和(剪裁溢出)和无符号饱和。
序号 | 指令 | 说明 |
1 | ADD16 rd, rs1, rs2 | 16-bit Addition |
2 | RADD16 rd, rs1, rs2 | 16-bit Signed Halving Addition |
3 | URADD16 rd, rs1, rs2 | 16-bit Unsigned Halving Addition |
4 | KADD16 rd, rs1, rs2 | 16-bit Signed Saturating Addition |
5 | UKADD16 rd, rs1, rs2 | 16-bit Unsigned Saturating Addition |
6 | SUB16 rd, rs1, rs2 | 16-bit Subtraction |
7 | RSUB16 rd, rs1, rs2 | 16-bit Signed Halving Subtraction |
8 | URSUB16 rd, rs1, rs2 | 16-bit Unsigned Halving Subtraction |
9 | KSUB16 rd, rs1, rs2 | 16-bit Signed Saturating Subtraction |
10 | UKSUB16 rd, rs1, rs2 | 16-bit Unsigned Saturating Subtraction |
11 | CRAS16 rd, rs1, rs2 | 16-bit Cross Add & Sub |
12 | RCRAS16 rd, rs1, rs2 | 16-bit Signed Halving Cross Add & Sub |
13 | URCRAS16 rd, rs1, rs2 | 16-bit Unsigned Halving Cross Add & Sub |
14 | KCRAS16 rd, rs1, rs2 | 16-bit Signed Saturating Cross Add & Sub |
15 | UKCRAS16 rd, rs1, rs2 | 16-bit Unsigned Saturating Cross Add & Sub |
16 | CRSA16 rd, rs1, rs2 | 16-bit Cross Sub & Add |
17 | RCRSA16 rd, rs1, rs2 | 16-bit Signed Halving Cross Sub & Add |
18 | URCRSA16 rd, rs1, rs2 | 16-bit Unsigned Halving Cross Sub & Add |
19 | KCRSA16 rd, rs1, rs2 | 16-bit Signed Saturating Cross Sub & Add |
20 | UKCRSA16 rd, rs1, rs2 | 16-bit Unsigned Saturating Cross Sub & Add |
21 | STAS16 rd, rs1, rs2 | 16-bit Straight Add & Sub |
22 | RSTAS16 rd, rs1, rs2 | 16-bit Signed Halving Straight Add & Sub |
23 | URSTAS16 rd, rs1, rs2 | 16-bit Unsigned Halving Straight Add & Sub |
24 | KSTAS16 rd, rs1, rs2 | 16-bit Signed Saturating Straight Add & Sub |
25 | UKSTAS16 rd, rs1, rs2 | 16-bit Unsigned Saturating Straight Add & Sub |
26 | STSA16 rd, rs1, rs2 | 16-bit Straight Sub & Add |
27 | RSTSA16 rd, rs1, rs2 | 16-bit Signed Halving Straight Sub & Add |
28 | URSTSA16 rd, rs1, rs2 | 16-bit Unsigned Halving Straight Sub & Add |
29 | KSTSA16 rd, rs1, rs2 | 16-bit Signed Saturating Straight Sub & Add |
30 | UKSTSA16 rd, rs1, rs2 | 16-bit Unsigned Saturating Straight Sub & Add |
3.1.2. 8位加法和减法指令
基于32位字元素内四个8位算术运算的类型,SIMD 8位加/减指令可以分为两大类别:加法(执行四个8位加法)和减法(执行四个8位减法)。
根据有符号或无符号运算中处理溢出条件的方式,SIMD 8位加/减指令又可以进一步分为五组:环绕(即丢弃溢出部分)、有符号减半(通过丢弃最低有效位来保留溢出)、无符号减半、有符号饱和(通过剪裁来处理溢出)和无符号饱和。
序号 | 指令 | 说明 |
1 | ADD8 rd, rs1, rs2 | 8-bit Addition |
2 | RADD8 rd, rs1, rs2 | 8-bit Signed Halving Addition |
3 | URADD8 rd, rs1, rs2 | 8-bit Unsigned Halving Addition |
4 | KADD8 rd, rs1, rs2 | 8-bit Signed Saturating Addition |
5 | UKADD8 rd, rs1, rs2 | 8-bit Unsigned Saturating Addition |
6 | SUB8 rd, rs1, rs2 | 8-bit Subtraction |
7 | RSUB8 rd, rs1, rs2 | 8-bit Signed Halving Subtraction |
8 | URSUB8 rd, rs1, rs2 | 8-bit Unsigned Halving Subtraction |
9 | KSUB8 rd, rs1, rs2 | 8-bit Signed Saturating Subtraction |
10 | UKSUB8 rd, rs1, rs2 | 8-bit Unsigned Saturating Subtraction |
3.1.3. 16位移位指令
Table 3. SIMD 16-bit Shift Instructions
序号 | 指令 | 说明 |
1 | SRA16 rd, rs1, rs2 | 16-bit Shift Right Arithmetic |
2 | SRAI16 rd, rs1, im4u | 16-bit Shift Right Arithmetic Immediate |
3 | SRA16.u rd, rs1, rs2 | 16-bit Rounding Shift Right Arithmetic |
4 | SRAI16.u rd, rs1, im4u | 16-bit Rounding Shift Right Arithmetic Immediate |
5 | SRL16 rd, rs1, rs2 | 16-bit Shift Right Logical |
6 | SRLI16 rd, rs1, im4u | 16-bit Shift Right Logical Immediate\ |
7 | SRL16.u rd, rs1, rs2 | 16-bit Rounding Shift Right Logical |
8 | SRLI16.u rd, rs1, im4u | 16-bit Rounding Shift Right Logical Immediate |
9 | SLL16 rd, rs1, rs2 | 16-bit Shift Left Logical |
10 | SLLI16 rd, rs1, im4u | 16-bit Shift Left Logical Immediate |
11 | KSLL16 rd, rs1, rs2 | 16-bit Saturating Shift Left Logical |
12 | KSLLI16 rd, rs1, im4u | 16-bit Saturating Shift Left Logical Immediate |
13 | KSLRA16 rd, rs1, rs2 | 16-bit Shift Left Logical with Saturation & Shift Right Arithmetic |
14 | KSLRA16.u rd, rs1, rs2 | 16-bit Shift Left Logical with Saturation & Rounding Shift Right Arithmetic |
3.1.4. 8位移位指令
Table 4. SIMD 8-bit Shift Instructions
序号 | 指令 | 说明 |
1 | SRA8 rd, rs1, rs2 | 8-bit Shift Right Arithmetic |
2 | SRAI8 rd, rs1, im4u | 8-bit Shift Right Arithmetic Immediate |
3 | SRA8.u rd, rs1, rs2 | 8-bit Rounding Shift Right Arithmetic |
4 | SRAI8.u rd, rs1, im4u | 8-bit Rounding Shift Right Arithmetic Immediate |
5 | SRL8 rd, rs1, rs2 | 8-bit Shift Right Logical |
6 | SRLI8 rd, rs1, im4u | 8-bit Shift Right Logical Immediate |
7 | SRL8.u rd, rs1, rs2 | 8-bit Rounding Shift Right Logical |
8 | SRLI8.u rd, rs1, im4u | 8-bit Rounding Shift Right Logical Immediate |
9 | SLL8 rd, rs1, rs2 | 8-bit Shift Left Logical |
10 | SLLI8 rd, rs1, im4u | 8-bit Shift Left Logical Immediate |
11 | KSLL8 rd, rs1, rs2 | 8-bit Saturating Shift Left Logical |
12 | KSLLI8 rd, rs1, im4u | 8-bit Saturating Shift Left Logical Immediate |
13 | KSLRA8 rd, rs1, rs2 | 8-bit Shift Left Logical with Saturation & Shift Right Arithmetic |
14 | KSLRA8.u rd, rs1, rs2 | 8-bit Shift Left Logical with Saturation & Rounding Shift Right Arithmetic |
3.1.5. 16位比较指令
Table 5. SIMD 16-bit Compare Instructions
序号 | 指令 | 说明 |
1 | CMPEQ16 rd, rs1, rs2 | 16-bit Compare Equal |
2 | SCMPLT16 rd, rs1, rs2 | 16-bit Signed Compare Less Than |
3 | SCMPLE16 rd, rs1, rs2 | 16-bit Signed Compare Less Than & Equal |
4 | UCMPLT16 rd, rs1, rs2 | 16-bit Unsigned Compare Less Than |
5 | UCMPLE16 rd, rs1, rs2 | 16-bit Unsigned Compare Less Than & Equal |
3.1.6. 8位比较指令
Table 6. SIMD 8-bit Compare Instructions
序号 | 指令 | 说明 |
1 | CMPEQ8 rd, rs1, rs2 | 8-bit Compare Equal |
2 | SCMPLT8 rd, rs1, rs2 | 8-bit Signed Compare Less Than |
3 | SCMPLE8 rd, rs1, rs2 | 8-bit Signed Compare Less Than & Equal |
4 | UCMPLT8 rd, rs1, rs2 | 8-bit Unsigned Compare Less Than |
5 | UCMPLE8 rd, rs1, rs2 | 8-bit Unsigned Compare Less Than & Equal |
3.1.7. 16位乘法指令
Table 7. SIMD 16-bit Multiply Instructions
序号 | 指令 | 说明 |
1 | SMUL16 rd, rs1, rs2 | 16-bit Signed Multiply |
2 | SMULX16 rd, rs1, rs2 | 16-bit Signed Crossed Multiply |
3 | UMUL16 rd, rs1, rs2 | 16-bit Unsigned Multiply |
4 | UMULX16 rd, rs1, rs2 | 16-bit Unsigned Crossed Multiply |
5 | KHM16 rd, rs1, rs2 | Q15 Signed Saturating Multiply |
6 | KHMX16 rd, rs1, rs2 | Q15 Signed Saturating Crossed Multiply |
3.1.8. 8位乘法指令
Table 8. SIMD 8-bit Multiply Instructions
序号 | 指令 | 说明 |
1 | SMUL8 rd, rs1, rs2 | 8-bit Signed Multiply |
2 | SMULX8 rd, rs1, rs2 | 8-bit Signed Crossed Multiply |
3 | UMUL8 rd, rs1, rs2 | 8-bit Unsigned Multiply |
4 | UMULX8 rd, rs1, rs2 | 8-bit Unsigned Crossed Multiply |
5 | KHM8 rd, rs1, rs2 | Q8 Signed Saturating Multiply |
6 | KHMX8 rd, rs1, rs2 | Q8 Signed Saturating Crossed Multiply |
3.1.9. 16位其他指令
Table 9. SIMD 16-bit Miscellaneous Instructions
序号 | 指令 | 说明 |
1 | SMIN16 rd, rs1, rs2 | 16-bit Signed Minimum |
2 | UMIN16 rd, rs1, rs2 | 16-bit Unsigned Minimum |
3 | SMAX16 rd, rs1, rs2 | 16-bit Signed Maximum |
4 | UMAX16 rd, rs1, rs2 | 16-bit Unsigned Maximum |
5 | SCLIP16 rd, rs1, imm4u | 16-bit Signed Clip Value |
6 | UCLIP16 rd, rs1, imm4u | 16-bit Unsigned Clip Value |
7 | KABS16 rd, rs1 | 16-bit Absolute Value |
8 | CLRS16 rd, rs1 | 16-bit Count Leading Redundant Sign |
9 | CLZ16 rd, rs1 | 16-bit Count Leading Zero |
10 | SWAP16 rd, rs1 | Swap Halfword within Word |
3.1.10. 8位其他指令
Table 10. SIMD 8-bit Miscellaneous Instructions
序号 | 指令 | 说明 |
1 | SMIN8 rd, rs1, rs2 | 8-bit Signed Minimum |
2 | UMIN8 rd, rs1, rs2 | 8-bit Unsigned Minimum |
3 | SMAX8 rd, rs1, rs2 | 8-bit Signed Maximum |
4 | UMAX8 rd, rs1, rs2 | 8-bit Unsigned Maximum |
5 | SCLIP8 rd, rs1, imm4u | 8-bit Signed Clip Value |
6 | UCLIP8 rd, rs1, imm4u | 8-bit Unsigned Clip Value |
7 | KABS8 rd, rs1 | 8-bit Absolute Value |
8 | CLRS8 rd, rs1 | 8-bit Count Leading Redundant Sign |
9 | CLZ8 rd, rs1 | 8-bit Count Leading Zero |
10 | SWAP8 rd, rs1 | Swap Halfword within Word |
3.1.11. 8位解压指令
Table 10. SIMD 8-bit Unpacking Instructions
序号 | 指令 | 说明 |
1 | SUNPKD810 rd, rs1 | Signed Unpacking Bytes 1 & 0 |
2 | SUNPKD820 rd, rs1 | Signed Unpacking Bytes 2 & 0 |
3 | SUNPKD830 rd, rs1 | Signed Unpacking Bytes 3 & 0 |
4 | SUNPKD831 rd, rs1 | Signed Unpacking Bytes 3 & 1 |
5 | SUNPKD832 rd, rs1 | Signed Unpacking Bytes 3 & 2 |
6 | ZUNPKD810 rd, rs1 | Unsigned Unpacking Bytes 1 & 0 |
7 | ZUNPKD820 rd, rs1 | Unsigned Unpacking Bytes 2 & 0 |
8 | ZUNPKD830 rd, rs1 | Unsigned Unpacking Bytes 3 & 0 |
9 | ZUNPKD831 rd, rs1 | Unsigned Unpacking Bytes 3 & 1 |
10 | ZUNPKD832 rd, rs1 | Unsigned Unpacking Bytes 3 & 2 |
RISC-V DSP扩展指令集文档:
https://download.csdn.net/download/u011376987/88898800
相关文章:
【RISC-V 指令集】RISC-V DSP 扩展指令集介绍(一)
前言: 本笔记是基于对RISC-V DSP扩展指令集文档总结的,《P-ext-proposal.pdf》文档的关键内容如下: 主要介绍了RISC-V的P扩展指令集及其相关细节。 首先,对P扩展指令进行了概述,并列出了其与其他扩展重复的指令。 …...
RocketMQ - CentOS 7.x 安装单机版并测试
【安装前环境准备】检查是否安装好JDK(必要):java -version查看CPU信息: # cat /proc/cpuinfo # lscpu # getconf _NPROCESSORS_ONLN # cat /sys/devices/system/cpu/online # cat /proc/interrupts | egrep -i cpu查看内存信息: # free -hm …...

[JavaWeb玩耍日记]HTML+CSS+JS快速使用
目录 一.标签 二.指定css 三.css选择器 四.超链接 五.视频与排版 六.布局测试 七.布局居中 八.表格 九.表单 十.表单项 十一.JS引入与输出 十二.JS变量,循环,函数 十三.Array与字符串方法 十四.自定义对象与JSON 十五.BOM对象 十六.获取…...

如何使用ArcGIS Pro创建最低成本路径
虽然两点之间直线最短,但是在实际运用中,还需要考虑地形、植被和土地利用类型等多种因素,需要加权计算最低成本路径,这里为大家介绍一下计算方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载…...

Neoverse CSS N3:实现市场领先能效的最快途径
区分老的架构 从云到边缘,Arm Neoverse 提供无与伦比的性能、效率、设计灵活性和 TCO 优势,正在颠覆传统基础设施芯片。 我们看到云和超大规模服务运营商正在推动更高的计算密度。随着 128 核心 CPU 设计上市(Microsoft Cobalt、阿里巴巴 Y…...

JavaScript实现的计时器效果
之前做过电商网站倒计时的效果,今天在倒计时的基础上,把代码修改了一下,改为计时器效果,实现了以下功能: 1.点击“开始”后,按秒计时且“开始”文字变为“停止”; 2.点击“停止”,计…...
仿函数(Functor(c++))
定义 仿函数(Functor)是一个可以像函数那样被调用的类对象。这意味着它实现了operator(),使得类的对象可以像函数那样被调用。 仿函数的主要特点 它是一个类。它重载了operator()。可以通过创建该类的对象,并像函数那样调用该对…...

智能汽车加速车规级存储应用DS2431P+TR 汽车级EEPROM 存储器IC
DS2431PT&R是一款1024位1-Wire EEPROM芯片,由四页存储区组成,每页256位。数据先被写入一个8字节暂存器中,经校验后复制到EEPROM存储器。该器件的特点是,四页存储区相互独立,可以单独进行写保护或进入EPROM仿真模式…...
js json转换成字符串
js中JSON数据转换成字符串,可以使用JSON.stringify()方法。 var obj {name: "张三", age: 18, gender: "男"}; var jsonString JSON.stringify(obj); console.log(jsonString); // 输出 {"name":"张三","age"…...
Linux笔记--基本操作指令
一、查看日期与日历 1.date指令 显示日期 #用法1:dateCST: China Standard Time时区,中国标准时间 #用法2: date 指定格式 [常用格式]: "%Y-%m-%d"(%F): 2022-07-25 "%H:%M:%S"(%T): 14:53:44 "%F %T" #用法3: date -d "-1 da…...

论文阅读:基于超像素的图卷积语义分割(图结构数据)
#Superpixel-based Graph Convolutional Network for Semantic Segmentation github链接 引言 GNN模型根据节点特征周围的边来训练节点特征,并获得最终的节点嵌入。通过利用具有不同滤波核的二维卷积对来自附近节点的信息进行整合,给定超像素方法生成的…...

记录踩过的坑-macOS下使用VS Code
目录 切换主题 安装插件 搭建Python开发环境 装Python插件 配置解释器 打开项目 打开终端 切换主题 安装插件 方法1 方法2 搭建Python开发环境 装Python插件 配置解释器 假设解释器已经通过Anaconda建好,只需要在VS Code中关联。 打开项目 打开终端...
30天JS挑战(第十四天)------数据的复制
第十四天挑战(数据的复制) 地址:https://javascript30.com/ 所有内容均上传至gitee,答案不唯一,仅代表本人思路 中文详解:https://github.com/soyaine/JavaScript30 该详解是Soyaine及其团队整理编撰的,是对源代码…...

【洛谷 P8682】[蓝桥杯 2019 省 B] 等差数列 题解(数学+排序+辗转相除法)
[蓝桥杯 2019 省 B] 等差数列 题目描述 数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N N N 个整数。 现在给出这 N N N 个整数,小明想知道包含这 N N N 个整数的最短的等差数列有几项? 输…...

Linux:kubernetes(k8s)部署CNI网络插件(4)
在上一章进行了node加入master Linux:kubernetes(k8s)node节点加入master主节点(3)-CSDN博客https://blog.csdn.net/w14768855/article/details/136420447?spm1001.2014.3001.5501 但是他们显示还是没准备好 看一下…...

docker save 命令 docker load 命令 快速复制容器
docker save 命令 docker load 命令 1、docker save 命令2、docker load 命令 1、docker save 命令 docker save 命令用于在系统上把正在使用的某个容器镜像 导出成容器镜像文件保存下载,以便在其他系统上导入这个容器镜像文件 以便快速在其他服务器上启动相同的容…...

Apache Flink连载(三十七):Flink基于Kubernetes部署(7)-Kubernetes 集群搭建-3
🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录...

【机器学习】实验6,基于集成学习的 Amazon 用户评论质量预测
清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现(实验满分),此次代码开源大家可以自行参考学习 有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟…...

【寸铁的刷题笔记】图论、bfs、dfs
【寸铁的刷题笔记】图论、bfs、dfs 大家好 我是寸铁👊 金三银四,图论基础结合bfs、dfs是必考的知识点✨ 快跟着寸铁刷起来!面试顺利上岸👋 喜欢的小伙伴可以点点关注 💝 🌞详见如下专栏🌞 &…...

vue2 + axios + mock.js封装过程,包含mock.js获取数据时报404状态的解决记录,带图文,超详细!!!
vue axios mock.js 以下是封装的过程,记录一下 1、首先先了解什么是mock.js的用途及特点 官网地址:Mock.js (mockjs.com) 作用:生成随机数据,拦截 Ajax 请求 优势: 2、了解axios的原理及使用 官网地址:…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...