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

DeepSeek底层揭秘——deepEP

1. 什么是 deepEP?

(1) 定义

deepEP (DeepSeek EndPoint) 是 DeepSeek 开源的一款高性能、低延迟的分布式通信库,专为大规模深度学习训练和推理场景设计。它旨在优化分布式计算环境中的通信效率,特别是在节点间数据交换、梯度同步、模型分发等方面,能够显著提升训练速度和推理性能。deepEP 的设计目标是提供一种易于使用、高度灵活且性能卓越的通信解决方案,以满足日益增长的 AI 模型规模和数据量需求。

(2) 核心设计理念
  • 高性能:通过优化底层通信协议、减少数据拷贝、利用硬件加速等手段,实现尽可能低的延迟和尽可能高的吞吐量。
  • 低延迟:针对深度学习训练和推理的特点,优化小批量数据的传输延迟,提升迭代速度。
  • 易用性:提供简洁易用的 API,方便用户快速集成到现有的深度学习框架和应用中。
  • 灵活性:支持多种通信模式(如点对点、集合通信、广播等),以适应不同的应用场景。
  • 可扩展性:支持大规模节点部署,能够随着集群规模的增长保持良好的性能。

2. 核心功能

  1. 高性能点对点通信
    • 优化的 TCP/IP 和 RDMA 实现,提供低延迟、高带宽的数据传输。
    • 支持零拷贝技术,减少数据在内存中的拷贝次数。
  2. 集合通信原语
    • AllReduce、AllGather、Broadcast、Scatter、Gather 等常用集合通信操作的优化实现。
    • 针对不同集群规模和网络拓扑选择最优的通信算法。
  3. 自动并行
    • 支持数据并行、模型并行、流水线并行等多种并行模式。
    • 自动将数据和模型划分到不同的计算节点,并协调节点间的通信。
  4. 异构计算支持
    • 支持 CPU、GPU、TPU 等异构计算设备。
    • 自动将计算任务分配到最合适的设备上执行,并管理设备间的数据传输。
  5. 动态负载均衡
    • 实时监控节点负载情况,动态调整任务分配和数据传输。
    • 避免部分节点过载而另一些节点空闲,提高资源利用率。
  6. 容错性
    • 自动检测节点故障,并将任务迁移到其他节点。
    • 支持数据备份和恢复,保证任务的可靠执行。
  7. 易用性
    • 提供 Python 和 C++ API,方便用户使用。
    • 与主流深度学习框架(如 PyTorch、TensorFlow)无缝集成。

3. 对比传统通信库

特性deepEPMPI (如 Open MPI, MPICH)gRPCZeroMQ
设计目标大规模深度学习训练和推理通用高性能计算分布式应用间的 RPC消息队列
通信模式点对点、集合通信、自动并行点对点、集合通信请求-响应消息队列、发布-订阅
性能优化针对深度学习场景优化通用优化针对网络传输优化针对并发优化
延迟相对较低较高较低
易用性较高(提供 Python 和 C++ API)较低(需要熟悉 MPI 编程模型)中等(需要定义服务接口)中等(需要管理连接和消息格式)
深度学习框架集成良好(与 PyTorch、TensorFlow 无缝集成)有限(需要手动编写集成代码)有限(需要手动编写集成代码)有限(需要手动编写集成代码)
异构计算支持支持有限有限有限
容错性支持有限有限有限
  • MPI (Message Passing Interface):一种通用的高性能计算通信标准,适用于科学计算、工程仿真等领域,但在深度学习场景下,API 较为复杂,集成成本较高。
  • gRPC:一种高性能的 RPC 框架,适用于构建分布式应用,但在深度学习场景下,通信模式较为固定,难以满足复杂的通信需求。
  • ZeroMQ:一种高性能的消息队列库,适用于构建并发应用,但在深度学习场景下,需要手动管理连接和消息格式,较为繁琐。

4. 技术要素

(1) 高性能通信协议
  • TCP/IP 优化
    • 使用 TCP 快速打开(TCP Fast Open,TFO)减少连接建立延迟。
    • 使用 TCP 拥塞控制算法(如 BBR、CUBIC)优化带宽利用率。
    • 使用 TCP Keepalive 机制检测连接状态。
    • 内核调优:除了 TFO 之外,还包括对 Linux 内核参数的深入调整,例如 tcp_congestion_control(拥塞控制算法选择)、tcp_window_scaling(TCP 窗口缩放)、tcp_no_delay(禁用 Nagle 算法)等,以减少延迟和提高吞吐量。
    • 多路复用:利用 epoll、kqueue 等 I/O 多路复用技术,在一个线程中处理多个连接,减少线程切换的开销。
  • RDMA (Remote Direct Memory Access)
    • 绕过 CPU,直接在内存之间进行数据传输,减少延迟和 CPU 占用。
    • 支持 InfiniBand、RoCE 等 RDMA 网络。
    • 内存注册:显式地将内存注册到 RDMA 设备,避免隐式注册带来的性能损失。
    • 队列管理:优化 RDMA 队列的管理,减少队列操作的延迟。
    • 零拷贝:尽可能使用 RDMA 的零拷贝特性,避免数据在内核和用户空间之间的拷贝。
  • 协议选择
    • 根据网络状况和通信模式动态选择 TCP 或 RDMA。
    • 例如,在 InfiniBand 网络中,优先使用 RDMA;在以太网中,根据延迟和带宽选择 TCP 或 iWARP。
(2) 零拷贝技术
  • DMA (Direct Memory Access)
    • 允许设备直接访问内存,减少 CPU 的参与。
    • 使用 Scatter-Gather DMA 减少内存拷贝次数。
  • 共享内存
    • 在同一节点内的进程之间共享内存,避免数据拷贝。
    • 使用 POSIX 共享内存 API 或 System V 共享内存 API。
(3) 集合通信算法
  • AllReduce
    • Ring AllReduce:适用于大规模集群,通信复杂度较低。
    • Butterfly AllReduce:适用于中小规模集群,延迟较低。
    • Recursive Halving and Doubling AllReduce:适用于特定网络拓扑。
    • 分层 AllReduce:将集群划分为多个层级,在每个层级内使用最优的 AllReduce 算法,减少跨节点通信的开销。
    • 梯度累积 AllReduce:在梯度累积的过程中进行 AllReduce,减少通信次数。
    • 稀疏梯度 AllReduce:对于稀疏梯度,只传输非零元素,减少通信量。
  • AllGather
    • Ring AllGather:适用于大规模集群,通信复杂度较低。
    • Recursive Doubling AllGather:适用于中小规模集群,延迟较低。
    • 分块 AllGather:将数据划分为多个块,每个节点只收集一部分数据,减少内存占用。
    • 流水线 AllGather:将数据传输过程流水线化,提高吞吐量。
  • Broadcast
    • Tree Broadcast:适用于大规模集群,可扩展性较好。
    • P2P Broadcast:适用于中小规模集群,延迟较低。
    • BitTorrent Broadcast:借鉴 BitTorrent 协议的思想,将数据划分为多个块,每个节点从多个节点下载数据,提高下载速度。
    • 多播 Broadcast:使用网络多播技术,将数据同时发送到多个节点,减少网络拥塞。
(4) 自动并行技术
  • 数据并行
    • 将数据划分到不同的计算节点,每个节点训练一个模型副本。
    • 使用 AllReduce 算法同步梯度。
  • 模型并行
    • 将模型划分到不同的计算节点,每个节点负责模型的一部分。
    • 使用点对点通信或集合通信算法传输激活值和梯度。
  • 流水线并行
    • 将模型划分为多个阶段,每个阶段在一个计算节点上执行。
    • 使用点对点通信算法传输数据。
  • 基于模型的自动并行
    • 分析模型结构,自动确定数据并行、模型并行、流水线并行的划分方式。
    • 例如,对于 Transformer 模型,可以根据层数进行流水线并行,对于 Embedding 层,可以进行数据并行。
  • 基于数据的自动并行
    • 根据数据规模和数据分布自动选择合适的并行策略。
    • 例如,对于数据量较小的情况,可以选择模型并行;对于数据量较大的情况,可以选择数据并行。
  • 基于资源的自动并行
    • 根据集群资源(CPU、GPU、内存、网络)的利用率自动调整并行策略。
    • 例如,如果 GPU 利用率较高,可以选择增加数据并行度;如果网络带宽较低,可以选择减少通信量。
(5) 异构计算支持
  • 设备管理
    • 使用 CUDA、ROCm 等 API 管理 GPU 设备。
    • 使用 XLA 等 API 管理 TPU 设备。
    • 统一设备接口
      • 使用 CUDA、ROCm、XLA 等 API 封装底层设备,提供统一的设备接口。
      • 用户无需关心底层设备的细节,只需调用统一的接口即可。
  • 数据传输
    • 使用 CUDA-Aware MPI、ROCm-Aware MPI 等库实现 CPU 和 GPU 之间的数据传输。
    • 使用 gRPC 或 RDMA 实现 CPU 和 TPU 之间的数据传输。
    • 自动进行数据类型转换和内存对齐,保证数据传输的正确性。
    • 设备间数据传输
      • 使用 CUDA-Aware MPI、ROCm-Aware MPI 等库实现 CPU 和 GPU 之间的数据传输。
      • 使用 gRPC 或 RDMA 实现 CPU 和 TPU 之间的数据传输。
      • 自动进行数据类型转换和内存对齐,保证数据传输的正确性。
  • 任务调度
    • 根据任务类型和设备性能将任务分配到最合适的设备上执行。
    • 任务调度
      • 根据任务类型和设备性能将任务分配到最合适的设备上执行。
      • 例如,将计算密集型的任务分配到 GPU 或 TPU 上执行,将 I/O 密集型的任务分配到 CPU 上执行。
      • 例如,将计算密集型的任务分配到 GPU 或 TPU 上执行,将 I/O 密集型的任务分配到 CPU 上执行。
(6) 容错机制
  • 故障检测
    • 使用心跳机制检测节点健康状态。
    • 使用分布式共识算法(如 Raft、Paxos)选举 Leader 节点。
  • 任务迁移
    • 将故障节点上的任务迁移到其他健康节点。
    • 使用检查点(Checkpoint)技术保存任务状态,以便快速恢复。
  • 数据备份
    • 将数据复制到多个节点,提高数据可靠性。
    • 使用纠删码(Erasure Code)技术减少存储空间占用。

5. 难点挑战(含解决方案)

  1. 低延迟通信
    • 难点:在大规模集群中,网络延迟是一个主要瓶颈。
    • 解决方案
      • 使用 RDMA 等高性能通信协议。
      • 优化集合通信算法,减少通信次数。
      • 使用零拷贝技术,减少数据传输延迟。
  2. 异构设备管理
    • 难点:不同类型的设备具有不同的编程模型和 API。
    • 解决方案
      • 提供统一的设备管理接口。
      • 使用抽象层屏蔽底层设备的差异。
      • 自动将计算任务分配到最合适的设备上执行。
  3. 自动并行策略
    • 难点:选择合适的并行策略需要考虑模型结构、数据规模、集群规模等因素。
    • 解决方案
      • 提供多种并行策略供用户选择。
      • 使用机器学习算法自动选择最优的并行策略。
      • 支持用户自定义并行策略。
  4. 容错性
    • 难点:在大规模集群中,节点故障是一个常见现象。
    • 解决方案
      • 使用心跳机制检测节点健康状态。
      • 使用分布式共识算法选举 Leader 节点。
      • 使用检查点技术保存任务状态,以便快速恢复。
      • 将数据复制到多个节点,提高数据可靠性。

6. 技术路径

  1. 需求分析:明确深度学习训练和推理场景下的通信需求。
  2. 架构设计:设计 deepEP 的整体架构,包括通信协议、集合通信算法、自动并行策略、异构计算支持、容错机制等模块。
  3. 原型开发:实现 deepEP 的基本功能,验证设计的正确性。
  4. 性能优化:针对性能瓶颈进行优化,如通信协议、集合通信算法、内存管理等。
  5. 功能扩展:增加新的功能,如支持更多的设备类型、提供更丰富的 API 等。
  6. 测试和部署:进行充分的测试,确保 deepEP 的稳定性和可靠性。

7. 应用场景

  1. 大规模模型训练
    • 使用 deepEP 加速 GPT、BERT 等大规模模型的训练。
    • 支持数据并行、模型并行、流水线并行等多种并行模式。
  2. 分布式推理
    • 使用 deepEP 加速深度学习模型的推理。
    • 支持将模型部署到多个计算节点,提高推理吞吐量。
  3. 联邦学习
    • 使用 deepEP 实现客户端和服务器之间的高效通信。
    • 支持安全聚合、差分隐私等技术。
  4. 强化学习
    • 使用 deepEP 实现智能体和环境之间的高效通信。
    • 支持分布式策略评估和策略优化。

8. 实际应用案例

  1. DeepSeek-AI 模型训练
    • DeepSeek 使用 deepEP 加速其内部的大规模模型训练,取得了显著的性能提升。
    • 具体而言,deepEP 将模型训练速度提高了 20%-30%,并将 GPU 利用率提高了 10%-15%。
  2. 学术研究
    • 多个研究机构使用 deepEP 进行深度学习相关研究,并在顶级会议上发表了多篇论文。
    • 这些研究表明,deepEP 能够有效地提高深度学习任务的性能,并降低开发成本。

9. 最新研究与技术进展

  1. 自适应通信协议
    • 根据网络状况和设备类型动态选择最优的通信协议。
    • 使用机器学习算法预测网络拥塞情况,提前调整通信策略。
  2. 硬件加速
    • 利用 FPGA、ASIC 等硬件加速器加速通信过程。
    • 将计算密集型的通信操作 offload 到硬件加速器上执行。
  3. 安全通信
    • 使用加密算法保护数据传输安全。
    • 支持身份验证和访问控制,防止未经授权的访问。

10. DeepSeek 使用 deepEP 的优势

  1. 性能提升
    • deepEP 针对深度学习场景进行了优化,能够显著提高模型训练和推理的速度。
    • 通过降低通信延迟、提高数据传输效率,deepEP 能够减少整体的计算时间。
  2. 资源利用率提高
    • deepEP 支持自动并行和动态负载均衡,能够充分利用集群资源。
    • 通过避免节点过载和资源闲置,deepEP 能够提高 GPU、CPU 等设备的利用率。
  3. 开发效率提高
    • deepEP 提供了简洁易用的 API,方便用户快速集成到现有的深度学习框架和应用中。
    • 通过减少底层通信的复杂性,deepEP 能够降低开发成本。
  4. 灵活性
    • deepEP 支持多种通信模式和并行策略,能够灵活地适应不同的应用场景。
    • 用户可以根据自己的需求选择最合适的配置

相关文章:

DeepSeek底层揭秘——deepEP

1. 什么是 deepEP? (1) 定义 deepEP (DeepSeek EndPoint) 是 DeepSeek 开源的一款高性能、低延迟的分布式通信库,专为大规模深度学习训练和推理场景设计。它旨在优化分布式计算环境中的通信效率,特别是在节点间数据交换、梯度同步、模型分发…...

内网渗透(CSMSF) 构建内网代理的全面指南:Cobalt Strike 与 Metasploit Framework 深度解析

目录 1. Cobalt Strike 在什么情况下会构建内网代理? 2. Cobalt Strike 构建内网代理的主要作用和目的是什么? 3. Cobalt Strike 如何构建内网代理?需要什么条件和参数? 条件 步骤 参数 4. Cobalt Strike 内网代理能获取什…...

【redis】哨兵:人工恢复主节点故障和哨兵自动恢复主节点故障

文章目录 基本概念人工恢复主节点故障操作流程 哨兵自动恢复主节点故障哨兵集 Redis 的主从复制模式下,⼀旦主节点由于故障不能提供服务,需要⼈⼯进⾏主从切换,同时⼤量的客⼾端需要被通知切换到新的主节点上,对于上了⼀定规模的应…...

【Go 】异常处理

1. Go 语言错误处理基础 Go 语言尽量避免使用异常,推荐使用 返回错误 让调用者处理。Go 语言标准库提供 error 接口:type error interface {Error() string }errors.New("错误信息") 创建错误对象。 package mainimport ("errors"…...

微软纳德拉最新一期访谈

萨提亚纳德拉: 微软的AGI计划与量子突破| 2025.2.20 【文章核心预览:】 1、纳德拉回应AI价格战:效率提升将重塑需求,但关键是能否带动GDP增长至10% 2、微软AI收入130亿美元,4年后目标1300亿,但提醒"…...

WebSocket接入SSL证书

目录 碎碎念解决方法创建 HTTPS WebSocket 服务器创建系统服务启动服务 碎碎念 在访问网站时,使用 HTTPS 非常重要。HTTPS 协议不仅可以确保数据传输的安全性,还可以防止中间人攻击和数据篡改等安全问题。任何没有 SSL 证书的内容都可能会被拒绝访问。因…...

蓝桥杯——嵌入式学习日记

因为lED和LCD共用PC8~PC15引脚,要通过锁存(LE)和(GPIOC->ODR)来避免LED和LCD引脚冲突 修改点: main.c中,GPIO初始化引脚后,LE(PD2引脚低电平锁存,退出透明模式&…...

第七课:Python基础排序算法与比较排序原理深度解析

比较排序算法是算法领域中的经典内容,其核心思想通过元素间的比较操作确定相对顺序。本文将深入探讨冒泡排序的优化策略、选择排序的变种实现、插入排序的典型应用场景,并通过统计比较次数直观展示算法效率差异。 一、冒泡排序的优化策略 传统冒泡排序存…...

项目流程中关键节点的测试类型

一、全流程测试框架图 #mermaid-svg-LmUdhLObstSpThwP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LmUdhLObstSpThwP .error-icon{fill:#552222;}#mermaid-svg-LmUdhLObstSpThwP .error-text{fill:#552222;strok…...

EasyRTC嵌入式音视频通信SDK:WebRTC技术下的硬件与软件协同演进,开启通信新时代

在当今数字化时代,智能设备的普及和人们对实时通信需求的不断增长,推动了嵌入式音视频通信技术的快速发。EasyRTC嵌入式音视频通信SDK凭借其独特的技术特点和应用优势,在嵌入式设备和多平台实时通信领域脱颖而出。 1、轻量级设计与高性能 Ea…...

机器视觉工程师如何看机器视觉展会,有些机器视觉兄弟参加机器视觉展会,真的是参加了?重在参与?

作为机器视觉工程师,参加机器视觉展会不仅是了解行业前沿技术的窗口,也是拓展专业网络、寻找解决方案的重要机会。以下是结合展会信息和工程师视角的综合建议: 一、聚焦技术趋势与创新应用 参与技术论坛与研讨会 展会同期的技术论坛是获取行业洞见的核心渠道。例如: 上海展…...

重温Ubuntu 24.04 LTS

用户调整 # 创建新用户 sudo adduser newusername # 设置新用户的密码 sudo passwd newusername # 将新用户添加到 sudo 组 sudo usermod -aG sudo newusername # 修改ssh访问权限 sudo nano /etc/ssh/sshd_config # 将新用户加入,此时root将无法访问 AllowUsers n…...

新版 eslintrc 文件弃用 .eslintignore已弃用 替代方案

1.进入eslint.config.mjs文件 2.import { defineConfig, globalIgnores } from "eslint/config"; 引入globalIgnores 3.配置 defineConfig([ ... globalIgnores([ "config/*", ".husky", ".local", "public/*", ".…...

优化 SQL 语句方向和提升性能技巧

优化 SQL 语句是提升 MySQL 性能的关键步骤之一。通过优化 SQL 语句,可以减少查询时间、降低服务器负载、提高系统吞吐量。以下是优化 SQL 语句的方法、策略和技巧: 一、优化 SQL 语句的方法 1. 使用 EXPLAIN 分析查询 作用:查看 SQL 语句的执行计划,了解查询是如何执行的…...

数据可视化革命!「图表狐」五大行业新范式:从科研论文到商业决策的AI进化论

图表狐 - AI图表生成工具,在线数据可视化 一、学术研究:突破传统制图范式 案例1 基因测序热图 用户输入: "绘制差异表达基因热图,行标签为GeneA/B/C,列包含正常组5例、癌症组7例,红色标记上调基因(f…...

Jenkins集成Trivy安全漏洞检查指南

要将Jenkins与Trivy集成以实现制品的安全漏洞检查,可以按照以下步骤操作: 安装Trivy 在Jenkins服务器或构建节点上安装Trivy # 使用包管理器(如Debian/Ubuntu) sudo apt-get install -y wget apt-transport-https gnupg lsb-rel…...

git使用钩子文件出现错误

git的钩子文件出现错误 问题打印&#xff1a;解决办法1.删除本地钩子文件2. 恢复commit-msg钩子3.重新提交工程 问题打印&#xff1a; 无法commit 1 个文件: .git/hooks/commit-msg: 行 1: 未预期的符号 < 附近有语法错误 .git/hooks/commit-msg: 行 1: Your browse does …...

SpringBoot 第二课(Ⅱ)配置嵌入式服务器

目录 一、封装类解读 二、注册Servlet三大组件&#xff08;Servlet、Filter、Listener&#xff09; 自定义这三个组件 WebConfig MyFilter MyListener HelloController hello1.html hello2.html 三、使用外置的Servlet容器 1.一定要确保打包方式是war包 2.将…...

Python学习笔记(6)

Python学习笔记&#xff08;6&#xff09; 第13节课 函数基础1.函数定义与调用2.函数的返回值3.局部变量与全局变量 第13节课 函数基础 对于任何一个知识点&#xff0c;必须讨论的三个问题&#xff1a; &#xff08;1&#xff09;它是啥 &#xff08;2&#xff09;为啥有它 …...

HarmonyOS Next应用架构设计与模块化开发详解

引言 在HarmonyOS Next开发中&#xff0c;合理的应用架构设计和模块化开发是构建高效、可维护应用的关键。本文将深入探讨HarmonyOS Next应用的架构设计思路&#xff0c;并通过实际代码示例展示如何实现模块化开发。 应用架构设计 HarmonyOS Next应用通常采用分层架构设计&…...

batman-adv 优化:基于信号强度(RSSI)选择链路

batman-adv 优化&#xff1a;基于信号强度&#xff08;RSSI&#xff09;选择链路 1. 背景介绍 batman-adv&#xff08;Better Approach To Mobile Ad-hoc Networking Advanced&#xff09; 是一种用于无线 Mesh 网络的路由协议。它主要基于 ETX&#xff08;Expected Transmis…...

计算机二级:函数基础题

函数基础题 第一题 rinput("请输入半径&#xff1a;") c3.1415926*r*2 print("{:.0f}".format(c))输出&#xff1a; Type Error第二题 a7 b2 print(a%2)输出 1第三题 ab4 def my_ab(ab,xy):abpow(ab,xy)print(ab,end"\n") my_ab(ab,2)prin…...

系统思考与心智模式

“问题不是出在我们做了多少&#xff0c;而是出在我们做了什么。” — 赫尔曼凯恩 “一分耕耘一分收获”&#xff0c;这似乎是我们脑海中根深蒂固的心智模式。今天&#xff0c;我在一家餐厅用餐&#xff0c;店员告诉我&#xff0c;打卡收藏可以获得一份小食。没过多久&#xf…...

高考志愿填报管理系统基于Spring Boot SSM

目录 摘要 ‌一、系统需求分析‌&#xff1a; 1.1用户主体分析 1.2 功能需求分析 1.3、非功能需求分析 二、‌技术实现‌&#xff1a; ‌三、结论‌&#xff1a; 摘要 该系统主要实现了&#xff1a;学生信息管理、院校信息查询、专业信息展示、志愿填报模拟、智能推荐管…...

[深度学习]图像分类项目-食物分类

图像分类项目-食物分类(监督学习和半监督学习) 文章目录 图像分类项目-食物分类(监督学习和半监督学习)项目介绍数据处理设定随机种子读取文件内容图像增广定义Dataset类 模型定义迁移学习 定义超参Adam和AdamW 训练过程半监督学习定义Dataset类模型定义定义超参训练过程 项目介…...

Qt在ARM中,如何使用drmModeObjectSetProperty 设置 Plane 的 zpos 值

在 Qt 中直接使用 drmModeObjectSetProperty 设置 Plane 的 zpos 值需要结合 Linux DRM/KMS API 和 Qt 的底层窗口系统&#xff08;如 eglfs 平台插件&#xff09;。以下是详细步骤和代码示例&#xff1a; 1. 原理说明 DRM/KMS 基础&#xff1a; Plane&#xff1a;负责图层合成…...

springboot milvus search向量相似度查询 踩坑使用经验

1.前提提要&#xff1a;java的pom 版本为&#xff1a;2.4.9 milvus 版本是&#xff1a;2.4.13-hotfix 2.先来工具类方法 /*** 向量搜索* param client* param query* return*/public SearchResp search(NonNull MilvusClientV2 client, NonNull VectorCondition query) {final …...

BFS解决FloodFill算法

1.图像渲染 733. 图像渲染 - 力扣&#xff08;LeetCode&#xff09; 1.题目解析 有一幅以 m x n 的二维整数数组表示的图画 image &#xff0c;其中 image[i][j] 表示该图画的像素值大小。你也被给予三个整数 sr , sc 和 color 。你应该从像素 image[sr][sc] 开始对图像进行…...

计算机组成原理

计算机组成原理是计算机科学与技术领域的一门基础课程&#xff0c;它主要研究计算机硬件系统的结构、设计和工作原理。通过学习计算机组成原理&#xff0c;可以深入理解计算机是如何执行程序的&#xff0c;从最底层的角度了解计算机的工作机制。以下是计算机组成原理的一些核心…...

Spring Boot整合SSE实现消息推送:跨域问题解决与前后端联调实战

摘要 本文记录了一次完整的Spring Boot整合Server-Sent Events&#xff08;SSE&#xff09;实现实时消息推送的开发过程&#xff0c;重点分析前后端联调时遇到的跨域问题及解决方案。通过CrossOrigin注解的实际应用案例&#xff0c;帮助开发者快速定位和解决类似问题。 一、项…...

硅基流动:推理加速,告别“服务器繁忙,请稍后再试”

DeepSeek虽然一直热度高涨&#xff0c;但存在一个很直接的问题——“服务器繁忙&#xff0c;请稍后再试”。 一、介绍概况 硅基流动&#xff08;SiliconFlow&#xff09;是北京硅基流动科技有限公司推出的AI基础设施&#xff08;AI Infra&#xff09;平台&#xff0c;成立于202…...

腾讯云DNS和Lego工具结合使用,可以方便地为你的域名自动申请和续期SSL证书。

腾讯云DNS和Lego工具结合使用&#xff0c;可以方便地为你的域名自动申请和续期SSL证书。以下是具体步骤&#xff1a; 1. 准备工作 腾讯云账号&#xff1a;确保你有一个腾讯云账号&#xff0c;并且已经开通了DNS服务。域名&#xff1a;确保你拥有一个域名&#xff0c;并且已经…...

微服务 - 高级篇

微服务 - 高级篇 一、服务治理&#xff08;一&#xff09;服务注册与发现&#xff08;二&#xff09;负载均衡&#xff08;三&#xff09;服务熔断与降级 二、分布式事务&#xff08;一&#xff09;解决方案&#xff08;二&#xff09;最终一致性 三、性能优化&#xff08;一&a…...

【Linux】线程基础

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.背景知识02.线程概念简单使用线程线程调度成本更低 01.背景知识 OS进行内存管理&#xff0c;不是以字节为单位的&#xff0c;而是以内存块为单位的&#xff0c;默认大小为4kb&…...

WHAM 人体3d重建部署笔记 vitpose

目录 视频结果: docker安装说明: conda环境安装说明: 依赖项: 依赖库: 安装 mmpose,mmcv 下载模型权重: 算法原理, demo脚本 报错inference_top_down_pose_model: 测试命令: 视频结果: wham_smpl预测结果 git地址: GitHub - yohanshin/WHAM WHAM: Recons…...

netplan是如何操控systemd-networkd的? 笔记250324

netplan是如何操控systemd-networkd的? netplan通过以下方式操控systemd-networkd&#xff1a; 工作原理&#xff1a;netplan读取位于/etc/netplan/目录下的YAML格式的配置文件&#xff0c;这些配置文件描述了网络接口的配置。netplan会将这些配置文件解析并转换为systemd-ne…...

[学成在线]06-视频分片上传

上传视频 需求分析 教学机构人员进入媒资管理列表查询自己上传的媒资文件。 点击“媒资管理” 进入媒资管理列表页面查询本机构上传的媒资文件。 教育机构用户在"媒资管理"页面中点击 "上传视频" 按钮。 点击“上传视频”打开上传页面 选择要上传的文件…...

机器视觉场景应用中,有没有超景深的工业镜头

在机器视觉领域,确实存在具有超景深特性的工业镜头,这类镜头通过特殊的光学设计或技术手段,能够显著扩大清晰成像的纵向范围,从而满足复杂检测场景中对多平面物体清晰成像的需求。以下是相关技术要点及典型镜头类型: 1. 远心镜头 远心镜头是超景深镜头的典型代表,其特点包…...

初探 Dubbo Rust SDK打造现代微服务的新可能

一、背景故事&#xff1a;为什么要在微服务中用 Rust&#xff1f; 微服务世界曾是 Java 的天下&#xff0c;后来 Go 异军突起&#xff0c;如今&#xff0c;Rust 凭借其“高性能 安全 零成本抽象”的特性&#xff0c;正在逐步走入服务端核心舞台。 问题随之而来&#xff1a;…...

如何理解响应式编程

思考&#xff1a; 分析Netty与Reactor背压协调策略 用户的问题是关于如何在 Netty 和 Project Reactor 联合使用时处理背压问题&#xff0c;特别是当 Reactor 的处理速度跟不上 Netty 的事件产生速度时该怎么办。这是一个技术性很强的问题&#xff0c;涉及到 Netty 的非阻塞特…...

Python网络编程入门

一.Socket 简称套接字&#xff0c;是进程之间通信的一个工具&#xff0c;好比现实生活中的插座&#xff0c;所有的家用电器要想工作都是基于插座进行&#xff0c;进程之间要想进行网络通信需要Socket&#xff0c;Socket好比数据的搬运工~ 2个进程之间通过Socket进行相互通讯&a…...

DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例14,TableView15_14多功能组合的导出表格示例

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例14,TableView15_14多功…...

鸿蒙特效教程10-卡片展开/收起效果

鸿蒙特效教程10-卡片展开/收起效果 在移动应用开发中&#xff0c;卡片是一种常见且实用的UI元素&#xff0c;能够将信息以紧凑且易于理解的方式呈现给用户。 本教程将详细讲解如何在HarmonyOS中实现卡片的展开/收起效果&#xff0c;通过这个实例&#xff0c;你将掌握ArkUI中状…...

如何创建一个socket服务器?

1. 导入必要的库 首先&#xff0c;需要导入Python的socket库&#xff0c;它提供了创建和管理socket连接的功能。 python import socket 2. 创建服务器端socket 使用socket.socket()函数创建一个服务器端的socket对象&#xff0c;指定协议族&#xff08;如socket.AF_INET表示…...

react自定义hook

自定义hook&#xff1a; 用来封装复用的逻辑&#xff0c;&#xff0c;自定义hook是以use开头的普通函数&#xff0c;&#xff0c;将组件中可复用的状态逻辑抽取到自定义的hook中&#xff0c;简化组件代码 常见自定义hook例子&#xff1a; 封装一个简单的计数器 import {useS…...

Android Compose 框架的状态与 ViewModel 的协同(collectAsState)深入剖析(二十一)

Android Compose 框架的状态与 ViewModel 的协同&#xff08;collectAsState&#xff09;深入剖析 一、引言 在现代 Android 应用开发中&#xff0c;构建响应式和动态的用户界面是至关重要的。Android Compose 作为新一代的声明式 UI 工具包&#xff0c;为开发者提供了一种简…...

系统与网络安全------网络应用基础(1)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 TCP/IP协议及配置 概述 TCP/IP协议族 计算机之间进行通信时必须共同遵循的一种通信规定 最广泛使用的通信协议的集合 包括大量Internet应用中的标准协议 支持跨网络架构、跨操作系统平台的数据通信 主机…...

linux常用指令(6)

今天我们继续学习一些linux常用指令,丰富我们linux基础知识,那么话不多说,来看. 1.cp指令 功能描述&#xff1a;拷贝文件到指定目录 基本语法&#xff1a;cp [选项] source dest 常用选项&#xff1a;-r&#xff1a;递归复制整个文件夹 拷贝文件&#xff1a; 拷贝文件夹&am…...

EasyUI数据表格中嵌入下拉框

效果 代码 $(function () {// 标记当前正在编辑的行var editorIndex -1;var data [{code: 1,name: 1,price: 1,status: 0},{code: 2,name: 2,price: 2,status: 1}]$(#dg).datagrid({data: data,onDblClickCell:function (index, field, value) {var dg $(this);if(field ! …...

【设计模式】单件模式

七、单件模式 单件(Singleton) 模式也称单例模式/单态模式&#xff0c;是一种创建型模式&#xff0c;用于创建只能产生 一个对象实例 的类。该模式比较特殊&#xff0c;其实现代码中没有用到设计模式中经常提起的抽象概念&#xff0c;而是使用了一种比较特殊的语法结构&#x…...