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

使用 Elastic 和 Amazon Bedrock 制作混合地理空间 RAG 应用程序

作者:来自 Elastic Udayasimha Theepireddy (Uday), Srinivas Pendyala, Ayan Ray

借助 Elasticsearch 及其向量数据库,你可以构建可配置的搜索和可信的生成式 AI (GenAI) 体验,这些体验可快速从原型扩展到生产。主要功能包括:

  • 内置对地理空间数据的支持,可快速查询基于位置的信息
  • 向量数据库功能,用于存储、管理和查询向量嵌入

传统词汇搜索与地理空间和矢量搜索功能的集成

Elastic 将这些功能结合在一个数据平台(Elastic Search AI 平台)中,从而脱颖而出。这种三重集成促进了现代生成式 AI 用例,并通过简化企业的数据管理为客户提供了巨大的价值。

在这篇博文中,我们将探讨如何使用 Elasticsearch、Amazon Bedrock 和 LangChain 构建一个强大的检索增强生成 (retrieval augmented generation - RAG) 系统,该系统结合了地理空间数据。这种混合方法结合了词汇搜索、地理空间查询和向量相似性搜索,以创建一个能够提供个性化房产推荐的智能房地产助手。

更多阅读 “使用 Elasticsearch 中的地理语义搜索增强推荐功能”。

技术概述

AI 与地理空间数据的集成代表了信息检索和决策支持系统的重大进步。传统搜索引擎经常难以处理基于位置的查询,但通过将大型语言模型 (large language models- LLMs) 的功能与专门的地理空间数据库相结合,我们可以创建更智能、更具有上下文感知能力的应用程序。

Amazon Bedrock 为开发人员提供了选择权,他们可以从领先的 AI 提供商中选择任何行业领先的基础模型 (FM),并提供简化、统一的 API,以便开发人员可以在企业中构建和扩展生成式 AI 应用程序。

Elastic 可以以 Elastic 的速度和规模存储、运行查询和执行地理空间分析。Elastic 还是一个可用于生产的十亿级向量数据库。这使用户能够在 Elastic 中创建、存储和搜索向量嵌入。

这也带来了 Elastic 的一个独特功能,你可以将传统的词汇搜索与地理空间查询功能相结合,并添加到这些向量相似性搜索中,以制作创新的生成式 AI 应用程序。

为了从头开始构建应用程序,让我们看看 RAG。

检索增强生成 - Retrieval augmented generation

RAG 是一种强大的技术,它通过集成外部知识源来增强 LLM。它提高了 LLM 输出的准确性、相关性和可信度,而无需重新训练模型。

RAG 还通过整合来自私有或专有数据源的信息来增强文本生成。该技术将搜索大型数据集或知识库的检索模型与 LLM 等生成模型相结合,以生成可读的文本响应。

应用程序架构

此参考架构解释了如何使用 Elasticsearch、AWS Location Service、AWS Data Exchange 和 Amazon Bedrock 为房地产行业构建示例对话式 AI 助手。

  • 步骤 1:用户提交有关某个区域房产的查询 — “Find me townhomes with a swimming pool within 2 miles of 33 Union Sq, Cupertino, CA.”
  • 步骤 2:对话式 AI 助手应用程序通过 Amazon API Gateway 调用 REST API。
  • 步骤 3:REST API 调用 AWS Lambda 函数转发用户提示。
  • 步骤 4、5:AWS Lambda 函数通过 Amazon Bedrock 调用 Anthropic Claude 3 Sonnet 来提取地址、距离和房产类型等实体。它还生成关键字的嵌入。
  • 步骤 6、7:AWS Lambda 函数将地址传递给 AWS Location Service 以获取相应的地理坐标(地理编码)。
  • 步骤 8、9:AWS Lambda 函数对 Elasticsearch 进行混合地理空间调用(关键字 kNN + 地理距离),以检索相关属性作为上下文。
  • 步骤 10、11:检索到的数据会使用 AWS Data Exchange 中托管的数据源中的位置的其他相关属性进行增强。
  • 步骤 12、13:检索和增强的数据会作为上下文传递给 Anthropic Claude 3 Sonnet 以生成摘要。
  • 步骤 14、15、16:摘要会传回给 AI 助手和用户。
  • 步骤 17:(可选)还会使用 Amazon SES 通过电子邮件将详细信息发送给用户。

实施细节

用例

我们将开发一个生成式 AI 应用程序,以增强用户在房地产搜索中的体验。此应用程序具有一个对话式 AI 助手,可回答有关我们数据库中的房产列表的问题。用户可以使用自然语言与助手互动。

例如,用户可能会问:“Find a single family home near Frisco, TX within 5 miles with a backyard swimming pool.”

命名实体识别 (Named entity recognition - NER)

NER 或实体提取是一种自然语言处理技术,可识别和分类文本中的命名实体。NER 算法从非结构化文本中检测和提取特定实体,例如人名、组织、位置、日期和自定义类别。

在我们的案例中,我们将提取用户正在寻找房产类型的搜索房产位置(例如:San Francisco),例如 “Single family home” 或 “Condominium”;可以找到这些房产的距离;以及任何其他房产特征,例如后院的游泳池。

我们创建了一个带有单次提示技术的提示模板,为 LLM 提供了一个如何从用户输入的提示中提取实体的示例。以下是我们房地产物业列表用例的示例代码片段。

步骤

  1. 创建用户提示模板(prompt template)并将最终用户提示作为输入变量传递。
  2. 接下来,调用 Amazon Bedrock 服务并将上述推理传递给你选择的 LLM。在本例中,我们使用 Anthropic Claude Sonnet 3 作为示例。
  3. 对于给定的最终用户提示作为输入,命名实体识别的输出将如下所示:

Input user prompt

“Find me townhomes near Frisco, TX within 5 miles with a community swimming pool access”

输出(提取的实体):

Programming Language: JSON

{
"search_property_type": "Townhouse",
"search_property_address": "Frisco, TX",
"search_property_radius": "5mi",
"search_property_features": "community swimming pool access"
}

streamlit 应用程序在用户界面中反映了这一点:

使用 Amazon Location Service 进行地理编码

地理编码是将街道地址等地址转换为地理坐标(纬度和经度)的过程,可用于在地图上放置标记或识别空间数据中的位置。它有助于将物理位置(例如 “1600 Pennsylvania Ave NW, Washington, DC”)映射到其相应的地理坐标,从而支持 GPS 导航或任何基于位置的服务等应用程序。

在我们的例子中,地理编码的目的是将从用户提示中提取的地理位置转换为经度和纬度,以便可以使用这些坐标在 Elastic 中搜索房地产数据。

Amazon Location Service 可以在地理编码过程中提供帮助。Amazon Location Service 是一种地图服务,可让你向应用程序添加地理空间数据和位置功能,包括动态和静态地图、地点搜索和地理编码、路线规划以及设备跟踪和地理围栏功能。

以下是来自 Streamlit git repo 的用于使用 Amazon Location Service 进行地理编码的示例代码。地理编码过程生成的输出在 Streamlit 应用程序中将如下所示:

我们从上述地理编码过程中获得的一个重要输出细节是经度和纬度坐标,它们可用于在 Elastic 中执行地理空间数据搜索。

Elastic 中的混合地理空间查询

此应用程序的主要功能是 Elastic 能够执行混合地理空间搜索。此搜索结合了:

  1. 词汇搜索
  2. 地理空间搜索
  3. 向量相似性搜索

Elastic 在单个查询中执行所有这些搜索类型,从而创建强大而高效的搜索功能。以下是代码片段。你也可以在 GitHub 存储库中看到它。

请注意上面的代码:

  • 在 #1 中,我们执行传统的基于关键字的词汇搜索。例如,我们想要在 Elastic 中搜索所有具有 propertyType =“Townhome” 属性的列表。
  • 在 #2 中,我们对字段 propertyFeatures_v 执行语义搜索,该字段是一个向量字段,具有文本等效 propertyFeatures 的嵌入。
  • 在 #3 中,我们使用地理空间坐标(geo_coded_lat 和 geo_coded_long)过滤所有数据。换句话说,对于我们位于德克萨斯州弗里斯科的位置,查找五英里内的所有房地产列表。

以下是 streamlit 应用程序在用户界面中显示输出的方式。

运行地理空间 RAG

上一个查询中从 Elastic 找到的房地产属性数据现在作为附加上下文通过 Amazon Bedrock 传递给 LLM 以执行 RAG,如下所示。

代码中需要注意的几点:

  1. 请注意我们如何将执行 Elastic 的混合地理空间查询得到的结果作为上下文传递给 RAG。
  2. 同样,我们使用提示模板(prompt template),我们将提供 Elastic 的混合地理空间查询结果作为上下文。
  3. 在这里,我们强制 LLM 仅在 Elastic 查询中找到的数据上下文中专门回答。

输出将是 LLM 在作为 RAG 管道的一部分提供的知识上下文中专门回答的精确建议。以下是 Streamlit 应用程序用户界面向最终用户显示为完整响应的示例建议。

此外,streamlit 应用程序还在地图上显示 Elastic 的地理空间结果,让人们通过图形了解这些房地产的位置。

Streamlit 应用程序

所有这些概念都以 streamlit 应用程序的形式汇集在一起​​,该应用程序展示了如何使用 Elasticsearch、Amazon Bedrock、Anthropic Claude 3 和 Langchain 构建使用 Elastic 地理空间功能的混合地理空间 RAG 解决方案。

查看 GitHub 存储库和设置说明了解更多信息。

使用 AWS Data Exchange 进行数据增强

AWS Data Exchange 是 AWS 提供的一项服务,可让你在 AWS 云中查找、订阅和使用第三方数据集。你可以使用来自 AWS Data Exchange 的其他数据进一步增强和丰富你的数据集。例如,如果你想使用其他兴趣点数据(例如医院、商场或最近的药店)进一步丰富你的房地产地理空间数据,则可以使用 AWS Data Exchange。

探索和整合资源

Elastic 和 Amazon Bedrock 使用企业数据简化了复杂 RAG 解决方案的开发。这种组合提供:

  • Elastic 的混合地理空间语义搜索功能
  • 通过 Amazon Bedrock 访问各种基础模型
  • 轻松构建和扩展生成式 AI 应用程序

在这篇文章中,我们:

  • 概述了混合地理空间 RAG 解决方案的基本构建块
  • 提供了实施的代码示例
  • 共享了一个 GitHub 存储库以供动手实验

我们鼓励你探索这些资源并将其集成到你自己的项目中。

本文中描述的任何特性或功能的发布和时间均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付或根本无法交付。

在这篇博文中,我们可能使用或提及了第三方生成式 AI 工具,这些工具由其各自的所有者拥有和运营。Elastic 无法控制第三方工具,我们对其内容、操作或使用不承担任何责任,也不对你使用此类工具可能产生的任何损失或损害承担任何责任。在使用 AI 工具处理个人、敏感或机密信息时,请谨慎行事。你提交的任何数据都可能用于 AI 培训或其他目的。我们无法保证你提供的信息将得到安全或保密。在使用任何生成式 AI 工具之前,你应该熟悉其隐私惯例和使用条款。

Elastic、Elasticsearch、ESRE、Elasticsearch Relevance Engine 和相关标志是 Elasticsearch N.V. 在美国和其他国家/地区的商标、徽标或注册商标。所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。

原文:Crafting a hybrid geospatial RAG application with Elastic and Amazon Bedrock | Elastic Blog

相关文章:

使用 Elastic 和 Amazon Bedrock 制作混合地理空间 RAG 应用程序

作者:来自 Elastic Udayasimha Theepireddy (Uday), Srinivas Pendyala, Ayan Ray 借助 Elasticsearch 及其向量数据库,你可以构建可配置的搜索和可信的生成式 AI (GenAI) 体验,这些体验可快速从原型扩展到生产。主要功能包括: 内…...

计算机软著个人申请指南

笔者最近申请了两本软著证书,结合自己的经历介绍一下。 软著登记网址:中国版权业务登记平台 准备工作 你的项目源码源代码统计工具 source-codes-trim:笔者开发自用的源码处理工具vscode插件其他的可以自己在网上搜资源 Word 申请流程 注…...

OmniParser一种用于增强视觉语言模型与用户界面交互效果的技术

OmniParser一种用于增强视觉语言模型与用户界面交互效果的技术 OmniParser的核心功能是将用户界面截图转换为结构化元素,这一过程涉及几个关键步骤和技术要素,解决了视觉语言模型(VLMs)在与用户界面交互时所面临的多种挑战。 1.…...

HBU深度学习作业10-BPTT

1、推导BPTT 2、推导梯度 3、分析其可能存在梯度爆炸的原因并给出解决方法 为了改善循环神经网络的长程依赖问题,一种非常好的解决方案是在公 式(6.50)的基础上引入门控机制来控制信息的累积速度,包括有选择地加入新 的信息,并有选择地遗忘之…...

L2G6000 - MindSearch部署实践

文章目录 MindSearch部署实践部署MindSearch到 hugging face Spaces上启动MindSearch启动后端启动前端 部署到自己的 HuggingFace Spaces上 部署MindSearch streamlit版本到Hugging Face上 MindSearch部署实践 部署MindSearch到 hugging face Spaces上 在Codespaces上选择Bla…...

CentOS 7 上安装 MySQL 8.0.40 (二进制安装)

要在 CentOS 7 上安装 MySQL 8.0.40,按照以下步骤操作: 下载安装包。 https://dev.mysql.com/downloads/mysql/ 下载之前查看系统c版本 解压安装包 首先,解压下载的 .tar.xz 安装包。 cd /path/to/your/downloads tar -xvf mysql-8.0…...

应用案例 | 船舶海洋: 水下无人航行器数字样机功能模型构建

水下无人航行器数字样机功能模型构建 一、项目背景 为响应水下装备系统研制数字化转型及装备系统数字样机建设的需要,以某型号水下无人航行器(Underwater Unmanned Vehicle,UUV)为例,构建UUV数字样机1.0功能模型。针对…...

Chromium CDP 开发(六):注册自己的指令(下)

引言 在这一章节中,我们将详细讲解如何将新定义的 TimerSend 指令和 TimerLog 事件添加到项目 的 inspector_protocol_config.json 文件中,从而使这些功能能够在 CDP(Chrome DevTools Protocol)中被识别并正常使用。 inspector_pr…...

【基础算法总结】哈希表/set/map篇

目录 一,哈希表简介二,算法原理和代码实现1.两数之和349.两个数组的交集面试题01.02.判断是否互为字符重排217.存在重复元素219.存在重复元素II692.前k个高频单词45.字母异位词分组 三,算法总结 一,哈希表简介 哈希思想是算法中一…...

数字逻辑理论题目+知识点复习

昨天考完的数字逻辑理论考试&#xff0c;啊啊啊还有实验&#xff0c;生活不易&#xff0c;且行且珍惜。 请以最大的善意对待生活(,,>᎑<,,)。...

证明网络中的流形成一个凸集

证明网络中的流形成一个凸集 步骤1&#xff1a;定义和符号步骤2&#xff1a;线性组合步骤3&#xff1a;验证容量限制步骤4&#xff1a;验证流量守恒结论示例代码&#xff08;C语言&#xff09; 在网络流理论中&#xff0c;一个流 f f f 是定义在网络图的边集上的一种函数&…...

SpringBoot3

1. 配置文件 1. 基本使用 使用 配置文件classpath:application.properties spring.jdbc.drivercom.mysql.cj.jdbc.Driver spring.jdbc.urljdbc:mysql://localhost:3306/batis spring.jdbc.usernameroot spring.jdbc.password123456使用配置文件的值&#xff1a;Value("…...

Linux之线程概念,理解和控制

Linux之线程概念&#xff0c;理解和控制 一.线程1.1线程的概念1.2线程的理解1.3线程的优缺点&#xff0c;异常和用途1.4线程和进程1.5线程的控制1.4.1线程的创建1.4.2线程的终止1.4.3线程的等待1.4.4线程的分离 一.线程 1.1线程的概念 在我们了解了进程的同时我们在学校上课时…...

系统监控——分布式链路追踪系统

摘要 本文深入探讨了分布式链路追踪系统的必要性与实施细节。随着软件架构的复杂化&#xff0c;传统的日志分析方法已不足以应对问题定位的需求。文章首先解释了链路追踪的基本概念&#xff0c;如Trace和Span&#xff0c;并讨论了其基本原理。接着&#xff0c;文章介绍了SkyWa…...

【Leetcode Top 100】146. LRU 缓存

问题背景 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 c a p a c i t y capacity capacity 初始化 LRU 缓存int get(int key) 如果关键字 k e y key key 存在于缓存中&…...

Ubuntu Server 22.04.5 LTS重启后IP被重置问题

Ubuntu Server 22.04.5 LTS重启后IP被重置问题 最近在使用Ubuntu Server 22.04做项目开发测试时发现每次重启和关机后&#xff0c;所设置的静态IP地址都会回复到安装系统时所设置的ip Ubuntu Server 22.04 官网下载地址&#xff1a;Ubuntu官方下载地址 对虚拟机下安装Ubuntu感…...

电机功率、电压与电流的换算方法

在电气工程和相关行业中&#xff0c;电机的功率、电压和电流是三个重要的基本参数。它们之间有着密切的关系&#xff0c;而理解这些关系对于电机的选型、设计和应用至关重要。本文将详细阐述这三者之间的换算关系&#xff0c;以及相关公式的应用。 一、电机功率的定义 电机功…...

【Java】反射简介

框架的核心和架构师的核心 反射和代理是重中之重 反射 反射的作用 在运行的时候由代码获取类的信息 三种获取类信息的方式&#xff1a; 对象.getClass()Class.forName("类的路径")类.class Class &#xff1a;一个用来存储类信息的类 获取类信息是获取的整体的…...

【JAVA】Java第十三节:String类(String相关方法,以及StrinBuftrer , StringBulder相关方法)

本文详细介绍了String类以及常用的String相关方法&#xff0c;以及StrinBuftrer , StringBulder相关方法的使用&#xff0c;建议有印象即可&#xff0c;不需要都记住&#xff0c;使用时去查取即可 一、创建一个String类型的变量 我们平时创建String类型的变量一般是第一种形式…...

电子信息工程自动化 基于单片机的出租车计价器设计

摘 要 出租车作为一种城市中非常重要的公共交通工具&#xff0c;他与人们的生活息息相关。所以我也设计了一款出租车计价器&#xff0c;它采用模块化设计&#xff0c;包含里程测量模块、数据存储模块、按键模块、时钟模块、显示模块、语音播报模块六大主要模块。本设计的出租车…...

CentOS 二进制安装部署MongoDB 4.0

一、安装MongoDB 1. 下载 MongoDB 二进制文件 前往 MongoDB 官方下载页面(https://www.mongodb.com/try/download/community) 选择对应版本的 tar 包。 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.28.tgz 2. 解压并移动至目标目录 解压文件&#xff…...

SQL面试题——京东SQL面试题 合并数据

京东 合并数据 几天的题目来自知名电商平台京东 已知有数据A如下,请分别根据A生成B和C。 数据A +-----+-------+ | id | name | +-----+-------+ | 1 | aa | | 2 | aa | | 3 | aa | | 4 | d | | 5 | c | | 6 | aa | | 7 | aa | | …...

windows安装使用conda

在Windows系统上安装和使用Conda的详细步骤如下&#xff1a; 一、下载Conda安装包 访问Conda的官方网站Anaconda | The Operating System for AI&#xff0c;点击“Downloads”按钮。在下载页面&#xff0c;选择适合您系统的安装包。通常&#xff0c;对于Windows系统&#xf…...

C++知识整理day4内存管理——new和delete详解

文章目录 1.C/C内存分布2.C语言中动态内存管理&#xff1a;malloc/realloc/calloc3.C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4.malloc/free和new/delete到底什么区别&#xff1f;4.1 对于自定义类型4.2 对于自定义类型4.3 总结&#xff1a;它们…...

STM32 自学笔记

摘抄于大学期间记录在QQ空间的一篇自学笔记&#xff0c;当前清理空间&#xff0c;本来想直接删除掉的&#xff0c;但是感觉有些舍不得&#xff0c;因此先搬移过来。 RAM vs ROM vs FLASH 2013-09-05记录&#xff0c;ROM和RAM指的都是半导体存储器&#xff0c;ROM是Read Only …...

spring通过RequestContextHolder获取HttpServletRequest对象

1.获取HttpServletRequest对象方法&#xff1a; public static HttpServletRequest getRequest() {ServletRequestAttributes attributes ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());assert attributes ! null;return attributes.getRequest(…...

【特殊子序列 DP】力扣1137. 第 N 个泰波那契数

泰波那契序列 Tn 定义如下&#xff1a; T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n&#xff0c;请返回第 n 个泰波那契数 Tn 的值。 示例 1&#xff1a; 输入&#xff1a;n 4 输出&#xff1a;4 解释&#xff1a; T_3 0 1 1 2 T_4 1 …...

tcp连接设置一个超时时间(没在操作系统层面设置)

await asyncio.open_connection(ip, port, limit1024)代码是使用了操作系统的TCP连接&#xff0c;正常TCP连接的时候会有重试机制&#xff0c;当第一个SYN没有回复的时候&#xff0c;会再重试4次&#xff0c;每次间隔1s, 2s&#xff0c;4s, 8s&#xff0c;我觉得太慢了&#xf…...

03、Node.js安装及环境配置

1.下载node.js 下载地址&#xff1a;Node.js 2.安装 2.1 自定义安装路径&#xff08;可以选择默认&#xff09; 下图根据本身的需要进行&#xff0c;我选择了默认Node.js runtime&#xff0c;然后Next&#xff1a; Node.js runtime &#xff1a;表示运行环境 npm package mana…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Remote Communication Kit

1.问题描述&#xff1a; DynamicDnsRule有没有示例&#xff1f;这个地址是怎么解析出来 https://developer.huawei.com/consumer/cn/doc/harmonyos-references/remote-communication-rcp-0000001770911890#section8160554134811 解决方案&#xff1a; ‘DynamicDnsRule’&a…...

WebStorm快捷键保持跟Idea一致

修改连续行局部多选 在WebStorm中同时按下ctrl alt s&#xff1b; 选择KeyMap 输入Column Selection Mode选择快捷键, 右键选择Add Mouse Shortcut 按下alt 鼠标左键 如果出现占用的情况&#xff0c;直接删除其他使用该快捷键的地方即可&#xff1b; 修改跨行局部多选 在…...

14、鸿蒙学习——管理通知角标

针对未读的通知&#xff0c;系统提供了角标设置接口&#xff0c;将未读通知个数显示在桌面图标的右上角角标上。 通知增加时&#xff0c;角标上显示的未读通知个数需要增加。 通知被查看后&#xff0c;角标上显示的未读通知个数需要减少&#xff0c;没有未读通知时&#xff0…...

【词向量表示】Word2Vec原理及实现

文章目录 Word2VecHow achieveLookup tableCodingPre-dataingModelNegative sameple Word2Vec 单词与单词之间的向量往往不在同一个向量空间&#xff0c;例如&#xff0c;传统的编码方式&#xff1a;one-hot编码&#xff0c;不同单词[1, 0, 0]和[0, 1, 0]之间的余弦相似度为0。…...

【C++】位图

Ⅰ、bitset的介绍 位图&#xff1a; 就是用 比特位 来标识某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用来判断某个数据存不存在的。 ​ 位图的接口&#xff1a; ​ 成员函数 功能 set 设置指定位或所有位 reset 清空指定位或所有位 flip …...

性能测试需求分析(超详细总结)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、客户方提出 客户方能提出明确的性能需求&#xff0c;说明对方很重视性能测试&#xff0c;这样的企业一般是金融、电信、银行、医疗器械等&#xff1b;他们…...

React开发 - 技术总结系列二

HOC 初体验 高阶组件&#xff08;HOC&#xff09;是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分&#xff0c;它是一种基于 React 的组合特性而形成的设计模式。 简单点说&#xff0c;就是组件作为参数&#xff0c;返回值也是组件的函数&#x…...

Spring事务实现原理

我们一般将Spring事务使用在数据库操作上面&#xff0c;用来保证数据的一致性和完整性 实现原理&#xff1a; 通过AOP和事务管理器实现的 1.AOP拦截&#xff1a; 拦截Transactional注解的方法调用 2.事务管理器&#xff1a; 负责事务的开启&#xff0c;提交和回滚 3.事务…...

云服务器部署upload-labs-docker(文件上传靶场)环境 以及相关报错问题

环境的搭建 准备&#xff1a;云服务器&#xff08;本地的linux服务器&#xff08;版本最好不要是老的不然不兼容docker&#xff09;&#xff09; f8x配置docker环境&#xff1a; https://github.com/ffffffff0x/f8x 一键配置 docker拉取file-labs靶场 https://github.com…...

Python进阶编程总结

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

【第 1 章 初识 C 语言】1.8 使用 C 语言的 7 个步骤

目录 1.8 使用 C 语言的 7 个步骤 1.8.1 第 1 步&#xff1a;定义程序的目标 1.8.2 第 2 步&#xff1a;设计程序 1.8.3 第 3 步&#xff1a;编写代码 1.8.4 第 4 步&#xff1a;编译 1.8.5 第 5 步&#xff1a;运行程序 1.8.6 第 6 步&#xff1a;测试和调试程序 1.8.…...

vue3 实现音频转文字组件

使用recorder-core第三方插件实现音频转纯文本的功能。 工具类文件 recoder.ts import Recorder from recorder-core import recorder-core/src/engine/wav import recorder-core/src/extensions/lib.fft.js import recorder-core/src/extensions/frequency.histogram.view i…...

MySQL各种锁详解

什么是锁&#xff1f; 1.1 锁的解释 计算机协调多个进程或线程并发访问某一资源的机制。 1.2 锁的重要性 在数据库中&#xff0c;除传统计算资源&#xff08;CPU、RAM、I/O等&#xff09;的争抢&#xff0c;数据也是一种供多用户共享的资源。 如何保证数据并发访问的一致性&…...

前端工程 Node 版本如何选择

1. Node 与 Npm 版本对应 这是一个必知必会的问题&#xff0c;尤其是对于维护那些老掉牙、一坨坨、非常大的有着长期历史的老破大工程。 1.1. package-lock.json 版本 首先你要会看项目的 package-lock.json 文件中的 lockfileVersion 版本号&#xff0c;这对于 NPM 安装来说…...

新增白名单赋予应用安装权限

目录 相关问题 具体实现 相关问题 安装app到/data/分区时&#xff0c;如何在安装阶段就赋予权限&#xff0c;无需请求权限 具体实现 frameworks/base/core/res/res/values/config.xml <!-- For whitelis apk --><string-array translatable"false" nam…...

学习Python的笔记14--迭代器和生成器

1.迭代器&#xff08;Iterator&#xff09; 概念&#xff1a; 迭代意味着重复多次&#xff0c;就像循环一样。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问&#xff0c;直到所有的元素被访问完结束。 迭代器只能往前不会后退。 1.iter…...

【Golang】Golang基础语法之面向对象:结构体和方法

面向对象——结构 Go 仅支持封装&#xff0c;不支持继承和多态&#xff1b;继承和多态要做的事情交给接口来完成&#xff0c;即——面向接口编程。Go 只有 struct&#xff0c;没有 class。 定义一个最简单的树节点&#xff08;treeNode&#xff09;结构&#xff0c;方法如下&…...

重磅升级:OpenAI o1模型上手实测,从芯片架构分析到象棋残局判断的全能表现

引言 昨日&#xff0c;在圣诞节系列发布会的第一天&#xff0c;OpenAI终于给我们带来了令人振奋的更新&#xff0c;这些更新有望塑造AI互动的未来。备受期待的OpenAI o1正式版的推出&#xff0c;标志着ChatGPT体验的重大进化&#xff0c;宣告了AI驱动应用新时代的开始。o1现已可…...

Pandas处理和分析嵌套JSON数据:从字符串到结构化DataFrame

在数据分析领域&#xff0c;我们经常遇到需要从非结构化数据中提取有用信息的场景。特别是当数据以JSON字符串的形式出现时&#xff0c;如何有效地将其转换为结构化的表格形式&#xff0c;以便进行进一步的分析和处理&#xff0c;成为了一个常见的挑战。本文将通过一个具体的例…...

《ODIN: A Single Model for 2D and 3D Segmentation》CVPR2024

斯坦福和微软&#xff1a; 代码链接&#xff1a;ODIN: A Single Model For 2D and 3D Perception 论文链接&#xff1a;2401.02416 摘要 这篇论文介绍了ODIN&#xff08;Omni-Dimensional INstance segmentation&#xff09;&#xff0c;一个能够同时处理2D RGB图像和3D点云…...

第40节 在ArkTS中实现socket功能

1. 基本概念 在 ArkTS 中实现 Socket 功能主要涉及到网络通信中的套接字&#xff08;Socket&#xff09;编程。Socket 是一种用于在不同设备&#xff08;如客户端和服务器&#xff09;之间进行双向通信的接口&#xff0c;它允许应用程序发送和接收数据。在网络编程中&#xf…...