什么是向量搜索Vector Search?
🧠 向所有学习者致敬!
“学习不是装满一桶水,而是点燃一把火。” —— 叶芝
我的博客主页: https://lizheng.blog.csdn.net
🌐 欢迎点击加入AI人工智能社区!
🚀 让我们一起努力,共创AI未来! 🚀
现在大家都在采用向量搜索来适应用户需求。顾名思义,向量搜索是通过一种称为向量的概念来查找和比较对象的技术。简单来说,它帮你发现对象之间的相似性,让你能在数据中找到复杂且符合上下文的关联。这项技术是AI搜索类应用的幕后功臣。
向量搜索是现代数据平台(如向量数据库)中的一项AI驱动的搜索功能,帮助用户构建更灵活的应用。你不再局限于基础的关键词搜索,而是能跨越任何数字媒体类型,找到语义相似的信息。
它的核心是众多机器学习系统之一,由各种规模和复杂度的大语言模型LLM驱动。这些模型可以通过数据库和传统平台获取,甚至被推送到边缘设备,在移动端运行。
本文将介绍向量搜索、相关术语、功能及其在现代数据库技术和人工智能AI创新中的应用。
什么是向量?
向量是一种数据结构,存储了一组数字。在这里,它指的是保存了数据集数字摘要的向量,可以看作是数据的指纹或摘要,正式名称叫嵌入。以下是一个简单的例子:
"红苹果": [-0.02511234 0.05473123 -0.01234567 ... 0.00456789 0.03345678 -0.00789012] |
向量搜索的好处
向量搜索为数据库及其应用带来了一系列新能力。简而言之,它帮助用户在海量信息(即语料库)中找到更符合上下文的匹配结果。接近度的概念很重要——向量搜索通过统计方法将项目分组,展示它们的相似性或相关性。这不仅适用于文本,还适用于更多类型的数据,尽管我们的例子多为文本,以便与传统搜索系统对比。
这张图展示了向量搜索如何在3D空间中映射、查找和分组“相似”对象的可视化示例。
获取海量通用知识
向量搜索也是将AI工具引入应用的好方法,提供了传统搜索工具无法实现的灵活适应性。由于有许多公开的大语言模型(LLM),任何公司都可以采用它们作为应用搜索的基础。LLM存储了大量信息,搜索它们的结果能为你的应用带来指数级价值,而无需编写复杂代码。这是许多应用通过新功能升级的方式之一。
超级搜索 vs. 传统搜索
幸运的是,在更复杂的场景中,向量搜索也是一种更快的搜索方法。传统的关键词搜索系统可以优化以在文档中查找匹配文本,但一旦需要应用复杂的模糊匹配算法或极端的布尔谓词变通方案(比如多个WHERE子句),搜索就会变慢且更复杂。
在复杂环境中成功搜索所需的各种权衡,可以通过向量搜索避免。不过,这需要一个服务级API(如OpenAI)和足够的资源来连接应用和LLM。根据你选择的LLM,你会有不同的选择和限制。
传统搜索与向量搜索的区别
上述好处与两种搜索方法的技术差异有所重叠。本节我们将深入探讨这些差异的核心。
上下文与语义搜索
许多搜索系统使用关键词或短语搜索,优化为查找精确的文本匹配或使用关键词频率最高的文档。但问题是,这些方法可能缺乏上下文和灵活性。例如,搜索“树”可能永远无法匹配实际树种名称的数据,尽管这些数据非常相关。这种上下文匹配是语义搜索的一种形式——单词之间的上下文和关系很重要。
相似性
向量搜索不仅关乎语义关系。例如,在文本应用中,它超越了使用单词和短语,还能通过输入单词、句子、段落等,在更深层次上匹配语义和上下文,找到相似的文档。
相似性搜索也适用于图像。如果你要写一个比较两张图像的应用,你会怎么做?如果只是逐个像素比较,你只能找到颜色、分辨率、编码等完全相同的图像。但如果你能分析图像并生成内容向量嵌入,就可以比较它们并找到匹配项。在图像例子中,向量嵌入描述了每张图像的内容,然后让你比较它们——这是一种更强大的比较和发现“接近度”的方法。
向量搜索的工作原理
向量搜索通过创建和比较向量嵌入来工作。其原理是数据可以转换为数字向量表示(嵌入),并与其他以类似数字表示(使用LLM)编目的数据进行比较。
它将不同类型的数字内容(文本、音频、视频等)索引为神经网络能理解的通用语言。
LLM创建的模型保存了代表训练数据的向量。例如,维基百科的每个段落都可以被摘要并索引为向量。然后,用户可以提交自己的数据向量(通常通过嵌入过程生成)到向量搜索系统,以找到相似的段落。
虽然背后有很多复杂的工作,但这就是其核心。
构建向量搜索应用的三个步骤
构建或使用向量搜索应用包括三个阶段:
- 为自定义数据或查询创建嵌入
- 使用基于大语言模型(LLM)训练的向量引擎比较结果,找到与模型中数据语料库最匹配的语义数据
- 将LLM结果与自定义应用数据或数据库进行比较,找到更相关的匹配
第一步——为请求创建嵌入
嵌入在向量应用中就像数据的指纹,类似于稍后可以在索引中使用的键。一段数据(文本、图像、视频等)被发送到向量嵌入应用,转换为数字表示(向量)。这个向量嵌入代表了输入到嵌入应用的对象。幕后,一个大语言模型(LLM)引擎被用来创建嵌入,以便在下一步中从同一LLM中检索匹配项。
在数据库领域,表列中的文本可以通过嵌入引擎处理,向量对象可以保存在该行或JSON对象的属性中。每个文档或记录的嵌入被索引,以便在搜索请求期间进行内部比较。
假设有一个零售目录的网页应用,用户可以输入描述服装类型和颜色的文本来搜索库存。应用将用户请求发送到LLM进行向量嵌入处理。LLM用于计算向量表示以供下一步使用。“红苹果”可能变成如下所示的高维数组向量,以JSON存储:
{ "word": "红苹果", "embedding": [0.72, -0.45, 0.88, 0.12, -0.65, 0.31, 0.55, 0.76] } |
这是一个过度简化的例子,但本质上,向量嵌入只是通过特定机器学习过程分析数据后生成的多维数组。嵌入有不同的类型和大小,基于各种LLM,但这超出了本文的范围。
第二步——从LLM中查找匹配项
假设LLM已经为其构建数据的所有部分创建了嵌入。如果LLM是用维基百科训练的,那么每个段落可能都有自己的嵌入。大量的嵌入!
搜索阶段是找到最接近匹配的嵌入的过程。向量搜索引擎可以接受现有嵌入,或从搜索查询动态创建一个。例如,它可以接受应用中的用户文本输入或数据库查询,并使用LLM查找模型中的相关内容。然后,它将最相关的匹配返回给应用。
继续零售例子,“蓝色T恤”的向量嵌入可以作为查找相似数据的键。应用将该向量发送到中央LLM,根据构建LLM时分析的文本描述或图像,找到最相似和语义相关的内容。
例如,你可能会得到一个包含五个文档的列表,它们的向量嵌入在相似性上匹配。如下所示,每个文档都有自己的向量表示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | { "embeddings": [ { "word": "红苹果", "embedding": [0.72, -0.45, 0.88, 0.12, -0.65, 0.31, 0.55, 0.76] }, { "word": "烂苹果", "embedding": [0.71, -0.42, 0.85, 0.15, -0.68, 0.29, 0.53, 0.78] }, { "word": "小柯基", "embedding": [0.73, -0.46, 0.87, 0.11, -0.64, 0.33, 0.56, 0.74] }, { "word": "大别野", "embedding": [0.75, -0.41, 0.89, 0.14, -0.67, 0.28, 0.54, 0.77] }, { "word": "云南滇红", "embedding": [0.72, -0.44, 0.86, 0.13, -0.66, 0.30, 0.55, 0.76] }, { "word": "牛仔裤", "embedding": [0.70, -0.43, 0.84, 0.16, -0.69, 0.27, 0.52, 0.79] } ] } |
第三步——查找与自定义数据的匹配项
如果你只需要查找LLM中存储的信息匹配项,那么工作就完成了。但真正自适应的应用会希望从内部数据源(如企业数据库)中提取匹配和信息。
假设数据库中的文档或记录已经保存了向量嵌入,并且你从LLM中获得了匹配项。现在,你可以将这些匹配项发送到数据库的向量搜索功能中,找到相关的数据库文档。操作上,它就像另一个索引字段,但会给搜索结果带来更定性的感觉。
向量搜索如何找到匹配项?
向量搜索结合了三个概念:用户生成的数据(请求)、包含代表数据源模型的LLM语料库(模型),以及数据库中的自定义数据(自定义匹配)。向量搜索让这三个因素协同工作。
向量搜索支持什么?
只要能为任何类型的数据创建嵌入,并以相同方式(来自同一LLM)与其他嵌入进行比较,向量搜索就能找到相似性。
根据使用的LLM,结果可能会有很大差异,因为LLM的训练数据来源不同。例如,如果你想搜索相似的图像,但使用的LLM只包含古典文学,那么你会得到无法使用的结果(尽管如果是古典作家的图片,可能还有点希望)。
同样,如果你正在构建一个法律案例,而你的LLM只在Reddit数据上训练,那么你可能会陷入一个独特的场景,或许有一天能拍成一部好电影(当然,是在你被取消律师资格之后)。
这就是为什么确保支持你体验的LLM针对正确的向量搜索用例和你所需的信息非常重要。非常通用的LLM会有更多上下文,但针对你行业的专业LLM会为你的业务提供更准确和细致的信息。
大规模进行向量搜索
任何执行向量搜索的企业系统在生产环境中都必须能够扩展(参见我们的云数据复制指南)。这使得能够复制和分片索引的向量搜索系统尤为关键。
当系统需要搜索索引以查找匹配项时,工作负载可以分布在多个节点上。
同样,创建新嵌入并为其建立索引也将受益于资源隔离,这样其他应用功能不会受到影响。资源隔离意味着向量搜索相关功能拥有自己的内存、CPU和存储资源。
在数据库环境中,确保所有服务都正确分配资源非常重要,这样服务之间不会竞争。例如,表查询、实时分析、日志记录和数据存储服务都需要自己的空间,向量搜索服务也是如此。
分布式LLM访问API也很重要。由于许多其他服务可能调用嵌入,生成嵌入的API和系统也必须能够随着流量增长而扩展。对于基于云的LLM服务,确保在开始原型设计之前,它们的服务级别协议能够满足你的生产需求。
外部服务通常可以快速高效地扩展,但随着规模扩大,需要额外资金。在评估选项时,确保清楚了解价格滑动比例。
向量搜索的未来
大多数应用开发将由混合搜索场景驱动。单一的搜索或查询方法将无法满足未来的灵活性需求。混合搜索能力意味着你可以使用向量搜索获取语义匹配,同时使用基础SQL谓词甚至地理空间索引缩小结果范围。
将这些功能结合到单一的混合搜索体验中,将使开发者更容易从应用中提取最大灵活性。这包括将所有向量搜索功能扩展到边缘移动设备以及在云端和本地。
检索增强生成(RAG)将允许开发者在LLM之上添加更多自定义上下文感知。这将减少重新训练LLM的需求,同时为开发者提供保持嵌入和匹配最新的灵活性。
向量搜索还将通过一种可插拔知识模块定义,允许企业基于来自不同来源的LLM引入广泛的信息。想象一个维护电线杆的移动现场应用。语义图像搜索可能帮助识别电线杆物理结构的等等问题。
向量搜索常见问题
为什么向量搜索很重要?
向量搜索很重要,因为它提供了一种新颖的方法,利用最新的机器学习和AI技术,在数字数据之间找到相似性和上下文。
什么是向量搜索嵌入?
向量嵌入是保存了分析数据独特数字表示的向量。机器学习(ML)工具使用大语言模型(LLM)分析输入数据并生成描述数据的向量嵌入。然后,向量嵌入被保存在数据库或文件中供后续使用。
传统搜索和向量搜索有什么区别?
主要区别在于传统搜索优化为查找精确的关键词或短语匹配,而向量搜索旨在在更明确的语义上下文中找到相似概念。
向量搜索面临哪些挑战?
主要挑战是应用必须依赖大语言模型(LLM)来帮助创建嵌入和查找上下文匹配。
相关文章:
什么是向量搜索Vector Search?
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创…...
【接口重复请求】axios通过AbortController解决页面切换过快,接口重复请求问题
处理网络请求时,我们经常会遇到需要中途取消请求的情况,比如用户在两个tab之间反复横跳的场景,如果每个接口都从头请求到结束,那必然会造成很大的服务压力。 AbortController是一个Web API,它提供了一个信号对象&…...
GitHub与Gitee各是什么?它们的区别与联系是什么?
李升伟 整理 GitHub 介绍 GitHub 是一个基于 Git 的代码托管平台,主要用于版本控制和协作开发。它支持多人协作,提供代码托管、问题跟踪、代码审查、项目管理等功能。GitHub 是全球最大的开源社区,许多知名开源项目都在此托管。 主要功能&…...
OpenCV图像形态学:原理、操作与应用详解
一、引言 图像形态学(Image Morphology)是图像处理领域的一个重要分支,它基于集合论、格论、拓扑学和随机函数理论,主要用于分析和处理图像的几何结构。形态学操作通过特定的结构元素(Structuring Element)…...
ubuntu git cola gui
直接的方法, samba, win 里用 tortoiseSVN 需要先在命令行,运行 git 命令,看到操作提示, 按照提示做 然后右键看 git diff 其它的方法 linux下可视化git工具git-cola安装与使用(HTTP方式)_git…...
RTX5080 安装torch,torchvision ,torchaudio 指南
一、前置准备 5080 显卡 是sm120 架构,只有torch的preview版本可以使用,而且该版本仅支持cuda12.8. 请你放弃下载以及使用低版本cuda cudnn torch 的想法。 请你学习conda 创建环境,激活环境,在虚拟环境里使用pip ,…...
ubuntu开发mcu环境
# 编辑 vim或者vscode # 编译 arm-none-eabi # 烧写 openocd 若是默认安装,会在/usr/share/openocd/scripts/{interface,target} 有配置接口和目标版配置 示例: openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg 启动后,会…...
《UNIX网络编程卷1:套接字联网API》第5章 TCP客户服务器程序示例
《UNIX网络编程卷1:套接字联网API》第5章 TCP客户/服务器程序示例 5.1 本章目标与示例程序概述 本章通过一个完整的TCP回射(Echo)客户/服务器程序,深入解析TCP套接字编程的核心流程与关键问题。示例程序的功能为:客户…...
花洒洗澡完毕并关闭后过段时间会突然滴水的原因探究
洗澡完毕后的残留水 在洗澡的过程中,我们通常会使用到大量的水。这些水会通过花洒管子到达花洒顶喷流出。由于大顶喷花洒的喷头较大,关闭后里面的存水会更多。 气压失衡后的滴水 当花洒关闭后,内部的水管和花洒头中仍存有一定量的水。由于…...
子组件使用:visible.sync=“visible“进行双向的绑定导致该弹窗与其他弹窗同时显示的问题
问题描述:最近写代码时遇到了一个问题:点击A弹窗后关闭,继续点击B弹窗,这时会同时弹窗A、B两个弹窗。经过排查后发现在子组件定义时使用了:visible.sync"visible"属性进行双向的数据绑定 <template> <el-dial…...
TTL 值 | 在 IP 协议、ping 工具及 DNS 解析中的作用
注:本文为 “TTL” 相关文章合辑。 未整理去重。 如有内容异常,请看原文。 TTL 值的意义 2007-10-18 11:33:17 TTL 是 IP 协议包中的一个值,用于标识网络路由器是否应丢弃在网络中停留时间过长的数据包。数据包可能因多种原因在一定时间内…...
代码调试:VS调试实操
1.什么是BUG? BUG原意是“虫子”,在计算机领域是指未被发现的错误,又叫程序漏洞 2.什么是调试? 当你在写完代码时需要去找代码中的问题,这个过程就叫调试 我们必须承认有这个问题并且去修复问题,可以透…...
IGMP(Internet Group Management Protocol)与组播技术深度解析
一、组播技术核心概念 1. 组播 vs 单播/广播 传输类型目标地址网络负载典型应用场景单播单一明确IP随接收者数量线性增长网页浏览、文件下载广播全网段(如255.255.255.255)强制全网设备处理ARP请求、DHCP发现组播D类地址(224.0.0.0~239.255…...
JWT(JSON Web Token)
目录 一 JWT简单介绍 二、JWT 的组成结构 1 Header(头部) 2 Payload(载荷) 三、JWT 工作原理 好文分享 session、cookie、token 详解_token session cookie-CSDN博客 一 JWT简单介绍 概念:是一种开放标准&#…...
深入理解多线程编程:从基础概念到实战应用
二进制信号量:线程同步的基础 什么是二进制信号量? 二进制信号量是一种特殊的信号量,其值只能是0或1。它是最简单的线程同步机制之一,常用于线程间的简单协调。 #include <semaphore.h>sem_t sem; // 声明二进制信号量 se…...
【STM32设计】基于STM32的智能门禁管理系统(指纹+密码+刷卡+蜂鸣器报警)(代码+资料+论文)
本课题为基于单片机的智能门禁系统,整个系统由AS608指纹识别模块,矩阵键盘,STM32F103单片机,OLED液晶,RFID识别模块,继电器,蜂鸣器等构成,在使用时,用户可以录入新的指纹…...
【MVP 和 MVVM 相比 MVC 有哪些优化点?】
MVP 和 MVVM 相比 MVC 的优化及原因 1. MVC 的痛点 在传统 MVC 模式中: 视图(View)和模型(Model)直接交互:View 可能直接监听 Model 的变化(如观察者模式),导致耦合。…...
蓝桥云客 刷题统计
刷题统计 问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n 题? 输入格式 输入一行包含三个整数 a, b 和 …...
【28BYJ-48】STM32同时驱动4个步进电机,支持调速与正反转
资料下载:待更新。。。。 先驱动起来再说,干中学!!! 1、实现功能 STM32同时驱动4个步进电机,支持单独调速与正反转控制 需要资源:16个任意IO口1ms定时器中断 目录 资料下载:待更…...
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【代码篇】A题解题全流程(持续更新)
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【代码篇】A题解题全流程(持续更新) 环境配置: 显存>24GBPyTorch 2.3.0Python 3.12(ubuntu22.04)CUDA 12.1autoDL服务器平台,(好处:可以分享镜像&…...
迅为RK3568开发板驱动开发指南helloworld驱动实验-驱动的基本框架
Linux 驱动的基本框架主要由模块加载函数,模块卸载函数,模块许可证声明,模块参数,块导出符号,模块作者信息等几部分组成,其中模块参数,模块导出符号,模块作者信息是选的部分…...
Spring Boot 3.4.3 基于 JSqlParser 和 MyBatis 实现自定义数据权限
前言 在企业级应用中,数据权限控制是保证数据安全的重要环节。本文将详细介绍如何在 Spring Boot 3.4.3 项目中结合 JSqlParser 和 MyBatis 实现灵活的数据权限控制,通过动态 SQL 改写实现多租户、部门隔离等常见数据权限需求。 一、环境准备 确保开发环境满足以下要求: …...
软件工程面试题(二十三)
1、public class Test {public static void add(Integer i){int val=i.intValue(); val+=3; i=new Integer(val); } public static void main(String[] args) {Integer i=new Integer(0); add(i); System.out.println(i.intValue());...
spring boot 集成redis 中RedisTemplate 、SessionCallback和RedisCallback使用对比详解,最后表格总结
对比详解 1. RedisTemplate 功能:Spring Data Redis的核心模板类,提供对Redis的通用操作(如字符串、哈希、列表、集合等)。使用场景:常规的Redis增删改查操作。特点: 支持序列化配置(如String…...
leetcode-热题100(3)
leetcode-74-搜索二维矩阵 矩阵最后一列升序排序,在最后一列中查找第一个大于等于target的元素 然后在该元素所在行进行二分查找 bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {int n matrixSize;int m matrixColSize[0];in…...
【大模型系列篇】大模型基建工程:使用 FastAPI 构建 SSE MCP 服务器
今天我们将使用FastAPI来构建 MCP 服务器,Anthropic 推出的这个MCP 协议,目的是让 AI 代理和你的应用程序之间的对话变得更顺畅、更清晰。FastAPI 基于 Starlette 和 Uvicorn,采用异步编程模型,可轻松处理高并发请求,尤…...
基于大模型预测风湿性心脏病二尖瓣病变的多维度诊疗研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型技术概述 2.1 大模型的原理与架构 2.2 在医疗领域的应用现状 三、术前评估与预测 3.1 患者数据收集与分析 3.1.1 临床数据收集 3.1.2 影像数据处理 3.2 大模型预测模型建立 3.2.1 数据预处理 3.…...
5.模型训练-毕设篇
vgg: base_model_vgg13 models.vgg13(pretrainedTrue) base_model_vgg13.classifier[-1] nn.Linear(4096, num_classes) base_model_vgg13.to(device)(b_img_rgb.to(device)).shapebase_model_vgg13 models.vgg13(pretrainedTrue) 作用:加载预训练的…...
[物联网iot]对比WIFI、MQTT、TCP、UDP通信协议
第一步:先理解最基础的关系(类比快递) 假设你要给朋友寄快递: Wi-Fi:相当于“公路和卡车”,负责把包裹从你家运到快递站。 TCP/UDP:相当于“快递公司的运输规则”。 TCP:顺丰快递&…...
【含文档+PPT+源码】基于Python的股票数据可视化及推荐系统的设计与实现
项目介绍 本课程演示的是一款基于Python的股票数据可视化及推荐系统的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Python学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行…...
LeetCode算法题(Go语言实现)_23
题目 给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid ,返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。 如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。 一、代码实现 func equalPairs…...
Windows家庭版如何开启Hyper-V与关闭Hyper-V
在Windows中如果要安装桌面版Docker,那么Hyper-V一定是需要开启的,在专业版操作系统上,这个功能直接就可以勾选开启,重启之后就即可生效,但在家庭版的操作系统上,默认是没有这个选择项的,这时候我们就需要借助于命令去开启它。本文,整理了一键开启Hyper-V服务和一键关闭…...
C# 中充血模型和贫血模型
在C#中,充血模型(Rich Domain Model)和贫血模型(Anemic Domain Model)是两种截然不同的领域建模方式,核心区别在于业务逻辑的归属。以下是通俗易懂的解释: 1. 贫血模型ÿ…...
C++中的继承
#include <iostream> using namespace std;// 武器类(基类) class Weapon { protected:int atk; // 攻击力public:// 构造函数Weapon(int atk 0) : atk(atk) {}// 虚拟析构函数virtual ~Weapon() {}// set 和 get 接口void setAtk(int atk) {this…...
Uubuntu20.04复现SA-ConvONet步骤
项目地址: tangjiapeng/SA-ConvONet: ICCV2021 Oral SA-ConvONet: Sign-Agnostic Optimization of Convolutional Occupancy Networks 安装步骤: 一、系统更新 检查系统是否已经更新到最新版本: sudo apt-get update sudo apt-get upgra…...
Blender模型导入虚幻引擎设置
单位系统不一致 Blender默认单位是米(Meters),而虚幻引擎默认使用**厘米(Centimeters)**作为单位。 当模型从Blender导出为FBX或其他格式时,如果没有调整单位,虚幻引擎会将1米(Blen…...
大数据Spark(五十五):Spark框架及特点
文章目录 Spark框架及特点 一、Spark框架介绍 二、Spark计算框架具备以下特点 Spark框架及特点 一、Spark框架介绍 Apache Spark 是一个专为大规模数据处理而设计的快速、通用的计算引擎。最初由加州大学伯克利分校的 AMP 实验室(Algorithms, Machines, and Pe…...
深入理解Python asyncio:从入门到实战,掌握异步编程精髓
文章目录 前言一、asyncio基础概念1.1 什么是异步编程?1.2 asyncio核心组件 二、asyncio核心用法详解2.1 事件循环管理2.2协程与任务2.3 异步上下文管理器 三、asyncio高级特性3.1 异步生成器3.2异步队列3.3 异步锁和信号量 四、asyncio实战项目4.1 高性能Web爬虫4.…...
线段树,单点,区间修改查阅
#PermanentNotes/algorithm 思想 首先关于树有许多类型,这里我们主要首线段树,整体思想就是将一个大区间进行拆分,拆分成各个小区间,在我们进行查找,更新时,就是对区间的查找更新 类型 初始化,构建树 代码 const int Z 1e7; const ll INF 1e18; const int maxn 1e5 10…...
音视频(二)ffmpeg编译及推流
FFmpeg 大名鼎鼎,就不多介绍了 1:环境 win11_amd64 ffpmeg download:https://git.ffmpeg.org/ffmpeg.git ffmpeg msys2 download:https://www.msys2.org/ vs2022 (c 写demo用) 用别的也行 usb2.0 摄像头(有点老) opencv 看上传的…...
syslog 与 Linux 内核日志系统全面解析
在 Linux 系统中,日志是进行系统调试、故障排查和系统安全分析的重要手段。syslog 和内核日志是 Linux 日志组成的核心组件。本文将从原理、实现、配置、常见问题分析等综合解析,全面解读 Linux 下的日志机制。 一、syslog 系统概述 1.1 什么是 syslog …...
SQL问题分析与诊断(8)——关键信息(2)
8.2. 关键信息 8.2.2. 警告 查询计划中,可能会看到出现于操作符上的小图标,特别是黄色或红色的感叹号。这些图标都是警告。并非每个警告都指示一个严重问题,但发现时请检查该图标的属性窗口,其将包含该警告图标的具体细节。 8.…...
HCIA/HCIP基础知识笔记汇总
HCIA/HCIP基础知识笔记汇总 ICT产业链: 上游:芯片制造、元器件生产、光纤光缆制造 中游:硬件组装、软件开发、网络建设维护 下游:电信服务、互联网服务、终端产品 VLAN端口类型: access :…...
vue3 动态路由
定义: 对路由的添加通常是通过 routes 选项来完成的,但是在某些情况下,你可能想在应用程序已经运行的时候添加或删除路由 1. 动态添加路由规则 场景 在应用初始化时,可能需要根据用户的角色或权限动态添加路由规则。 实现 im…...
《Linux内存管理:实验驱动的深度探索》大纲
《Linux内存管理:实验驱动的深度探索》 ——通过递进式实验与问题剖析,从入门到精通 第一部分:初探内存——基础概念与简单实验 目标:理解内存的基本行为,学会观察和提问 第1章 内存初体验:从"free…...
【C语言】深入理解指针(五):sizeof、strlen与数组指针的那些事儿
前言 在C语言的学习中,指针始终是一个让人又爱又恨的话题。它强大而灵活,但同时也充满了陷阱。今天,我们就来深入探讨一下指针相关的几个重要知识点:sizeof和strlen的区别,以及数组和指针在笔试题中的那些常见问题。希…...
CMake学习-- install 指令详细说明
目录 CMake中install命令的用法背景知识使用方法项目结构示例代码CMakeLists.txt构建和安装 详细介绍安装库和头文件安装可执行文件安装额外的文件安装目录结构使用安装的库 总结 CMake中install命令的用法 背景知识 在软件开发过程中,构建和安装是两个重要的环节…...
Cannot find a valid baseurl for repo: centos-sclo-sclo/x86_64
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpmyum clean allyum macache fast 编辑配置文件 /etc/yum.repos.d/zabbix.repo and enable zabbix-frontend repository. [zabbix-frontend]...enabled1... 下载相关…...
uniapp 微信小程序 使用ucharts
文章目录 前言一、组件功能概述二、代码结构分析2.1 模板结构 总结 前言 本文介绍一个基于 Vue 框架的小程序图表组件开发方案。该组件通过 uCharts 库实现折线图的绘制,并支持滚动、缩放、触摸提示等交互功能。文章将从代码结构、核心方法、交互实现和样式设计等方…...
空调开机启动后发出噼里啪啦的异响分析与解决
背景 当空调使用时由于制冷或制热运转时(关机后可能也会出现),塑料件热胀冷缩引起,可能会出现“咔咔”的声音;空调冷媒在空调内管路流动时会出现轻微的“沙沙”的声音;也有可能是新装的空调摆风轴出现响声…...