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

Versal - 基础3(AXI NoC 专题+仿真+QoS)

目录

1. 简介

2. 示例

2.1 示例说明

2.2 创建项目

2.2.1 平台信息

2.2.2 AXI NoC Automation

2.2.3 创建时钟和复位

2.3 配置 NoC

2.4 配置 AXI Traffic

2.5 配置 Memory Size

2.6 Validate BD

2.7 添加观察信号

2.8 运行仿真

2.9 查看结果

2.9.1 整体波形

2.9.2 事务详情

2.9.3 事务全过程解读

3. IP 介绍

3.1 AXI Traffic Generator

3.1.1 IP 简介

3.1.2 Config Tab

3.1.3 可综合配置

3.1.4 不可综合配置

3.2 AXI BRAM Controller

3.2.1 IP 简介

3.2.2 IP 配置

3.3 Embedded Memory Gen

3.3.1 IP 简介

3.3.2 单端口 RAM

3.3.3 简单双端口 RAM

3.3.4 真双端口 RAM

3.3.5 单端口 ROM

3.3.6 双端口 ROM

3.3.7 工作模式

4. 总结


1. 简介

Basic NoC Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_Designhttps://github.com/Xilinx/Vivado-Design-Tutorials/tree/2024.2/Versal/Memory_and_NoC/NoC_Design_Flows/IPI/Module_01_Basic_NoC_DesignAXI NoC 和 AXIS NoC

  • AXI NoC 支持 AXI 内存映射协议
  • AXIS NoC 支持 AXI4-Stream 协议

每实例指定了一组连接,这些连接将映射到物理 NoC 上,并为每条连接指定了 QoS 要求。

一个 Block Design 可以包含任意数量的这两种类型的实例。

IP 集成器自动汇总所有逻辑 NoC 实例的连接性和 QoS 信息,形成 NoC 编译器的统一流量规范。

MCs 被集成到 AXI NoC 核心中。一个AXI NoC IP实例可以配置为包含一个、两个或四个集成MC实例。

如果选择了两个或四个MC实例,它们将被配置为形成单一的交错内存。在这种情况下,内存控制器被配置得相同,并映射到相同的地址。

Interleaving 由 NoC 控制。

2. 示例

2.1 示例说明

该设计使用 AXI4 流量发生器读写块 RAM。具体步骤为:

  • 使用模拟时钟生成器、AXI4 流量生成器、AXI NoC、AXI4 Block RAM 控制器和内存生成器创建块 RAM 实例。
  • 采用自顶向下设计流程,在模块设计画布中实例化 AXI NoC IP。
  • 借助 IP 集成器推断 NoC、时钟发生器和互连。
  • 创建设计后进行仿真,以验证是否满足带宽要求。

2.2 创建项目

2.2.1 平台信息

1)软件版本为:Vivado 2024.2

2)Versal 器件为:XCVE2302-SFVA784-1LP-E-S

3)创建项目,新建 Block Design

4)添加 IP:AXI NoC IP

2.2.2 AXI NoC Automation

对 AXI NoC IP 进行自动化设计:

  • 去掉 CIPS 勾选框
  • AXI Tranffic Generator:1
  • AXI BRAM Controller:1
  • MC Type:None

(注意:Sources 和 Destinations,各选了一个)

得到如下结果:

生成了一些新的 IP:

  • Source 端:
    • Simulation Trigger For NoC AXI TG
    • Performance AXI Traffic Generator
  • Destination 端:
    • AXI BRAM Controller
    • Embeded Memory Generator
  • 时钟:
    • Simulation Clock and Reset Generator

2.2.3 创建时钟和复位

上一个步骤中生成的 Block Design,没有时钟和复位,执行 Run Connection Automation 可以自动生成。全部使用保持默认设置即可:

结果如下图所示:

生成了两个新的 IP:

  • Clock Wizard
  • Processor System Reset

Clock Wizard 的输出时钟驱动 Simulation Clock and Reset Generator 的输入时钟。

这有两个目的:

  • 在仿真阶段,时钟由 Simulation Clock and Reset Generator 驱动。
  • 在 Impl 阶段,时钟由 Clock Wizard 驱动,Simulation Clock and Reset Generator 将直通。

由于 Clock Wizard 的输入时钟和复位源尚未连接,运行连接自动化链接再次变为活动状态继续执行 Run Connection Automation。保持默认即可:

最终的 Block Design 如下:

2.3 配置 NoC

1)NoC 配置决定了设计要使用一组参数:

  • 入口和出口端口的数量和类型
  • 输入时钟与每个端口的关联
  • 入口和出口端口之间的路由连接
  • 每个连接所需的 QoS

2)Inputs / Outputs Tab 可查看输入输出端口的配置

在本例中,定义了一个输入和一个输出,均连接到 PL 域,关联时钟为 aclk0。

偶校验:启用从 AXI 主设备到 NMU 连接的偶校验。可用的校验选项有:

  • 无:不进行奇偶校验
  • 地址:启用 AXI 地址奇偶校验
  • 数据:启用 AXI 数据奇偶校验
  • 地址和数据:启用 AXI 地址和数据奇偶校验

3)Connectivity Tab

显示哪些 NoC 入口接口(例如 S00_AXI )将路由到哪些出口接口(例如 M00_AXI )。

4)QoS Tab

QoS 选项卡允许您为每个 NoC 连接选择服务质量 (QoS) 设置。第一行显示入口端口 ( S00_AXI ) 的 QoS 设置。请注意,默认的读取和写入流量类别是 BEST_EFFORT。

显示了来自所选入口端口的每个输出连接的 QoS 属性集。在此设计中,只有一个输出连接 ( M00_AXI ) 对应于块 RAM 控制器的 AXI4 端口。这里可以指定所需的读写带宽。默认值 1720 MB/s 就足够了。

2.4 配置 AXI Traffic

Performance AXI Traffic Generator v1.0

1)Non-systhesizable TG Options

2)Number of Write Transactions

执行 100 次传输操作。

2.5 配置 Memory Size

1)更改 BRAM 大小

无法在 Embedded Memory Generator 中直接修改,即使修改后,Validate 之后又会恢复修改之前的值。应当在 Address Editor 中修改。

此页面中, Memory Size(存储器大小)为 4K bytes。

当 validate_bd_design 运行时,该值将传播到:

  • AXI BRAM Controller
  • Embeded Memory Generator

2)查看 AXI BRAM Controller IP 中的结果

Memory Size = Data_Width × Memory_Depth =  32 bit × 1024 = 4K bytes。

3)查看 Embeded Memory Generator IP 中的结果

Write Width = Read Width = 32 bit。

Memory Size = Width × Memory_Depth =  32 bit × 1024 = 4K bytes。

2.6 Validate BD

NoC Validate the Block Design 会调用 NoC Compiler 来查找 NoC 的最佳配置。

NoC Compiler 执行以下功能:

  • 完成逻辑入口和出口端口到物理 NMU 和 NSU 资源的映射
  • 在 QoS 约束下,为所有指定连接找到 NoC 的最优路径
  • 配置 NoC 内部资源,使其能够实现路由方案

通过单击工具栏上的 Validate Design 图标(F6)来执行验证。

验证后,NoC 查看器显示编译结果,QoS 标签显示达成的服务质量。

2.7 添加观察信号

Vivado 仿真器有一个事务视图功能,可以更清晰地查看 AXI 总线事务的波形。

仿真时,使用事务视图观察流量发生器和 NoC 之间的接口。

在 Block Design 中,选中下图所示的红线部分,右键单击并标记 Mark Simulation。

这会指示仿真器捕获并显示这条线上的 AXI-MM 事务。

仿真前,需要创建一个顶层 HDL wrapper。

2.8 运行仿真

1)仿真设置

注意仿真设置的顶层(design_1_wrapper_sim_wrapper): 

2)生成行为 RTL 模型并启动模拟器

进入仿真 GUI: 

包含两个 

3)运行仿真

4)复位仿真

2.9 查看结果

2.9.1 整体波形

  • Outstanding Reads:未完成的读取过程
  • Outstanding Writes:未完成的写入过程

2.9.2 事务详情

1)鼠标悬停在某个事务上会弹出一个窗口,显示该事务的详细信息。

2)高亮显示事务流:点击事务的某个部分(比如 “Write Data”)会高亮显示相关的部分。

2.9.3 事务全过程解读

  • 红色序号1:Performance AXI Traffic Generator 发起读写事务,数据位宽 512 bit
  • 红色序号2:数据通过 AXI NoC 到达 AXI BRAM 控制器,数据位宽是 32 bit

整个写事务,耗时 103.354ns,103.354ns/3.334=31clks 个时钟周期。

写事务过程详细图示:

3. IP 介绍

3.1 AXI Traffic Generator

3.1.1 IP 简介

Performance AXI Traffic Generator,高性能 AXI 流量发生器。

它有两个版本:

  • 仅用于仿真的不可综合版本
  • 可用于仿真和在硬件中运行的可综合版本

Vivado 中包含两种 AXI 流量发生器:

《AXI Traffic Generator LogiCORE IP Product Guide (PG125)》

《Performance AXI Traffic Generator LogiCORE IP Product Guide (PG381)》

后者提供更多的特性:

  • 更精细的流量控制: 可以更精确地控制流量的类型、数量、时序等
  • 更灵活的配置选项: 可以根据不同的测试场景进行更灵活的配置
  • 对 Versal 器件的: 评估基于 NoC 的解决方案的性能

参考:

Performance AXI Traffic Generator - IP Release Notes and Known Issueshttps://adaptivesupport.amd.com/s/article/75781?language=zh_CNhttps://adaptivesupport.amd.com/s/article/75781?language=zh_CNhttps://adaptivesupport.amd.com/s/article/75781?language=zh_CN

3.1.2 Config Tab

3.1.3 可综合配置

3.1.4 不可综合配置

3.2 AXI BRAM Controller

3.2.1 IP 简介

参考:《AXI Block RAM (BRAM) Controller v4.1 Product Guide(PG078)》

1)AXI4 BRAM Controller 框图

2)Features

  • 支持 32 位、64 位、128 位、256 位、512 位和 1024 位 BRAM 数据宽度。
  • 特殊的突发处理: 它将一种叫做“FIXED”的传输方式特殊处理为“INCR”方式,并且不支持“FIFO”方式。这是一种为了简化自身设计而采取的折衷方案。
  • 特定的传输长度: 对于不同的传输方式(WRAP、FIXED、INCR),它有预设的连续传输次数(分别为 16、16 和 256 次)。这就像预先设定好每次搬运多少箱货物。
  • 支持窄突发: 即使需要传输的数据量小于存储器一次能处理的数据量,它也能有效地进行处理。
  • 简单直接: 它只使用基本的通信信号,没有使用一些高级的优化技术(如用户信号、重排序、缓存或缓冲)。

3)Supported Memory Size

| Data Width (Bits) | Memory Depths (Words)                          |
|-------------------|------------------------------------------------|
| 32                | 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k |
| 64                | 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k |
| 128               | 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k       |
| 256               | 512, 1k, 2k, 4k, 8k, 16k, 32k, 64k             |
| 512               | 512, 1k, 2k, 4k, 8k, 16k, 32k                  |
| 1024              | 512, 1k, 2k, 4k, 8k, 16k                       |
| 2048              | 512, 1k, 2k, 4k, 8k                            |

3.2.2 IP 配置

3.3 Embedded Memory Gen

参考:《Embedded Memory Generator LogiCORE IP Product Guide (PG326)》

3.3.1 IP 简介

Embedded Memory Generator IP 是一个高级存储器构造器,它使用 AMD 器件中的 Block RAM、UltraRAM 和 Distributed RAM 资源生成 Area and Performance-optimized 的存储器。

典型应用包括一下内容:

3.3.2 单端口 RAM

1)定义: 就像一条单行道,只有一个入口/出口。数据只能按顺序写入和读取,不能同时进行读写操作。

2)应用场景:

  • 处理器暂存 RAM(Scratch RAM): 用于处理器执行运算时的临时数据存储,速度快,但容量通常不大。例如,在进行复杂的数学计算时,中间结果可以先存放在暂存 RAM 中,运算完成后再取出。
  • 查找表(Look-Up Table, LUT): 用于存储预先计算好的数据,通过输入地址直接查找对应的值,提高运算速度。例如,在图像处理中,可以使用 LUT 来快速进行颜色转换。

3.3.3 简单双端口 RAM

1)定义: 像一条有两条独立的入口/出口的通道,可以同时进行读写操作,但通常有一些限制。例如,可能只允许一个端口读,另一个端口写,或者读写操作不能在同一地址进行。

2)应用场景:

  • 内容可寻址存储器(Content Addressable Memory, CAM): 与普通 RAM 通过地址查找数据不同,CAM 通过内容查找数据。输入一个数据,CAM 会返回该数据所在的地址。简单双端口 CAM 可以实现快速查找,但写入操作可能需要一些额外的控制。
  • FIFO(First-In, First-Out): 是一种先进先出的数据结构,数据从一个端口写入,从另一个端口按相同的顺序读出,就像排队一样。简单双端口 RAM 可以方便地实现 FIFO 功能,用于数据缓冲和传输。

3.3.4 真双端口 RAM

1)定义: 像一条有两条完全独立的双向车道,两个端口可以完全独立地同时进行读写操作,互不干扰。
2)应用场景:

  • 多处理器存储: 允许多个处理器同时访问同一块存储空间,实现数据的共享和交换。例如,在一个多核处理器系统中,不同的核心可以通过真双端口 RAM 共享数据,提高系统的并行处理能力。

3.3.5 单端口 ROM

1)定义: 只能读取数据,不能写入数据,数据在出厂前或烧录时就已经确定。类似于一张只读光盘。
2)应用场景:

  • 程序代码存储: 用于存储程序的指令代码,处理器从 ROM 中读取指令并执行。
  • 初始化 ROM: 用于存储系统的初始化代码和配置信息,在系统启动时加载。

3.3.6 双端口 ROM

1)定义: 有两个独立的读取端口,可以同时被两个不同的设备读取,但数据仍然是只读的。

2)应用场景:

  • 在两个处理器/系统之间共享的单个 ROM: 允许多个处理器或系统共享同一份只读数据,例如共享同一份固件代码或查找表,节省存储空间。

3.3.7 工作模式

该 IP 核在 Block Design 中使用的模式。

使用 IP 集成器时有两种模式可用,默认模式是 Memory Controller。

1)存储器控制器模式

  • 如果使用 AXI BRAM Controller 或 LMB BRAM Controller,请选择此模式。
  • 所有端口参数都将灰显,因为它们是从主设备生成的。

2)独立模式

  • 如果您使用自定义接口控制器,请选择此模式。可以选择和更新所有可用的参数。

4. 总结

本示例,使用 AXI4 流量发生器,通过 NoC 读写块 RAM。

  • IP 包括:模拟时钟生成器、AXI4 流量生成器、AXI NoC、AXI4 Block RAM 控制器和内存生成器创建块 RAM。
  • 通过 IP 集成器推断 NoC、时钟发生器和互连。
  • 创建设计后进行仿真,详细分析传输流程和时延。

相关文章:

Versal - 基础3(AXI NoC 专题+仿真+QoS)

目录 1. 简介 2. 示例 2.1 示例说明 2.2 创建项目 2.2.1 平台信息 2.2.2 AXI NoC Automation 2.2.3 创建时钟和复位 2.3 配置 NoC 2.4 配置 AXI Traffic 2.5 配置 Memory Size 2.6 Validate BD 2.7 添加观察信号 2.8 运行仿真 2.9 查看结果 2.9.1 整体波形 2.9…...

知识库建设对提升团队协作与创新能力的影响分析

内容概要 在当今快速变革的商业环境中,知识库建设的重要性愈发凸显。它不仅是信息存储的载体,更是推动组织内部沟通与协作的基石。通过系统整理与管理企业知识,团队成员能够便捷地访问相关信息,使得协作过程更为流畅,…...

Java 实现Excel转HTML、或HTML转Excel

Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,以便更好地利用和展示数据。本文将介绍如何通过 Java 实现 E…...

stack 和 queue容器的介绍和使用

1.stack的介绍 1.1stack容器的介绍 stack容器的基本特征和功能我们在数据结构篇就已经详细介绍了,还不了解的uu, 可以移步去看这篇博客哟: 数据结构-栈数据结构-队列 简单回顾一下,重要的概念其实就是后进先出,栈在…...

云计算与虚拟化技术讲解视频分享

互联网各领域资料分享专区(不定期更新): Sheet 前言 由于内容较多,且不便于排版,为避免资源失效,请用手机点击链接进行保存,若链接生效请及时反馈,谢谢~ 正文 链接如下(为避免资源失效&#x…...

python flask 使用 redis写一个例子

下面是一个使用Flask和Redis的简单例子: from flask import Flask from redis import Redisapp Flask(__name__) redis Redis(hostlocalhost, port6379)app.route(/) def hello():# 写入到Redisredis.set(name, Flask Redis Example)# 从Redis中读取数据name re…...

深入解析 Linux 内核内存管理核心:mm/memory.c

在 Linux 内核的众多组件中,内存管理模块是系统性能和稳定性的关键。mm/memory.c 文件作为内存管理的核心实现,承载着页面故障处理、页面表管理、内存区域映射与取消映射等重要功能。本文将深入探讨 mm/memory.c 的设计思想、关键机制以及其在内核中的作用,帮助读者更好地理…...

跟我学C++中级篇——64位的处理

一、计算机的发展 计算机从二进制为基础开始描述整个世界,但正如现实世界一样,十进制为主的世界也会有万千百概念。所以在实际的应用中,会出现32位和64位的计算机系统。当然,前面还有过16位、8位和4位等,以后还可以会…...

指针的介绍2后

1.二级指针 1.1二级指针的介绍 二级指针是指向指针的指针 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>int main() {int a 100;int* pa &a;int** ppa &pa;printf("a %d\n", a);printf("&a(pa) %p\n", pa);prin…...

Linux 学习笔记__Day3

十八、设置虚拟机的静态IP 1、VMware的三种网络模式 安装VMware Workstation Pro之后&#xff0c;会在Windows系统中虚拟出两个虚拟网卡&#xff0c;如下&#xff1a; VMware提供了三种网络模式&#xff0c;分别是&#xff1a;桥接模式&#xff08;Bridged&#xff09;、NAT…...

Ubuntu x64下交叉编译ffmpeg、sdl2到目标架构为aarch64架构的系统(生成ffmpeg、ffprobe、ffplay)

一、编译SDL2-2.0.9 &#xff08;1&#xff09;&#xff0c; ./configure --prefix/home/z/Desktop/sdl2 --enable-sharedyes --enable-nasmno --enable-audiono --enable-ossno --enable-alsano --enable-alsa-sharedno --enable-pulseaudiono --enable-pulseaudio-sharedno …...

【时时三省】(C语言基础)文件的随机读写

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 fseek 根据文件指针的位置和偏移量来定位文件指针 示例&#xff1a; 这个输出的就是ade seek&#xff3f;cur的意思是从当前偏移量 2就是从a往后偏移两个就是d 偏移量 SEEK&#xff3f;CUR…...

HPO3:提升模型性能的高效超参数优化工具

引言 在当今快速发展的数据科学和机器学习领域中&#xff0c;超参数优化&#xff08;Hyperparameter Optimization, HPO&#xff09;是构建高性能模型不可或缺的一环。为了简化这一复杂过程&#xff0c;恒通网络科技团队推出了HPO3模块——一个专为Python开发者设计的强大库&a…...

【Docker】Docker入门了解

文章目录 Docker 的核心概念Docker 常用命令示例&#xff1a;构建一个简单的 C 应用容器1. 创建 C 应用2. 创建 Dockerfile3. 构建镜像4. 运行容器 Docker 优势学习 Docker 的下一步 **一、Docker 是什么&#xff1f;****为什么 C 开发者需要 Docker&#xff1f;** **二、核心概…...

AIGC(生成式AI)试用 19 -- AI Agent

AI Agent&#xff1a;自主完成特定目标任务。 AI Agent&#xff1a;以大语言模型为大脑驱动的系统&#xff0c;具备自主理解、感知、规划、记忆和使用工具的能力&#xff0c;能够自动化执行完成复杂任务的系统。AI Agent不同于传统的人工智能&#xff0c;它具备通过独立思考、调…...

LeetCode:70. 爬楼梯

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的…...

《Trustzone/TEE/安全从入门到精通-标准版》

CSDN学院课程连接:https://edu.csdn.net/course/detail/39573 讲师介绍 拥有 12 年手机安全、汽车安全、芯片安全开发经验,擅长 Trustzone/TEE/ 安全的设计与开发,对 ARM 架构的安全领域有着深入的研究和丰富的实践经验,能够将复杂的安全知识和处理器架构知识进行系统整…...

2025神奇的数字—新年快乐

2025年&#xff0c;一个神奇的数字&#xff0c;承载着数学的奥秘与无限可能。它是45的平方&#xff08;45&#xff09;&#xff0c;上一个这样的年份是1936年&#xff08;44&#xff09;&#xff0c;下一个则是2116年&#xff08;46&#xff09;&#xff0c;一生仅此一次。2025…...

第一个3D程序!

运行效果 CPP #include <iostream> #include <fstream> #include <string> #include <cmath>#include <GL/glew.h> #include <GLFW/glfw3.h> #include <glm/glm.hpp> #include <glm/gtc/type_ptr.hpp> #include <glm/gtc/…...

Hive:内部表和外部表,内外转换

内部表和外部表 内部表示例 给表添加数据 外部表示例 给表添加数据 外部表示例 用location指定表目录位置,那么表的位置在实际指定的位置,但是可以被映射 外部表和内部表的区别 删除表后使用show tables in shao; 已经没有被删除的表,说明元数据已经被删除(mysql里面存放),但是…...

2024收尾工作

目录 开场白 栈与队列 LeetCode232. 用栈实现队列 LeetCode225. 用队列实现栈 LeetCode102. 二叉树的层序遍历 LeetCode103. 二叉树的锯齿形层序遍历 堆&#xff08;优先级队列&#xff09; 堆排序 LeetCode215. 数组中的第 k 个最大元素 总结 开场白 今天是除夕&…...

能说说MyBatis的工作原理吗?

大家好&#xff0c;我是锋哥。今天分享关于【Redis为什么这么快?】面试题。希望对大家有帮助&#xff1b; 能说说MyBatis的工作原理吗&#xff1f; MyBatis 是一款流行的持久层框架&#xff0c;它通过简化数据库操作&#xff0c;帮助开发者更高效地与数据库进行交互。MyBatis…...

简单的SQL语句的快速复习

语法的执行顺序 select 4 字段列表 from 1 表名列表 where 2 条件列表 group by 3 分组前过滤 having 分组后过滤 order by 5 排序字段列表 limit 6 分页参数 聚合函数 count 统计数量 max 最大值 min 最小值 avg 平均 sum 总和 分组查询使…...

Spring MVC 综合案例

目录 一. 加法计算器 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 3. 服务器端代码 4. 运行测试 二. 用户登录 1. 准备工作 2. 约定前后端交互接口 需求分析 接口定义 (1) 登录界面接口 (2) 首页接口 3. 服务器端代码 4. 运行测试 三. 留言板 1. 准备…...

Spring Boot多环境配置实践指南

在开发Spring Boot应用时&#xff0c;我们常常需要根据不同的运行环境&#xff08;如开发环境、测试环境和生产环境&#xff09;来配置不同的参数。Spring Boot提供了非常灵活的多环境配置机制&#xff0c;通过使用profile-specific properties文件&#xff0c;我们可以轻松地管…...

微信小程序中实现进入页面时数字跳动效果(自定义animate-numbers组件)

微信小程序中实现进入页面时数字跳动效果 1. 组件定义,新建animate-numbers组件1.1 index.js1.2 wxml1.3 wxss 2. 使用组件 1. 组件定义,新建animate-numbers组件 1.1 index.js // components/animate-numbers/index.js Component({properties: {number: {type: Number,value…...

【huawei】云计算的备份和容灾

目录 1 备份和容灾 2 灾备的作用&#xff1f; ① 备份的作用 ② 容灾的作用 3 灾备的衡量指标 ① 数据恢复时间点&#xff08;RPO&#xff0c;Recoyery Point Objective&#xff09; ② 应用恢复时间&#xff08;RTO&#xff0c;Recoyery Time Objective&#xff09; 4…...

Vue.js组件开发-实现下载时暂停恢复下载

在 Vue 中实现下载时暂停和恢复功能&#xff0c;通常可以借助 XMLHttpRequest 对象来控制下载过程。XMLHttpRequest 允许在下载过程中暂停和继续请求。 实现步骤 创建 Vue 组件&#xff1a;创建一个 Vue 组件&#xff0c;包含下载、暂停和恢复按钮。初始化 XMLHttpRequest 对…...

TCP是怎么判断丢包的?

丢包在复杂的网络环境中&#xff0c;是一种常见的现象。 TCP&#xff08;传输控制协议&#xff09;作为一种可靠传输协议&#xff0c;内置了多种机制来检测和处理丢包现象&#xff0c;从而保证数据的完整性和传输的可靠性。本文将介绍TCP判断丢包的原理和机制。 一、TCP可靠传…...

python爬虫入门(一) - requests库与re库,一个简单的爬虫程序

目录 web请求与requests库 1. web请求 1.1 客户端渲染与服务端渲染 1.2 抓包 1.3 HTTP状态代码 2. requests库 2.1 requests模块的下载 2.2 发送请求头与请求参数 2.3 GET请求与POST请求 GET请求的例子&#xff1a; POST请求的例子&#xff1a; 3. 案例&#xff1a;…...