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

AI 场景下,函数计算 GPU 实例模型存储最佳实践

作者:有松

当前,函数计算 FC 已被广泛应用在各种 AI 场景下,函数计算支持通过使用容器镜像部署 AI 推理应用,并且提供多种选项来访问训练好的模型。为了帮助开发者高效地在函数计算上部署 AI 推理应用,并快速解决不同场景下的模型存储选型问题,本文将对函数计算的 GPU 模型存储的优缺点及适用场景进行对比分析, 以期为您的模型存储决策提供帮助。

背景信息

函数的存储选型请见:存储选型 [ 1] 。其中,适宜用作 GPU 模型存储的有以下 2 种。

  • 文件存储 NAS [ 2]
  • 对象存储 OSS [ 3]

除此之外,GPU 函数使用自定义容器镜像部署业务,因此还可以将模型文件直接放置到容器镜像中。

每种方法都有其独特的应用场景和技术特点,选择模型存储方式时应当考虑具体需求、执行环境以及团队的工作流程。通过灵活运用这些策略,达到模型存储在效率和成本上的平衡。

模型随容器镜像分发

将训练好的模型和相关应用代码一起打包在容器镜像中,模型文件随容器镜像分发,这是最直接的方法之一。

优缺点

优点:

  • 便利性:创建好镜像后,可以直接运行它进行推理而无需额外配置。
  • 一致性:确保每个环境中的模型版本都是一致的,减少了由于不同环境中模型版本差异导致的问题。

缺点:

  • 镜像体积:镜像可能会非常大,特别是对于大尺寸模型。
  • 更新耗时:每次模型更新时都需要重新构建和分发镜像,这可能是一个耗时的过程。

说明

为了提升函数实例的冷启动速度,平台会对容器镜像进行预处理。如果镜像尺寸过大,一方面可能会超出平台对镜像大小的约束,另一方面也会导致镜像加速预处理所需时间的延长。

  • 关于平台镜像大小限制,请参见 GPU 镜像大小限制是多少? [ 4]
  • 关于镜像预处理和函数状态的信息,请参见自定义镜像函数状态及调用 [ 5]

使用场景

  • 模型尺寸相对较小,例如百兆字节左右。
  • 模型变更频率较低,可以考虑将模型打包在容器镜像中。

如果您的模型文件较大、迭代频繁或随镜像发布时超过平台镜像大小限制,建议模型与镜像分离。

模型放在 NAS 文件存储

函数计算平台支持将 NAS 文件系统挂载到函数实例指定目录上,应用通过访问 NAS 挂载点目录实现模型文件加载。

优缺点

优点:

  • 兼容性:相比 FUSE 类文件系统,NAS 提供的 POSIX 文件接口较完整和成熟,因此应用兼容性较好。
  • 容量:NAS 提供 PiB 级存储容量。

缺点:

  • 依赖 VPC 网络:一方面,需要为函数配置 VPC 访问通道才能访问 NAS 挂载点,在配置时涉及的云产品权限点相对较多;另一方面,函数实例冷启动时,平台为实例建立 VPC 访问通道会产生秒级的耗时。
  • 内容管理方式较单一:NAS 文件系统需要挂载才能使用,相对单一,需要建立相应的业务流程将模型文件分发到 NAS 实例上。
  • 不支持双活和多 AZ,详情请见 NAS 常见问题 [ 6]

说明

在大量容器同时启动加载模型的场景下,容易触及 NAS 的带宽瓶颈,导致实例启动耗时增加,甚至因超时而失败。例如,定时 HPA 批量启动预留 GPU 实例、突发流量触发大量按需 GPU 实例的创建。

  • 可以从控制台查看 NAS 性能监控(读吞吐)。
  • 可以通过向 NAS 增加数据量的方式来提升 NAS 读写吞吐量。

采用 NAS 来存储模型文件,建议选用通用型 NAS 中的“性能型”,其主要原因在于该类型 NAS 可以提供较高的初始读带宽,约 600MB/s,详情请参见通用型 NAS。

使用场景

在按量 GPU 使用场景下,需要极速的启动性能。

模型放在 OSS 对象存储

函数计算平台支持将对象存储 OSS Bucket 挂载到函数实例的指定目录,应用程序可以直接从 OSS 挂载点加载模型。

优点

  • 带宽:OSS 的带宽上限较高,相比 NAS 不易出现函数实例间带宽争抢现象,详情请见 OSS 使用限制及性能指标 [ 7] 。与此同时,还可以通过开通 OSS 加速器 [ 8] 获得更高的吞吐能力。

  • 管理方法多样:

    • 提供控制台、开放 API 等访问通道。
    • 提供多种本地可用的对象存储管理工具,请参考 OSS 常用工具 [ 9]
    • 可使用 OSS 跨区域复制 [ 10] 功能进行模型同步与管理。
  • 配置简单:相比 NAS 文件系统,函数实例挂载 OSS Bucket 无需打通 VPC,即配即用。

  • 成本:相比 NAS,一般来说 OSS 成本更优。

说明

从实现原理上,OSS 挂载使用 FUSE 用户态文件系统机制实现。应用访问 OSS 挂载点上的文件时,平台最终将其转换为 OSS API 调用实现对数据的访问。因此 OSS 挂载还有以下特征:

  • 其工作在用户态,会占用函数实例的资源配额,如 CPU、内存、临时存储等,因此建议在较大规格的 GPU 实例下使用。
  • 数据的访问使用 OSS API,其吞吐和时延最终受限于 OSS API 服务,因此更适合访问数量较少的大文件(如模型加载场景),不宜用于访问大量小文件。
  • 当前的实现还无法使能系统的 PageCache,相比 NAS 文件系统,这意味着单个实例内应用如果需要多次访问同一个模型文件,无法用到 PageCache 加速效果。

使用场景

  • 大量实例并行加载模型,需要更高存储吞吐能力避免实例间带宽不足的情况。
  • 需要本地冗余,或者多地域部署的场景。
  • 访问数量较少的大文件(比如模型加载场景)。

总结对比

基于以上对比,根据 FC GPU 的不同使用模式、不同容器并发启动数量、不同模型管理需求等维度,FC GPU 上模型存储的最佳实践如下:

  • 在按量 GPU 使用场景下,由于需要极速的启动性能,推荐使用【通用 NAS-性能型】。
  • 在闲置 GPU 使用场景下,由于容器启动耗时不敏感,推荐使用【oss】。
  • 在大并发GPU容器同时启动使用场景下,为了避免 NAS 的单点带宽瓶颈,推荐【oss accl】。
  • 在多地域单元化部署使用场景下,为了减少模型管理复杂度与跨域同步难度,推荐【oss、oss accl】。

测试数据

我们通过对 Stable Diffusion 模型切换耗时的测量,对比了不同模型存储方法的性能差异。本次测试的选取的模型和模型尺寸大小如下表。

第 1 次模型切换耗时(单位:秒)

第 2 次模型切换耗时(单位:秒)

测试结论如下:

  • PageCache 使能。在这个场景中,Stable Diffusion 第一次加载模型时,会读取模型文件两次,其中一次用于计算模型文件的哈希值。后续触发模型加载时,则只读取模型文件一次。第一次访问 NAS 挂载点上的文件时,会在内核填充相应的 PageCache,从而加速第二次访问。访问 OSS 挂载点不具备使能 PageCache 的特性。
  • 影响耗时的其他因素。除了存储介质本身,模型加载耗时还与应用本身的实现细节相关,如应用本身的吞吐能力,读取模型文件时的 IO 模式(顺序读取、随机读取)。

相关链接:

[1] 存储选型

https://www.alibabacloud.com/help/zh/functioncompute/fc-3-0/product-overview/selection-of-function-storage

[2] 文件存储 NAS

https://www.alibabacloud.com/help/zh/functioncompute/fc-3-0/user-guide/configure-a-nas-file-system-1

[3] 对象存储 OSS

https://www.alibabacloud.com/help/zh/functioncompute/fc-3-0/user-guide/configure-an-oss-file-system-1

[4] GPU 镜像大小限制是多少?

https://www.alibabacloud.com/help/zh/functioncompute/fc-3-0/support/faq-about-gpu-accelerated-instances-1?spm=a2c63.p38356.help-menu-search-2508973.d_9#section-wzb-j8z-3cp

[5] 自定义镜像函数状态及调用

https://www.alibabacloud.com/help/zh/functioncompute/fc-3-0/user-guide/states-of-custom-container-functions

[6] NAS 常见问题

https://www.alibabacloud.com/help/zh/nas/product-overview/faq-2#section-uru-2sy-5hd

[7] OSS 使用限制及性能指标

https://help.aliyun.com/zh/oss/product-overview/limits

[8] OSS 加速器

https://help.aliyun.com/zh/oss/user-guide/overview-77/

[9] 常用工具

https://help.aliyun.com/zh/oss/developer-reference/common-tools/

[10] 跨区域复制

https://help.aliyun.com/zh/oss/user-guide/cross-region-replication-overview/

[11] 链接

https://www.alibabacloud.com/help/zh/nas/product-overview/billing-of-general-purpose-nas-file-systems

[12] 链接

https://www.aliyun.com/price/product?spm=a2c4g.11186623.0.0.46047158ja7nw5#/nas/detail/nas_bag

[13] 链接

https://help.aliyun.com/zh/oss/product-overview/billing-overview/

[14] 链接

https://www.aliyun.com/price/product?spm=a2c4g.11186623.0.0.46047158ja7nw5#/oss/detail/oss

相关文章:

AI 场景下,函数计算 GPU 实例模型存储最佳实践

作者:有松 当前,函数计算 FC 已被广泛应用在各种 AI 场景下,函数计算支持通过使用容器镜像部署 AI 推理应用,并且提供多种选项来访问训练好的模型。为了帮助开发者高效地在函数计算上部署 AI 推理应用,并快速解决不同…...

股指入门:股指期货是什么意思?在哪里可以做股指期货交易?

股指期货是一种以股票指数为标的物的期货合约,也可以称为股票指数期货或期指。 股指期货是什么意思? 股指期货是一种金融衍生品,其标的资产是股票市场上的股指,例如标普500指数、道琼斯工业平均指数、上证50指数等。 股指期货允…...

【分布式理论六】分布式调用(4):服务间的远程调用(RPC)

文章目录 一、RPC 调用过程二、RPC 动态代理:屏蔽远程通讯细节1. 动态代理示例2. 如何将动态代理应用于 RPC 三、RPC 序列化四、RPC 协议编码1. 协议编码的作用2. RPC 协议消息组成 五、RPC 网络传输1. 网络传输流程2. 关键优化点 一、RPC 调用过程 RPC&#xff08…...

aliyun 的 ip 设置方法

aliyun 的 ip 设置方法 阿里云:网络编程 bind:cannot assign requested address errno:99 问题。 公网IP,,弹性公网IP,主私网IP 1. 公网IP, --> NAT --> 主私网IP ,设置方法: 服务器端 ip 为&…...

ASP.NET Core分布式缓存

目录 分布式缓存 概述 IDistributedCache接口中定义的主要方法及主要的扩展方法 用什么做缓存服务器 使用 封装分布式缓存操作 分布式缓存 概述 分布式系统中,内存缓存不满足要求的话,把缓存数据保存到专门的缓存服务器,所有Web应用通…...

【CUDA】内存模型

目录 一、Programmable 1.1 寄存器(Registers) 1.2 本地内存(Local Memory) 1.3 共享内存(shared Memory) 1.4 常量内存(Constant Memory) 1.5 全局内存(Global Memory) 1.6 纹理内存(Textrue Memory) 1.7 总结 二、Cache(Non-programmable) 三、固定内存 四、零拷贝…...

使用Pygame制作“吃豆人”游戏

本篇博客展示如何使用 Python Pygame 编写一个简易版的“吃豆人(Pac-Man)” 风格游戏。这里我们暂且命名为 Py-Man。玩家需要控制主角在一个网格地图里移动、吃掉散布在各处的豆子,并躲避在地图中巡逻的幽灵。此示例可帮助你理解网格地图、角…...

Pyecharts系列课程04——折线图/面积图(Line)

本章我们学习在Pyecharts中折线图(Line)的使用。折线图通用应用于数据的趋势分析。 折线图 我们现在有两组数据,x_data是2024年的月份,y_data为对应张三甲每个月的用电量。 # 家庭每月用电量趋势 x_data ["1月", &q…...

mysql 学习10 多表查询 -多表关系,多表查询

多表关系 一对多 多对多 创建学生表 #多对多表 学生选课系统create table student(id int primary key auto_increment comment 主键ID,name varchar(64) comment 姓名,studentnumber varchar(10) comment 学号 )comment 学生表;insert into student(id,name,studentnumber)va…...

lambda 表达式详解

lambda 表达式详解 lambda 表达式详解基本语法示例代码及详细解释1. 简单的lambda表达式2. 带参数的lambda表达式3. 捕获外部变量4. 使用mutable关键字修改捕获的变量5. 按引用捕获外部变量6. 自动推导返回类型 捕获列表的几种形式总结 Lambda表达式的常用的应用场景&#xff1…...

从0开始达芬奇(3.5)

媒体优化 顾名思义就是降低分辨率等来使素材的回放更加流畅。(在低配电脑上也可以流畅运行) ⭐方法一:(一般使用第二种) 播放→代理模式→二分之一或者四分之一 ⭐⭐⭐方法二:优化媒体文件(简…...

【Uniapp-Vue3】z-paging插件组件实现触底和下拉加载数据

一、下载z-paing插件 注意下载下载量最多的这个 进入Hbuilder以后点击“确定” 插件的官方文档地址: https://z-paging.zxlee.cn 二、z-paging插件的使用 在文档中向下滑动,会有使用方法。 使用z-paging标签将所有的内容包起来 配置标签中的属性 在s…...

Ubuntu20.04 本地部署 DeepSeek-R1

一、下载ollama 打开 ollama链接,直接终端运行提供的命令即可。如获取的命令如下: curl -fsSL https://ollama.com/install.sh | sh确保是否安装成功可在终端输入如下命令: ollama -v注意: 如遇到Failed to connect to github.…...

Linux 设备驱动分类(快速理解驱动架构)

Linux 设备驱动分类(快速理解驱动架构) 在 Linux 设备驱动开发中,最基础的概念就是 设备驱动的分类。 Linux 设备驱动主要分为 字符设备、块设备和网络设备,它们分别对应不同类型的硬件资源。 理解这些分类,不仅能帮助…...

Java语法糖详解

前言 在现代编程语言的发展历程中,语法糖(Syntactic Sugar)作为一种提升代码可读性和开发效率的重要特性,已经成为语言设计的重要组成部分。Java作为一门成熟且广泛应用的编程语言,在其长期演进过程中,语法…...

567.字符串的排列

目录 一、题目二、思路2.1 解题思路2.2 代码尝试2.3 疑难问题 三、解法四、收获4.1 心得4.2 举一反三 一、题目 二、思路 2.1 解题思路 用两个哈希表比较来判断。s1的哈希表是否与s2相同。在窗口滑动过程中,用哈希表来维护。 2.2 代码尝试 class Solution { pub…...

DB2和mysql关于表和索引是否需要reorg的研究

DB2: DB2有个reorgchk的命令,是从SYSSTAT.TABLES和syscat.indexes这两个系统表中查表和索引的信息,并给出是否需要reorg表和索引的建议。 [db2inst1t3-ucm-ucm-rdb ~]$ db2 reorgchk CURRENT STATISTICS on table DB2ADMIN.ACAGENTTREE Ta…...

【Linux系统编程】:自旋锁,读写锁

文章目录 前言1. POSIX自旋锁1.1.定义自旋锁1.2.初始化1.3. 加锁1.4. 尝试加锁操作1.5. 解锁操作1.6. 销毁操作1.7.示例1.8.优缺点优点缺点 1.9.适用场景 2. 读写锁2.1 读写锁的工作原理2.2 读写模型2.3 常用接口2.3.1 定义锁并初始化2.3.2 申请读锁2.3.3 申请写锁2.3.4 解锁2.…...

位运算及常用技巧

涉及位运算的运算符如下表所示: 位运算的运算律: 负数的位运算 首先,我们要知道,在计算机中,运算是使用的二进制补码,而正数的补码是它本身,负数的补码则是符号位不变,其余按位取反…...

Chrome 浏览器:互联网时代的浏览利器

Chrome 浏览器:互联网时代的浏览利器 引言 在互联网时代,浏览器已经成为我们日常生活中不可或缺的工具。作为全球最受欢迎的浏览器之一,Chrome 浏览器凭借其出色的性能、丰富的扩展程序和简洁的界面,赢得了广大用户的喜爱。本文…...

web-文件上传-CTFHub

前言 在众多的CTF平台当中,作者认为CTFHub对于初学者来说,是入门平台的不二之选。CTFHub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。 作者更新了CTFHub系列,希望小伙伴们多多支持…...

【react】react面试题

react面试题 对 React 的理解、特性 react18有哪些更新 JSX是什么 解释为什么浏览器不能读取jsx ReactNative中,如何解决8081端口被占用而提示无法访问的问题? React 生命周期 react事件机制 react 组件传值 React改变state的方式 re…...

逐笔成交逐笔委托Level2高频数据下载和分析:20250206

Level2逐笔成交逐笔委托数据分享下载 通过Level2逐笔成交和逐笔委托这种每一笔的毫秒级别的数据可以分析出很多有用的点,包括主力意图,虚假动作,让任何操作无所遁形。适合交易大师来分析主力规律,也适合人工智能领域的机器学习&a…...

__cvta_generic_to_shared

一 测试代码 #include <cuda_runtime.h> #include <cstdio> #include <cstdint>__global__ void test_cp_async(int* __restrict__ A,int* __restrict__ B){int tid = threadIdx.x;A[tid] = tid;__shared__ int smem[32];size_t smemAddr = __cvta_generic_…...

C++学习——缺省参数、重载函数、引用

目录 前言 一、缺省参数 1.1概念 1.2写法 1.3半缺省 1.4使用 二、重载函数 2.1.概念 2.2类型 2.3参数 2.4顺序 2.5问题 2.6原理 三、引用 1、引用是什么&#xff1f; 2、引用的使用方法 3、引用特性 1、引用在定义的时候必须要初始化 2、一个变量会有多个引用…...

docker-compose 配置nginx

前言 前端打包的dist文件在宿主机&#xff0c;nginx运行在docker-compose 问题 nginx.conf 在本地配置可以生效&#xff0c;但是链接到容器就报错 基于本地的nginx运行&#xff0c;本地nginx.conf 如下 server {listen 8081;location / {root /usr/local/software/testweb/…...

LQB(0)-python-基础知识

一、Python开发环境与基础知识 python解释器&#xff1a;用于解释python代码 方式&#xff1a; 1.直接安装python解释器 2.安装Anaconda管理python环境 python开发环境&#xff1a;用于编写python代码 1.vscode 2.pycharm # 3.安装Anaconda后可以使用网页版的jupyter n…...

【C语言】指针运算与数组关系:详细分析与实例讲解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;1. 指针的基础运算1.1 指针的加减运算1.2 指针加整数与指针减整数1.3 指针与指针的运算 &#x1f4af;2. 指针的实际应用&#xff1a;模拟 strlen 函数2.1 使用指针模拟…...

C++数组

指针&#xff0c;是C数组工作方式的基础。 数组&#xff0c;基本上是元素的集合。按特定的顺序排列的一堆东西。 C数组&#xff0c;就是表示一堆的变量组成的集合。一般是一行相同类型的变量。 例子&#xff1a; #include <iostream> int main() {int example[5];exa…...

OSPF基础(2)

一、LSA的头部 LSA是OSPF的一个核心内容&#xff0c;如果没有LSA&#xff0c;OSPF是无法描述网络的拓扑结构及网段信息的,也无法传递路由信息&#xff0c;更加无法正常工作&#xff0c;在OSPFV2中&#xff0c;需要我们掌握的主要有6种。 LSA头部一共20byte&#xff0c;每个字段…...

DeepSeek R1 简单指南:架构、训练、本地部署和硬件要求

DeepSeek 的 LLM 推理新方法 DeepSeek 推出了一种创新方法&#xff0c;通过强化学习 (RL) 来提高大型语言模型 (LLM) 的推理能力&#xff0c;其最新论文 DeepSeek-R1 对此进行了详细介绍。这项研究代表了我们如何通过纯强化学习来增强 LLM 解决复杂问题的能力&#xff0c;而无…...

javaEE-6.网络原理-http

目录 什么是http? http的工作原理&#xff1a; 抓包工具 fiddler的使用 HTTP请求数据: 1.首行:​编辑 2.请求头(header) 3.空行&#xff1a; 4.正文&#xff08;body&#xff09; HTTP响应数据 1.首行&#xff1a;​编辑 2.响应头 3.空行&#xff1a; 4.响应正文…...

把bootstrap5.3.3整合到wordpress主题中的方法

以下是将 Bootstrap 5.3.3 整合到 WordPress 主题中的方法&#xff1a; 下载 Bootstrap 文件&#xff1a;从 Bootstrap 官网下载最新的 5.3.3 版本的 CSS 和 JavaScript 文件。 上传文件到主题目录&#xff1a;将下载的 CSS 文件上传到 WordPress 主题文件夹中的 /css 文件夹…...

深度整理总结MySQL——Buffer Pool工作原理

Buffer Pool工作原理 前言为什么会有Buffer PoolBuffer Pool介绍Buffer Pool有多大Buffer Pool缓存什么呢Buffer Pool碎片空间查询一条记录&#xff0c;就只需要缓冲一条记录吗 如何管理Buffer Pool如何管理空闲页如何管理脏页如何提高缓存命中率 LRU带来的问题预读失效Buffer …...

langchain教程-9.Retriever/检索器

前言 该系列教程的代码: https://github.com/shar-pen/Langchain-MiniTutorial 我主要参考 langchain 官方教程, 有选择性的记录了一下学习内容 这是教程清单 1.初试langchain2.prompt3.OutputParser/输出解析4.model/vllm模型部署和langchain调用5.DocumentLoader/多种文档…...

凝思60重置密码

凝思系统重置密码 - 赛博狗尾草 - 博客园 问题描述 凝思系统进入单用户模式&#xff0c;在此模式下&#xff0c;用户可以访问修复错误配置的文件。也可以在此模式下安装显卡驱动&#xff0c;解决和已加载驱动的冲突问题。 适用范围 linx-6.0.60 linx-6.0.80 linx-6.0.100…...

指针基础知识1

1.内存和地址 1.案例 我们可以借助一个生活在的案例来熟悉电脑中内存和地址的关系&#xff1a; 假设有⼀栋宿舍楼&#xff0c;把你放在楼里&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的⼀个朋友来找你玩&#xff0c; 如果想找到你&#xff0c;…...

大数据学习之Spark分布式计算框架RDD、内核进阶

一.RDD 28.RDD_为什么需要RDD 29.RDD_定义 30.RDD_五大特性总述 31.RDD_五大特性1 32.RDD_五大特性2 33.RDD_五大特性3 34.RDD_五大特性4 35.RDD_五大特性5 36.RDD_五大特性总结 37.RDD_创建概述 38.RDD_并行化创建 演示代码&#xff1a; // 获取当前 RDD 的分区数 Since ( …...

Windows本地部署DeepSeek-R1大模型并使用web界面远程交互

文章目录 前言1. 安装Ollama2. 安装DeepSeek-r1模型3. 安装图形化界面3.1 Windows系统安装Docker3.2 Docker部署Open WebUI3.3 添加Deepseek模型 4. 安装内网穿透工具5. 配置固定公网地址 前言 最近爆火的国产AI大模型Deepseek详细大家都不陌生&#xff0c;不过除了在手机上安…...

【Linux系统】线程:线程控制

一、POSIX线程库 与线程有关的函数构成了一个完整的系列&#xff0c;绝大多数函数的名字都是以“pthread_”打头的。使用这些函数库&#xff0c;要通过引入头文件 <pthread.h>。链接这些线程函数库时要使用编译器命令的 -lpthread 选项。 二、轻量级进程创建&#xff1a…...

GoFrame 微服务开发指南

基本介绍 GoFrame 框架支持微服务模式开发&#xff0c;提供了常用的微服务组件、开发工具、开发教程帮助团队快速微服务转型。 微服务组件简介 GoFrame 微服务组件具有低耦合及通用化设计&#xff0c;组件化使用支持大部分的微服务通信协议。在官方文档中&#xff0c;主要以…...

Python-基于PyQt5,Pillow,pathilb,imageio,moviepy,sys的GIF(动图)制作工具(进阶版)

前言&#xff1a;在抖音&#xff0c;快手等社交平台上&#xff0c;我们常常见到各种各样的GIF动画。在各大评论区里面&#xff0c;GIF图片以其短小精悍、生动有趣的特点&#xff0c;被广泛用于分享各种有趣的场景、搞笑的瞬间、精彩的动作等&#xff0c;能够快速吸引我们的注意…...

PhpStorm下载、安装、配置教程

前面的文章中&#xff0c;都是把.php文件放在WampServer的www目录下&#xff0c;通过浏览器访问运行。这篇文章就简单介绍一下PhpStorm这个php集成开发工具的使用。 目录 下载PhpStorm 安装PhpStorm 配置PhpStorm 修改个性化设置 修改字符编码 配置php的安装路径 使用Ph…...

春节假期旅游热潮下,景区医疗安全如何全面升级?

春节假期旅游热潮下&#xff0c;景区医疗安全如何全面升级&#xff1f; 随着旅游业的不断繁荣&#xff0c;春节假期期间&#xff0c;各大景区再次迎来了游客的高峰期。面对如此庞大的客流量&#xff0c;景区不仅要在服务接待上下功夫&#xff0c;更要将医疗安全保障工作提升到…...

惠普HP工作站如何关闭关闭RAID?

惠普HP工作站如何关闭关闭RAID&#xff1f; 前言进入BIOS进入“先进”选项卡&#xff0c;点击“系统选项”。取消勾选“sSATA控制器RAID模式”&#xff0c;按下F10保存重启。 前言 惠普工作站默认启用了RAID模式&#xff0c;导致许多PE工具无法识别RAID模式下的硬盘。可以通过…...

ESP-Skainet智能语音助手,ESP32-S3物联网方案,设备高效语音交互

在科技飞速发展的今天&#xff0c;智能语音助手正逐渐渗透到我们生活的方方面面&#xff0c;而智能语音助手凭借其卓越的技术优势&#xff0c;成为了智能生活领域的一颗璀璨明星。 ESP-Skainet智能语音助手的强大之处在于其支持唤醒词引擎&#xff08;WakeNet&#xff09;、离…...

mac下生成.icns图标

笔记原因&#xff1a; 今日需要在mac下开发涉及图标文件的使用及icons文件的生成&#xff0c;所以记录一下。 网络上都是一堆命令行需要打印太麻烦了&#xff0c;写一个一键脚本。 步骤一 将需要生成的png格式文件重命名为“pic.png” mv xxxx.png pic.png 步骤二 下载我…...

【MySQL】centos 7 忘记数据库密码

vim /etc/my.cnf文件&#xff1b; 在[mysqld]后添加skip-grant-tables&#xff08;登录时跳过权限检查&#xff09; 重启MySQL服务&#xff1a;sudo systemctl restart mysqld 登录mysql&#xff0c;输入mysql –uroot –p&#xff1b;直接回车&#xff08;Enter&#xff09; 输…...

【kafka的零拷贝原理】

kafka的零拷贝原理 一、零拷贝技术概述二、Kafka中的零拷贝原理三、零拷贝技术的优势四、零拷贝技术的实现细节五、注意事项一、零拷贝技术概述 零拷贝(Zero-Copy)是一种减少数据拷贝次数,提高数据传输效率的技术。 在传统的数据传输过程中,数据需要在用户态和内核态之间…...

【JavaEE】Spring Web MVC

目录 一、Spring Web MVC简介 1.1 MVC简介1.2 Spring MVC1.3 RequestMapping注解1.3.1 使用1.3.2 RequestMapping的请求设置 1.3.2.1 方法11.3.2.2 方法2 二、Postman介绍 2.1 创建请求2.2 界面如下&#xff1a;2.3 传参介绍 一、Spring Web MVC简介 官方文档介绍&#xff…...