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

「RISC-V Arch」RISC-V 规范结构

日期:20230228

规范分类


根据 RISC-V 设计哲学,其规范文档也是高度模块化的:

ISA 规范(2 篇)

  • 非特权规范
  • 特权规范

非 ISA 规范(6篇)

  • Trace规范
  • ABI 规范
  • 外部调试规范
  • PLIC 规范
  • SBI 规范
  • UEFI 协议规范

以及其他未合并的扩展规范,目前不是重点

表 1 规范分类
ISAnone-ISA
正式审批

Volume 1, Unprivileged Specification version 20191213  [PDF]

Volume 2, Privileged Specification version 20211203  [PDF]

表 2,6 个规范
审批未集成见表 3,16 个扩展RISC-V Non-ISA Specifications · GitHub
进行中Specification Status - Home - RISC-V International (riscv.org),20+
表 2 none-ISA 规范

Specification name

Version

Publish Date

Description

RISC-V Community

Source Repository

Efficient Trace for RISC-V2.0June 2022Specifies the signals between the RISC-V core and the encoder, compressed branch trace algorithm, and the packet format used to encapsulate the compressed branch trace information to implement processor tracing.SOC Infrastructure Horizontal Committeeriscv-non-isa/tech-trace-spec
RISC-V ABIs Specification1.0November 2022Provides the processor-specific application binary interface document for RISC-VApplication & Tools Horizontal Committeeriscv-non-isa/riscv-elf-psabi-doc
RISC-V External Debug Support0.13.2March 2019Outlines a standard architecture for external debug support on RISC-V platforms.SOC Infrastructure Horizontal Committeeriscv/tech-debug-spec
RISC-V Platform-Level Interrupt Controller Specification1.0.0February 2023Delineates the operational parameters for a platform-level interrupt controller on RISC-V.Privileged Software Horizontal Committeeriscv/riscv-plic-spec
RISC-V Supervisor Binary Interface Specification1.0.0May 2022Describes the RISC-V Supervisor Binary Interface, known from here on as SBI which enables supervisor-mode (S-mode or VS-mode) software to be portable across all RISC-V implementations by defining an abstraction for platform (or hypervisor) specific functionality.Privileged Software Horizontal Committeeriscv-non-isa/riscv-sbi-doc
RISC-V UEFI Protocol Specification1.0.0May 2022Details all new UEFI protocols required only for RISC-V platforms.Privileged Software Horizontal Committeeriscv-non-isa/riscv-uefi
表3 已审批未集成 ISA 标准
RV32E and RV64E Base Integer Instruction SetsJanuary 2023RV32E/RV64E
“Ztso” Standard Extension for Total Store OrderingJanuary 2023Ztso
RISC-V Wait-on-Reservation-Set (Zawrs) extensionNovember 2022Zawrs
Zmmul ExtensionJune 2022Zmmul
PMP Enhancements for memory access and execution prevention on Machine mode (Smepmp)November 2021Smepmp
RISC-V Base Cache Management Operation ISA ExtensionsNovember 2021Zicbom, Zicbop, Zicboz
RISC-V Bit-Manipulation ISA-extensionsNovember 2021Zba, Zbb, Zbc, Zbs
RISC-V Count Overflow and Mode-Based Filtering ExtensionNovember 2021Sscofpmf
RISC-V Cryptography Extensions Volume I: Scalar & Entropy Source InstructionsNovember 2021Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zksed, Zksh, Zkn, Zks, Zkt, Zk, Zkr
RISC-V State Enable ExtensionNovember 2021Smstateen
RISC-V "stimecmp / vstimecmp" ExtensionNovember 2021Sstc
RISC-V Vector ExtensionNovember 2021Zve32x, Zve32f, Zve64x, Zve64f, Zve64d, Zve, Zvl32b, Zvl64b, Zvl128b, Zvl256b, Zvl512b, Zvl1024b, Zvl, Zv
The RISC-V Instruction Set Manual Volume II: Privileged ArchitectureNovember 2021

Sm1p12, Ss1p12, Sv57, Hypervisor, Svinval, Svnapot, Svpbmt

"Zfh" and "Zfhmin" Standard Extensions for Half-Precision Floating-PointNovember 2021Zfh, Zfhmin
"Zfinx", "Zdinx", "Zhinx", "Zhinxmin": Standard Extensions for Floating-Point in Integer RegistersNovember 2021Zfinx, Zdinx, Zhinx, Zhinxmin
“Zihintpause” Pause HintFebruary 2021Zihintpause

非特权 ISA 规范


非特权 ISA 规范对硬件平台术语、软件执行环境和 Harts、ISA 概述、内存、指令编码、异常/陷入/中断、非定义行为和数值等进行了简要的介绍。

规范重点描述了 RISC-V ISA 子集:RV32I 32 位整数指令集、RV32E 32 位精简整数指令集、RV64I/RV128I 64/128 位整数指令集、M 整数整除法指令集、A 原子操作指令集、Zicsr 控制状态寄存器、F 单精度浮点指令集、D 双精度浮点指令集、Q 双字精度浮点指令集、RVWMO 内存一致性等。

特权 ISA 规范


特权 ISA 规范首先对特权软件栈术语、特权级别、调试模式进行了简要介绍。

其次,对特权模式下的控制状态寄存器进行了介绍。

特权 ISA 分为 M 级别和 S 级别的特权级别。

对于 M 级别,介绍了 M 级别的控制状态寄存器、内存映射寄存器、特权指令、复位、不可屏蔽中断、物理地址属性、物理地址保护。

对于 S 级别,介绍了 S 级别的控制状态寄存器、指令、32/39/48/57 位虚拟内存系统、svnapot 翻译相邻性、svpbmt 基于页内存类型、svinval 小粒度地址转换表内存无效等。

hypervisor 扩展介绍了特权模式、hypervisor和虚拟 S 模式控制状态寄存器、指令、机器级别的控制状态寄存器、两级地址转换、陷入等。

ABI 规范


介绍

本规范为 RISC-V 提供了处理器专用应用二进制接口文档,本规范由以下三部分组成:

  • 调用规约
  • ELF 规范
  • DWARF 规范

该ABI的未来修订版将包括内存模型的规范映射集同步原语。

术语缩略语

 ABI 状态

调用规约 

调用规约主要从寄存器约定、过程调用约定、系统调用约定、C/C++ 类型描述、Linux 特定的 ABI 等方面进行了介绍。

寄存器约定:整数、浮点数、向量寄存器的一些约定。

过程调用约定:整数调用约定、硬件浮点调用约定、ILP32E 调用约定、ABI 命名、默认 ABI 等。

系统调用约定:未在本文档中规定,参考 RISC-V execution environment interface (e.g OS kernel ABI, SBI)。

C/C++ 类型描述:类型大小和对齐方式、类型表示、va_list/va_start/va_arg。

Linux 特定 ABI:类型大小和对齐方式、类型表示。

PLIC 规范


PLIC 指的是平台级别的中断控制器,PLIC 规范主要从以下几个方面进行了介绍:

  • 中断目标和 Hart 上下文、中断网关、中断通知、中断号、中断流程
  • PLIC 操作参数
  • 内存映射
  • 中断优先级
  • 中断等待状态位
  • 中断使能
  • 中断阈值
  • 中断声明过程
  • 中断完成  

SBI 规范


这个规范描述了 RISC-V 超级二进制接口,即SBI,通过 SBI 接口, RISC-V 能够实现 S 模式、VS 模式代码能够在不同的平台之间的可移植性。SBI 遵循了 RISC-V 的设计哲学,由一个非常小的核心部分和一些可选的模块扩展组成。 

SBI 整体来说是一个扩展,也就是说要不实现,要么就要完整实现。如果 sbi_probe_extention 指示出某个功能可用,那么所有版本要求的功能都需要实现,这个版本可以通过 sbi_get_spec_version 来获得。

高特权软件向管理模式提供 SBI 接口支持,这个软件可以叫做 SBI 实现或者 SEE。SEE 可以是图1中的 M 模式下运行时固件,也可以是图2 中的 HS 模式运行的虚拟机管理程序。

图1 无虚拟化扩展 RISC-V 系统
图2 有虚拟化扩展的 RISC-V 系统

 

 SBI 规范不会指定任何硬件发现的方法,S 模式软件必须通过其他工业标准来获取,比如 Device Tree 或者 ACPI。
 

UEFI 协议规范


设备树(DT)或高级配置和电源接口(ACPI)配置表用于向操作系统传达有关硬件的信息:一些

只有在启动时才知道信息,并且在操作系统或者引导器启动之前很早就需要这些信息来解析固件表。

一个例子是 RISC-V 系统上的引导 hartid。在非 UEFI 系统上,这通常作为内核的参数(在 a0中),但是,UEFI 系统需要遵循 UEFI 应用程序调用,因此不能在 a0 中传递。有一个现有的解决方案使用 DTS 中的 /chosen 节点传递此信息。然而,此解决方案不适用于基于 ACPI 的系统,因此,UEFI 协议对于基于 DT 和 ACPI 的系统都是优选的。

RISC-V 系统的 UEFI 协议为引导加载程序或操作系统提供早期信息系统。EDK2 和 u-boot 等固件需要在 RISC-V UEFI 系统上实现该协议。

该协议通常由引导加载程序在调用 ExitBootServices()之前调用。然后他们通过将信息发送给操作系统。

本规范规定的 RISCV_EFI_BOOT_PROTOCOL 版本为 0x00010000。全部的未来的版本必须向后兼容。如果新版本的规范出现倒退兼容性,必须定义新 GUID。

Trace规范


介绍

在复杂系统中,理解程序行为并不容易。在这样的系统中,软件有时不能按预期运行。这可能是由许多因素导致。例如,与其他核心、软件、外围设备的交互、实时事件、较差的实现或以上这些组合。

因为调试器的侵入性特点,并非总是可以使用调试器来观察正在运行的系统。提供程序运行数据的可视化非常重要,这需要在不产生大量数据情况下实现。

一个实现方法是通过采用处理器分支跟踪技术。

通过从指定执行地址进行跟踪,并让其将程序运行的 delta 以消息的形式发出来实现,这些 delta 主要由跳转、调用、返回以及分支指令导致,当然中断和异常也能导致 delta 改变。

因此,系统需要具有一些必备的组件:

  • 一种带有指令跟踪接口的内核,该接口输出所有相关信息,以允许成功创建处理器分支跟踪等。这是一个高带宽接口:在大多数实现中,它将为每个核心执行时钟周期提供大量数据(指令地址、指令类型、上下文信息等)
  • 连接到指令跟踪接口并将信息压缩为较低带宽跟踪包的硬件编码器
  • 连接到此指令跟踪接口并压缩将信息转换成较低带宽跟踪分组;
  • 用于传输的传输通道或用于存储这些跟踪数据包的存储器;
  • 一种解码器,通常是外部 PC上的软件,它接收跟踪数据包,并在知道原始哈特上运行的程序二进制文件的情况下,重建程序流。该解码步骤可以在 hart 执行时离线或实时完成

在 RISC-V 中,所有指令都是无条件执行的,或者至少可以根据程序二进制来确定它们的执行。可以假设增量之间的指令都是顺序执行的。因此,无需对整个指令流进行跟踪,只需要显示分支是否被执行以及间接执行的分支地址即可。当程序计数器的更改量无法从执行二进制文件时,需要为跟踪解码器提供目标地址(即地址下一个有效指令的)。例如,间接分支或跳转指令地址由寄存器的内容而不是嵌入的常量决定程序二进制文件。

中断通常与程序的执行异步发生,而不是故意作为特定指令或事件的结果。可以用相同的方式来考虑异常,即使它们通常可以链接回特定的指令地址。解码器通常不知道中断在指令序列中的何处发生,因此跟踪编码器必须报告正常程序流停止的地址,并给出异步目的地的指示,这可能与报告异常类型一样简单。当发生中断或异常,或处理器停止时,必须在跟踪中包含预先失效的最终指令。

本文档用于指定入口端口(RISC-V 核心和编码器之间的信号)、压缩分支跟踪算法以及用于封装压缩分支跟踪信息的数据包格式。

术语缩略语 

ATB: Arm trace bus

  • branch: an instruction which conditionally changes the execution flow
  • CSR: control/status register
  • decoder: a piece of software that takes the trace packets emitted by the encoder and reconstructs the execution flow of the code executed by the RISC-V hart
  • delta: a change in the program counter that is other than the difference between two instructions placed consecutively in memory
  • discontinuity: another name for ’delta’ (see above)
  • ELF: executable and linkable format
  • encoder: a piece of hardware that takes in instruction execution information from a RISC-V hart and transforms it into trace packets
  • EPC: exception program counter
  • exception: an unusual condition occurring at run time associated with an instruction in a RISC-V hart
  • hart: a RISC-V hardware thread
  • interrupt: an external asynchronous event that may cause a RISC-V hart to experience an unexpected transfer of control
  • ISA: instruction set architecture
  • jump: an instruction which unconditionally changes the execution flow
  • direct jump: an instruction which unconditionally changes the execution flow by changing the PC by a constant value
  • indirect jump: an instruction which unconditionally changes the execution flow by changing the PC to a computed value
  • inferable jump: a jump where the target address is supplied via a constant embedded within the jump opcode • uninferable jump: a jump which is not inferable (see above)
  • LSB: least significant bit
  • MSB: most significant bit
  • packet: the atomic unit of encoded trace information emitted by the encoder
  • PC: program counter
  • program counter: a register containing the address of the instruction being executed
  • retire: the final stage of executing an instruction, when the machine state is updated (some times referred to as ’commit’ or ’graduate’)
  • trap: the transfer of control to a trap handler caused by either an exception or an interrupt
  • updiscon: contraction of ’uninferable PC discontinuity’

规范主要介绍了编码器控制、分支跟踪、Hart 编码器接口、过滤器、时间戳、指令编码器输出包、数据跟踪编码器输出包、参考压缩分支跟踪算法、参数和发现、编码器、代码和包示例、代码片段和传输、未来方向等。

外部调试规范


介绍

当设计从模拟发展到硬件实现时,用户对系统当前状态的控制和理解会急剧下降。帮助启动和调试低级别软件和硬件,在硬件中内置良好的调试支持至关重要。当一个健壮的操作系统在内核上运行,软件可以处理许多调试任务。然而,在许多情况下硬件支持至关重要。

本文档概述了 RISC-V 平台上外部调试支持的标准架构。该体系结构允许多种实现和权衡,这是对

广泛的 RISC-V 实现。同时,本规范定义了接口,允许调试工具和组件基于 RISC-V ISA。

系统设计者可以选择添加额外的硬件调试支持,但本规范定义通用功能的标准接口

系统概述

图 3 显示了外部调试的主要组件,虚线所示的块是可选的。

用户与正在运行调试器(例如 gdb)的调试主机(例如笔记本电脑)交互。调试器与调试转换器(例如 OpenOCD,其可以包括硬件驱动程序)通信,以与调试传输硬件(例如 Olimex USB-JTAG 适配器)通信。调试传输硬件将调试主机连接到平台的调试传输模块(DTM)。DTM 使用调试模块接口(DMI)提供对一个或多个调试模块(DM)的访问。

平台中的每一个 Hart 都由一个 DM 控制,Hart 可能是异构的,hart-DM 映射没有进一步的限制,但通常单个内核中的所有hart都由同一个 DM 控制。在大多数平台中,只有一个 DM 可以控制平台中的所有 Hart 。

DM 在平台中提供对 Hart 的运行控制,抽象命令提供对 GPR 的访问,可以通过抽象命令或将程序写入可选的程序缓冲区来访问其他寄存器。

程序缓冲区允许调试器在 Hart 上执行任意指令,该机制也可用于访问内存,可选的系统总线访问块允许在不使用 RISC-V Hart 执行访问的情况下进行存储器访问。

每个 RISC-V Hart 可以实现一个触发模块。当满足触发条件时,harts 将停止并通知调试模块。

图3 debug overview

 此外,规范描述了调试模块、RISC-V 调试、调试传输模块、硬件实现、调试器实现等。

皮格马利翁效应心理学指出,赞美、赞同能够产生奇迹,越具体,效果越好~
“收藏夹吃灰”是学“器”练“术”非常聪明的方法,帮助我们避免日常低效的勤奋~

  

 下一篇 「RISC-V Arch」SBI 规范解读(上)

相关文章:

「RISC-V Arch」RISC-V 规范结构

日期:20230228 规范分类 根据 RISC-V 设计哲学,其规范文档也是高度模块化的: ISA 规范(2 篇) 非特权规范特权规范 非 ISA 规范(6篇) Trace规范ABI 规范外部调试规范PLIC 规范SBI 规范UEFI 协…...

【C】线程控制

创建线程 #include <pthread.h>int pthread_create(pthread_t * thread,const pthread_attr_t * attr,void *(*start_routine)(void*), void * arg);返回值&#xff1a;成功返回0&#xff0c;失败返回错误号。 thread&#xff1a;成功返回后&#xff0c;新创建的线程的…...

Maven工程打jar包的N种方式

Maven工程打jar包 一、IDEA自带打包插件二、maven插件打包2.1 制作瘦包&#xff08;直接打包&#xff0c;不打包依赖包&#xff09;2.2 制作瘦包和依赖包&#xff08;相互分离&#xff09;2.3 制作胖包&#xff08;项目依赖包和项目打为一个包&#xff09;2.4 制作胖包&#xf…...

一文了解GPU并行计算CUDA

了解GPU并行计算CUDA一、CUDA和GPU简介二、GPU工作原理与结构2.1、基础GPU架构2.2、GPU编程模型2.3、软件和硬件的对应关系三、GPU应用领域四、GPUCPU异构计算五、MPI与CUDA的区别一、CUDA和GPU简介 CUDA&#xff08;Compute Unified Device Architecture&#xff09;&#xf…...

全网资料最全Java数据结构与算法(1)

一、数据结构和算法概述 1.1什么是数据结构&#xff1f; 官方解释&#xff1a; 数据结构是一门研究非数值计算的程序设计问题中的操作对象&#xff0c;以及他们之间的关系和操作等相关问题的学科。 大白话&#xff1a; 数据结构就是把数据元素按照一定的关系组织起来的集合&a…...

【项目实战】SpringMVC拦截器HandlerInterceptor入门介绍

一、拦截器介绍 拦截器是应用程序级框架中常用的拦截用户请求、实施业务流程控制的模式,它可以将一些公共的、重复发生的业务逻辑从业务处理代码中独立出来,使系统的结构更加清晰,程序的复杂度也减小了。 拦截器是一个常见的特性,它可以实现任何自定义功能,而无需调整业…...

阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜也躲不过的魔鬼面试,看的我心服口服

阿里淘宝新势力造型合伙人P8、年薪百万的欧阳娜娜跳槽了&#xff0c;这不是关键。 她参加了网易有道明星语音录音员/代言人的面试&#xff0c;这也不是关键。 关键是她教科书式的面试过程&#xff0c;狠狠地给我们上了一课。 我是无意间刷到的这个视频的时候&#xff0c;就一…...

深度学习笔记:不同的反向传播迭代方法

1 随机梯度下降法SGD 随机梯度下降法每次迭代取梯度下降最大的方向更新。这一方法实现简单&#xff0c;但是在很多函数中&#xff0c;梯度下降的方向不一定指向函数最低点&#xff0c;这使得梯度下降呈现“之”字形&#xff0c;其效率较低 class SGD:"""随机…...

ElasticSearch 学习笔记总结(三)

文章目录一、ES 相关名词 专业介绍二、ES 系统架构三、ES 创建分片副本 和 elasticsearch-head插件四、ES 故障转移五、ES 应对故障六、ES 路由计算 和 分片控制七、ES集群 数据写流程八、ES集群 数据读流程九、ES集群 更新流程 和 批量操作十、ES 相关重要 概念 和 名词十一、…...

深入理解border以及应用

深入border属性以及应用&#x1f44f;&#x1f44f; border这个属性在开发过程中很常用&#xff0c;常常用它来作为边界的。但是大家真的了解border吗&#xff1f;以及它的形状是什么样子的。 我们先来看这样一段代码&#xff1a;&#x1f44f; <!--* Author: syk 185901…...

如何复现论文?什么是论文复现?

参考资料&#xff1a; 学习篇—顶会Paper复现方法 - 知乎 如何读论文&#xff1f;复现代码&#xff1f;_复现代码是什么意思 - CSDN 我是如何复现我人生的第一篇论文的 - 知乎 在我看来&#xff0c;论文复现应该有一个大前提和分为两个层次。 大前提是你要清楚地懂得自己要…...

22.2.28打卡 Codeforces Round #851 (Div. 2) A~C

A题 One and Two 题面翻译 题目描述 给你一个数列 a1,a2,…,ana_1, a_2, \ldots, a_na1​,a2​,…,an​ . 数列中的每一个数的值要么是 111 要么是 222 . 找到一个最小的正整数 kkk&#xff0c;使之满足&#xff1a; 1≤k≤n−11 \leq k \leq n-11≤k≤n−1 , anda1⋅a2⋅……...

Learining C++ No.12【vector】

引言&#xff1a; 北京时间&#xff1a;2023/2/27/11:42&#xff0c;高数考试还在进行中&#xff0c;我充分意识到了学校的不高级&#xff0c;因为题目真的没什么意思&#xff0c;虽然挺平易近人&#xff0c;但是……&#xff0c;考试期间时间比较放松&#xff0c;所以不能耽误…...

【数电基础】——逻辑代数运算

目录 1.概念 1.基本逻辑概念 2.基本逻辑电路&#xff08;与或非&#xff09; 逻辑与运算 与门电路&#xff1a; 逻辑或运算 或门电路&#xff1a; ​逻辑非运算&#xff08;逻辑反&#xff09; 非门电路​编辑 3.复合逻辑电路&#xff08;运算&#xff09; 与非逻辑…...

【Redis】什么是缓存与数据库双写不一致?怎么解决?

1. 热点缓存重建 我们以热点缓存 key 重建来一步步引出什么是缓存与数据库双写不一致&#xff0c;及其解决办法。 1.1 什么是热点缓存重建 在实际开发中&#xff0c;开发人员使用 “缓存 过期时间” 的策略来实现加速数据读写和内存使用率&#xff0c;这种策略能满足大多数…...

互联网衰退期,测试工程师35岁之路怎么走...

国内的互联网行业发展较快&#xff0c;所以造成了技术研发类员工工作强度比较大&#xff0c;同时技术的快速更新又需要员工不断的学习新的技术。因此淘汰率也比较高&#xff0c;超过35岁的基层研发类员工&#xff0c;往往因为家庭原因、身体原因&#xff0c;比较难以跟得上工作…...

动态规划(以背包问题为例)

1) 要求达到的目标为装入的背包的总价值最大&#xff0c;并且重量不超出2) 要求装入的物品不能重复动态规划(Dynamic Programming)算法的核心思想是&#xff1a;将大问题划分为小问题进行解决&#xff0c;从而一步步获取最优解的处理算法。动态规划算法与分治算法类似&#xff…...

Java异常

异常的体系结构 在java的Throwable下有Error和Exception两个子类 Error(错误):程序运行中出现了严重的问题,非代码性错误,无法处理,常见的有虚拟机运行错误和内存溢出等Exception(异常):是由于代码本身造成的问题,可以进行处理,异常一个可以分为运行时异常和编译时异常 运行…...

别克GL8改装完工,一起来看看效果

①豪华商务头等舱 别克GL8作为商务车&#xff0c;不管是家用还是商务接待&#xff0c;原车内饰都太掉档次了&#xff0c;所以车主要求全部换掉。>>织布座椅换成航空座椅 主副驾&#xff1a;改装纳帕皮 中排&#xff1a;改装水晶宝座豪华版航空座椅&#xff0c;带通风、加…...

mac 中 shell 一些知识

mac 设置环境变量首先得看你所使用的 shell shell 是一个命令行解释器&#xff0c;顾名思义就是机器外面的一层壳&#xff0c;用于人机交互&#xff0c;只要是人与电脑之间交互的接口&#xff0c;就可以称为 shell。表现为其作用是用户输入一条命令&#xff0c;shell 就立即解…...

CentOS 配置FTP(开启VSFTPD服务)

网上已经有很多关于VSFTPD的配置&#xff0c;但有两个通病&#xff0c;要么就是原理介绍太多&#xff0c;要么就是不完整&#xff0c;操作下来又要查询多篇文章才能用。 我这里不讲原理&#xff0c;只记录操作&#xff0c;尽可能通过复制下面的操作可以实现FTP读写功能。方便自…...

Http的请求方法

Http的请求方法对应的数据传输能力把Http请求分为Url类请求和Body类请求 1.Url类请求包括但不限于GET、HEAD、OPTIONS、TRACE 等请求方法 2.Body类请求包括但不限于POST、PUSH、PATCH、DELETE 等请求方法。 3.原因&#xff1a;get请求没有请求体&#xff08;好像也可以…...

Python字典-- 内附蓝桥题:统计数字

字典 ~~不定时更新&#x1f383;&#xff0c;上次更新&#xff1a;2023/02/28 &#x1f5e1;常用函数&#xff08;方法&#xff09; 1. dic.get(key) --> 判断字典 dic 是否有 key&#xff0c;有返回其对应的值&#xff0c;没有返回 None 举个栗子&#x1f330; dic …...

文本处理工具

Grep工具的基本使用grep作用&#xff1a;grep是行过滤工具&#xff1b;用于根据关键字进行行过滤提示&#xff1a;通过alias命令设置grep别名&#xff0c;搜索参数时带颜色显示alias grepgrep colorauto 命令语法格式&#xff1a;grep [选项] 参数 文件名grep命令选项&#xff…...

C++STL详解(三)——vector的介绍和使用

文章目录vector的介绍vector的使用vector的定义方式vector的空间增长问题reserve和resizevector的迭代器使用begin 和endrbegin和rendinsert 和erasefind函数元素访问vector迭代器失效问题1&#xff1a;inserse插入扩容时空间销毁造成野指针问题2&#xff1a;erase删除或者inse…...

GEBCO海洋数据下载

一、数据集简介 GEBCO&#xff08;General Bathymetric chart of the Oceans&#xff09;旨在为世界海洋提供最权威的、可公开获取的测深数据集。 目前的网格化测深数据集&#xff0c;即GEBCO_2022网格&#xff0c;是一个全球海洋和陆地的地形模型&#xff0c;在15角秒间隔的…...

【C++容器】vector、map、hash_map、unordered_map四大容器的性能分析【2023.02.28】

摘要 vector是标准容器对数组的封装&#xff0c;是一段连续的线性的内存。map底层是二叉排序树。hash_map是C11之前的无序map&#xff0c;unordered_map底层是hash表&#xff0c;涉及桶算法。现对各个容器的查询与”插入“性能做对比分析&#xff0c;方便后期选择。 测试方案…...

ACM-蓝桥杯训练第一周

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石.CSDN &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​ &#x1f4e3;系列专栏&#xff1a;ACM周训练题目合集.CSDN &#x1f4ac;总结&#xff1a…...

python基础—字符串操作

&#xff08;1&#xff09;字符串&#xff1a; Python内置了一系列的数据类型&#xff0c;其中最主要的内置类型是数值类型、文本序列&#xff08;字符串&#xff09;类型、序列&#xff08;列表、元组和range&#xff09;类型、集合类型、映射&#xff08;字典&#xff09;类型…...

【Spring】通过JdbcTemplate实现CRUD操作

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 通过JdbcTemplate实现 增删查改一、添加相关依…...

实战|掌握Linux内存监视:free命令详解与使用技巧

文章目录前言一. free命令介绍二. 语法格式及常用选项三. 参考案例3.1 查看free相关的信息3.2 以MB的形式显示内存的使用情况3.3 以总和的形式显示内存的使用情况3.4 周期性的查询内存的使用情况3.5 以更人性化的形式来查看内存的结果输出四. free在脚本中的应用总结前言 大家…...

嵌入式入门必看!调试工具安装——基于 AM64x核心板

本章节内容是为评估板串口安装USB转串口驱动程序。驱动适用于CH340、CH341等USB转串口芯片。 USB转串口驱动安装 适用安装环境:Windows 7 64bit、Windows 10 64bit。 本文测试板卡为创龙科技SOM-TL64x核心板,它是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cort…...

JAVA开发(java类加载过程)

1、java语言的平台无关性。 因为java语言可以跑在java虚拟机上&#xff0c;所以只要能装java虚拟机的地方就能跑java程序。java语言以后缀名 .java为文件扩展名。通过java编译器javac编译成字节码文件.class 。java字节码文件通过java虚拟机解析运行。所以java语言可以说是编译…...

【vulhub漏洞复现】Thinkphp 2.x 任意代码执行

一、漏洞详情影响版本 thinkphp 2.x但是由于thinkphp 3.0版本在Lite模式下没有修复该漏洞&#xff0c;所以也存在该漏洞漏洞原因&#xff1a;e 和 /e模式匹配路由&#xff1a;e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行; /e 可执行模式&#xff0c…...

LeetCode 1145. 二叉树着色游戏 -- 简单搜索

二叉树着色游戏 提示 中等 199 相关企业 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中&#xff0c;给出二叉树的根节点 root&#xff0c;树上总共有 n 个节点&#xff0c;且 n 为奇数&#xff0c;其中每个节点上的值从 1 到 n 各不相同。 最开始时&#xff1a; 「一…...

HyperGBM的三种Early Stopping方式

本文作者&#xff1a;杨健&#xff0c;九章云极 DataCanvas 主任架构师 很多机器学习框架如都提供了Early Stopping策略&#xff0c;主要用来防止模型过拟合。和模型训练提前停止的目标不同&#xff0c;AutoML的Early Stopping策略更多考虑的是算力消耗和模型质量的平衡。 通…...

心系区域发展,高德用一体化出行服务平台“聚”力区域未来

交通&#xff0c;是城市的血脉。通过对人、资源、产业的连接&#xff0c;交通建设往往是城市和区域经济发展的前提。不过&#xff0c;在度过了“要想富&#xff0c;先修路”的初级建设阶段后&#xff0c;交通产业内部也出现了挑战&#xff0c;诸如城市秩序、发展成本、用户使用…...

AI画图_stable-diffusion-webui安装使用指南(1)

本文章适用于: 有一定学习能力和钻研能力&#xff0c;遇到问题能合理使用搜索引擎尝试解决问题的人想在windows系统中尝试使用AI作画工具stable-diffusion-webui进行绘画的人有一定的计算机基础&#xff08;会魔法上网、知道 python和Git&#xff09;和英文阅读能力的人显卡为…...

浅谈MySQL主从复制

目录 1.MySQL主从复制是什么 2.MySQL主从复制的意义 3.MySQL主从复制原理 4.数据同步一致性问题 5.实现方式 1.MySQL主从复制是什么 MySQL主从复制就是指数据可以从一台MySQL的主节点复制到一个或多个从节点。 MySQL默认采用异步复制方式&#xff0c;这样从节点不用一直访…...

docker-compose安装kafka和php简单测试

docker-compose.yml内容&#xff1a; version: 3.1 services: zookeeper: container_name: zookeeper image: zookeeper:3.6 ports: - 2181:2181 kafka: image: wurstmeister/kafka container_name: kafka depends_on: - zookeeper …...

【蓝桥云课】快速幂

问题描述&#xff1a;快速求aba^bab 方法一&#xff1a;常规方法相乘a∗a∗a∗a∗...∗aa*a*a*a*...*aa∗a∗a∗a∗...∗a 方法二&#xff1a;分治方法求aba^bab ab{1,b0a,b1ab2⋅ab2,b为偶数ab−12⋅ab12,b为奇数a^b\begin{cases} 1& \text{,b0}\\ a& \text{,b1}\\ a…...

解决windows安装wxPython安装失败、速度过慢及PyCharm上wx包爆红问题

网上关于wxPython安装失败&#xff0c;安装速度过慢&#xff0c;以及安装成功后PyCharm中import wx仍然爆红的文章有很多&#xff0c;也特别杂&#xff0c;解决起来特别困难&#xff0c;今天在这里对问题的处理进行一个整合&#xff0c;希望能帮助到大家。 安装wxPython这里运用…...

封装小程序request请求[接口函数]

在这篇小程序API的Promise化文章中讲到小程序官方提供的异步API都是基于回调函数来实现的&#xff0c;在大量的使用这种回调函数就会造成回调地狱的问题&#xff0c;以及代码的可读性和可维护性差&#xff0c;通过对小程序API的Promise化能解决&#xff0c;那么本篇是来讲进行对…...

嵌入式 STM32 通讯协议--MODBUS

目录 一、自定义通信协议 1、协议介绍 2、网络协议 3、自定义的通信协议 二、MODBUS通信协议 1、概述 2、MODBUS帧结构 协议描述 3、MODBUS数据模型 4、MODBUS事务处理的定义 5、MODBUS功能码 6、功能码定义 7、MODBUS数据链路层 8、MODBUS地址规则 9、MO…...

互联网人看一看,这些神器你用过哪些?

很多小伙伴在剪辑视频的过程中经常可以看到一些语音素材&#xff0c;经常刷视频的小伙伴也可以看到很多视频中经常出现一些AI合成的声音或者音效&#xff0c;这些配音可以给视频增添很多亮点&#xff01;那么大家都是怎么将文字转语音的呢&#xff1f;今天给大家分享5款非常专业…...

Kotlin学习:5.2、异步数据流 Flow

Flow一、Flow1、Flow是什么东西&#xff1f;2、实现功能3、特点4、冷流和热流5、流的连续性6、流的构建器7、流的上下文8、指定流所在协程9、流的取消9.1、超时取消9.2、主动取消9.3、密集型任务的取消10、背压和优化10.1、buffer 操作符10.2、 flowOn10.3、conflate 操作符10.…...

EPICS synApps介绍

一、synApps是什么&#xff1f; 1&#xff09; 一个用于同步束线用户的EPICS模块集合。 2&#xff09; EPICS模块 alive, autosave, busy, calc, camac, caputRecorder, dac128V, delaygen, dxp, ip, ip330, ipUnidig, love, mca, measComp, modbus, motor, optics, quadEM,…...

Pycharm和跳板机 连接内网服务器

Pycharm和跳板机 连接内网服务器 建立配置文件 本地配置 .ssh 文件夹下配置 config 文件 Host jumpHostName xxxPort 22User xxxServerAliveInterval 30IdentityFile C:\Users\15284\.ssh\id_rsa # 通过密钥连接Host server # 同样&#xff0c;任意名字&#xff0c;随…...

mysql去重查询的三种方法

文章目录前言一、插入测试数据二、剔除重复数据方法1.方法一&#xff1a;使用distinct2.方法二&#xff1a;使用group by3.方法三&#xff1a;使用开窗函数总结前言 数据库生成环境中经常会遇到表中有重复的数据&#xff0c;或者进行关联过程中产生重复数据&#xff0c;下面介…...

PHP反序列化

文章目录简介POP链构造和Phar://题目[CISCN2019 华北赛区 Day1 Web1]Dropbox字符串逃逸简介 php序列化的过程就是把数据转化成一种可逆的数据结构&#xff0c;逆向的过程就叫做反序列化。 php将数据序列化和反序列化会用到两个函数&#xff1a; serialize 将对象格式化成有序的…...