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

《解锁vLLM:大语言模型推理的加速密码》

《解锁vLLM:大语言模型推理的加速密码》

引言:AI 时代的推理引擎之光

在当今的人工智能领域,大语言模型无疑是最为耀眼的明星。它们犹如智能世界的基石,为无数的应用和创新提供了强大的支持。从日常的智能聊天机器人,到复杂的文本生成、机器翻译任务,大语言模型都展现出了惊人的能力,让人们真切地感受到了人工智能的魅力。

大语言模型之所以能够取得如此显著的成果,背后离不开大量的数据训练和强大的计算资源支持。通过对海量文本的学习,大语言模型能够理解人类语言的复杂结构和语义,从而实现自然流畅的对话和高效准确的文本处理。然而,随着模型规模的不断扩大和应用场景的日益复杂,如何在保证模型性能的前提下,实现高效的推理成为了一个亟待解决的问题。

推理引擎,作为大语言模型与实际应用之间的桥梁,其重要性不言而喻。它负责将用户的输入转化为模型能够理解的格式,并将模型的输出以合适的方式呈现给用户。一个高效的推理引擎,不仅能够提升模型的推理速度,降低响应时间,还能有效地利用计算资源,降低成本。在实际应用中,推理引擎的性能直接影响着用户体验和系统的可扩展性。例如,在实时聊天场景中,快速的推理速度能够确保对话的流畅性,避免用户长时间等待;而在大规模的智能客服系统中,高效的推理引擎能够同时处理大量用户的请求,提高服务效率。

vLLM,正是在这样的背景下应运而生的一款高效推理引擎。它以其卓越的性能和创新的技术,在众多推理引擎中脱颖而出,成为了推动大语言模型广泛应用的重要力量。vLLM 的出现,为解决大语言模型推理中的效率问题提供了全新的思路和方法,让我们能够更加充分地发挥大语言模型的潜力,实现更多令人惊叹的应用。

一、vLLM 初印象:背景与简介

1.1 大语言模型推理的困境

随着大语言模型的规模呈指数级增长,其推理过程面临着诸多严峻的挑战。在模型参数数量从数十亿飙升至数万亿的背景下,推理所需的计算资源呈爆炸式增长,对硬件性能提出了极高的要求。即使在拥有强大 GPU 集群的情况下,推理的延迟和成本仍然居高不下,严重限制了大语言模型在实时性要求较高场景中的应用。

内存管理成为大语言模型推理中的一大难题。在推理过程中,模型需要存储大量的中间结果和状态信息,这使得内存占用急剧增加。传统的内存管理方式在处理这些大规模数据时显得力不从心,频繁出现内存不足和内存碎片的问题,导致推理效率大幅下降。以 GPT-3 为例,其拥有 1750 亿个参数,在推理时需要占用大量的内存空间,若内存管理不当,很容易出现推理中断的情况。

计算效率也是大语言模型推理中亟待解决的问题。由于模型结构的复杂性和计算量的巨大,推理过程中的计算效率较低,无法充分发挥硬件的性能优势。这不仅导致推理时间延长,还增加了能源消耗,使得大语言模型的应用成本大幅上升。在处理长文本时,Transformer 架构的自注意力机制需要进行大量的矩阵乘法运算,计算量随着文本长度的增加而迅速增长,严重影响了推理速度。

1.2 vLLM 的诞生与使命

vLLM 正是为了应对这些挑战而诞生的,它由伯克利大学的 LMSYS 组织开源,旨在为大语言模型提供一个高效、灵活的推理解决方案。vLLM 的核心设计目标是提升推理速度和降低内存占用,通过一系列创新的技术和算法,使得大语言模型在推理过程中能够更加高效地利用计算资源,从而实现更快速、更稳定的推理。

vLLM 的出现,为大语言模型的推理带来了新的曙光。它打破了传统推理框架的束缚,采用了全新的架构和算法,有效地解决了内存管理和计算效率的问题。vLLM 的创新之处在于其引入了分页注意力(PagedAttention)机制,这种机制借鉴了操作系统中虚拟内存的分页思想,将注意力计算中的键值对(KV)缓存划分为多个固定大小的页,使得内存的分配和管理更加灵活高效,大大减少了内存碎片的产生,提高了内存利用率。

1.3 vLLM 在大模型推理领域的独特定位

在大语言模型推理领域,vLLM 凭借其独特的技术优势,占据了重要的一席之地。与其他推理框架相比,vLLM 在性能和功能上都具有显著的优势。在性能方面,vLLM 通过 PagedAttention 机制和优化的 CUDA 内核,实现了极高的推理吞吐量,比传统的 Hugging Face Transformers 框架高出数倍甚至数十倍。在处理大规模并发请求时,vLLM 能够保持较低的延迟,确保推理的实时性。

vLLM 还具有出色的内存管理能力,能够有效地支持大规模模型的推理。它可以在有限的内存资源下,运行参数规模更大的模型,为用户提供更强大的推理能力。在功能方面,vLLM 支持多种主流的大语言模型架构,包括 GPT、LLaMA 等,具有良好的兼容性。它还提供了丰富的推理选项和灵活的配置接口,方便用户根据不同的应用场景进行定制化开发。

vLLM 以其卓越的性能和丰富的功能,成为了大语言模型推理领域的佼佼者。它为大语言模型的应用提供了强大的支持,推动了人工智能技术在各个领域的广泛应用和发展。无论是在科研领域的模型研究和实验,还是在工业界的实际应用开发,vLLM 都展现出了巨大的潜力和价值,为人们带来了更加高效、智能的推理体验。

二、核心技术剖析:PagedAttention 与动态批处理

(一)PagedAttention 技术详解

在传统的大语言模型推理中,注意力机制是模型的核心组成部分,它负责计算输入序列中各个位置之间的关联程度,从而使模型能够捕捉到长距离的依赖关系。然而,当处理长序列时,传统注意力机制面临着严重的内存瓶颈问题。在自注意力计算过程中,需要存储所有位置的键(Key)和值(Value)张量,随着序列长度的增加,这些张量的大小呈线性增长,导致内存占用急剧上升。对于一个具有数十亿参数的大语言模型,处理长度为几千的序列时,所需的内存可能会超过 GPU 的显存容量,从而导致推理过程无法正常进行。

为了解决这一问题,vLLM 引入了 PagedAttention 技术,其创新思路来源于操作系统中的虚拟内存分页管理。在操作系统中,虚拟内存将物理内存划分为多个固定大小的页(Page),程序在运行时,不需要将整个数据都加载到连续的物理内存中,而是可以将不同的页存储在非连续的内存位置,通过页表来管理内存的映射关系。这样可以有效地提高内存利用率,减少内存碎片的产生。

PagedAttention 借鉴了这一思想,将注意力计算中的 KV cache 进行分页管理。具体来说,它将每个序列的 KV cache 划分成多个固定大小的小块(Block),这些小块类似于操作系统中的页。在推理过程中,不需要将整个序列的 KV cache 一次性加载到连续的内存中,而是根据需要按需动态加载这些小块。当模型生成新的 token 时,只需要加载与当前 token 相关的 KV 小块,而不是整个序列的 KV cache。这样可以大大减少内存的占用,提高内存利用率,有效避免了内存碎片化的问题。

以一个具体的例子来说明,假设我们有一个包含 1000 个 token 的序列,传统的注意力机制需要将这 1000 个 token 的 KV 张量全部存储在连续的内存中,而 PagedAttention 则将这些 KV 张量划分为多个小块,每个小块包含一部分 token 的 KV 值。在推理过程中,当模型处理到第 500 个 token 时,只需要加载与第 500 个 token 相关的几个小块,而不是整个 1000 个 token 的 KV cache。这样,即使序列长度很长,也可以通过灵活的分页管理,在有限的内存资源下高效地进行推理。

PagedAttention 技术的优势不仅体现在减少内存占用上,还体现在提升推理速度方面。由于不需要频繁地进行大规模的内存读写操作,PagedAttention 可以降低内存访问的延迟,提高计算效率。它还支持更大规模的批处理,因为有效地管理了 KV cache 的内存占用,使得在同一时间内可以处理更多的请求,进而提高了系统的吞吐量。这使得 vLLM 在处理高并发的推理请求时,能够保持出色的性能表现,为大规模的应用场景提供了有力的支持。

(二)动态批处理技术解析

在大语言模型的推理过程中,批处理是提高计算资源利用率和推理效率的重要手段。传统的静态批处理方法,是将多个推理请求预先组合成一个固定大小的批次,然后一次性将这个批次输入到模型中进行推理。这种方法虽然在一定程度上提高了计算效率,但存在着明显的局限性。

由于不同的推理请求生成的序列长度往往不同,在一个批次中,所有请求都必须等待最长序列的生成完成,才能进行下一次批处理。这就导致了很多计算资源在等待过程中被浪费,尤其是当批次中存在少数长序列请求时,会严重影响整个批次的推理效率。如果一个批次中有 10 个请求,其中 9 个请求的生成序列较短,只需要几毫秒就能完成,而另一个请求的生成序列很长,需要几百毫秒才能完成,那么其他 9 个请求都必须等待这个长序列请求完成后,才能进行下一次批处理,这无疑造成了资源的极大浪费。

为了克服传统静态批处理的局限性,vLLM 采用了 Continuous Batching 动态批处理技术。这种技术能够根据系统负载和资源情况实时调整批处理大小,实现更加灵活高效的推理。vLLM 会不断监控系统中的推理请求队列和 GPU 资源使用情况,当有新的请求到来时,它会根据当前的资源状况和已有的请求信息,动态地决定是否将新请求加入当前批次中,或者创建一个新的批次。

相关文章:

《解锁vLLM:大语言模型推理的加速密码》

《解锁vLLM:大语言模型推理的加速密码》 引言:AI 时代的推理引擎之光 在当今的人工智能领域,大语言模型无疑是最为耀眼的明星。它们犹如智能世界的基石,为无数的应用和创新提供了强大的支持。从日常的智能聊天机器人,到复杂的文本生成、机器翻译任务,大语言模型都展现出…...

1.1 java开发的准备工作

准备工作 一.JDK 开始写java程序之前需要安装jdk jdk是java开发工具,包含着JRE和里面的JVM(虚拟机,可以使得不同环境下都能运行Java程序),和开发工具。 二.了解写程序的三大步骤步骤 java成功运行主要需要经过代码编写,编译&a…...

矩阵运算 第30次CCF-CSP计算机软件能力认证

n和d差距这么大 就可以想到改变矩阵运算顺序来解决这道题 假设两个矩阵,分别为a行b列与b行c列,那么一次矩阵运算复杂度是a乘以c乘以b,对于这题,如果从左往右运算复杂度将会到 1e4乘以1e4乘以20>1e9 (n1e4,d20),常识…...

【Tools】Git常见操作

Git 1 配置 包括: 用户信息、分支策略、合并策略、钩子脚本路径等。 git config -l # 等价 --local --list git config --global --list # 全局 git config --local --list # 当前仓库git config user.name git config user.emailgit config user.name "Your Name"…...

国产RK3568+FPGA以 ‌“实时控制+高精度采集+灵活扩展”‌ 为核心的解决方案

RK3568FPGA方案在工业领域应用的核心优势 一、‌实时性与低延迟控制‌ ‌AMP架构与GPIO中断技术‌ 通过非对称多处理架构(AMP)实现Linux与实时操作系统(RTOS/裸机)协同,主核负责调度,从核通过GPIO中断响应紧…...

UnoCSS原子CSS引擎-前端福音

UnoCSS是一款原子化的即时按需 CSS 引擎,其中没有核心实用程序,所有功能都是通过预设提供的。默认情况下UnoCSS应用通过预设来实现相关功能。 UnoCSS中文文档: https://www.unocss.com.cn 前有很多种原子化的框架,例如 Tailwind…...

0.(新专栏目录)数据分类的艺术:从理论到实践的全面指南

前言 话说天下大数据事,分久必合,合久必分。在这个数据爆炸的时代,我们见证了数据的分散与聚合,见证了数据从孤岛到互联的转变。 回望数据发展的历程,最初企业的数据系统往往是各自为政的,各部门、各系统…...

leetcode 二分查找应用

34. Find First and Last Position of Element in Sorted Array 代码&#xff1a; class Solution { public:vector<int> searchRange(vector<int>& nums, int target) {int low lowwer_bound(nums,target);int high upper_bound(nums,target);if(low high…...

航电系统之编队运动控制技术篇

航电系统的编队运动控制技术是现代航空航天领域的关键技术之一&#xff0c;涉及多飞行器协同飞行中的导航、通信、控制与决策。 一、技术原理 编队运动控制技术的核心目标是通过航电系统实现多飞行器&#xff08;如无人机、卫星等&#xff09;在空间或时间上的协同运动。其基本…...

Elasticsearch(ES)中的脚本(Script)

文章目录 一. 脚本是什么&#xff1f;1. lang&#xff08;脚本语言&#xff09;2. source&#xff08;脚本代码&#xff09;3. params&#xff08;参数&#xff09;4. id&#xff08;存储脚本的标识符&#xff09;5. stored&#xff08;是否为存储脚本&#xff09;6. script 的…...

Collection集合,List集合,set集合,Map集合

文章目录 集合框架认识集合集合体系结构Collection的功能常用功能三种遍历方式三种遍历方式的区别 List集合List的特点、特有功能ArrayList底层原理LinkedList底层原理LinkedList的应用场list:电影信息管理模块案例 Set集合set集合使用哈希值红黑树HashSet底层原理HashSet集合元…...

Kafka 核心使用机制总结

Kafka 核心使用机制总结 Kafka 核心使用机制总结1. 分区 (Partitions) - 实现伸缩性与并行处理2. 副本 (Replicas) / 复制因子 (Replication Factor) - 实现高可用与容错3. 消费者组 (Consumer Groups) - 控制消息分发与消费进度4. 数据保留策略 (Retention Policies) - 管理存…...

【MCP】第二篇:IDE革命——用MCP构建下一代智能工具链

【MCP】第二篇&#xff1a;IDE革命——用MCP构建下一代智能工具链 一、引言二、IDE集成MCP2.1 VSCode2.1.1 安装VSCode2.1.2 安装Cline2.1.3 配置Cline2.1.4 环境准备2.1.5 安装MCP服务器2.1.5.1 自动安装2.1.5.2 手动安装 2.2 Trae CN2.2.1 安装Trae CN2.2.2 Cline使用2.2.3 内…...

WebSocket是h5定义的,双向通信,节省资源,更好的及时通信

浏览器和服务器之间的通信更便利&#xff0c;比http的轮询等效率提高很多&#xff0c; WebSocket并不是权限的协议&#xff0c;而是利用http协议来建立连接 websocket必须由浏览器发起请求&#xff0c;协议是一个标准的http请求&#xff0c;格式如下 GET ws://example.com:3…...

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口连接Perl

博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…...

springboot-基于Web企业短信息发送系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 当今社会已经步入了科学技术进步和经济社会快速发展的新时期&#xff0c;国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。本系统采用B/S架构&#xff0c;数据库是MySQL…...

Centos9安装docker

1. 卸载docker 查看是否安装了docker yum list | grep docker卸载老版本docker&#xff0c;拷贝自官网 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine卸载新版本…...

MySQL表的操作

MySQL表的操作 1. 创建表 在创建表前&#xff0c;需要先进入到某个数据库&#xff1a; use db_name创建表时&#xff0c;最好提前设计好表应该有的所有内容&#xff0c;否则后续添加或删除表的列可能会引发一连串的问题。 create table tb_name (field1 data_type [comment…...

Jmeter中同步定时器使用注意点

1.设置数量不可大于总线程数量&#xff0c;不然会一直等待 2.设置数量必须与总线程数量成整数倍数&#xff0c;不然还是要一直等。 3.当配置的数量小于线程数时&#xff0c;最好把循环打开&#xff0c;避免最后一次未准备好的线程数量达不到并发数。...

从零开始搭建Django博客③--前端界面实现

本文主要在Ubuntu环境上搭建&#xff0c;为便于研究理解&#xff0c;采用SSH连接在虚拟机里的ubuntu-24.04.2-desktop系统搭建&#xff0c;当涉及一些文件操作部分便于通过桌面化进行理解&#xff0c;通过Nginx代理绑定域名&#xff0c;对外发布。 此为从零开始搭建Django博客…...

使用Handsontable实现动态表格和下载表格

1.效果 2.实现代码 首先要加载Handsontable&#xff0c;在示例中我是cdn的方式引入的&#xff0c;vue的话需要下载插件 let hot null;var exportPlugin null;function showHandsontable(param) {const container document.getElementById("hot-container");// 如果…...

结合地理数据处理

CSV 文件不仅可以存储表格数据&#xff0c;还可以与地理空间数据结合&#xff0c;实现更强大的地理处理功能。例如&#xff0c;你可以将 CSV 文件中的坐标数据转换为点要素类&#xff0c;然后进行空间分析。 示例&#xff1a;将 CSV 文件中的坐标数据转换为点要素类 假设我们有…...

使用Geotools实现将Shp矢量文件加载SLD并合并图例生成-以湖南省周边城市为例

目录 前言 一、技术实现简介 1、生成成果说明 2、生成流程图说明 二、具体生成实践 1、渲染地图 2、生成图例 3、合并图像及输出 三、总结 前言 在当今数字化时代&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术已成为城市管理、资源规划、环境监测等众多领域…...

openGauss数据库:起源、特性与对比分析

openGauss数据库&#xff1a;起源、特性与对比分析 一、起源与发展历程 1. 技术背景与开源历程 openGauss是由华为公司主导开发的开源关系型数据库管理系统&#xff0c;其技术根源可追溯至PostgreSQL。2019年&#xff0c;华为在内部整合了多个数据库产品线&#xff08;如GMDB…...

相机中各个坐标系的转换关系如像素坐标系到世界坐标系以及相机标定的目的

一、背景 无论是机器人领域、SLAM还是自动驾驶领域&#xff0c;都会涉及相机标定&#xff0c;但是看了很多博客&#xff0c;都是各种坐标系的变换&#xff0c;没有从上层说明进行坐标变换的目的是什么&#xff0c;以及相机标定完成后&#xff0c;是已知像素坐标求世界坐标&…...

ubuntu24设置拼音输入法,解决chrome不能输入中文

## 推荐方案&#xff1a;使用 Fcitx5 Fcitx5 是当前在 Wayland 环境下兼容性最好的输入法框架。 ### 1. 安装 Fcitx5 bash sudo apt update sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-gtk4 fcitx5-frontend-qt5 fcitx5-module-c…...

linux内核进程管理(1)——创建,退出

linux源码阅读——进程管理&#xff08;1&#xff09; 1. 进程的基本介绍1.1 linux中进程和线程的区别1.2 task_struct中的基本内容1.3 命名空间ns(namespace)命名空间结构图Linux 中的命名空间类型 1.4 进程标识符 2. 创建一个进程的流程2.1 CLONE宏2.2 创建进程系统调用1. do…...

容器修仙传 我的灵根是Pod 第8章 护山大阵(DaemonSet)

第三卷&#xff1a;上古遗迹元婴篇 第8章 护山大阵&#xff08;DaemonSet&#xff09; 九霄之上&#xff0c;雷云如怒海翻腾。 天调度宗的护山大阵「九霄雷光阵」正发出悲鸣&#xff0c;七十二根镇山雷柱已有半数熄灭。每根雷柱底部&#xff0c;本该守护节点的「雷符傀儡」&a…...

使用Python将YOLO的XML标注文件转换为TXT文件格式

使用Python将YOLO的XML标注文件转换为TXT文件格式&#xff0c;并划分数据集 import xml.etree.ElementTree as ET import os from os import listdir, getcwd from os.path import join import random from shutil import copyfile from PIL import Image# 只要改下面的CLASSE…...

在面试中被问到spring是什么?

Spring框架的核心回答 1. 定义与定位 Spring是一个轻量级、开源的企业级应用开发框架&#xff0c;旨在简化Java应用的开发&#xff0c;提供全面的编程和配置模型。它的核心目标是解决企业应用开发的复杂性&#xff0c;通过模块化设计和松耦合架构&#xff0c;帮助开发者更高效…...

MongoDB Ubuntu 安装

MongoDB 安装 https://www.mongodb.com/zh-cn/docs/manual/installation/ https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-ubuntu/ https://www.mongodb.com/zh-cn/docs/manual/reference/ulimit/ https://www.mongodbmanager.com/download ubun…...

ElasticSearch深入解析(三):Elasticsearch 7的安装与配置、Kibana安装

文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置问题&#xff1a;为什么说堆内存…...

初始SpringBoot

此文介绍一些有关我对SpringBoot的学习理解&#xff0c; 声明&#xff1a;此处我的IDEA是企业版的&#xff0c;可能和社区版会有一些差异 1. 第⼀个SpringBoot程序 1. SpringBoot介绍 我们看下Spring官方的介绍 可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速…...

【算法笔记】动态规划基础(一):dp思想、基础线性dp

目录 前言动态规划的精髓什么叫“状态”动态规划的概念动态规划的三要素动态规划的框架无后效性dfs -> 记忆化搜索 -> dp暴力写法记忆化搜索写法记忆化搜索优化了什么&#xff1f;怎么转化成dp&#xff1f;dp写法 dp其实也是图论首先先说结论&#xff1a;状态DAG是怎样的…...

C++入门基础(2)

Hello~,欢迎大家来到我的博客进行学习&#xff01; 目录 1.缺省参数2.函数重载3.引用3.1 引用的概念和定义3.2 引用的特性3.3引用的使用3.4 const引用3.5 指针和引用的关系扩展 4. nullptr 1.缺省参数 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时&…...

OpenCV-Python (官方)中文教程(部分一)_Day15

18.图像梯度 梯度简单来说就是求导。 OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器&#xff1a;Sobel, Scharr和Laplacian。Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对 Sobel&#xff08;使用小的卷积核求解求解梯度角度时&#xff09;的优化。Laplacian 是…...

大厂面试:MySQL篇

前言 本章内容来自B站黑马程序员java大厂面试题和小林coding 博主学习笔记&#xff0c;如果有不对的地方&#xff0c;海涵。 如果这篇文章对你有帮助&#xff0c;可以点点关注&#xff0c;点点赞&#xff0c;谢谢你&#xff01; 1.MySQL优化 1.1 定位慢查询 定位 一个SQL…...

软件工程的13条“定律”:从Hyrum定律到康威定律,再到Zawinski定律

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

Linux删除大文件df空间avail空间不增加

背景 根磁盘被同事写满&#xff0c;使用> 删除一些安装包后&#xff0c;df中的avail空间还是0 排除有进程正在占用文件&#xff0c;已使用lsof命令检测过我所删的文件是没有进程在使用 原因 是文件系统预留空间在作祟 解决 # 文件系统预留块 tune2fs -l /dev/vda2 | gr…...

【C语言-选择排序算法】实现对十个数进行排序

目录 前言 一、选择排序算法原理 二、选择排序算法实现对十个数进行排序 三、代码运行示例 四、选择排序算法的时间复杂度和空间复杂度分析 五、选择排序算法的优缺点 六、总结 前言 在计算机科学领域&#xff0c;排序算法是基石般的存在&#xff0c;它们就像是整理杂乱…...

驱动开发硬核特训 · Day 18:深入理解字符设备驱动与子系统的协作机制(以 i.MX8MP 为例)

日期&#xff1a;2025年04月23日 回顾&#xff1a;2025年04月22日&#xff08;Day 17&#xff1a;Linux 中的子系统概念与注册机制&#xff09; 本日主题&#xff1a;字符设备驱动 子系统协作机制剖析 学习目标&#xff1a;理解字符设备的注册原理&#xff0c;掌握其与子系统间…...

SQL Server 2022 常见问题解答:从安装到优化的全场景指南

SQL Server 2022 作为微软最新的数据库管理系统&#xff0c;在性能、安全性和云集成方面带来了多项革新。然而&#xff0c;用户在实际使用中仍可能遇到各类问题。本文将围绕安装配置、性能优化、备份恢复、安全设置、高可用性方案、兼容性问题及错误代码解析等核心场景&#xf…...

软件开发版本库命名规范说明

背景&#xff1a;近期一直再更新自己所开发的一个前端大文件上传npm库(enlarge-file-upload)&#xff0c;为了让库的发版更加规范&#xff0c;于是参考了各种文档写下了这篇关于软件开发库的版本命名规范&#xff0c;且不仅局限于前端的版本命名规范&#xff0c;适用于整个软件…...

Kafka 详解

1.基本概念&#xff1a;Kafka 是分布式发布 - 订阅消息系统&#xff0c;具有高吞吐量、可扩展性等优势&#xff0c;支持点对点和发布订阅两种消息模式&#xff0c;涉及 Broker、Topic、Partition 等多种角色。 2.安装步骤&#xff1a;需先安装 JDK 和 Zookeeper&#xff0c;下…...

【Qwen2.5-VL 踩坑记录】本地 + 海外账号和国内账号的 API 调用区别(阿里云百炼平台)

API 调用 阿里云百炼平台的海内外 API 的区别&#xff1a; 海外版&#xff1a;需要进行 API 基础 URL 设置国内版&#xff1a;无需设置。 本人的服务器在香港&#xff0c;采用海外版的 API 时&#xff0c;需要进行如下API端点配置 / API基础URL设置 / API客户端配置&#xf…...

硬核解析:整车行驶阻力系数插值计算与滑行阻力分解方法论

引言&#xff1a;阻力优化的核心价值 在汽车工程领域&#xff0c;行驶阻力是影响动力性、经济性及排放的核心因素。根据统计&#xff0c;车辆行驶中约60%的燃油消耗用于克服阻力&#xff08;风阻、滚阻、传动内阻等&#xff09;。尤其在电动化趋势下&#xff0c;阻力降低1%可提…...

【网络原理】TCP提升效率机制(一):滑动窗口

目录 一. 前言 二. 滑动窗口 三. 丢包现象 1&#xff09;ACK报文丢失 2&#xff09;数据丢失 四. 总结 一. 前言 TCP最核心的机制就是可靠传输 &#xff0c;确认应答&#xff0c;超时重传&#xff0c;连接管理这些都保证了可靠传输&#xff0c;得到了可靠传输&#xff0c…...

移动端使用keep-alive将页面缓存和滚动缓存具体实现方法 - 详解

1. 配置组件名称 确保列表页组件设置了name选项&#xff0c;&#xff08;组合式API额外配置&#xff09;&#xff1a; <!-- vue2写法 --> export default {name: UserList // 必须与 <keep-alive> 的 include 匹配 }<!-- vue3写法 --> defineOptions({na…...

工作记录9

1.点击按钮发送AJAX请求 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title&…...

Java 异常 SSLException: fatal alert: protocol_version 全解析与解决方案

在 Java 网络通信中&#xff0c;SSLException: fatal alert: protocol_version 是典型的 TLS/SSL 协议版本不兼容异常。本文结合 Java 官方规范、TLS 协议标准及实战经验&#xff0c;提供体系化解决方案&#xff0c;帮助开发者快速定位并解决协议版本冲突问题。 一、异常本质&…...