深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)
深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)
- 前言
- 1.Chat2DB
- 2.SQL Chat
- 3.Wren AI
- 4.Vanna
前言
在数据驱动决策的时代,将自然语言查询转化为结构化查询语言(SQL)的能力变得日益重要。无论是小型创业公司还是大型企业,都希望能够更轻松地从海量的数据中挖掘出有价值的见解。然而,对于那些不熟悉SQL或者数据库架构的用户来说,直接编写复杂的查询语句往往是一个巨大的挑战。正是为了解决这一问题,Text2SQL技术应运而生,它允许用户通过简单的自然语言描述来获取他们所需的数据库信息。
近年来,随着人工智能和机器学习领域的迅速发展,Text2SQL技术也取得了显著的进步。多个开源项目如雨后春笋般涌现,它们致力于降低非技术人员与数据库交互的门槛,同时提高专业开发人员的工作效率。在这篇文章中,我们将深入探讨几个具有代表性的Text2SQL开源项目:Chat2DB、SQL Chat、Wren AI 和 Vanna。这些项目不仅展示了当前Text2SQL技术的最高水平,还预示了未来该领域可能的发展方向。
1.Chat2DB
GitHub Star :17.5k stars
GitHub链接地址:https://github.com/CodePhiliaX/Chat2DB
可私有化部署。
快速入门文档链接:https://chat2db-ai.com/resources/docs/start-guide/getting-started
功能:
1.创建数据库连接
数据库连接是使用Chat2DB的第一步,需要连接到你的数据库才能进行后续的操作。点击左侧的数据库连接,然后点击New connection,选择你使用的数据库,填写数据库连接信息,点击保存即可。
2.创建 AI 数据集
创建连接后,会有一个弹窗询问你是否需要设置 AI 数据集。设置 AI 数据集可以更好地帮助 AI 理解你的数据库表结构,生成更准确的答案。这也是 Chat2DB 的一大亮点。
3.使用 Chat2DB 数据库开发
连接成功后,可以双击连接或右键进入连接,然后可以在Chat2DB中进行数据库的增删改查操作,也可以使用AIGC能力,直接使用自然语言查询数据库,也可以使用SQL转自然语言。
4.已支持的数据库:
5.AI 生成报表
AI自动生成报表系统能够根据用户的特定需求,自动从多个数据源中提取数据,并基于这些数据的特点和趋势生成高度定制化的报表。 这些报表不仅包含丰富的图表、表格以及汇总数据,还能够通过先进的分析算法提供深入的洞察,帮助用户更直观地理解数据背后的含义,从而支持高效决策。
6.AI 对话
- AI建表
- AI 数据集
- AI SQL 优化
- AI SQL 转化
- RestAPI接口
- Excel 智能问答
- AI文本生成图表
- AI SQL 智能提示
- AI SQL 转自然语言
- AI 自然语言生成 SQL
2.SQL Chat
GitHub Star :4.7k stars
GitHub链接地址:https://github.com/sqlchat/sqlchat
支持本地部署
SQL Chat 是一种基于聊天的 SQL 客户端,它使用自然语言与数据库通信,实现对数据库的查询、修改、添加和删除等操作。
SQL Chat 是由 Next.js 构建的,它支持以下数据库,并将随着时间的推移支持更多:
- MySQL
- PostgreSQL
- MSSQL
- TiDB Cloud
功能:
数据隐私保护:所有数据库连接配置仅存储在本地浏览器中,用户可通过浏览器设置清除这些数据。确保了连接信息的安全性和隐私性。
API交互限制:仅有数据库模式信息被发送至OpenAI API,任何表数据均不上传,保障数据安全。
数据库连接能力:提供直接连接公网数据库的功能,便于用户即时查询。
查询执行限定:支持对连接的数据库执行查询操作,但限制于查询,不支持如INSERT等其他SQL操作。
SQL优化建议:能够根据提供的SQL语句给出常规优化建议,特别是对于复杂的长SQL语句有良好的分析能力。
集成会话功能:包含SQL查询执行认证的会话功能,增强用户体验。
现有局限性:目前会话功能仅限于SQL查询操作,若能扩展至全部SQL操作(包括写操作和DDL语句),将极大提升管理数据库的便利性。
3.Wren AI
GitHub Star :2.2k stars
GitHub链接地址:https://github.com/Canner/WrenAI
支持本地部署
Wren AI 是一个开源的 SQL AI 代理,它使数据、产品和业务团队能够通过聊天、内置精心设计的直观 UI 和 UX 以及与 Excel 和 Google 表格等工具无缝集成来获取见解。将 RAG 与 LLM 结合使用以查询数据库.
结合RAG(检索增强生成,Retrieval-Augmented Generation)和LLM(大语言模型,Large Language Models)以查询数据库是一个复杂的过程,涉及到多个技术和方法的融合。通过将这两个技术结合起来,可以提高信息检索和自然语言处理任务的效率和准确性。然而,正如你所指出的,这个过程在四个关键阶段面临着挑战:上下文收集、检索、SQL 生成和协作。下面是这些挑战的具体分析以及可能的解决方案,以便优化内容用于写博客。
第1阶段:上下文收集挑战
互操作性和数据链接
挑战:不同来源的数据和元数据服务之间的互操作性,以及将数据与文档存储中的元数据相关联。
解决方案:采用统一的数据模型和标准化接口来促进跨系统的信息交换。使用语义网技术如RDF(资源描述框架)和OWL(Web本体语言)可以帮助建立丰富的上下文关联。
第2阶段:检索挑战
向量存储优化和语义搜索精度
挑战:优化向量存储以提高搜索效率,同时确保语义搜索能够准确理解查询意图。
解决方案:利用先进的机器学习算法改进向量索引策略,并采用预训练的语言模型进行语义解析,以增强查询理解和结果排序。
第3阶段:SQL生成挑战
SQL查询的准确性和方言适应性
挑战:生成符合语法且可执行的SQL查询,并适应不同数据库系统的特定SQL方言。
解决方案:训练专门针对SQL生成的LLM,并集成对多种数据库系统的知识。可以考虑使用模板或模式匹配来辅助生成兼容的查询。
第4阶段:协作挑战
集体知识积累和访问控制
挑战:有效整合用户反馈以改进系统性能,同时遵守组织的数据访问政策和隐私法规。
解决方案:建立社区驱动的知识库平台,允许用户提交改进建议和错误报告。对于访问控制,应实施细粒度的权限管理机制,确保只有授权人员能访问敏感数据。
功能:
-
以任何语言处理数据
Wren AI 会说您的语言,例如英语、德语、西班牙语、法语、日语、韩语、葡萄牙语、中文等。通过向 Wren AI 询问您的业务问题来解锁有价值的见解。它超越了表面的数据分析,揭示了有意义的信息,并简化了从潜在客户评分模板到客户细分的答案获取过程。 -
具有精心设计的 UI/UX 的语义索引
Wren AI 实施了语义引擎架构来提供您业务的 LLM 上下文;您可以轻松地在数据架构上建立一个逻辑表示层,以帮助 LLM 更多地了解您的业务环境。 -
使用上下文生成 SQL 查询
借助 Wren AI,您可以使用“建模定义语言”处理元数据、架构、术语、数据关系以及计算和聚合背后的逻辑,从而减少重复编码并简化数据联接。 -
无需编写代码即可获得见解
在 Wren AI 中开始新对话时,您的问题将用于查找最相关的表。从这些中,LLM 生成三个相关问题供用户选择。您还可以提出后续问题以获得更深入的见解。 -
轻松导出和可视化您的数据
Wren AI 提供无缝的端到端工作流程,使您能够轻松地将数据与 Excel 和 Google 表格等流行的分析工具连接起来。这样,您的见解仍然可以访问,从而可以使用您最熟悉的工具进行进一步分析。
Wren A开源的主要特点在于建立数据模型
数据模型确实为数据库或信息系统中数据的结构和关系提供了一个概念框架,而Wren AI中的“模型”、“视图”以及“实体关系图(ERD)”等概念则是这一框架的具体实现形式。下面我们将详细解释这些组件如何在Wren AI环境中运作,并且它们是如何帮助用户更好地理解和操作数据的。
- 模型
在Wren AI中,“模型”不仅仅是指传统意义上的数据模型,它是一个更复杂的单元,集成了架构、元数据、关系、计算字段以及其他自定义语义信息。这意味着每个模型都不仅仅是数据的容器,而且是具有丰富描述的数据对象集合,能够表达数据之间的复杂关系和逻辑。通过这种方式,模型可以帮助人们和AI服务更深刻地理解数据的本质,从而提高数据分析和决策的质量。
- 视图
视图作为虚拟表,是Wren AI的一个重要特性,它允许用户基于一个或多个基础模型的数据创建定制化的展示。与实际存储数据的表不同,视图并不直接存储数据,而是根据预定义的查询动态生成结果集。这种机制不仅节省了存储空间,还提供了灵活性,让用户可以根据需要快速调整数据展示的方式。此外,通过“另存为视图”的功能,用户可以保存特定的查询结果,以便于日后重复使用或分享。
- 实体关系图(ERD)
实体关系图是在Wren AI的建模页面提供的可视化工具,用于直观地展示各个模型及其相互之间的关系。ERD以图形化的方式呈现了系统内的数据结构,使用户能够轻松识别数据元素之间的关联,如一对一、一对多或多对多的关系。在这个图表中,模型通常用蓝色块表示,而视图则用绿色块标识,这样的颜色区分有助于快速辨识不同的数据结构类型。ERD对于设计和理解复杂的数据模型特别有用,因为它能够清晰地揭示数据之间的联系,促进团队成员间的沟通和协作。
总的来说,Wren AI通过其模型、视图和ERD等功能,为用户提供了一套强大的工具来管理和分析数据,确保数据能够被高效地组织起来以满足业务需求。这些特性共同作用,不仅提高了数据处理的效率,也增强了用户对数据的理解和掌控能力。
4.Vanna
GitHub Star :12.3k stars
GitHub链接地址:https://github.com/vanna-ai/vanna
支持本地部署
Vanna 的核心是一个 Python 软件包,它使用检索增强来帮助您使用 LLM 为数据库生成准确的 SQL 查询。
Vanna 通过两个简单的步骤工作 - 在数据上训练 RAG“模型,然后提出问题,这些问题将返回 SQL 查询,这些查询可以设置为在向量数据库上自动运行。
训练 RAG“模型:
数据包含建表语句、相关的SQL查询示例以及对表或字段的注释等文档信息。这些信息将被转化为向量形式(即进行Embedding),并存储在专门的向量库中。这些向量表示使得系统能够高效地理解和检索结构化数据的相关信息。
问题处理与SQL生成:
向Vanna提出一个问题时,系统会在向量库中搜索与该问题最相关的信息。
检索到的相关信息会被传递给大型语言模型,它根据上下文生成适当的SQL查询。
生成的SQL查询可以直接设置为自动执行,以在您的数据库上运行,从而快速获得所需的数据结果。
选择 Vanna.AI 的原因可以归结为几个关键优势:
-
透明度与灵活性:Vanna Python包以及前端集成的开源性质意味着用户可以获得完整的代码透明度,并且可以根据自己的需求进行定制或修改。这对于那些希望在自己的基础设施上运行解决方案、保持对技术栈完全控制的企业尤其有吸引力。
-
复杂数据集的高精度训练数据相关性:Vanna的性能直接与其所接收的训练数据量成正比。更多的训练数据能够提高模型对于大型复杂数据集的理解和处理能力,从而提升查询结果的准确性。这对于拥有大量历史数据或者需要处理复杂查询的企业来说是一个重要的卖点。
-
数据隐私保护:Vanna 设计之初就考虑到了安全性,确保数据库内容不会被发送到 LLM(除非特定功能要求),并且元数据存储层仅能访问架构、文档和查询信息。这种设计极大地减少了敏感数据暴露的风险,符合严格的隐私法规和企业内部的安全政策。
-
持续改进:随着用户的使用频率增加,Vanna的模型会通过不断添加新的训练数据来优化自身的性能。这意味着系统会随着时间推移变得更加智能和高效,无需人工干预即可自我调整以适应变化的数据模式。
-
广泛的兼容性:Vanna 提供了对多种流行数据库如 Snowflake、BigQuery、Postgres等的原生支持,并且允许用户轻松创建自定义连接器以适配其他类型的数据库,支持多种大模型及向量数据库。
-
-
多样的展示方式:Vanna 支持从 Jupyter Notebook 到 Slackbot、Web 应用程序、Streamlit应用程序等多种前端展示形式,甚至可以集成到客户的 Web应用程序中。
运行原理:
当你向Vanna提出问题时,系统将遵循一个优化的流程来确保提供准确且高效的SQL查询响应:
- 系统首先会在训练数据中查找是否有过类似的提问记录。如果找到了相似的问题,它会使用那些已经被验证正确的SQL查询作为参考。
- 若未找到匹配项,系统则会依据现有的数据定义语言(DDL)、相关文档或引导性查询来进行处理。
- 接着,专门针对您架构定制的Vanna模型会基于上述信息生成相应的SQL查询。
- 生成的SQL查询会被执行以验证其正确性和有效性。一旦通过验证,此查询就会被加入到训练数据集中,成为未来查询的一个可靠来源。
- 如果SQL查询未能通过验证,则会有分析师介入,对查询进行修正,并将正确的版本纳入训练数据。
通过这个不断迭代和学习的过程,Vanna逐渐加深了对您数据库模式的理解,从而能够更加精准地响应更多类型的问题,并随着时间推移不断提高其性能和准确性。
相关文章:
深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna)
深入了解Text2SQL开源项目(Chat2DB、SQL Chat 、Wren AI 、Vanna) 前言1.Chat2DB2.SQL Chat3.Wren AI4.Vanna 前言 在数据驱动决策的时代,将自然语言查询转化为结构化查询语言(SQL)的能力变得日益重要。无论是小型创业…...
【Linux】报错:cannot create directory ‘test’: Read-only file system
1 报错 ❤️在使用mkdir test命令创建文件夹的时候,报错如下: mkdir:cannot create directory ‘test’:Read-only file system 2 解决方法 mount -o remount,rw / 🦋上述命令在Linux系统中用于重新挂载(root)文件系统,并将其从只读模式切换到读写模式。 ■ 下面是对…...
python mat是什么文件
.mat就是matlab的文件格式,一般用于matlab和python间的数据传输,python中numpy和scipy提供了一些函数,可以很好的对.mat文件的数据进行读写和处理。 在python中可以使用scipy.io中的函数loadmat()读取mat文件,函数savemat保存文…...
Redis: 一个高效的内存数据存储解决方案
Redis: 一个高效的内存数据存储解决方案 介绍 Redis(Remote Dictionary Server)是一种开源的高性能键值存储系统。它常被用作缓存、消息队列、会话存储、实时数据分析等多种场景。与传统的关系型数据库不同,Redis 是基于内存的数据存储&…...
AR眼镜_消费级工业AR智能眼镜主板硬件解决方案
AR眼镜的研发是一项复杂的软硬件集成工程,它需要在摄影、音频、交互和连接等多个方面提供卓越的基础体验,因此产品的每个细节都显得尤为重要。 在设计AR眼镜时,重量、体积和散热性能都是必须认真考量的关键因素。在芯片平台的选择上ÿ…...
C# 异常处理
C# 异常处理 异常处理是编程中不可或缺的一部分,它允许程序在遇到错误或意外情况时优雅地处理这些问题,而不是直接崩溃。C# 提供了一套强大的异常处理机制,包括 try-catch 块、finally 块和 throw 语句。本文将深入探讨 C# 中的异常处理,包括如何捕获和处理异常,以及如何…...
图解SSH原理
1. 初见SSH SSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务。 SSH仅仅是一协议标准,其具体的实现有很多,既有开源实现的OpenSSH,也有商业实现方案。使用范围最广泛的当然是开源实现OpenSSH。 2. SSH工作原理 …...
如何快速批量把 PDF 转为 JPG 或其它常见图像格式?
在某些特定场景下,将 PDF 转换为 JPG 图片格式却具有不可忽视的优势。例如,当我们需要在不支持 PDF 查看的设备或软件中展示文档内容时,JPG 图片能够轻松被识别和打开;此外,对于一些网络分享或社交媒体发布的需求&…...
在CentOS中安装和卸载mysql
在CentOS7中安装和卸载mysql 卸载mysql1、查看是否安装过mysql2、查看mysql服务状态3、关闭mysql服务4、卸载mysql相关的rpm程序5、删除mysql相关的文件6、删除mysql的配置文件my.cnf 安装mysql1、下载mysql相关的rpm程序2、检查/tmp临时目录权限3、安装mysql前的依赖检查3、安…...
第十二章:异常(2)
六、自定义异常类 1. 定义一个类继承 异常类 (1) 定义异常类如果为运行时异常,则需要继承 RuntimeException class CheckedPasswordException extends RuntimeException{} (2) 定义异常类如果为非运行时异常,则需要继承 Exception class CheckedPass…...
DAY5 C++运算符重载
1.类实现> 、<、!、||、!和后自增、前自减、后自减运算符的重载 代码: #include <iostream>using namespace std; class Complex {int rel;int vir; public:Complex(){};Complex(int rel,int vir):rel(rel),vir(vir){cout << "…...
Qt之点击鼠标右键创建菜单栏使用(六)
Qt开发 系列文章 - menu(六) 目录 前言 一、示例演示 二、菜单栏 1.MenuBar 2.Menu 总结 前言 QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(toolbars)、一个状态栏(status…...
Ant Design Pro实战--day01
下载nvm https://nvm.uihtm.com/nvm-1.1.12-setup.zip 下载node.js 16.16.0 //非此版本会报错 nvm install 16.16.0 安装Ant Design pro //安装脚手架 npm i ant-design/pro-cli -g //下载项目 pro create myapp //选择版本 simple 安装依赖 npm install 启动umi yarn add u…...
ejb组件(rmi) webservice平台(xml)
springboot bean 在 Spring Boot 中,Bean 是 Spring 框架的核心概念之一,表示由 Spring 容器管理的对象。通过 Bean 或其他注解(如 Component、Service、Repository 等)来定义和管理这些对象。以下是关于 Spring Boot 中 Bean 的…...
[高考] 学习数学的难点
最近想看一些机器学习的书,发现很多概念,很多符号,很多地方是,不知道具体的意思,不懂其中的内涵,所以需要再重新查阅很多的资料,去理解作者每句话是什么意思。 总结一下难点。以詹姆斯-斯图尔特…...
西门子200 smart PLC助力水处理企业自动化改造
摘要 西门子的200SMART PLC,以其强大的功能和灵活的应用性,正成为环保行业中不可或缺的一环。今天,我们就来看看这个小小的PLC是如何在处理环保问题中大显身手的。 不得不说,环保行业的痛点可不少。 比如污水处理,传…...
redis 怎么样查看list
在 Redis 中,可以通过以下方法查看列表的内容或属性: 1. 查看列表中的所有元素 使用 LRANGE 命令: LRANGE key start endkey 是列表的名称。start 是起始索引,0 表示第一个元素。end 是结束索引,-1 表示最后一个元素…...
QT数据库(二):QSqlQueryModel实现数据查询
QSqlQueryModel 可以设置任意的 SELECT 语句来从数据库中查询数据,可以查询一个数据表部分字段的数据,也可以是多个数据表组合的数据。该模型的数据是只读的,即使在界面上修改了QSqlQueryModel 模型的数据,也不能将所做的修改提交…...
【后端面试总结】HTTPS工作原理详解
引言 在现代网络通信中,数据的安全性至关重要。HTTP(Hypertext Transfer Protocol)作为互联网上传输数据的协议,虽然应用广泛,但其数据以明文形式传输,存在被窃取和篡改的风险。为此,HTTPS&…...
Kibana 部署
Kibana 是一个开源的数据可视化和探索工具,主要用于 Elasticsearch 数据的分析和展示。本文将详细介绍如何在 Linux 系统上部署 Kibana,并启用 SSL 加密以确保安全通信。 英文文档:Kibana Guide | Elastic 中文文档:Kibana 用户…...
PostgreSQL 入门
下载与安装 部分国产数据库采用PostgreSQL作为基础进行研发,因此先尝试了解一下原始数据库情况。 PostgreSQL 简称 PG 官网:https://www.postgresql.org/ PostgreSQL “世界上最先进的开源关系型数据库” 这是官网上的口号。 PostgreSQL: The World…...
简单的多网卡选择指定网卡ip注册
简单的多网卡选择指定网卡ip注册 我们公司服务器上面有多个网卡,多网卡则本地ip有多个ip,我们启动服务的时候需要选定他特定的ip,我们服务需要特定的ip进行注册,才能进行正常的通讯功能,我们需要使用如下配置进行特定ip选择&…...
【论文阅读笔记】One Diffusion to Generate Them All
One Diffusion to Generate Them All 介绍理解 引言二、相关工作三、方法预备知识训练推理实现细节训练细节 数据集构建实验分结论附录 介绍 Paper:https://arxiv.org/abs/2411.16318 Code:https://github.com/lehduong/onediffusion Authors࿱…...
基于Spring Boot的电影院订票信息管理系统
目录 前言 一、技术栈 二、系统功能介绍 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 当今社会已经步入了科学技术进步和经济社会快速发展的新时期,国际信息和学术交流也不断加强,计算机技术对经济社会发展和人民生活改善的影响也…...
Easy-Mock前端+后端全解以及详细使用
前文 常见的mock方式 将模拟数据直接写在代码里利用 JavaScript 拦截请求利用 Charles、 Fiddler 等代理工具拦截请求 把模拟的数据写代码里,那是不是每次修改返回数据就要重新部署服务,那有没有不用部署也能改返回参数的东西呢?有&#x…...
【WSL】——wsl安装多个ubuntu
原因:一个库用了GLIBC_2.29,但是我的系统是ubuntu18.04,看样子需要升级glibc,但是升级之后好像会出现崩溃的问题。参考:ubuntu慎重升级glibc。所以那就再安装一个ubuntu22.04吧。 下面介绍通过wsl安装ubuntu18.04&…...
微信小程序从后端获取的图片,展示的时候上下没有完全拼接,有缝隙【已解决】
文章目录 1、index.wxml2、index.js3、detail.detail为什么 .rich-text-style 样式可以生效?1. <rich-text> 组件的特殊性2. 类选择器的作用范围3. 样式优先级4. line-height: 0 的作用5. 为什么直接使用 rich-text 选择器无效? 总结 上下两张图片…...
人工智能大模型LLM开源资源汇总(持续更新)
说明 目前是大范围整理阶段,所以存在大量机翻说明,后续会逐渐补充和完善资料,减少机翻并增加说明。 Github上的汇总资源(大部分英文) awesome-production-machine-learning 此存储库包含一系列精选的优秀开源库&am…...
第二十六章 Spring之假如让你来写事务——初稿篇
Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…...
介绍一下CSS中伪类和伪元素的概念
一、伪类(Pseudo - Classes) 1. 定义 伪类是添加到选择器的关键字,用于定义元素的特殊状态。这些状态不是由文档树中的结构或属性来表示,而是基于用户行为(如鼠标悬停)、元素状态(如被选中&am…...
Python字符串常用操作
Python字符串常用操作 一、字符串的切片 1.1、通过下标及下标范围取值 my_str myNameIsTaichi value1 my_str[2] # 正向 N value2 my_str[-5] # 反向 从 -1 开始 a字符串分割,语法:string[end: step] start:头下标,以0开…...
解决创建laravel项目,使用国外镜像超时,国内镜像缺包的问题
解决创建laravel项目,使用国外镜像超时,国内镜像缺包的问题 一、前言二、切换镜像三、创建最新版本四、创建指定版本 一、前言 最近想下载 laravel 框架看看,但也遇到了些麻烦,这里做个记录。 二、切换镜像 先查看镜像源&#…...
帝可得-运营管理App
运营管理App Android模拟器 本项目的App客户端部分已经由前端团队进行开发完成,并且以apk的方式提供出来,供我们测试使用,如果要运行apk,需要先安装安卓的模拟器。 可以选择国内的安卓模拟器产品,比如:网…...
印闪网络:阿里云数据库MongoDB版助力金融科技出海企业降本增效
客户背景 上海印闪网络科技有限公司,于2017年1月成立,投资方包括红杉资本等多家国际知名风投公司。公司业务聚焦东南亚普惠金融,常年稳居行业头部。创始团队来自腾讯,中国团队主要由运营、风控及产研人员组成,核心成员…...
c++的应用
整理思维导图周五剩下的三个笔试题利用函数重载,实现对整形数组的冒泡排序,对浮点型数组的冒泡排序整理课上内容在堆区申请一个数组的空间,并完成对该数组中数据的输入和输出,程序结束释放堆区空间 冒泡排序效果图: 代…...
linux网络编程 | c | select实现多路IO转接服务器
select实现多路IO转接服务器 基于该视频完成 15-select实现多路IO转接设计思路_哔哩哔哩_bilibili 通过响应式–多路IO转接实现 文章目录 select实现多路IO转接服务器1.思路&功能2.代码实现warp.hwarp.cmulti_select_sever.c运行图 3.代码解释(细节…...
在Scala中对隐式转换格式与作用
隐式对象 格式:implicit object 作用:给函数的默认参数提供隐式值 object Scala12______10 { // case class DataBase(driver: String, url: String) // // implicit object mySql extends DataBase("mysql", "localhost:300") //…...
贪心算法 - 学习笔记 【C++】
2024-12-09 - 第 38 篇 贪心算法 - 学习笔记 作者(Author): 郑龙浩 / 仟濹(CSND账号名) 贪心算法 学习课程: https://www.bilibili.com/video/BV1f84y1i7mv/?spm_id_from333.337.search-card.all.click&vd_source2683707f584c21c57616cc6ce8454e2b 一、基本…...
【深度学习】深刻理解ViT
ViT(Vision Transformer)是谷歌研究团队于2020年提出的一种新型图像识别模型,首次将Transformer架构成功应用于计算机视觉任务中。Transformer最初应用于自然语言处理(如BERT和GPT),而ViT展示了其在视觉任务…...
安卓低功耗蓝牙BLE官方开发例程(JAVA)翻译注释版
官方原文链接 https://developer.android.com/develop/connectivity/bluetooth/ble/ble-overview?hlzh-cn 目录 低功耗蓝牙 基础知识 关键术语和概念 角色和职责 查找 BLE 设备 连接到 GATT 服务器 设置绑定服务 设置 BluetoothAdapter 连接到设备 声明 GATT 回…...
C++ 异常处理机制与自定义异常体系
目录 1.C语言传统的处理错误的方式 ?? 1. 终止程序 2. 返回错误码 3.实际使用中的情况 2. C异常概念?? 2.1 C异常的基本概念 2.2异常的抛出和匹配原则 2.3?异常的重新抛出 2.4 异常安全 2.5 异常规范 3. 自定义异常体系 ??? 3.1??自定义异常类 3.2??自…...
【动态库.so | 头文件.hpp】基于CMake与CMakeList编写C++自定义库
前言 最近比较忙,其他系列教程得等到年后一起更!请大家多多包涵!!相信各位在配置C环境和各类库的时候一定经常看到如下小连招 git clone https://github.com/opencv/opencv.git cd opencv mkdir build && cd build cma…...
三、nginx实现lnmp+discuz论坛
lnmp l:linux操作系统 n:nginx前端页面 m:mysql数据库,账号密码,数据库等等都保存在这个数据库里面 p:php——nginx擅长处理的是静态页面,页面登录账户,需要请求到数据库&#…...
OpenCV相机标定与3D重建(15)计算给定图像点对应的极线(epipolar lines)函数computeCorrespondEpilines()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算给定图像点对应的极线(epipolar lines)。 对于立体图像对中一个图像的点,计算这些点在另一个图像中对应的…...
【MySQL 进阶之路】了解 性能优化 与 设计原则
1.B树的优势 “矮胖”结构: 矮:B树的每个节点存储更多的关键字,从而减少了树的层级(最多三层),减少了磁盘I/O操作,提高了查询效率。胖:叶子节点存储实际的数据,并使用双…...
【银河麒麟高级服务器操作系统】修改容器中journal服务日志存储位置无效—分析及解决方案
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 服务器环境以及配置 【机型】 整机类型/架构&am…...
轻量级的 HTML 模板引擎
Mustache 简介:Mustache 是一个非常简单的逻辑少的模板引擎,支持 HTML 文件中的占位符替换。它不会执行复杂的逻辑,只支持简单的变量替换。 安装: npm install mustache示例: const Mustache require(mustache);c…...
SQL 查询秘籍:提升你数据库技能的实用指南
目录 一、常用表表达式(CTEs) (一)快速了解 (二)上手演练 练习一:使用 CTE 来分解一般查询逻辑 练习二:使用 CTE 来分解复杂的查询逻辑 二、递归CTEs (一…...
Unity背包道具拖拽(极简版实现)
(感觉Csdn代码页面可以再大一点或者加个放大功能 不然得划着看不太舒服) 1.关键接口,三个拖拽相关的 2.关键参数,PointerEventData 一直没仔细看过,其实有包含鼠标相关的很多参数,鼠标点击次数ÿ…...
Vins_Fusion_gpu中source setup.bash
文章目录 source setup.bashsetup.bashsetup.sh脚本的主要功能脚本的详细解释1. **初始化和检查**2. **检测操作系统**3. **设置环境变量**4. **记住 shell 类型**5. **调用 Python 脚本生成环境变量**6. **加载环境钩子**7. **清理** 总结 _setup_util.py_setup_util.py 的完整…...