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

Milvus向量数据库03-搜索理论

Milvus向量数据库03-搜索理论

1-ANN搜索

通过 k-最近邻(kNN)搜索可以找到一个查询向量的 k 个最近向量。kNN 算法将查询向量与向量空间中的每个向量进行比较,直到出现 k 个完全匹配的结果。尽管 kNN 搜索可以确保准确性,但十分耗时。尤其是数据量大,向量维度高时,耗时更久。

相比之下,近似最近邻(ANN)搜索耗时更短。ANN 算法会预先构建索引。选择不同的索引算法会影响搜索速度、内存使用情况和准确性。各种类型的 ANN 索引算法主要分为 2 种思路:缩小搜索范围和将高维向量空间分解为低维子空间。

缩小搜索范围是指仅在可能性较高的候选项子集中对比查询向量,从而缩短搜索时间。但是可能结果不可避免地会返回不相关的向量。为确定一个向量是否在子集中,需要构建索引结构来对向量进行排序。

通常,有 3 种索引结构:图索引、树索引、哈希索引。

HNSW:图索引算法

  • HNSW:图索引算法链接

Hierarchical Navigable Small World(HNSW)算法通过创建多层接近图(Proximity graph)来索引向量空间。HNSW 算法在每 1 层中,都会在向量(或顶点)之间绘制连接相邻点的边,以形成单层Proximity graph,并最终形成多层图。底层包含所有向量及边。越上面的层,包含的向量和边越少。

创建分层 Proximity graph 后,搜索步骤如下:

  1. 在顶层找到一个向量作为入口点。

  2. 沿着可用的边逐渐移动到最近的向量。

  3. 一旦确定了顶层的最近向量,使用较低层的相同向量作为入口点,在该层中找到其最近邻。

  4. 重复上述步骤,直到找到底层的最近向量。

    Dkj8bpJswoXHzPxBz3hcOHSDnRg

LSH:哈希索引算法

  • LSH:哈希索引算法链接

局部敏感哈希(LSH)算法的基本思想为空间域转换。LSH 算法通过使用各种哈希函数将任意长度的数据映射为固定长度的值作为哈希,将这些哈希收集到哈希桶中,并将已经哈希到相同值的向量标记为候选对。

RRMybZeKQoGgQRx6kSNcvwxsnre

DiskANN:基于 Vamana 图的磁盘索引算法

  • DiskANN:基于 Vamana 图的磁盘索引算法链接

不同于 HNSW 算法构建分层图,Vamana 索引过程相对简单:

  1. 初始化随机图;

  2. 先定位全局质心并确定最近点来找到导航点。使用全局比较以最小化平均搜索半径。

  3. 使用初始化的随机近邻图和从步骤2开始的搜索起点执行近似最近邻搜索。使用搜索路径上的所有点作为候选近邻集,并采用 alpha = 1 的边缘修剪策略以减少搜索半径。

  4. 将 alpha 值调整为 alpha> 1(文献推荐将数值设置为 1.2)后,重复步骤 3 以优化图质量和召回率。

索引准备就绪后,搜索步骤如下:

  1. 加载相关数据,包括查询数据集、PQ 中心点数据、Codebook 数据、搜索起点和索引元数据。

  2. 使用索引数据集执行 cached_beam_search,计算每个点的访问次数,并缓存具有最高访问频率的 num_nodes_to_cache 个点。

  3. 默认情况下执行 WARMUP 操作,使用示例数据集执行 cached_beam_search

  4. 对于给定参数 L,使用查询集执行 cached_beam_search,并输出召回率和QPS等统计信息。查询时间不包括预热和热点数据统计信息。

更多详情,请阅读 《DiskANN: 十亿规模数据集上高召回高 QPS 的 ANNS 单机方案》。


2-相似度类型

在度量向量相似性时,相似度类型发挥着关键作用。选择恰当的相似度类型可以极大地提升分类与聚类的效果。

目前,Zilliz Cloud 支持以下相似度类型:欧氏距离(L2)、内积(IP)、余弦相似度(COSINE)、JACCARD (Beta)HAMMING (Beta)

下表总结了不同字段类型与其对应的相似度类型的映射关系。

| 字段类型                | 维度范围       | 支持的相似度类型       | 默认相似度类型   |
|-----------------------|------------|--------------------|--------------|
| FLOAT_VECTOR          | 2-32,768   | Cosine, L2, IP    | Cosine       |
| FLOAT16_VECTOR (Beta) | 2-32,768   | Cosine, L2, IP    | Cosine       |
| BFLOAT16_VECTOR (Beta)| 2-32,768   | Cosine, L2, IP    | Cosine       |
| SPARSE_FLOAT_VECTOR (Beta) | 无需指定维度 | IP                | IP           |
| BINARY_VECTOR (Beta)  | 8-32,768*8 | HAMMING (Beta), JACCARD (Beta) | HAMMING (Beta) |

下表展示了使用不同的相似度类型,其度量值的特点及取值范围。

相似度类型特点取值范围
L2较小的L2距离表示更高的相似性。[0, ∞)
IP较大的IP距离表示更高的相似性。[-1, 1]
COSINE较大的cosine值表示更高的相似性。[-1, 1]
JACCARD较小的Jaccard距离表示更高的相似性。[0, 1]
HAMMING较小的Hamming距离表示更高的相似性。[0, dim(vector)]

欧氏距离(L2)

  • 欧氏距离(L2)链接

欧氏距离主要是用来计算连接两点的线段的实际长度。

其计算公式如下:

HhIdbxRd7oGoDrxCGh6cBIX9ncf

其中,a = (a0, a1,…, an-1)b = (b0, b1,…, bn-1) 表示 n 维欧氏空间中的两个点。

L2 是最普遍的距离度量方法,在处理连续性数据时尤为有效。

📘说明

在选择 L2 作为度量标准时,Zilliz Cloud 仅计算开方之前的数值。

内积(IP)

  • 内积(IP)链接

两个 Embedding 向量间的 IP 距离可按以下方式定义:

LXkCbWG6IoCXSux5uc9cZn28nnc

当处理未归一化的数据或关注数据的大小和方向时,内积尤为重要。

📘说明

使用 IP 计算 Embedding 向量间的相似度时,须先对 Embedding 向量进行归一化。之后,内积即可等同于余弦相似度。

例如,Embedding 向量 X 归一化为 X’:

两个 Embedding 向量间的关联度如下所示:

余弦相似度(COSINE)

  • 余弦相似度(COSINE)链接

余弦相似度是通过计算两组向量之间的夹角余弦来衡量它们的相似度。可以把这两组向量想象为从同一起点(如 [0,0,…])出发,但朝向不同的线段。

计算两组向量 A = (a0, a1,…, an-1)B = (b0, b1,…, bn-1) 之间的余弦相似度,可使用以下公式:

M6C6b2W8toduLSxfV6ac3ZcDnQh

余弦相似度的值总是介于 [-1, 1] 之间。比如,两个向量的夹角越接近 0 度,余弦相似度越接近 1;两个向量的夹角为 90 度时,其相似度为 0;两个向量的夹角越接近 180 度,两个向量相似度越接近 -1。余弦值越大,表示两向量之间的夹角越小,意味着它们越相似。

通过 1 减去两向量间的余弦相似度,可以得到它们之间的余弦距离。

📘说明

该相似度类型目前还在测试阶段。升级您的集群至 Beta 版即可体验 COSINE 相似度类型。

JACCARD 距离 (Beta)

  • JACCARD 距离 (Beta)链接

JACCARD 相似系数用于衡量两个样本集之间的相似度,其定义是两个集合交集的元素数量除以它们并集的元素数量。该系数仅适用于有限样本集。

JACCARD 距离用于衡量数据集之间的不相似度,其计算方法是 1 减去 JACCARD 相似系数。对于二进制变量,JACCARD 距离等同于 Tanimoto 系数。

📘说明

该相似度类型目前仅适用于已升级到 Beta 版的 Zilliz Cloud 集群。

HAMMING 距离 (Beta)

  • HAMMING 距离 (Beta)链接

HAMMING 距离用于测量二进制数据字符串。两个等长字符串之间的距离是它们在不同比特位上的数量。

例如,假设有两个字符串,1101 1001 和 1001 1101。 11011001 ⊕ 10011101 = 01000100。由于其中有两个 1,因此 HAMMING 距离 d (11011001, 10011101) = 2。

📘说明

该相似度类型目前仅适用于已升级到 Beta 版的 Zilliz Cloud 集群。


3-一致性水平

在分布式数据库中,一致性水平确保在读写操作期间,每个节点或副本都能获取到相同的数据。Zilliz Cloud 提供 3 种一致性级别:Strong、Bounded 和 Eventually。Zilliz Cloud 默认采用的一致性水平为 Bounded。

PACELC 定理:权衡一致性、可用性、时延

  • PACELC 定理:权衡一致性、可用性、时延链接

PACELC 定理是 CAP 定理的延伸,在分布式数据库中,用户需要在可用性和一致性之间做选择,否则,就在延迟和一致性之间做选择。虽然高一致性保证了数据的准确性,但其代价是更长的搜索延时。相反,低一致性保证了更快的搜索速度,但可能会牺牲数据准确性。因此,您需要根据具体的使用案例场景选择合适的一致性水平。

  • 强一致性(Strong)

    强一致性(Strong)是最严格的级别,确保用户始终读取最新版本的数据,提供最高的数据准确性。但是,采用 Strong 等级一致性可能导致搜索延迟增加。

    ETVBbtdQooUhB3xm9aScmWyinvd

    Strong 一致性水平最适用于功能测试和在线金融系统等对于数据准确性有着极高要求的场景。

  • 有限过期一致性(Bounded)

    有限过期一致性(Bounded)顾名思义,允许数据在一小段时间内不一致,但整体而言数据还是一致的。Bounded 能够平衡延时和数据准确性。

    MIF3bSN8yoWbjhxnDL5cDeK4n1g

    Bounded 适用于视频推荐平台等系统,偶尔的数据不一致不会严重影响系统性能。

  • 最终一致性(Eventually)

    最终一致性(Eventually)是最宽松的级别,允许数据不一致,但最终随着时间推移收敛到数据一致的状态。Eventually 不会严格遵照数据读写顺序。

    NErQbWhpVotFHLxHpG2cDbuGnxe

    Eventually 通过牺牲即时一致性来提升搜索性能,因此用于追求搜索速度而非即时数据准确性的场景,如产品评论展示系统等。

利用保证时间戳实现一致性

  • 利用保证时间戳实现一致性链接

Zilliz Cloud 通过保证时间戳(GuaranteeTs)实现不同的一致性水平。保证时间戳主要用于控制查询节点,需要等到 GuaranteeTs 之前的所有都可查看后,才能开始执行搜索或查询。不同一致性级别,GuaranteeTs 值也不同:

  • **强一致性(Strong):**GuaranteeTs 设为系统最新时间戳,QueryNodes 需要等待 ServiceTime 推进到 当前最新时间戳才能执行该 Search 请求。

  • **最终一致性(Eventually):**GuaranteeTs 设为一个特别小的值(比如说设为 1),跳过一致性检查,立刻在当 前已有数据上执行 Search 查询。

  • **有限过期一致性(Bounded):**GuaranteeTs 是一个比系统最新时间稍旧的时间,在可容忍范围内可以立刻执行查询。

如需了解一致性和保证时间戳的实现机制,请阅读本文。


4-Reranking重排序

Zilliz Cloud 通过 hybrid_search() API,实现了 hybrid search 功能,结合了复杂的 reranking 策略,以优化多个 AnnSearchRequest 对象的搜索结果。本文将详细介绍 reranking 机制,阐述其重要性以及在 Milvus 中实施不同 reranking 策略的方法。

Reranking 是 hybrid search 中的一个关键步骤,它整合了基于多个向量字段的检索结果,确保最终输出结果的相关性和准确性。目前,Zilliz Cloud 支持以下 reranking 策略:

WeightedRanker 分数加权平均算法的核心思想是对多个召回路的输出结果的分数进行加权平均计算,以得到一个综合的结果,其中不同召回路的贡献可由预设的权重来决定。例如,在多模态搜索中,文本描述可能被认为比图像中的颜色分布更重要。

from pymilvus import WeightedRanker# Use WeightedRanker to combine results with specified weights
rerank = WeightedRanker(0.8, 0.8, 0.7) 

RRF(Ranked Retrieval Fusion,排序检索融合)是一种常见的检索融合算法,此方法侧重于使用排名信息,将每个系统的排名结果加权并合并,以提高整体检索的相关性和效果。当希望对所有向量字段给予平等考虑,或当字段的相对重要性不确定时,通常采用此策略。


5-知识总结

以下是文章内容要点的思维导图:

graph TDA --> B[ANN搜索]A --> C[相似度类型]A --> D[一致性水平]A --> E[Reranking重排序]B --> B1[k-最近邻(kNN)搜索]B --> B2[近似最近邻(ANN)搜索]B --> B3[索引算法]B --> B4[HNSW:图索引算法]B --> B5[LSH:哈希索引算法]B --> B6[DiskANN:磁盘索引算法]C --> C1[L2]C --> C2[IP]C --> C3[COSINE]C --> C4[JACCARD]C --> C5[HAMMING]D --> D1[一致性水平]D --> D2[PACELC定理]D --> D3[强一致性-Strong]D --> D4[有限过期一致性-Bounded]D --> D5[最终一致性-Eventually]D --> D6[保证时间戳实现一致性]E --> E1[Reranking重排序]E --> E2[hybrid_search API]E --> E3[WeightedRanker]E --> E4[RRF-Ranked Retrieval Fusion]

详细知识点如下:

ANN搜索

  • k-最近邻(kNN)搜索:找到查询向量的 k 个最近向量。
  • 近似最近邻(ANN)搜索:耗时更短,预先构建索引。
  • 索引算法:缩小搜索范围和将高维向量空间分解为低维子空间。
  • HNSW:图索引算法:创建多层接近图。
  • LSH:哈希索引算法:空间域转换。
  • DiskANN:磁盘索引算法:基于 Vamana 图的索引过程。

相似度类型

  • L2:较小的L2距离表示更高的相似性。
  • IP:较大的IP距离表示更高的相似性。
  • COSINE:较大的cosine值表示更高的相似性。
  • JACCARD:较小的Jaccard距离表示更高的相似性。
  • HAMMING:较小的Hamming距离表示更高的相似性。

一致性水平

  • 一致性水平:确保读写操作期间数据一致性。
  • PACELC定理:权衡一致性、可用性、时延。
  • 强一致性(Strong):最严格的级别,确保数据准确性。
  • 有限过期一致性(Bounded):允许数据在一小段时间内不一致。
  • 最终一致性(Eventually):允许数据不一致,最终收敛。
  • 保证时间戳实现一致性:通过保证时间戳实现不同一致性水平。

Reranking重排序

  • Reranking重排序:整合基于多个向量字段的检索结果。
  • hybrid_search API:实现 hybrid search 功能。
  • WeightedRanker:分数加权平均算法。
  • RRF(Ranked Retrieval Fusion):排序检索融合算法。

相关文章:

Milvus向量数据库03-搜索理论

Milvus向量数据库03-搜索理论 1-ANN搜索 通过 k-最近邻(kNN)搜索可以找到一个查询向量的 k 个最近向量。kNN 算法将查询向量与向量空间中的每个向量进行比较,直到出现 k 个完全匹配的结果。尽管 kNN 搜索可以确保准确性,但十分耗…...

qt QCryptographicHash详解

1、概述 QCryptographicHash是Qt框架中提供的一个类,用于实现加密散列函数,即哈希函数。哈希函数能够将任意长度的数据转换为固定长度的哈希值,也称为散列值或数据指纹。这个哈希值通常用于数据的完整性校验、密码存储等场景。QCryptographi…...

【论文阅读】具身人工智能(Embodied AI)综述:连接数字与物理世界的桥梁

摘要 具身人工智能(Embodied AI)对于实现通用人工智能(AGI)至关重要,是连接数字世界与物理世界的各类应用的基础。近年来,多模态大模型(MLMs)和世界模型(WMs&#xff09…...

使用el-row和el-col混合table设计栅格化,实现表头自适应宽度,表格高度占位

演示效果: 如上图,由于地址信息很长,需要占多个格子,所以需要错开,若想实现这种混合效果,可以这样搭建: 页面效果: 代码分析: 上面使用el-row和el-col搭建表单显示 第一排三个8,第二排8和16 下面混合table实现,并使用border来自适应宽度…...

MQ的基本概念

1 MQ的基本概念 RabbitMQ是一个开源的消息代理和队列服务器,它使用Erlang语言编写并运行在多种操作系统上,如Linux、Windows等。RabbitMQ可以接收、存储和转发消息(也称为“事件”)到连接的客户端。它适用于多种场景,…...

基于协同过滤的图书推荐系统 爬虫分析可视化【源码+文档】

【1】系统介绍 研究背景 随着互联网的普及和电子商务的发展,用户可以在线获取大量的图书资源。然而,面对海量的信息,用户往往难以找到自己真正感兴趣的书籍。同时,对于在线书店或图书馆等提供图书服务的平台来说,如何…...

Kruskal 算法在特定边权重条件下的性能分析及其实现

引言 Kruskal 算法是一种用于求解最小生成树(Minimum Spanning Tree, MST)的经典算法。它通过逐步添加权重最小的边来构建最小生成树,同时确保不会形成环路。在本文中,我们将探讨在特定边权重条件下 Kruskal 算法的性能,并分别给出伪代码和 C 语言实现。特别是,我们将分…...

【Pandas】pandas from_dummies

Pandas2.2 General Data manipulations 方法描述melt(frame[, id_vars, value_vars, var_name, …])将多个列的值转换为行形式pivot(data, *, columns[, index, values])将长格式的数据转化为宽格式pivot_table(data[, values, index, columns, …])用于创建数据透视表&#…...

【信息系统项目管理师】第8章:项目整合管理过程详解

文章目录 一、制定项目章程1、输入2、工具和技术3、输出 二、制订项目管理计划1、输入2、工具和技术3、输出 三、指导与管理项目工作1、输入2、工具和技术3、输出 四、管理项目知识1、输入2、工具和技术3、输出 五、监控项目工作1、输入2、工具和技术3、输出 六、实施整体变更控…...

从变更到通知:使用Python和MongoDB Change Streams实现即时事件监听

MongoDB提供了一种强大的功能,称为Change Streams,它允许应用程序监听数据库中的变更事件,并在数据发生变化时立即做出响应。这在mysql数据库是不具备没有这个功能的。又如:我们在支付环节想一直监听支付回调的状态,就…...

vue3+elementPlus封装的数据过滤区

目录结构 源码 index.vue <template><el-form class"mb-5" :rules"rules" :model"queryForm" ref"queryDOM" label-width"80"><el-row :gutter"20"><slot></slot><el-col cla…...

PHP RabbitMQ连接超时问题

问题背景 Error: The connection timed out after 3 sec while awaiting incoming data 看到这个报错&#xff0c;我不以为意&#xff0c;认为是我设置的超时时间不够导致的&#xff0c;那就设置长一点 Error: The connection timed out after 300 sec while awaiting incom…...

SpringMvc完整知识点二(完结)

SpringMVC获取请求参数 环境准备工作等均省略&#xff0c;可详见快速入门&#xff0c;此处只写非共有部分代码 该部分示例项目SpringMvcThree已上传至Gitee&#xff0c;可自行下载 客户端请求参数的格式为&#xff1a;namevalue&passwordvalue... ... 服务端想要获取请求…...

WebSocket 通信说明与基于 ESP-IDF 的 WebSocket 使用

一、 WebSocket 出现的背景 最开始 客户端&#xff08;Client&#xff09; 和 服务器&#xff08;Server&#xff09; 通信使用的是 HTTP 协议&#xff0c;HTTP 协议有一个的缺陷为&#xff1a;通信只能由客户端&#xff08;Client&#xff09;发起。 在一些场景下&#xff0…...

UE5 Compile Plugins | Rebuild from Source Manually | Unreal Engine | Tutorial

Step 1 Open Engine Folder H:\UE5\UE_5.3\Engine\Build\BatchFiles Step 2 Hold "Shift""Mouse Right Click"in Empty Area Step 3 Select "Open PowerShell window here .\RunUAT.bat BuildPlugin -plugin"H:\projects\MetaHuman光照2\plu…...

深度解析 Ansible:核心组件、配置、Playbook 全流程与 YAML 奥秘(下)

文章目录 六、playbook运行playbook方式Playbook VS ShellScripts忽略错误 ignore_errorshandlers和notify结合使用触发条件playbook中tags的使用playbook中变量的使用invertory参数模板templates迭代与条件判断迭代&#xff1a;with_items迭代嵌套子变量roles 六、playbook 运…...

langchain chroma 与 chromadb笔记

chromadb可独立使用也可搭配langchain 框架使用。 环境&#xff1a; python 3.9 langchain0.2.16 chromadb0.5.3 chromadb 使用示例 import chromadb from chromadb.config import Settings from chromadb.utils import embedding_functions# 加载embedding模型 en_embeddin…...

04 创建一个属于爬虫的主虚拟环境

文章目录 回顾conda常用指令创建一个爬虫虚拟主环境Win R 调出终端查看当前conda的虚拟环境创建 spider_base 的虚拟环境安装完成查看环境是否存在 为 pycharm 配置创建的爬虫主虚拟环境选一个盘符来存储之后学习所写的爬虫文件用 pycharm 打开创建的文件夹pycharm 配置解释器…...

xcode开发相关英语单词

创建项目&#xff1a; otheraudio unit extension app音频单元扩展应用程序generic kernel extension通用内核扩展installer plug-in安装程序插件instruments package仪器包iokit driveriokit驱动程序presence pane状态窗格screen saver屏幕保护程序...

etcd-v3.5release-(2)-STM

a.b.c表示a文件里的b类的方法c&#xff0c;注意a不一定是包名&#xff0c;因为文件名不一定等于包名 &#xff01;&#xff01;&#xff01;&#xff01;etcd在put的过程中使用的batchTxBuffered&#xff0c;这个事务是写bbolt数据库使用的事务&#xff0c;是对bbolt.Tx的一个…...

多系统萎缩锻炼如何好起来?

多系统萎缩&#xff08;Multiple System Atrophy, MSA&#xff09;是一种复杂的神经系统退行性疾病&#xff0c;影响着患者的自主神经系统、运动系统和平衡功能等多个方面。面对这一挑战&#xff0c;科学、合理的锻炼对于缓解症状、提高生活质量至关重要。本文将详细介绍多系统…...

非对称任意进制转换器(安卓)

除了正常进制转换&#xff0c;还可以输入、输出使用不同的数字符号&#xff0c;达成对数值进行加密的效果 点我下载APK安装包提取码&#xff1a;h4nw 使用unity开发。新建一个c#代码文件&#xff0c;把代码覆盖进去&#xff0c;再把代码文件添加给main camera即可。 using Sy…...

MySQL数据库安全与管理

1、创建两个新用户U_student1和U_student2,密码分别为1234和5678 create user U_student1@localhost identified by 1234, U_student2@localhost identified by 5678; 2、创建两个新用户的详细信息保存在MySQL数据库的user表中 use mysql; select user, host, authentication…...

python使用PyPDF2 和 pdfplumber操作PDF文件

文章目录 一、第三方库介绍二、基本使用1、拆分pdf2、合并pdf3、提取文字内容4、提取表格内容5、PDF加密6、PDF解密 一、第三方库介绍 Python 操作 PDF 会用到两个库&#xff0c;分别是&#xff1a;PyPDF2 和 pdfplumber。 PyPDF2 可以更好的读取、写入、分割、合并PDF文件&a…...

【vue2自定义指令】v-disabled 实现el-switch,el-button等elementUI禁用(disabled)效果

如果你搜过类似的功能&#xff0c;肯定看到过千篇一律的 // 实现按钮禁用el.disabled true// 增加 elementUI 的禁用样式类el.classList.add(is-disabled)但是这个方案明显对el-switch&#xff0c;不起作用&#xff0c;所以我这边直接把方案贴出来&#xff0c;不想了解具体原理…...

从容面对大规模作业:利用PMI提升作业启用和结束效率

1.进程管理瓶颈 随着集群规模的不断扩大和处理器性能的不断提升&#xff0c;高性能计算HPC(High Performance Computing)系统性能已经进入百亿亿次时代&#xff0c;进程管理是高性能计算的一个重要组成部分&#xff0c;传统进程管理已经不能满足海量处理器的管理需求&#xff…...

2024年认证杯SPSSPRO杯数学建模C题(第一阶段)云中的海盐解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 C题 云中的海盐 原题再现&#xff1a; 巴黎气候协定提出的目标是&#xff1a;在2100年前&#xff0c;把全球平均气温相对于工业革命以前的气温升幅控制在不超过2摄氏度的水平&#xff0c;并为1.5摄氏度而努力。但事实上&#xff0c;许多之前的…...

burp(6)暴力破解与验证码识别绕过

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…...

不同系统查看软件占用端口的方式

Windows 使用命令提示符&#xff08;CMD&#xff09; 打开命令提示符: 按 Win R 键打开“运行”对话框&#xff0c;输入 cmd 并按回车。为了执行某些命令&#xff0c;您可能需要以管理员身份运行命令提示符。可以通过右键点击“开始”按钮并选择“命令提示符&#xff08;管理…...

【已解决】黑马点评项目中-实战篇11-状态登录刷新章节设置RefreshTokenInterceptor拦截器后登录异常的问题

黑马点评项目中-实战篇11-状态登录刷新章节设置RefreshTokenInterceptor拦截器后登录异常的问题 在 MvcConfig 文件中添加好RefreshTokenInterceptor拦截器 出现异常情况 按照验证码登录后&#xff0c;进入主页面&#xff0c;再点击“我的”&#xff0c;又跳入登录界面 原因…...

Artec Leo 3D扫描仪 革新家具行业的数字化展示【沪敖3D】

随着科技的飞速进步&#xff0c;三维扫描技术已被广泛应用于包括家居行业在内的多个行业。面对现代消费者对家居产品日益增长的个性化和多样化需求&#xff0c;传统的家居设计和展示方法已难以满足市场需求。三维扫描技术的出现&#xff0c;为家居行业带来了新的发展机遇&#…...

UG NX二次开发(Python)-UIStyler-选取点

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、设计一个UI界面3、创建长方体的代码4、需要引入的库5、测试验证1、前言 采用Python语言进行UG NX二次开发的资料比较少,我本来不是很认可采用Python进行二次开发的,但是近期有读者咨询…...

Linux网络编程之---组播和广播

一.组播 1.概述 单播地址标识单个IP 接口&#xff0c;广播地址标识某个子网的所有IP 接口&#xff0c; 多播地址标识一组IP 接口。单播和广播是寻址方案的两个极端(要么单个要么全部)&#xff0c; 多播则意在两者之间提供一种折中方案。多播数据报只应该由对它感兴趣的接口接收…...

[计算机网络] HTTP/HTTPS

一. HTTP/HTTPS简介 1.1 HTTP HTTP&#xff08;超文本传输协议&#xff0c;Hypertext Transfer Protocol&#xff09;是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 工作在 TCP/IP 模型之上&#xff0c;通常使用端口 …...

运动模糊效果

1、运动模糊效果 运动模糊效果&#xff0c;是一种用于 模拟真实世界中快速移动物体产生的模糊现象 的图像处理技术&#xff0c;当一个物体以较高速度移动时&#xff0c;由于人眼或摄像机的曝光时间过长&#xff0c;该物体会在图像中留下模糊的运动轨迹。这种效果游戏、动画、电…...

扫二维码进小程序的指定页面

草料二维码解码器 微信开发者工具 获取二维码解码的参数->是否登陆->跳转 options.q onLoad: function (options) {// console.log("options",options.q)if (options && options.q) {// 解码二维码携带的链接信息let qrUrl decodeURIComponent(optio…...

uniapp的生命周期

在 UniApp 中&#xff0c;生命周期函数是指在组件&#xff08;如页面、视图等&#xff09;创建和销毁过程中会自动触发的一些函数。UniApp 提供了多种生命周期函数&#xff0c;帮助开发者在适当的时机进行相关的逻辑处理。 UniApp 的生命周期函数可以分为 页面生命周期 和 组件…...

vue3-生命周期钩子函数

在 Vue 3 中&#xff0c;**生命周期函数**是指在组件的不同阶段自动执行的一些特殊函数。这些函数就像组件的“生老病死”的各个阶段&#xff0c;你可以在不同阶段执行不同的操作。 生命周期的主要阶段&#xff1a; 1. **创建阶段**&#xff08;组件还没有出现在页面上&#x…...

科技云报到:数智化转型风高浪急,天翼云如何助力产业踏浪而行?

科技云报到原创。 捷径消亡&#xff0c;破旧立新&#xff0c;是今年千行百业的共同底色。 穿越产业周期&#xff0c;用数字化的力量重塑企业经营与增长的逻辑&#xff0c;再次成为数字化技术应用的主旋律&#xff0c;也是下一阶段产业投资的重点。 随着数字化转型行至“深水区…...

利用 360 安全卫士极速版关闭电脑开机自启动软件教程

在使用电脑的过程中&#xff0c;过多的开机自启动软件会严重拖慢电脑的开机速度&#xff0c;影响我们的使用体验。本教程中简鹿办公将详细介绍如何使用 360 安全卫士极速版关闭电脑开机自启动软件&#xff0c;让您的电脑开机更加迅速流畅。 一、打开 360 安全卫士极速版 在电…...

调用大模型api 批量处理图像 保存到excel

最近需要调用大模型&#xff0c;并将结果保存到excel中&#xff0c;效果如下&#xff1a; 代码&#xff1a; import base64 from zhipuai import ZhipuAI import os import pandas as pd from openpyxl import Workbook from openpyxl.drawing.image import Image from io i…...

【Spring 全家桶】Spring MVC 快速入门,开始web 更好上手(上篇) , 万字解析, 建议收藏 ! ! !

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…...

Redisson看门狗机制

redis分布式锁我们需要手动为锁设置超时过期时间&#xff0c;但是这个时间不好判断&#xff0c;如果太短&#xff0c;持有锁的客户端还在执行业务&#xff0c;锁就超时释放了&#xff1b;如果太长了&#xff0c;持有锁的客户端释放锁失败&#xff0c;则其他客户端一直没法获取锁…...

LeetCode279. 完全平方数(2024冬季每日一题 27)

给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 11 不是。 …...

HTML礼物圣诞树

系列文章 序号目录1HTML满屏跳动的爱心&#xff08;可写字&#xff09;2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心&#xff08;简易版&#xff09;7HTML粒子爱心8HTML蓝色动态爱心9HTML跳动的爱心&#xff08;双心版&#xff09;1…...

【JVM】JVM基础教程(二)

上一篇&#xff1a;【JVM】JVM基础教程&#xff08;一&#xff09;-CSDN博客 类加载器 什么是类加载器&#xff08;ClassLoader&#xff09; 是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。 从这个定义可以得出结论&#xff1a;Java是允许开发者写点代码…...

Appium 安装问题汇总

好生气好生气&#xff0c;装了几天了&#xff0c; opencv4nodejs 和 mjpeg-consumer 就是装不了&#xff0c;气死我了不管了&#xff0c;等后面会装的时候再来完善&#xff0c;气死了气死了。 目录 前言 1、apkanalyzer.bat 2、opencv4nodejs 3、ffmpeg 4、mjpeg-consume…...

在网安中什么是白帽子

在网络安全领域&#xff0c;白帽子是指那些专门从事网络安全研究&#xff0c;帮助企业或个人发现并修复安全漏洞的专家。以下是对白帽子的详细解释&#xff1a; 一、定义与角色 白帽子是网络安全领域的术语&#xff0c;通常指那些具备专业技能和知识的网络安全专家。他们的工作…...

C++解析URL的方式

一、URL格式为http://192.168.80.166:6666/designResLib/test/test std::vector<CString> ThkCabRMaterialStaDlg::splitAddress(const CString& address) {std::vector<CString> result;CString remaining address;result.push_back(remaining.Left(remaini…...

【软件安全】软件安全设计规范,软件系统安全设计制度(Word原件)

1.1安全建设原则 1.2 安全管理体系 1.3 安全管理规范 1.4 数据安全保障措施 1.4.1 数据库安全保障 1.4.2 操作系统安全保障 1.4.3 病毒防治 1.5安全保障措施 1.5.1实名认证保障 1.5.2 接口安全保障 1.5.3 加密传输保障 1.5.4终端安全保障 软件全面文档清单涵盖以下核心内容&a…...