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

开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(五)

一、前言

   在上一节中,学习了如何使用vLLM来部署Whisper-large-v3-turbo模型。不过,在实际使用时,模型一次只能处理30秒的音频。今天,将结合实际业务,介绍如何处理一段完整的音频,并生成相应的字幕文件。

    相关文章,请参见:

    开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(一)

    开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(二)

    开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(三)

    开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(四)


二、术语介绍

2.1. 语音转文本

    也称为语音识别或自动语音识别 (ASR)是一种将语音音频转换为文字的技术。它利用计算机程序和算法来监听语音输入,并将其转换为可读的文字输出。

2.2. Whisper-large-v3-turbo

    是 OpenAI 于 2024年10月推出的一款优化型语音转录模型,基于 Whisper large-v3 改进而来,旨在平衡速度与准确性。以下是其核心特点:

1.技术改进

  • 解码器层数缩减:从 32 层减少至 4 层,显著降低计算复杂度。
  • 速度提升:转录速度较 large-v3 快 8 倍,超越 tiny 模型,支持实时应用。
  • 推理优化:结合 torch.compile 和缩放点积注意力(F.scaled_dot_product_attention),进一步加速推理,减少延迟。
  • 参数规模:8.09 亿参数,介于 medium(7.69 亿)与 large(155 亿)之间,模型体积约 1.6GB。

2.性能表现

  • 质量保持:在高质量录音(如 FLEURS 数据集)上表现接近 large-v2,跨语言能力与 large-v2 相当。
  • 多语言支持:覆盖 99 种语言,但对泰语、粤语等方言支持较弱。
  • VRAM 需求:仅需 6GB,显著低于 large 模型的 10GB,适合边缘设备部署。

3.应用场景

  • 实时转录:适用于会议记录、直播字幕等低延迟场景。
  • 长音频处理:支持分块或顺序算法处理超长音频,兼顾速度与准确性。
  • 本地化部署:轻量化设计,便于在移动端或本地服务器集成。

4.集成与使用

  • 开发友好:通过 Hugging Face Transformers 库或 OpenAI 官方工具调用,提供 Python 示例代码。
  • 专注转录:训练数据不含翻译内容,不支持语音翻译任务,纯转录性能更优。

5.对比优势

  • 速度与质量平衡:较 large-v3 速度提升明显,质量损失极小。
  • 性价比:参数规模与 medium 接近,但性能更优,适合资源有限的场景。

三、构建环境

3.1.基础环境构建

conda create -n test python=3.10
conda activate testpip install pydub -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple

3.2.下载模型

huggingface:

https://huggingface.co/openai/whisper-large-v3-turbo/tree/main

ModelScope:

git clone https://www.modelscope.cn/iic/Whisper-large-v3-turbo.git

下载完成(建议使用HuggingFace):


四、技术实现

4.1.启动vLLM服务

vllm serve /data/model/whisper-large-v3-turbo  --swap-space 16 --disable-log-requests --max-num-seqs 256 --host 0.0.0.0 --port 9000  --dtype float16 --max-parallel-loading-workers 1  --max-model-len 448 --enforce-eager --gpu-memory-utilization 0.99 --task transcription 

调用结果:

GPU占用:

4.2.定义STT工具类

  请求私有化部署的语音转文本服务

# -*-  coding:utf-8 -*-from openai import OpenAIopenai_api_key = "EMPTY"
openai_api_base = "http://127.0.0.1:9000/v1"
model = "/data/model/whisper-large-v3-turbo"
language = "en"
response_format = "json"
temperature = 0.0class STT:def __init__(self):self.client = OpenAI(api_key=openai_api_key,base_url=openai_api_base,)def request(self,audio_path):with open(str(audio_path), "rb") as f:transcription = self.client.audio.transcriptions.create(file=f,model="/data/model/whisper-large-v3-turbo",language=language,response_format=response_format,temperature=temperature)if transcription:return transcription.textelse:return ''if __name__ == '__main__':audio_path = r'E:\temp\0.mp3'stt = STT()text = stt.request(audio_path)print(f'text: {text}')
 调用结果:

4.3.切分音频生成字幕文件

  需求:

  1.   字幕数据按每一分钟进行聚合
  2.   字幕文件包json格式保存,文件格式如下
{"time_begin": 0.0,"time_end": 60000.0,"text": "Hello World,Hello World,Hello World,Hello World,Hello World!"
}
import json
import os.pathfrom pydub import AudioSegmentfrom com.ai.uitl.stt_util import STTstt = STT()def create_directory_if_not_exists(directory_path):# 判断目录是否存在if not os.path.exists(directory_path):try:# 创建目录os.makedirs(directory_path)print(f"目录 '{directory_path}' 已创建。")except Exception as e:print(f"创建目录 '{directory_path}' 时发生错误: {e}")else:print(f"目录 '{directory_path}' 已存在。")def split(file_name,input_dir,output_dir,duration,json_file_output):create_directory_if_not_exists(output_dir)input_path = os.path.join(input_dir,file_name)# 加载音频文件audio = AudioSegment.from_file(input_path, format="mp3")# 音频文件的时长duration_seconds = audio.duration_secondsduration_milliseconds = duration_seconds * 1000start_time,end_time = 0.00,0.00index = 0text = ''all_objs = []one_minute_obj = {}# 指定切割开始时间和结束时间(单位为毫秒)while end_time < duration_milliseconds:start_time = end_timeend_time = start_time+durationif end_time > duration_milliseconds:end_time = duration_milliseconds# 切割音频cropped_audio = audio[start_time:end_time]output_file_name = f'{file_name}_{index}.mp3'output_path = os.path.join(output_dir,output_file_name)# 保存切割后的音频cropped_audio.export(output_path, format="mp3")result = index % 2if result == 0:text = stt.request(output_path)one_minute_obj['time_begin'] = start_timeelse:text = text + stt.request(output_path)one_minute_obj['time_end'] = end_timeone_minute_obj['text'] = textall_objs.append(one_minute_obj)one_minute_obj = {}index += 1result = index % 2if result != 0:one_minute_obj['text'] = textone_minute_obj['time_end'] = end_timeall_objs.append(one_minute_obj)# 打开文件并写入 JSON 数据with open(json_file_output, 'w', encoding='utf-8') as json_file:json.dump(all_objs, json_file, ensure_ascii=False, indent=4)if __name__ == '__main__':file_arr = ['1277.mp3', '1279.mp3']input_dir = r"E:\temp"for file_name in file_arr:temp_json_file_name = file_name+'_字幕文件.json'output_dir = r"E:\temp\output"output_dir = os.path.join(output_dir,file_name)json_file_output = os.path.join(output_dir,temp_json_file_name)split(file_name,input_dir,output_dir,30000.00,json_file_output)

相关文章:

开源模型应用落地-语音转文本-whisper模型-AIGC应用探索(五)

一、前言 在上一节中&#xff0c;学习了如何使用vLLM来部署Whisper-large-v3-turbo模型。不过&#xff0c;在实际使用时&#xff0c;模型一次只能处理30秒的音频。今天&#xff0c;将结合实际业务&#xff0c;介绍如何处理一段完整的音频&#xff0c;并生成相应的字幕文件。 相…...

python每日十题(10)

在Python语言中&#xff0c;源文件的扩展名&#xff08;后缀名&#xff09;一般使用.py。 保留字&#xff0c;也称关键字&#xff0c;是指被编程语言内部定义并保留使用的标识符。Python 3.x有35个关键字&#xff0c;分别为&#xff1a;and&#xff0c;as&#xff0c;assert&am…...

安装和部署Tomcat并在idea创建web文件

一、背景 实验任务为安装Tomcat并创建web文件 为提高安装效率并且通俗易懂&#xff0c;免得大量文字浪费时间&#xff0c;这里我们采用图片加文字的方式来给大家讲解这个安装教程。 二、安装过程 首先第一步一定要注意你是否下载了JDK&#xff0c;如果你是像我一样下载一个…...

【Linux】Ubuntu 24.04 LTS 安装 OpenJDK 8

目录 通过 apt-get 直接安装 JDK 1. 更新 apt 软件源 2. 检查 JDK 是否已安装 3. 安装OpenJDK 4. 检查 JDK 是否成功安装 5. 设置 JAVA_HOME 环境变量 找到需要设置的 Java 路径 使用文本编辑器打开/etc/environment文件 添加 Java 安装路径 应用更改和验证配置 通过…...

图灵300题-21~40-笔记002

图灵300题 图灵面试题视频&#xff1a;https://www.bilibili.com/video/BV17z421B7rB?spm_id_from333.788.videopod.episodes&vd_sourcebe7914db0accdc2315623a7ad0709b85&p20。 本文是学习笔记&#xff0c;如果需要面试没有时间阅读原博文&#xff0c;可以快速浏览笔…...

蓝桥杯--bfs专题第二个题目(leetcode103二叉树)

文章目录 1.题目概述2.思路分析3.代码分析 1.题目概述 这个题目是关于二叉树的锯齿形的遍历&#xff1a;这个锯齿形是什么意思呢&#xff1f;简单的通俗的解释&#xff0c;就是S型的&#xff0c;例如下面的这个示例里面的二叉树&#xff1a; 第一行从左到右&#xff1a;但是只…...

React 知识回顾(HOC、合成事件、Fiber)

HOC 嗯&#xff0c;用户问的是HOC是什么以及它能用来做什么。我需要先理解HOC的基本概念&#xff0c;然后整理它的用途。根据搜索结果&#xff0c;HOC是React中的高阶组件&#xff0c;用来复用逻辑。网页1提到HOC是一个函数&#xff0c;接收组件返回新组件&#xff0c;属于设计…...

s1: Simple test-time scaling 【论文阅读笔记】

s1: Simple test-time scaling 关于test-time scaling 这个概念其实是相对 train scaling而言的。train scalling 指的是增加训练数据&#xff0c;增加训练flops等等&#xff0c;投入更多资源在train上。test-time scaling&#xff0c;其实现在简化点的理解&#xff0c;就是 …...

基于 Milvus 和 BiomedBERT 的医学文献智能搜索系统

前言 随着医学研究的不断深入&#xff0c;文献数量呈爆炸式增长&#xff0c;如何快速从海量文献中提取关键信息成为一大挑战。最近&#xff0c;我基于 Milvus 向量数据库和 BiomedBERT 嵌入模型&#xff0c;开发了一个智能搜索系统&#xff0c;支持语义搜索和关键词匹配&#…...

ASP.NET Web的 Razor Pages应用,配置热重载,解决.NET Core MVC 页面在更改后不刷新

Razor Pages应用&#xff0c;修改页面查看修改效果&#xff0c;如果没有热重载&#xff0c;改一句话跑一次&#xff0c;这个活就没法干了。 1、VS2022中的NuGet中安装RuntimeCompilation Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 需要配套你的.net sdk版本&#x…...

MySQL 对text类型字段添加索引

对于 MySQL 中的 text 类型字段&#xff0c;可以通过以下步骤向其添加索引&#xff1a; 创建辅助字段&#xff1a;创建一个辅助字段&#xff0c;将该字段的一部分数据转移到辅助字段中。例如&#xff0c;可以创建一个 varchar 类型的字段来存储 text 字段的前缀。 添加索引&am…...

深入解析SQL2API平台:数据交互革新者

在数字化转型持续深入的当下&#xff0c;企业对数据的高效利用与管理的需求愈发迫切。SQL2API平台应运而生&#xff0c;成为助力企业突破数据交互困境的有力工具&#xff0c;特别是它由麦聪软件基于DaaS&#xff08;数据即服务&#xff09;产品创新衍生而来&#xff0c;备受业界…...

@Autowired 和 @Resource 注解的区别

前言 Autowired 和 Resource 是 Spring 中用于依赖注入的注解&#xff0c;但两者在实现机制和使用方式上有显著差异。 主要区别 1.来源不同 Autowired&#xff1a;由 Spring 框架提供&#xff08;org.springframework.beans.factory.annotation&#xff09;&#xff0c;与 S…...

稳定运行的以ElasticSearch数据库为数据源和目标的ETL性能变差时提高性能方法和步骤

在使用 Elasticsearch 作为数据源和目标的 ETL&#xff08;Extract, Transform, Load&#xff09;过程中&#xff0c;性能逐渐变差的原因可能有很多&#xff0c;比如查询效率下降、集群负载过高、资源配置不合理等。 性能的提升通常需要从多个方面入手&#xff0c;尤其是在处理…...

游戏引擎学习第182天

回顾和今天的计划 昨天的进展令人惊喜&#xff0c;原本的调试系统已经被一个新的系统完全替换&#xff0c;新系统不仅能完成原有的所有功能&#xff0c;还能捕获完整的调试信息&#xff0c;包括时间戳等关键数据。这次的替换非常顺利&#xff0c;效果很好。 今天的重点是在此基…...

EJS缓存解决多页面相同闪动问题

基于 EJS 的模板引擎特性及其缓存机制&#xff0c;以下是关于缓存相同模块的详细解答&#xff1a; 一、EJS 缓存机制的核心能力 模板编译缓存 EJS 默认会将编译后的模板函数缓存在内存中&#xff0c;当相同模板文件被多次渲染时&#xff0c;会直接复用已编译的模板函数&#x…...

【MySQL】mysql日志文件

目录 日志文件特征 错误日志&#xff08;Error log &#xff09; 常规查询日志&#xff08;General query log &#xff09; 慢速查询日志&#xff08;Slow query log &#xff09; 审计日志&#xff08;Audit log &#xff09; 二进制日志&#xff08;Binary log &#…...

【C++】STL性能优化实战

STL性能优化实战 STL (Standard Template Library) 是 C 标准库的核心部分&#xff0c;提供了各种容器、算法和迭代器。虽然 STL 提供了强大的功能&#xff0c;但不恰当的使用可能导致性能问题。下面我将详细介绍 STL 性能优化的实战技巧&#xff0c;并通过具体案例说明。 1.…...

Playwright + MCP:用AI对话重新定义浏览器自动化,效率提升300%!

一、引言&#xff1a;自动化测试的“瓶颈”与MCP的革新 传统自动化测试依赖开发者手动编写脚本&#xff0c;不仅耗时且容易因页面动态变化失效。例如&#xff0c;一个简单的登录流程可能需要开发者手动定位元素、处理等待逻辑&#xff0c;甚至反复调试超时问题。而MCP&#xf…...

12-scala样例类(Case Classes)

例类&#xff08;Case classes&#xff09;和普通类差不多&#xff0c;只有几点关键差别&#xff0c;接下来的介绍将会涵盖这些差别。样例类非常适合用于不可变的数据。 定义一个样例类 一个最简单的样例类定义由关键字case class&#xff0c;类名&#xff0c;参数列表&#…...

WPF 与 C# 开发深度剖析

一、引言 在当今的软件开发领域&#xff0c;Windows 平台依旧占据着重要的地位。而 WPF&#xff08;Windows Presentation Foundation&#xff09;作为微软推出的一款强大的用户界面&#xff08;UI&#xff09;框架&#xff0c;为开发者提供了丰富的功能和灵活的设计方式&…...

【工具使用-编译器】VScode(Ubuntu)使用

1. VScode的快捷键 快捷键功能说明Ctrl+Shift+P / F1显示命令面板Ctrl+P快速打开文件Ctrl+Shift+N新建窗口Ctrl+Shift+W关闭窗口Ctrl+,打开设置Ctrl+K Ctrl+S打开快捷键设置Ctrl+X剪切行(无选中时剪切整行)Ctrl+C复制行(无选中时复制整行)Alt+↑ / Alt+↓向上/向下移动行Sh…...

C# SerialPort 使用详解

总目录 前言 在工业控制、物联网、嵌入式开发等领域&#xff0c;串口通信&#xff08;Serial Port Communication&#xff09;是连接串行设备&#xff08;如条码扫描器、GPS接收器等&#xff09;与计算机的重要手段。C# 提供了内置的 SerialPort 类&#xff0c;简化了串口开发…...

数据结构--二叉排序树

一、二叉排序树的定义 二叉排序树&#xff0c;又称二叉查找树。 性质&#xff1a; 左子树结点值<根结点值<右子树结点值&#xff08;进行中序遍历&#xff0c;可以得到一个递增的有序序列&#xff09; 二、查找操作 利用二叉排序树的性质&#xff0c;如果树空&#xff0c…...

FPGA的直方图均衡

文章目录 一、直方图均衡二、代码实现三、仿真 一、直方图均衡 直方图均衡&#xff08;Histogram Equalization&#xff09;是一种用于增强图像对比度的图像处理技术。它通过重新分配图像像素的灰度值&#xff0c;使得图像的灰度直方图在整个灰度范围内均匀分布&#xff0c;从而…...

使用Python将视频转化为gif

使用Python将视频转化为gif 一、前言二、准备三、测试 一、前言 最近想把喜欢的视频片段作成gif&#xff0c;就试着用Python做了下&#xff0c;感觉效果还行&#xff0c;这里做个记录。 二、准备 先下载安装对应的库&#xff0c;命令如下&#xff1a; pip install moviepy …...

基于javaweb的SpringBoot雪具商城系统设计与实现系统(源码+文档+部署讲解)

​ 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、…...

Harbor镜像仓库迁移与高可用集群搭建HTTPS实现实战指南

实验环境 Ubuntu22.04操作系统 registry节点 10.0.0.91 master节点 10.0.0.92 backup节点 10.0.0.93 在企业信息化建设的不同演进阶段&#xff0c;私有镜像仓库的选型策略存在显著差异。近期主导完成某企业级容器镜像仓库升级项目&#xff0c;成功实现Docker Registry至Ha…...

redis--JavaSpring客户端

目录 一、引言 二、配置 三、相关操作 四、总结 一、引言 本篇文章会将redis与spring项目进行结合&#xff0c;看看再spring项目中&#xff0c;redis是如何使用的 二、配置 三、相关操作 四、总结 在spring项目中的使用和在基础项目上的使用有差异&#xff0c;但是差异并不大…...

JavaWeb3

聚合函数&#xff1a;把某一列的数据计算。count,max,min,avg,sum select count(id) from wife;-- 统计个数&#xff0c;不计算null&#xff0c;统计常量表示个数 select count(*) from wife; select min(id) from wife; select avg(age) from wife; 分组查询 select name,c…...

SAP-ABAP:SAP数据集成全场景技术指南(BAPI、RFC、IDOC、BATCHJOB、ODATA、WEBSERVICE):从实时交互到批量处理

SAP数据集成全场景技术指南:从实时交互到批量处理 #mermaid-svg-hpPMerJYUerla0BJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hpPMerJYUerla0BJ .error-icon{fill:#552222;}#mermaid-svg-hpPMerJYUerla0BJ .er…...

QT笔记----QCheckBox

文章目录 概要1、QCheckBox 的基本概念2、单个QCheckBox3、多个QCheckBox同时应用3.1、实现效果3.2、实现Demo 概要 在 Qt 应用程序开发中&#xff0c;QCheckBox 是一个常用的用户界面元素&#xff0c;它允许用户在两种状态&#xff08;选中和未选中&#xff09;之间进行切换&a…...

试试智能体工作流,自动化搞定运维故障排查

APO 1.5.0版本全新推出的智能体工作流功能&#xff0c;让运维经验不再零散&#xff01;只需将日常的运维操作和故障排查经验转化为标准化流程&#xff0c;就能一键复用&#xff0c;效率翻倍&#xff0c;从此告别重复劳动&#xff0c;把时间留给更有价值的创新工作。更贴心的是&…...

3.24[Q]Linux

我正在学习Linux&#xff0c;Linux设备管理是怎样的&#xff1f;详细解释&#xff0c;越细节越好 我正在学习Linux&#xff0c;在Linux设备管理中&#xff0c;什么是char device&#xff1f;以及block,usb device?详细解释&#xff0c;越细节越好 我正在学习Linux&#xff0…...

深度学习——图像相似度评价指标

这里写目录标题 PSNR&#xff08;Peak Signal-to-Noise Ratio&#xff0c;峰值信噪比&#xff09;定义公式代码 SSIMMS-SSIM (Multi Scale Structural Similarity Index Measure,多尺度结构相似性)CSS &#xff08;Contrast-Structure Similarity 对比结构相似度&#xff09;MA…...

CentOS安装sshpass工具-自动化SSH密码认证

sshpass是一个在Linux环境下用于自动化SSH密码认证的工具。 一、功能特点 自动化SSH登录&#xff1a;sshpass允许用户在命令行中直接传递密码&#xff0c;从而无需在SSH连接时手动输入密码。这对于自动化脚本和批处理任务非常有用&#xff0c;因为它可以在非交互式环境下完成…...

js 中 如何获取数组的交集【面试题】

一、数组元素为基本类型&#xff1a;Number、String、等基本类型时 1、使用 Set 和 filter&#xff08;适用于两个数组&#xff09; const intersection (arr1, arr2) > {const set new Set(arr2);return [...new Set(arr1)].filter(item > set.has(item)); };将第二…...

value-key 的作用

在 el-autocomplete 组件中&#xff0c;value-key 是一个非常重要的属性&#xff0c;它用于指定选项对象中作为值的字段名。当选项列表是一个包含多个属性的对象数组时&#xff0c;value-key 能帮助组件明确哪个属性是实际要使用的值。比如&#xff0c;选项列表为 [{id: 01, na…...

Spring MVC:从历史演变到实战入门

1. Java Web的发展历史与MVC模式 1.1 Model I与Model II的演进 Model I&#xff08;JSPJavaBean&#xff09; 作为早期Java Web开发的主流模式&#xff0c;其核心架构如下&#xff1a; graph LR A[客户端] --> B[JSP页面] B --> C{业务逻辑} C --> D[JavaBean] D -…...

Matlab设置表table的表头

用到matlab的table很好用。经常涉及放入数据&#xff0c;读取数据&#xff0c;下面总结常用的知识点。 1. 把不同数据类型放到同一个表中 想把时间类型和数值类型放到统一table中。困扰的点是&#xff0c;我已经知道了表头名称&#xff0c; 如何批量的为表头命名&#xff0c;…...

预测蓝桥杯16届嵌入式省赛客观题

以下是15道蓝桥杯嵌入式省赛客观题预测&#xff0c;每道题均包含**选项列表**、**答案**和**解析**&#xff0c;格式清晰便于快速查阅&#xff1a; 一、预测1 ### **一、STM32G4硬件基础与外设配置** 1. **STM32G431RBT6的Flash和RAM容量分别为&#xff1f;** **选项**&a…...

综合章节:游戏网络化、模组化与深度扩展

模块一&#xff1a;网络功能与玩家数据同步 目标&#xff1a;实现玩家得分上传、全球排行榜展示及云端数据同步。 # network_manager.py&#xff08;网络请求封装&#xff09; import requests import threadingclass NetworkManager:def __init__(self, base_url"http:…...

PostgreSQL:索引与查询优化

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

Android Compose 框架的 ViewModel 委托深入剖析(二十)

Android Compose 框架的 ViewModel 委托深入剖析 一、引言 在 Android 开发中&#xff0c;数据的管理和状态的保存是至关重要的。ViewModel 作为 Android 架构组件的一部分&#xff0c;为我们提供了一种在配置更改&#xff08;如屏幕旋转&#xff09;时保存数据和管理 UI 状态…...

android|生成二维码qrcode(android)

1.build.gradle implementation com.google.zxing:core:3.4.1引入zxing库 只是生成的话引入core库就可以了 2.封装方法 import android.graphics.Bitmap; import android.graphics.Color;import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; imp…...

element-plus中el-empty空盒子组件和Collapse 折叠面板组件的使用

一.el-empty空盒子组件的使用 直接复制下面的代码&#xff1a; <el-empty description"description" /> 展示效果&#xff1a; 还可以自定义文字描述&#xff1a; <el-empty description"暂未选择患者"/> 二.Collapse 折叠面板组件的使用 复制…...

Windows 和 Linux 操作系统架构对比以及交叉编译

操作系统与架构兼容性详解 1. 可执行文件格式&#xff1a;PE vs ELF Windows: PE (Portable Executable) 格式 详细解释&#xff1a; PE 格式是 Windows 下的可执行文件标准 包含多个区段&#xff08;Sections&#xff09;&#xff0c;如代码段、数据段、资源段 文件头包含…...

【区块链安全 | 第一篇】密码学原理

文章目录 1.哈希函数1.1 哈希函数的性质1.2 常见哈希算法1.3 Merkle Tree&#xff08;默克尔树&#xff09;1.4 HMAC&#xff08;哈希消息认证码&#xff09; 2. 公钥密码学2.1 对称加密 vs 非对称加密2.2 RSA 算法2.3 ECC&#xff08;椭圆曲线密码学&#xff09;2.4 Diffie-He…...

3.23[A]linux

gedit 是 GNOME 桌面环境下的文本编辑器&#xff0c;类似于 Windows 中的记事本&#xff0c;但功能更强大&#xff0c;支持语法高亮、多文件编辑等特性。它是一个图形化界面的文本编辑器&#xff0c;适合在需要直观编辑文本文件的场景中使用。 gedit 通常用于编辑配置文件、源代…...

AI革命之下的前端将会如何发展?

一、AI 为前端开发带来的变革 &#xff08;一&#xff09;提升开发效率 传统的 Web 前端开发常常面临大量重复性工作&#xff0c;如编写简单表单、布局组件等&#xff0c;这些工作耗时费力且易出错&#xff0c;严重影响开发效率和项目进度。而 AI 的出现&#xff0c;通过自动…...