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

【弹性计算】异构计算云服务和 AI 加速器(四):FPGA 虚拟化技术

异构计算云服务和 AI 加速器》系列,共包含以下文章:

  • 异构计算云服务和 AI 加速器(一):功能特点
  • 异构计算云服务和 AI 加速器(二):适用场景
  • 异构计算云服务和 AI 加速器(三):GPU 虚拟化技术
  • 异构计算云服务和 AI 加速器(四):FPGA 虚拟化技术
  • 异构计算云服务和 AI 加速器(五):EAIS & AI 加速器

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!

异构计算云服务和 AI 加速器(四):FPGA 虚拟化技术

在这里插入图片描述

🚀 FPGAField-Programmable Gate Array现场可编程门阵列)是一种可重构的半导体芯片,允许用户根据需要动态配置硬件逻辑,从而实现定制化的数字电路功能。它介于通用处理器(如 CPU)和专用芯片(如 ASIC)之间,兼具灵活性和高性能计算能力。

将 FPGA 的高性价比算力通过云输出,使得 FPGA 的算力普惠化、平民化,这是 FPGA as a Service 的核心出发点和立足点。同时,云上使用 FPGA 与 FPGA 的传统使用方式也有着非常大的区别。FPGA as a Service 的核心就是 FPGA 虚拟化技术

目前 FPGA 虚拟化技术还在发展初期,近几年随着云计算和 AI 技术的发展,才逐渐成为工业和学术领域研究的热点。关于 FPGA 虚拟化技术的介绍文献也比较少,关于 FPGA 虚拟化技术的发展历史,目前比较全面的总结可以参考 2018 年由 Manchester 大学学生发表的一篇 IEEE 论文《A Survey on FPGA Virtualization》,文中提到早在 2004 年由 Plessl 和 Platzner 发表的一篇论文《Virtualization of Hardware Introduction and Survey》中提到过 FPGA 虚拟化技术的概念,将 FPGA 虚拟化技术分为 时域划分Temporal Partitioning)、虚拟化执行Virtualized Execution)和 虚拟机Virtual Machines)三种。

  • 时域划分 早期主要解决设备容量问题,是将大规模的应用设计拆分为几个小设计,然后将每个设计烧写在单个 FPGA 上顺序执行。时域划分技术如下图所示,主要包括 网表划分数据流图划分CDFG 划分。随着数据量和计算复杂度的增加,单片 FPGA 已经无法满足一个应用的需求,需要多片 FPGA 并行完成,虚拟化技术逐渐打破了时间和空间维度的限制,就像大型数据中心的应用场景:多片 FPGA 并行执行同一个任务,并可以及时切换到下一个任务。

在这里插入图片描述

  • 虚拟化执行 是把一个应用分成几个有关联的任务,并通过一个抽象层来管理和调度它们,其目的是在一定程度上实现 设备无关性Device Independence),从而解决资源管理和安全隔离问题,还可以提高开发效率,比较典型的例子是 PipeRench 项目,此项目成功研发了 Kilocore 芯片,它内置了一个 PowerPC 处理器,实现了硬件虚拟化,并可以动态配置,从而解决 FPGA 的资源限制问题。

  • 虚拟机 通过一个抽象架构来描述应用从而彻底实现设备无关性。起初,虚拟机的概念用来表示 FPGA 的静态架构,譬如 Shell 或者 vFPGA 的 Hypervisor,并不是我们现在理解的虚拟机概念。现在的 FPGA Overlay 技术是应用比较广泛的 FPGA 虚拟化方法之一,它是位于 FPGA 硬件层之上、并连接顶层应用的虚拟可编程架构,实现了对 FPGA 底层硬件资源的抽象化和虚拟化。FPGA Overlay 的具体实现方式有很多种,这里不详细介绍,其主要目的是为上层用户提供他们熟悉的编程架构与接口,比如通过 C 语言等高层语言对 Overlay 中的通用处理器等进行编程,而无须担心具体的硬件电路实现,这点类似 HLS。Overlay 实现了 FPGA 的硬件无关性,便于应用设计在不同 FPGA 架构间移植。另外,用户可以选择只编译自己改动的逻辑部分,在很大程度上缩短了 FPGA 的编译时间,也方便对应用进行调试和修改。但是在实际开发中,由于其引入的 Overlay 层并不能完全隐藏 FPGA 结构,而且此技术没有业界统一标准,所以会来带额外的开发难度和成本。

按照资源的抽象级别,FPGA 虚拟化技术分为三类,如下图所示。

在这里插入图片描述

  • 资源级别Resource Level):FPGA 上的资源可分为两种,一种是可配置的,一种是不可配置的,所以资源级别的虚拟化主要指架构虚拟化(增加一个抽象层)和I/O 虚拟化,比较典型的技术就是 FPGA Overlay 技术,I/O 虚拟化技术本质上跟 CPU/GPU 实现类似,比如 FPGA 云主机用到的设备透传功能。
  • 单节点级别Node Level):单节点指单片 FPGA,主要指具备资源管理功能的抽象层,包括 VMM(Virtual Machine Monitors,也叫 Hypervisor),Shell(FPGA OS或 Hypervisor-vFPGA)和调度管理,主要用于多租户场景,即 FPGA 云主机。
  • 多节点级别Multi-Node Level):多节点指由两片以上 FPGA 组成的 FPGA 集群,虚拟化的目的是在多片 FPGA 上完成同一个加速任务。其实现依赖 FPGA 互联功能,常见的有三种互联方式,如下图所示。

在这里插入图片描述

🚀 将加速器扩展到多片 FPGA 上的架构集合。此处

  • a) 代表 FPGA 到 FPGA 通信;
  • b) 展示了一种服务器-客户机架构,在这种架构中 FPGA 直接和服务器通信;
  • c) 表示在服务器-客户机架构中,FPGA 作为客户机 CPU 的一个特殊设备。

FPGA 虚拟化技术比较典型的应用场景包括基于 OpenCL 实现的 MapReduce 框架和微软的 Catapult 项目。

从 FPGA 云主机的实现方式来说,FPGA 虚拟化指 I/O(PCIe 设备)虚拟化技术。

I/O 虚拟化技术,有些地方也叫 I/O 设备虚拟化技术,目前主流的模型实现方式有以下几种:

  • 全模拟:纯软件实现,通常由虚拟化层(QEMU)完全模拟一个设备给虚拟机用,其优点是不需要修改操作系统内核和驱动,因此它是可移植性与兼容性最好的 I/O 设备虚拟模型。但是,这种实现模型性能不高,主要原因是:第一,软件模拟本身就无法具有很高的性能 ;第二,在这种实现方式中,I/O 请求的完成需要虚拟机与监视程序多次的交互,产生大量的上下文切换,开销巨大。
  • Virtio 驱动半虚拟化:将设备虚拟的工作一拆为二,一部分在虚拟机内核中作为前端驱动,一部分放到虚拟化层上(通常是 QEMU)作为后端,前后端共享 Virtio 环协同完成任务。Virtio 前后端的技术只是减少了 VM Exit 和 VM Entry(Guest 和 Host 的上下文切换),并且使 Guest 和 Host 能通过并行处理 I/O 来提高吞吐量并减少延迟。但是,I/O 的路径并不比全虚拟化技术少。
  • 硬件辅助虚拟化:借助硬件技术,如 Intel 的 VT-d 技术实现 PCI 设备直接挂载给虚拟机,常见的有设备直通和 SR-IOV。

纵观各大云服务提供商,FPGA 云服务器采用的都是 设备直通Device Passthrough),主要因为以下三点 :

  • 一是 FPGA 的性能,客户考虑业务搬迁上云首先要做的就是对比,跟本地物理机比、跟竞品(如 GPU/ASIC)比。虚拟化必然导致部分的硬件性能损耗,1% 的性能损失都会增大客户拒绝使用 FPGA 云服务器的可能性 ;
  • 二是应用场景,FPGA 比较适用于计算密集型和通信密集型任务。在大数据爆发的时代,很多应用都需要调度多片 FPGA 才能满足需求,将同一片 FPGA 共享给多个客户的需求并不强烈 ;
  • 三是实现难度,分片 FPGA(vFPGA)的多租户场景,在安全和隔离的实现上,虽然可以复用 vGPU 方案,但是硬件逻辑开发的难度非常大。综合考虑,各大云服务提供商在FPGA 设备虚拟化时选择的都是性能损耗最小的设备直通方案。

设备直通技术:是将宿主机上的 PCIe 设备直接分配给客户机使用,虚拟机独占这个设备,在客户机进行对应的 I/O 操作时,不需要通过 VMM 或被 VMM 截获,所以设备性能几乎无损耗。设备直通技术的实现依赖 IOMMU 功能(隔离虚拟机对内存资源的访问),需要硬件支持,比如 Intel 平台的VT-d 技术。

说到 VT-d 技术,首先要解释下 DMA(直接内存读取),它是一种硬件机制,允许外围设备和主内存之间直接传输数据,不需要 CPU 参与,由此可以大大提高设备的吞吐量。I/O 虚拟化的关键在于解决 I/O 设备与虚拟机的数据交换问题,而这部分主要指 DMA 和中断请求(IRQ)。只要解决好这两个方面的隔离、保护及性能问题,就是成功的 I/O 虚拟化。VT-d 通过重新设计 IOMMU 架构,在 CPU、内存和 I/O 设备之间增加了一个硬件设备,其主要功能是将 I/O 设备的 DMA 访问请求和中断请求重定向到 VMM 设定好的 VM 中,最终实现了 DMA 虚拟化,这项技术也叫 DMA 重映射

阿里云 FPGA 云主机的设备直通方式采用的是 VFIO,这是一套用户驱动框架,通俗来讲就是一个设备驱动。在虚拟化情景下,VFIO 主要用来在用户实现设备直通,充分利用了 VT-d 技术提供的 DMA 重映射和中断重映射特性,在保证直通设备的DMA 安全性的同时其 I/O 性能接近物理设备。

总体来说,FPGA 板卡(PCIe 设备)的透传方式跟 GPU/NIC 等 PCIe 设备并无差别,鉴于 FPGA 本身的硬件特性和安全隔离要求,阿里云 FPGA 云服务器虽然采用了设备直通方式,但是并没有把 FPGA 设备功能完全暴露给虚拟机,而是将 PCIe 从功能角度划分为两个 PF(Physical Function):即 管理 PFManagement PF)和 用户 PFUserPF),如下图所示。

在这里插入图片描述

  • 管理 PF:提供 FPGA 各种控制功能,如 FPGA 镜像加载、状态监控等。例如,在 FPGA 云主机上,只有先发送加载请求,后台系统认证身份后,通过宿主机驱动才能发起加载操作。
  • 用户 PF:对应的是逻辑功能接口,此功能会通过设备直通方式透传给虚拟机,用户可以使用官方提供的驱动访问设备,也可以自己开发。

PCIe 功能双 PF 的划分,在一定程度上保护了 FPGA 板卡不会被用户恶意烧写,从而降低了宿主机的停机风险,也保证了 FPGA as a Service 的可靠性。此方案的实现基于 FPGA 特殊的硬件特性(部分可重配置),主流云服务提供商的做法基本类似。

部分可重配置Partial Reconfiguration):在前面介绍 FPGA 虚拟化技术的时候提到过,其实现原理是将 FPGA 内部划分出多个区域,在 FPGA 运行时单独对这些区域进行编程和配置,以改变区域内电路的逻辑,但并不影响 FPGA 其他电路的正常运行。它可以实现时间域和空间域两个维度的任务切换,很多大型应用的逻辑都是利用 FPGA 这一特性实现的,如微软的 Catapult 项目同时提出了 Shell(不可配置区域)和 Role(可重配的逻辑单元)的概念。也有将这一特性应用在多租户场景下的,提出了vFPGA 的概念,即将一个 FPGA 共享给多个用户使用,如 IBM 的 CloudFPGA 项目。

各云服务提供商的 FPGA 云服务器也抓住了这一特性,将 FPGA 在逻辑上划分为 Shell(静态区)和用户逻辑(动态区)。

  • 静态区:FPGA 的静态区主要包括 PCIe、DRAM、DMA 及中断等接口逻辑,一般由云服务提供商提供,主要负责 FPGA 管理功能。
  • 用户逻辑:FPGA 的动态可重配置区域属于用户数据,即用户的知识产权(IP)。

阿里云 FPGA 云主机在 F3 实例设计时也提出了 Role 的概念,它是和 Shell 类似的封装,跟用户逻辑一样处于动态区域,其目的是简化 Shell 功能,以尽可能减少 Shell 升级。另外,通过 Role 实现了同一个 Shell 既可以支持 OpenCL 开发,也可以支持 RTL 开发的功能,同时降低了用户对 FPGA 的开发门槛。

相关文章:

【弹性计算】异构计算云服务和 AI 加速器(四):FPGA 虚拟化技术

《异构计算云服务和 AI 加速器》系列,共包含以下文章: 异构计算云服务和 AI 加速器(一):功能特点异构计算云服务和 AI 加速器(二):适用场景异构计算云服务和 AI 加速器(…...

Unity功能模块一对话系统(5)-完善对话流程及功能

现在我们的文本仍然是单句显示的,这还不是我们想要的效果,本期让我们完善对话流程,并使用SO(ScriptableObject)来进行一段对话序列的配置和动态加载。 最终效果功能展示 功能一:场景内可根据资源序号ID来…...

Ubuntu 系统中安装 Nginx

步骤 1:更新软件包列表 在安装前,先更新系统软件包列表: sudo apt update步骤 2:安装 Nginx 通过 apt 直接安装 Nginx: sudo apt install nginx -y步骤 3:验证安装 安装完成后,检查 Nginx …...

Elasticsearch:使用 Azure AI 文档智能解析 PDF 文本和表格数据

作者:来自 Elastic James Williams 了解如何使用 Azure AI 文档智能解析包含文本和表格数据的 PDF 文档。 Azure AI 文档智能是一个强大的工具,用于从 PDF 中提取结构化数据。它可以有效地提取文本和表格数据。提取的数据可以索引到 Elastic Cloud Serve…...

如何 编译 px4

DeepSeek-R1满血版 回答完成 深度思考完成 用时27秒,搜索全网29篇资料 以下是详细的PX4固件编译教程,综合多平台及常见问题解决方案: 一、环境准备 ‌系统要求‌ ‌Ubuntu 20.04/22.04‌(推荐)或 ‌MacOS 12‌ Windo…...

pycharm2024.1.1版本_jihuo

目录 前置: 步骤: step one 下载软件 step two 卸载旧版本 1 卸载软件 2 清除残余 step three 下载补丁 step four 安装2024.1.1版本软件 step five 安装补丁 1 找位置放补丁 2 自动设置环境变量 step six 输入jihuo码 前置: 之…...

LLaMA Factory微调后的大模型在vLLM框架中对齐对话模版

LLaMA Factory微调后的大模型Chat对话效果,与该模型使用vLLM推理架构中的对话效果,可能会出现不一致的情况。 下图是LLaMA Factory中的Chat的对话 下图是vLLM中的对话效果。 模型回答不稳定:有一半是对的,有一半是无关的。 1、未…...

Vulnhub:Digitalword.local: FALL靶机渗透

将靶机按照图中连接方式打开,fall在virtualBox中打开 信息收集 扫描得ip arp-scan -l 扫描端口 nmap -A -T4 -sV -p- 扫描目录 gobuster dir -u http://192.168.117.160 -x php,txt,html -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt 一个一个…...

androidstudio安装完成后创建新的示例项目编译报错解决

项目场景: 提示:这里简述项目相关背景: 安装完成android studio想要编译一个自带的demo项目,没想到一直有编译报错,最后终于搞好了,记录下避免再踩坑。 androidstudio安装完成后创建新的示例项目编译报错…...

C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…...

QT 跨平台发布指南

一、Windows 平台发布 1. 使用 windeployqt 工具 windeployqt --release --no-compiler-runtime your_app.exe 2. 需要包含的文件 应用程序 .exe 文件 Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll 等 Qt 库 platforms/qwindows.dll 插件 styles/qwindowsvistastyle.dll (如果使…...

数制——FPGA

1、定点数 定点数的三种表示方式: 原码:符号位 绝对值 表示方法 反码:正数的反码表示 与原码表示一致,负数的反码表示 除符号位,其他位全都取反 补码:正数的补码表示 与原码表示一致,负数的补码…...

车载以太网网络测试 -25【SOME/IP-报文格式-1】

1 摘要 本专题接着上一专题对SOME/IP进行介绍,主要对SOME/IP报文格式以及定义的字段进行详细介绍,有助于在实际项目过程中对SOME/IP报文的理解。 上文回顾: 车载以太网网络测试 -24【SOME/IP概述】 2 SOME/IP-报文格式 通过上个专题介绍&a…...

Kubernetes》》k8s》》Replication Controller

RC(Replication Controller) 应用托管在kubernetes之后,kubernetes需要保证应用能够持续运行,这是RC的工作内容,它会确保任何时间kubernetes中都有指定数量的Pod在运行。在此基础上,RC还提供了一些更高级的特性,比如滚…...

力扣HOT100之矩阵:73. 矩阵置零

这道题我没有想到什么好的办法,直接暴力AC了,直接遍历两次矩阵,第一次遍历用两个向量分别记录出现0的行数和列数,第二次遍历就判断当前的元素的行数或者列数是否出现在之前的两个向量中,若出现了就直接置零&#xff0c…...

天锐蓝盾终端安全防护——企业终端设备安全管控

从办公室的台式电脑到员工手中的移动终端,这些设备不仅是工作的得力助手,更是企业数据的重要载体。然而,随着终端设备的广泛使用,安全风险也如影随形。硬件设备使用不当、数据随意传输等问题频发,使得企业数据面临着泄…...

【博客】使用GithubAction自动同步obisidian和hexo仓库

使用Github Action自动同步obisidian和hexo仓库,避免手动操作。 本文首发于❄慕雪的寒舍 1. 烦恼 先来说说慕雪现在的笔记和博客是怎么管理的吧,我正在使用两套笔记软件 思源笔记:私密性高一些,不是博客的笔记都在这里面。由于思…...

UE5学习笔记 FPS游戏制作23 区分敌我,寻找敌对角色

文章目录 方法1 tag方法2 变量添加变量和函数防止队友伤害 修改Task使用球形检测查找敌人场景面板直接编辑属性 方法1 tag 角色蓝图身上有一个tag标签,可以通过标签内容区分队伍 通过ActorHasTag判断一个Actor是否有对应的标签 方法2 变量 添加变量和函数 在s…...

ECharts各类炫酷图表/3D柱形图

一、前言 最近鸡米花实现了各类的炫酷的图表,有3D柱形图、双边柱形图以及异形柱形图,好了,直接上图: 二、效果图 一个个来吧,下面就是代码啦,注意,一下图表展示的宽高均为800px*300px 三、异形横…...

AI基础03-视频数据采集

上篇文章我们学习了图片的数据采集,今天主要了解一下视频数据采集的方法。视频是由一系列图像构成的,其中每一张图片就是一帧。视频数据采集方法通常有自动图像采集和基于处理器的图像采集两种。我们学习一下如何利用python 工具和笔记本计算机摄像头进行…...

docker-compose部署prometheus+grafana+node_exporter+alertmanager规则+邮件告警

目录 一.docker-compose文件 二.配置文件 三.文件层级关系,docker-compose和配置文件位于同级目录 四.node_exporter页面json文件 五.效果展示 prometheusalertmanager邮件告警 grafana面板效果 六.涉及离线包 一.docker-compose文件 [rootsulibao prometh…...

CPM:大规模生成式中文预训练语言模型

摘要 预训练语言模型(PLMs)已被证明对各种下游自然语言处理(NLP)任务有益。最近,GPT-3 以 1750 亿参数和 570GB 训练数据引起了广泛关注,因为它具备少样本(甚至零样本)学习的能力。…...

k8s scheduler几种扩展方式的关系及区别

网上关于scheduler扩展介绍的文章很多,但都是东说一句西说一嘴,完全没有逻辑性,对于逻辑建构者看着很痛苦,这篇文章不会深入教你怎么扩展,而是教你几种扩展方式的关系和逻辑结构: 目前Kubernetes支持五种方…...

Spring Boot 3.4.3 基于 SpringDoc 2 和 Swagger 3 实现项目接口文档管理

在现代企业级应用开发中,前后端分离已成为主流模式,前端负责界面呈现,后端专注提供 RESTful API 接口。然而,接口文档的编写和维护往往是开发过程中的痛点。Spring Boot 3.4.3 结合 SpringDoc 2 和 Swagger 3,为开发者…...

前端D3.js面试题及参考答案

目录 解释 D3.js 中 enter ()、update ()、exit () 的作用及典型应用场景 描述数据连接(Data Join)的原理,如何通过 data () 方法实现数据集与 DOM 元素的动态绑定? 如何利用 datum () 实现单个元素的数据绑定?与 data () 有何区别? 在动态数据更新时,如何通过 merge…...

Docker实现MySQL主从复制配置【简易版】

Docker实现MySQL主从复制配置 环境准备 安装docker 拉取MySQL 8.0镜像 docker pull mysql:8.0#检查 docker images | grep mysql代码流程 由于Mysql8.0的ssl验证十分繁琐,在创建容器的时候一定要禁掉 创建自定义网络 docker network create mysql-replication-ne…...

IDEA中打开项目Vue+Vue基本语法

一、IDEA中打开项目 1.IDEA中安装Vue基本插件 2.项目结构 项目根目录 node_modules : npm 加载的项目依赖模块 public : 存放静态资源,如图片、视频等。 src : 项目源码目录,包含主要的开发文件。 index.html : 首页入口文件,可以添…...

【深度学习新浪潮】图像修复(Image Inpainting)技术综述:定义、进展与应用展望

本文为精简版,完整技术细节与参考文献可与作者讨论。 1. 图像修复的定义与核心目标 图像修复(Image Inpainting)是一种通过算法手段填补图像中缺失区域或移除不需要对象的技术,其核心目标是利用图像上下文信息生成与周围像素一致且视觉自然的内容。该技术通过计算机视觉和…...

【实战】解决图片 Hover 抖动问题的完整指南

在开发网站时,很多人都会遇到一个常见问题:鼠标移动到图片上,图片放大,结果发生抖动或闪烁。这个问题往往伴随着后端接口请求、JS 动态追加 DOM 等复杂行为。 本文将深入剖析这个问题的成因,并提供一套彻底的解决方案…...

java容器

一、List 接口实现类 1. ​ArrayList 特性:基于动态数组实现,支持快速随机访问(时间复杂度 O(1)),但插入/删除元素时需移动后续元素(时间复杂度 O(n)) 一、核心方法分类 ​添加元素 add(E e):尾部追加元素,均摊时间复杂度O(1)add(int index, E element):指定位置插入…...

arthas之jvm相关命令

文章目录 1. dashboard2. thread线程相关3. jvmTHREAD相关文件描述符相关 4. sysprop5. 小结6. sysenv7. vmoption8. getstatic9. ognl10. 小结 1. dashboard 作用:显示当前系统的实时数据面板,按q或ctrlc退出 数据说明 ID: Java级别的线程ID&#xff…...

UDP视频传输中的丢包和播放花屏处理方法

在处理UDP视频传输中的丢包和花屏问题时,需要结合编码优化、网络传输策略和接收端纠错技术。以下是分步骤的解决方案: 1. 前向纠错(FEC,Forward Error Correction) 原理:在发送数据时附加冗余包,接收方通过冗余信息恢复丢失的数据包。 实现方法: 使用Reed-Solomon、XO…...

蓝桥杯 班级活动

问题描述 小明的老师准备组织一次班级活动。班上一共有 n 名同学(n 为偶数),老师想把所有同学进行分组,每两名同学一组。 为了公平,老师给每名同学随机分配了一个 n 以内的正整数作为 id,第 i 名同学的 i…...

Open webui的使用

问题 之前本地量化模型管理器ollama的文章,我们知道可以通过ollama来管理本地量化模型,也能够在命令行中与相关模型进行对话。现在我们想要在有个web页面通过浏览器来与本地模型对话。这里我们就使用Open webui作为界面来与本地模型对话。 安装启动 这…...

页面重构过程中如何保证良好的跨浏览器一致性?

在页面重构的过程中,为了确保网页能够在不同的浏览器中呈现一致的效果,我们需要采取一系列措施来提高跨浏览器的一致性。以下是几个关键步骤和技术要点: 使用标准化的HTML和CSS:始终遵循最新的Web标准编写代码,例如采用…...

Python库与Excel

目录 一、库 1、Python自带的库 2、第三方库 3、第三方库的安装 二、import的用法 三、datetime库 1、处理日期 2、处理时刻 3、局限性 四、random库 1、函数 2、随机种子 3、发牌模拟器 五、jieba库 六、openpyxl库 1、表格读取 2、表格元素遍历 3、工作表的…...

记录一下最近参与实习 外包 社招流程里的一些感悟

记录一下最近参与实习 外包 社招流程里的一些感悟 1.简历门面要重视 1.简历非常重要,它是你的门面 初步了解到你的一个实习/工作经历,然后掌握的技术栈,是否与当前项目匹配,哪些模块上的设计是我们想要重点关注的,可…...

流动的梦境:GPT-4o 的自回归图像生成深度解析

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

HarmonyOS NEXT开发进阶(十四):HarmonyOS应用开发者基础认证试题集汇总及答案解析

文章目录 一、前言二、判断题(134道)三、单选题(210道)四、多选题(123道)五、拓展阅读 一、前言 鸿蒙原生技能学习阶段,通过官方认证的资格十分有必要,在项目实战前掌握基础开发理论…...

Visual Studio Code(简称 VS Code)下载与使用教程1(新建文件,语法高亮,快捷键,主题,快捷指令)

简介 由 微软(Microsoft) 开发的 免费、开源、跨平台 的 代码编辑器,广泛用于编程开发、文本编辑和调试。 主要功能 代码编辑:支持几乎所有编程语言(Python、JavaScript、Java、C、Go 等),提供…...

3.28前端模拟面试

针对你 1.5 年的前端经验,结合 Vue 3、TypeScript、微前端(qiankun)等背景,我准备了一套模拟面试题,偏向场景化问题,考察你的实战经验和思维能力。 一、工程化 & 架构 你们的前端项目使用 qiankun 做微…...

pip 安装某个包之后,Jupyter Lab仍旧显示包冲突;例如:Numba needs NumPy 2.1 or less. Got NumPy 2.2.

异常提示 Numba needs NumPy 2.1 or less. Got NumPy 2.2. --------------------------------------------------------------------------- ImportError Traceback (most recent call last) Cell In[8], line 53 import pywt4 import matplot…...

Python:爬虫概念与分类

网络请求: https://www.baidu.com url——统一资源定位符 请求过程: 客户端,指web浏览器向服务器发送请求 请求:请求网址(request url);请求方法(request methods);请求头(request header)&…...

flask开发中设置Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数)

如果你想控制一个 Flask SQLAlchemy 的 db.Column 只存储非负整数(即 0 或正整数),你可以在模型中使用验证来确保这一点。一种常见的方法是使用模型的 validate 方法或者在执行插入或更新操作时进行检查。 以下是实现这一目标的几种方法&…...

从0到1解决项目问题经验-Vue3前端

问题1: 我有文件里面这么一段代码,但是现在有个问题,就是在设备信息详情的抽屉页面中,当我首次点击查看的时候,显示的物流中心名称现在是跟"deviceInfo.logisticsCenterName"做的绑定,于是现在显…...

Vue.js的CSS过渡与动画:常用案例解析

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...

【论文阅读】Co2l: Contrastive continual learning

原文链接:[2106.14413] Co$^2$L: Contrastive Continual Learning 阅读本文前,需要对持续学习的基本概念以及面临的问题有大致了解,可参考综述: Wang L, Zhang X, Su H, et al. A comprehensive survey of continual learning: …...

Python给对象数组排序

文章目录 1. 使用sorted()函数(返回新的排序后的列表)2. 使用list.sort()方法(原地排序,不返回新列表)3. 如果数据结构是集合(set),集合本身是无序的,无法直接排序&#…...

Docker-清理容器空间prune

docker system prune -a 是一个非常有用的命令,用于清理 Docker 系统中未使用的资源,包括停止的容器、未使用的网络、卷以及未被任何容器引用的镜像(悬空镜像和所有未使用的镜像)。以下是关于该命令的详细说明: 命令…...

Kubernetes》》K8S》》Deployment 、Pod、Rs 、部署 nginx

Deployment deployment文档说明 kubectl get rs,deployment,pods 删除pod 、deployment 、service # 如果只删除pod,deployment会自动重建,所以应该先删除deployment。 # 下面演示的是删除所有deployment,可以指定只删除某个 # 删除所有…...