NUMA架构介绍

NUMA 架构详解

NUMA(Non-Uniform Memory Access,非统一内存访问) 是一种多处理器系统的内存设计架构,旨在解决多处理器系统中内存访问延迟不一致的问题。与传统的 UMA(Uniform Memory Access,统一内存访问)架构不同,NUMA 架构中每个处理器访问不同内存区域的速度可能不同。以下是 NUMA 架构的详细介绍,包括架构细节、CPU 和内存的组合方式、缓存层次、涉及的硬件及其作用,以及 NUMA 架构的优势和原因。


1. NUMA 架构的基本概念
  • NUMA 节点(NUMA Node)

    • 一个 NUMA 节点通常由一个或多个 CPU 核心(Processor Cores)和与之直接连接的本地内存(Local Memory)组成。

    • 每个 NUMA 节点可以独立运行,拥有自己的内存控制器和内存通道。

    • 多个 NUMA 节点通过高速互联网络(如 Intel 的 QPI 或 AMD 的 Infinity Fabric)连接。

  • 本地内存(Local Memory)

    • 每个 NUMA 节点的内存是其本地内存,访问速度最快,延迟最低。

  • 远程内存(Remote Memory)

    • 当一个 NUMA 节点访问另一个 NUMA 节点的内存时,需要通过互联网络,访问速度较慢,延迟较高。

  • 内存访问延迟的不一致性

    • 在 NUMA 架构中,内存访问延迟取决于内存的位置。本地内存访问速度快,远程内存访问速度慢,因此称为“非统一内存访问”。


2. NUMA 架构的细节
(1)CPU 和内存的组合方式
  • 多处理器系统

    • NUMA 架构通常用于多处理器系统,每个处理器(或处理器组)与一部分内存直接相连。

    • 例如,一个系统可能有 2 个 NUMA 节点,每个节点包含 16 个 CPU 核心和 64GB 本地内存,总内存为 128GB。

  • 内存控制器

    • 每个 NUMA 节点有自己的内存控制器,负责管理本地内存的访问。

    • 内存控制器直接连接到 CPU 和本地内存,减少了访问延迟。

  • 互联网络

    • NUMA 节点之间通过高速互联网络(如 Intel 的 QPI、AMD 的 Infinity Fabric 或 PCIe)连接。

    • 当一个 NUMA 节点需要访问另一个节点的内存时,数据通过互联网络传输。

(2)缓存层次(Cache Hierarchy)
  • L1 缓存

    • 每个 CPU 核心有自己的 L1 缓存,分为指令缓存(L1-I)和数据缓存(L1-D)。

    • L1 缓存速度最快,容量最小,通常为几十 KB。

  • L2 缓存

    • 每个 CPU 核心或一组核心共享 L2 缓存。

    • L2 缓存速度比 L1 缓存稍慢,容量较大,通常为几百 KB 到几 MB。

  • L3 缓存

    • 每个 NUMA 节点内的所有 CPU 核心共享 L3 缓存。

    • L3 缓存速度比 L2 缓存慢,容量最大,通常为几十 MB。

    • L3 缓存在 NUMA 架构中起到重要作用,可以减少对内存的访问次数,尤其是远程内存访问。

(3)内存访问路径
  • 本地内存访问

    • CPU 访问本地内存时,数据直接通过内存控制器读取或写入,延迟低,带宽高。

  • 远程内存访问

    • CPU 访问远程内存时,数据需要通过互联网络传输到目标 NUMA 节点,延迟较高,带宽较低。

(4)NUMA 拓扑结构
  • NUMA 架构的拓扑结构可以是多种形式,例如:

    • 对称 NUMA:所有 NUMA 节点之间的互联延迟相同。

    • 非对称 NUMA:某些 NUMA 节点之间的互联延迟可能比其他节点更高。


3. NUMA 架构涉及的硬件及其作用
(1)CPU 核心(Processor Cores)
  • 作用:执行计算任务。

  • 特点:每个核心有自己的 L1 和 L2 缓存,核心之间通过共享的 L3 缓存和内存控制器访问内存。

(2)内存控制器(Memory Controller)
  • 作用:管理 CPU 对内存的访问。

  • 特点:每个 NUMA 节点有自己的内存控制器,负责本地内存的访问。

(3)高速缓存(Cache)
  • L1 缓存:最快但容量最小,用于存储核心最常用的指令和数据。

  • L2 缓存:速度较快,容量较大,用于存储核心或核心组的常用数据。

  • L3 缓存:速度较慢但容量最大,用于存储 NUMA 节点内所有核心的共享数据,减少对内存的访问。

(4)互联网络(Interconnect)
  • 作用:连接多个 NUMA 节点,实现节点之间的数据传输。

  • 特点:高速互联网络(如 Intel 的 QPI、AMD 的 Infinity Fabric)决定了远程内存访问的延迟和带宽。

(5)内存(Memory)
  • 本地内存:每个 NUMA 节点的本地内存,访问速度快。

  • 远程内存:其他 NUMA 节点的内存,访问速度较慢。


4. NUMA 架构的优势
(1)扩展性
  • NUMA 架构支持更多的处理器和更大的内存容量。

  • 每个 NUMA 节点可以独立扩展,系统可以通过增加 NUMA 节点来提升计算能力和内存容量。

(2)性能优化
  • 数据局部性

    • NUMA 架构通过将任务和数据分配到本地内存,减少了远程内存访问的次数,从而降低了内存访问延迟。

    • 操作系统和应用程序可以通过 NUMA 感知的调度策略,优化任务和数据的分布。

  • 高带宽

    • 每个 NUMA 节点有自己的内存通道,多个节点可以并行访问内存,提高了整体内存带宽。

(3)资源隔离
  • NUMA 架构可以将任务和内存资源隔离到不同的 NUMA 节点,减少资源竞争,提高系统稳定性。


5. NUMA 架构优势的原因
(1)内存访问延迟的优化
  • 在传统的 UMA 架构中,所有处理器共享同一个内存池,随着处理器数量的增加,内存访问竞争加剧,导致延迟增加。

  • NUMA 架构通过将内存分布到多个节点,减少了内存访问竞争,降低了延迟。

(2)带宽的提升
  • 每个 NUMA 节点有自己的内存通道,多个节点可以并行访问内存,提高了整体内存带宽。

  • 在 UMA 架构中,所有处理器共享有限的内存带宽,容易成为性能瓶颈。

(3)扩展性的提升
  • NUMA 架构通过增加 NUMA 节点来扩展系统,避免了 UMA 架构中总线带宽和内存控制器的瓶颈问题。


6. NUMA 架构的应用场景
  • 高性能计算(HPC)

    • NUMA 架构适合需要大量内存和计算资源的科学计算、气象模拟等场景。

  • 大型数据库系统

    • 数据库系统(如 OLAP、数据仓库)通常需要处理大量数据,NUMA 架构可以优化内存访问性能。

  • 虚拟化环境

    • 在云计算和数据中心中,NUMA 架构可以优化虚拟机的资源分配,提高虚拟化性能。


7. NUMA 架构的挑战
  • 编程复杂性

    • 开发者需要显式管理数据局部性,增加了编程难度。

  • 负载均衡

    • 任务分配需要兼顾 NUMA 节点的计算能力和内存访问延迟,避免性能瓶颈。

  • 操作系统支持

    • 操作系统需要提供 NUMA 感知的调度和内存分配策略,以充分发挥 NUMA 架构的优势。


总结

NUMA 架构通过将内存分布到多个节点,解决了多处理器系统中的内存访问瓶颈问题,提升了系统的扩展性和性能。其优势主要体现在内存访问延迟的优化、带宽的提升和扩展性的增强。尽管 NUMA 架构在编程和负载均衡方面存在挑战,但在高性能计算、大型数据库和虚拟化环境中,NUMA 架构表现出色。通过操作系统、应用程序和硬件的协同优化,可以充分发挥 NUMA 架构的优势。

NUMA架构中的本地内存是指L1、L2、L3 cache缓存还是RAM

在 NUMA(Non-Uniform Memory Access)架构 中,本地内存 并不是指 CPU 的 L1、L2 或 L3 缓存,而是指与某个 NUMA 节点直接连接的 物理内存(DRAM)。缓存(L1、L2、L3)和本地内存是两个不同的概念,它们在 NUMA 架构中扮演不同的角色。以下是对这些概念的详细解释:


1. 本地内存(Local Memory)

  • 定义

    • 本地内存是指与某个 NUMA 节点直接连接的 物理内存(DRAM)

    • 每个 NUMA 节点都有自己的本地内存,由该节点的内存控制器管理。

    • 本地内存的访问延迟最低,带宽最高,因为数据不需要通过互联网络传输。

  • 位置

    • 本地内存位于 SoC(System on Chip)之外,通常是主板上的 DRAM 模块。

    • 例如,在一个双路服务器中,每个 CPU 插槽(Socket)连接一部分 DRAM,这部分 DRAM 就是该 CPU 的本地内存。

  • 作用

    • 本地内存用于存储操作系统和应用程序的数据。

    • 在 NUMA 架构中,操作系统和应用程序会尽量将数据分配到本地内存,以减少访问延迟。


2. 缓存(Cache)

缓存是 CPU 内部的高速存储器,用于加速对内存数据的访问。缓存分为三级:L1、L2 和 L3。

  • L1 缓存

    • 每个 CPU 核心独享的缓存,分为指令缓存(L1-I)和数据缓存(L1-D)。

    • 速度最快,容量最小(通常为几十 KB)。

    • 用于存储核心最常用的指令和数据。

  • L2 缓存

    • 每个 CPU 核心或一组核心共享的缓存。

    • 速度比 L1 缓存稍慢,容量较大(通常为几百 KB 到几 MB)。

    • 用于存储核心或核心组的常用数据。

  • L3 缓存

    • 所有 CPU 核心共享的缓存,通常在一个 NUMA 节点内共享。

    • 速度比 L2 缓存慢,但容量最大(通常为几十 MB)。

    • 用于存储 NUMA 节点内所有核心的共享数据,减少对内存的访问。

  • 缓存的作用

    • 缓存用于减少 CPU 访问内存的次数,从而降低内存访问延迟。

    • 在 NUMA 架构中,缓存的作用尤为重要,因为它可以减少对远程内存的访问。


3. 本地内存与缓存的关系

  • 缓存是 CPU 内部的高速存储器,而 本地内存是外部的物理内存(DRAM)

  • 缓存用于加速对内存数据的访问,而本地内存是实际存储数据的地方。

  • 当 CPU 需要访问数据时,会首先检查缓存(L1 → L2 → L3),如果缓存中没有所需数据(缓存未命中),才会访问本地内存或远程内存。


4. SoC 上的内存

  • SoC(System on Chip) 是一种将 CPU、内存控制器、I/O 接口等集成在一个芯片上的设计。

  • 在 SoC 中,内存控制器通常集成在芯片上,但 物理内存(DRAM) 仍然位于芯片外部。

  • 因此,本地内存 是指与 SoC 上的内存控制器直接连接的物理内存,而不是 SoC 内部的缓存。

缓存、RAM、ROM分别是什么

在计算机系统中,缓存(Cache)RAM(Random Access Memory,随机存取存储器) 和 ROM(Read-Only Memory,只读存储器) 是三种常见的内存类型,它们在系统中扮演不同的角色。除此之外,还有其他一些常见的内存类型。以下是它们的详细介绍:


1. 缓存(Cache)

  • 定义

    • 缓存是一种高速存储器,用于存储 CPU 频繁访问的数据和指令,以减少访问主内存(RAM)的次数。

    • 缓存通常集成在 CPU 内部,速度远快于主内存。

  • 特点

    • 速度快:缓存的访问速度比 RAM 快得多,通常以纳秒(ns)为单位。

    • 容量小:缓存的容量远小于 RAM,通常为几 KB 到几十 MB。

    • 层级结构:现代 CPU 通常有多级缓存(L1、L2、L3),L1 最快但容量最小,L3 最慢但容量最大。

  • 作用

    • 缓存用于加速 CPU 对数据的访问,减少 CPU 等待数据的时间,从而提高系统性能。


2. RAM(Random Access Memory,随机存取存储器)

  • 定义

    • RAM 是计算机的主内存,用于临时存储正在运行的程序和数据。

    • RAM 是易失性存储器,断电后数据会丢失。

  • 特点

    • 速度快:RAM 的访问速度比 ROM 快,但比缓存慢。

    • 容量大:RAM 的容量通常为几 GB 到几百 GB。

    • 随机访问:可以随机访问任意地址的数据,访问时间与数据位置无关。

  • 类型

    • DRAM(Dynamic RAM,动态随机存取存储器)

      • 需要定期刷新以保持数据,速度较慢但成本低,常用于主内存。

    • SRAM(Static RAM,静态随机存取存储器)

      • 不需要刷新,速度快但成本高,通常用于缓存。

  • 作用

    • RAM 用于存储操作系统、应用程序和用户数据,是计算机运行时的主要工作区域。


3. ROM(Read-Only Memory,只读存储器)

  • 定义

    • ROM 是一种非易失性存储器,用于存储固件或永久性数据。

    • 数据在出厂时写入,通常不能修改或只能通过特殊方式修改。

  • 特点

    • 非易失性:断电后数据不会丢失。

    • 只读性:数据通常只能读取,不能随意写入。

    • 速度较慢:ROM 的访问速度比 RAM 慢。

  • 类型

    • PROM(Programmable ROM,可编程只读存储器)

      • 出厂后可以通过特殊设备写入数据,但只能写入一次。

    • EPROM(Erasable Programmable ROM,可擦除可编程只读存储器)

      • 可以通过紫外线擦除并重新写入数据。

    • EEPROM(Electrically Erasable Programmable ROM,电可擦除可编程只读存储器)

      • 可以通过电信号擦除并重新写入数据。

    • Flash Memory(闪存)

      • 一种特殊的 EEPROM,广泛应用于 U 盘、SSD 和嵌入式系统中。

  • 作用

    • ROM 用于存储固件(如 BIOS、UEFI)和嵌入式系统的程序代码。


4. 其他常见的内存类型

(1)虚拟内存(Virtual Memory)
  • 定义

    • 虚拟内存是一种内存管理技术,通过将部分数据存储到磁盘(如硬盘或 SSD)来扩展可用内存。

  • 作用

    • 当物理内存(RAM)不足时,操作系统会将不常用的数据转移到磁盘,腾出空间给当前运行的程序。

    • 虚拟内存使得程序可以使用比物理内存更大的地址空间。

(2)显存(Video RAM,VRAM)
  • 定义

    • 显存是显卡上的专用内存,用于存储图形数据(如纹理、帧缓冲区)。

  • 特点

    • 显存通常比主内存更快,专为图形处理优化。

    • 常见的显存类型包括 GDDR(Graphics Double Data Rate)和 HBM(High Bandwidth Memory)。

  • 作用

    • 显存用于加速图形渲染和显示输出,是游戏和图形设计等应用的关键。

(3)寄存器(Register)
  • 定义

    • 寄存器是 CPU 内部的高速存储器,用于存储指令、地址和临时数据。

  • 特点

    • 速度最快,容量最小(通常为几十到几百字节)。

    • 寄存器直接参与 CPU 的运算和控制。

  • 作用

    • 寄存器用于存储 CPU 当前正在处理的数据和指令,是 CPU 运行的核心部分。

(4)非易失性存储器(Non-Volatile Memory,NVM)
  • 定义

    • 非易失性存储器是一种断电后数据不会丢失的存储器。

  • 类型

    • NAND Flash:用于 SSD、U 盘和存储卡。

    • NOR Flash:用于嵌入式系统和固件存储。

    • 3D XPoint:一种新型非易失性存储器,速度接近 DRAM,用于高性能存储设备(如 Intel 的 Optane)。

  • 作用

    • 非易失性存储器用于长期存储数据和程序。


5. 内存的层级结构

计算机系统中的内存通常按速度和容量分为多个层级,从快到慢依次为:

  1. 寄存器:速度最快,容量最小。

  2. 缓存(L1、L2、L3):速度较快,容量较小。

  3. 主内存(RAM):速度较慢,容量较大。

  4. 虚拟内存(磁盘):速度最慢,容量最大。

这种层级结构通过将频繁访问的数据存储在速度更快的存储器中,优化了系统的整体性能。


总结

  • 缓存:高速存储器,用于加速 CPU 对数据的访问。

  • RAM:主内存,用于临时存储运行中的程序和数据。

  • ROM:只读存储器,用于存储固件和永久性数据。

  • 其他内存:包括虚拟内存、显存、寄存器和非易失性存储器等,各自在系统中扮演不同的角色。

这些内存类型共同协作,构成了计算机系统的存储层次结构,确保了系统的高效运行。

NUMA架构和sched_domain的关系

NUMA(Non-Uniform Memory Access)架构和 sched_domain 是操作系统调度和内存管理中的核心概念,尤其在多核系统中,它们的关系非常紧密。以下将详细介绍它们的关系,并结合代码和适用场景进行说明。


1. NUMA 架构简介

NUMA 是一种多处理器系统的内存设计架构,其特点是:

  • 非均匀内存访问:每个处理器(或处理器组)有自己的本地内存,访问本地内存速度快,访问其他处理器的内存(远程内存)速度慢。

  • 节点(Node):NUMA 系统将处理器和内存划分为多个节点,每个节点包含一组 CPU 和本地内存。

  • 性能优化:通过减少远程内存访问,提升系统性能。


2. sched_domain 简介

sched_domain 是 Linux 内核调度器中的一个数据结构,用于描述 CPU 的调度层次结构。调度域将 CPU 分组,每个组内的 CPU 共享某些特性(如缓存、NUMA 节点等),调度器根据这些特性优化任务调度和负载均衡。

  • 层次结构:调度域可以分层,例如:

    • 核心级:同一物理核心的 CPU。

    • 套接字号:同一 CPU 插槽的 CPU。

    • NUMA 节点级:同一 NUMA 节点的 CPU。

  • 负载均衡:调度器会在同一调度域内的 CPU 之间进行负载均衡,避免某些 CPU 过载。


3. NUMA 和 sched_domain 的关系

在 NUMA 系统中,sched_domain 的层次结构与 NUMA 节点紧密相关。调度器会根据 NUMA 节点的特性优化任务调度和负载均衡,具体关系如下:

3.1 NUMA 节点作为调度域

  • 每个 NUMA 节点可以作为一个调度域。

  • 调度器会优先在同一 NUMA 节点内的 CPU 之间进行负载均衡,以减少远程内存访问的开销。

3.2 任务绑定

  • 调度器会尽量将任务绑定到同一 NUMA 节点的 CPU 上,以利用本地内存的优势。

  • 如果任务需要访问大量内存,调度器会优先将其分配到内存所在的 NUMA 节点。

3.3 跨节点调度

  • 当本地节点负载过高时,调度器可能会将任务迁移到其他 NUMA 节点的 CPU 上。

  • 跨节点迁移会带来性能损失(远程内存访问),因此调度器会尽量避免频繁的跨节点迁移。


4. 代码分析

Linux 内核中,sched_domain 和 NUMA 的关系主要通过以下代码体现:

4.1 调度域初始化

在 Linux 内核中,调度域的初始化是通过 build_sched_domains() 函数完成的。该函数会根据系统的拓扑结构(包括 NUMA 节点)创建调度域。

// 内核源码:kernel/sched/core.c
static int build_sched_domains(const struct cpumask *cpu_map, struct sched_domain_attr *attr)
{// 遍历所有 CPU,构建调度域for_each_cpu(cpu, cpu_map) {// 根据 NUMA 节点创建调度域sd = build_sched_domain(topology_core_cpumask(cpu), attr, sd, cpu);if (!sd)goto error;}return 0;
error:return -ENOMEM;
}

4.2 NUMA 节点与调度域绑定

在调度域的构建过程中,内核会通过 topology.c 中的函数获取 NUMA 节点的信息,并将其与调度域绑定。

// 内核源码:arch/x86/kernel/smpboot.c
static void __init init_sched_domains(void)
{// 获取 NUMA 节点信息for_each_online_node(node) {// 为每个 NUMA 节点创建调度域sd = build_sched_domain(node_to_cpumask(node), NULL, NULL, 0);if (!sd)panic("Failed to build sched domains for node %d", node);}
}

4.3 负载均衡与 NUMA

在负载均衡过程中,调度器会优先选择同一 NUMA 节点内的 CPU。

// 内核源码:kernel/sched/fair.c
static int load_balance(int this_cpu, struct rq *this_rq, struct sched_domain *sd, enum cpu_idle_type idle)
{// 检查 NUMA 节点if (sd->flags & SD_NUMA) {// 优先选择同一 NUMA 节点内的 CPUgroup = find_busiest_group(sd, this_cpu, &imbalance, &sd_idle);}// 执行负载均衡return __load_balance(this_cpu, this_rq, sd, idle, &imbalance);
}

5. 适用场景

5.1 高性能计算(HPC)

  • 场景:在 HPC 应用中,任务需要频繁访问内存。

  • 优化:通过将任务绑定到同一 NUMA 节点的 CPU 上,减少远程内存访问,提升性能。

5.2 虚拟化环境

  • 场景:在虚拟机(VM)中运行内存密集型应用。

  • 优化:将虚拟机的 vCPU 绑定到同一 NUMA 节点,避免跨节点内存访问。

5.3 数据库服务器

  • 场景:数据库服务器需要高效处理大量数据。

  • 优化:通过 NUMA 感知的调度策略,将数据库进程绑定到本地内存节点,减少延迟。


6. 总结

NUMA 架构和 sched_domain 的关系主要体现在调度器如何利用 NUMA 节点的特性来优化任务调度和负载均衡。通过将 NUMA 节点作为调度域的一部分,调度器可以更好地管理多核系统中的资源,提升整体性能。在实际应用中,合理配置调度域和 NUMA 绑定可以显著提升内存密集型应用的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/29148.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字IC后端实现教程| Clock Gating相关clock tree案例解析

今天小编给大家分享几个跟时钟树综合,clock tree相关的典型问题。 数字IC后端设计实现之分段长clock tree经典案例 Q1:星主好,下面的图是通过duplicate icg来解setup违例的示意图。我没看懂这个 duplicate操作在cts阶段是怎么实现的,用什么…

K8S学习之基础十一:k8s中容器钩子

容器钩子 容器钩子分为post-start和pre-stop post-start:容器启动后执行的命令 pre-stop:容器关闭前执行的命令,可用于优雅关闭 # 分别定义两个钩子,启动pod后更新index.html,关闭pod前正常关闭服务 vi post-pre.…

RabbitMQ知识点

1.为什么需要消息队列? RabbitMQ体系结构 操作001:RabbitMQ安装 二、安装 # 拉取镜像 docker pull rabbitmq:3.13-management ​ # -d 参数:后台运行 Docker 容器 # --name 参数:设置容器名称 # -p 参数:映射端口号&…

HTML + CSS 题目

1.说说你对盒子模型的理解? 一、是什么 对一个文档进行布局的时候,浏览器渲染引擎会根据标准之一的css基础盒模型,将所有元素表示为一个个矩形的盒子。 一个盒子由四个部分组成: content,padding,border,margin 下…

利用Postman和Apipost进行API测试的实践与优化-动态参数

在实际的开发和测试工作中,完成一个API后对其进行简单的测试是一项至关重要的任务。在测试过程中,确保API返回的数据符合预期,不仅可以提高开发效率,还能帮助我们快速发现可能存在的问题。对于简单的API测试,诸如验证响…

【银河麒麟高级服务器操作系统实际案例分享】数据库资源重启现象分析及处理全过程

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…

C++ Primer 拷贝、赋值与销毁

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

Java面经

Java 知识点总结 1. 封装,继承和多态 封装: “高内聚,低耦合”,隐藏内部实现细节,只通过接口开放部分使用权限给外部。继承: 主要是提高代码复用性,通过子类继承父类,来增加功能扩…

常见的限流算法有哪些?

好的,关于这个问题,我会从几个方面来回答。 首先,限流算法是一种系统保护策略,主要是避免在流量高峰导致系统被压垮,造成系统不可用的问题。 常见的限流算法有 5 种。 1. (如图)计数器限流&a…

GitHub获取token

获取token clone代码 git clone https://$tokengithub.com/*****/*****.git

公司网络安全组织结构

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 第17章 网络安全应急响应技术原理与应用 17.1 网络安全应急响应概述 居安思危,思则有备,有备无患。网络安全应急响应是针对潜在发生的网络…

《深度学习进阶》第7集:深度实战 通过训练一个智能体玩游戏 来洞察 强化学习(RL)与决策系统

深度学习进阶 | 第7集:深度实战 通过训练一个智能体玩游戏 来洞察 强化学习(RL)与决策系统 在深度学习的广阔领域中,强化学习(Reinforcement Learning, RL)是一种独特的范式,它通过智能体与环境…

【web前端开发】CSS--CSS简介及其编写位置(上)

1、CSS简介 (1)CSS的全称为:层叠式样式表(Cascading Style Sheets) (2)CSS也是一种标记语言,用于给HTML结构设置样式,例如:文字大小、颜色、元素宽度等等…

计算机视觉|Swin Transformer:视觉 Transformer 的新方向

一、引言 在计算机视觉领域的发展历程中,卷积神经网络(CNN) 长期占据主导地位。从早期的 LeNet 到后来的 AlexNet、VGGNet、ResNet 等,CNN 在图像分类、目标检测、语义分割等任务中取得了显著成果。然而,CNN 在捕捉全…

UE4 组件 (对话组件)

制作一个可以生成对话气泡,显示对话台词的简单组件。这个组件要的变量:台词(外部传入)。功能:开始对话(生成气泡UI) ,结束对话。 一、对话组件创建 二、开始对话事件 1、注意这里获…

WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中

WPF高级 | WPF 应用程序部署与发布:确保顺利交付到用户手中 一、前言二、部署与发布基础概念2.1 部署的定义与目的2.2 发布的方式与渠道2.3 部署与发布的关键要素 三、WPF 应用程序打包3.1 使用 Visual Studio 自带的打包工具3.2 使用第三方打包工具 四、发布到不同…

Vue3自定义hooks

Vue3自定义hooks 什么是自定义hooks 把一个功能的所有数据和方法写到同一个ts文件里。 命名规范:useXxx,小驼峰。 在每一个hooks中,都可以写onMounted、computed等属性,互不干扰。 体现出了组合式AI的优势,一个功能的…

Win7重装不翻车!ISO镜像安全下载渠道+BIOS设置避雷手册

一、写在前面:为什么你需要这份教程? 当电脑频繁蓝屏、系统崩溃甚至无法开机时,重装系统可能是最后的救命稻草。但市面上的教程往往存在三大痛点: ⚠️ 镜像来源不明导致系统被植入后门 ⚠️ 启动盘制作失败反复折腾 ⚠️ 操作失…

DeepSeek大模型 —— 全维度技术解析

DeepSeek大模型 —— 全维度技术解析 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家!点我试试!! 文章目录 DeepSeek大模型 —— 全维度技术解析一、模型架构全景解析1.1…

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台

AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 目录 AGI 之 【Dify】 之 使用 Docker 在 Windows 端本地部署 Dify 大语言模型(LLM)应用开发平台 一、简单介绍 二、Docker 下载安…