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

NL2SQL调研

一 背景

1.1 引言

随着数据时代的到来,数据库已成为企业和组织存储、管理和分析数据的核心基础设施。然而,传统的数据库查询需要使用结构化查询语言(SQL),这要求用户具备特定的技术知识,限制了数据库的广泛使用。自然语言到SQL(NL2SQL)技术的出现,旨在弥合这一鸿沟,使非技术用户也能通过自然语言与数据库进行交互,从而提高数据库的可用性和数据驱动决策的效率。

1.2 目的

随着大模型的涌现,赋能各种应用场景,我们想寻找一种方法,能否帮助产业的数据库更加智能,能够使得非专业人员也能够实现读取数据库,并分析数据,于是找到NL2SQL的解决方案。
本报告将探讨NL2SQL技术,包括其背景意义、当前发展状况与挑战、解决方案及未来发展方向,为相关领域的研究人员和实践者提供系统性的参考。

  1. 了解其发展历程,经历的解决方案的演变,遇到的关键挑战,以及目前的挑战;
  2. 了解学术论文、商业的应用案例并分析;
  3. 以空调数据为研究对象,规划具体实施架构;

二 NL2SQL

2.1 简介

将用户的自然语言查询(NL)转换为 SQL 查询可以显著降低访问关系数据库的障碍,并支持各种商业应用。随着大语言模型(LLMs)的出现,NL2SQL 的性能得到了极大提高。在这种情况下,评估当前文本转 SQL 的转换、确定从业者针对特定场景应采用的 NL2SQL 解决方案以及确定研究人员接下来应探索的研究主题至关重要。
在这里插入图片描述

2.2 流程

数据分析人员使用数据的流程如下
人类工作流程:

  1. 理解自然语言查询:首先理解用户的意图,识别NL中的关键部分,例如实体或属性、时间上下文和特定条件。
  2. 链接数据库架构和检索内容:基于对NL的理解,检查数据库架构和内容,识别生成SQL所需的相关表、列和单元格值。
  3. 将NL意图转换为SQL:最后,根据对NL和数据库概念的理解,编写相应的SQL查询。

在这个过程中,数据分析人员要理解业务需求逻辑(即自然语言),然后将其转换为SQL语言,这是关键所在,也是数据分析人员的价值所在,即1.理解自然语言;2.理解sql语言;3.能够实现转换。

那我们类比到NL2SQL的工作流程
NL2SQL工作流程在这里插入图片描述

  1. NL Query:用户输入的自然语言查询。
  2. 预处理(Optional):
    • Schema Linking:将自然语言查询中的实体与数据库模式进行链接。
    • Database Content Retrieval:从数据库中检索相关内容。
    • Additional Information Acquisition:获取额外的相关信息。
  3. NL2SQL Translation Methods:
    • Encoding Strategy:包括顺序编码(Sequential Encoding)和基于图的编码(Graph-based Encoding)等。
    • Backbone Model:可以是编码器-解码器(Encoder-Decoder)、仅编码器(Encoder-Only)或仅解码器(Decoder-Only)模型。
    • Decoding Strategy:包括束搜索(Beam Search)和约束感知增量解码(Constraint-aware Incremental Decoding)等。
  4. 后处理(Optional):
    • Correction:对生成的SQL查询进行校正。
    • Consistency:确保生成查询的一致性。
    • Execution-Guided N-best Rerankers:通过执行结果指导的N最佳重排序。
  5. SQL Query:最终生成的SQL查询。

2.3 发展

NL2SQL方法在过去二十年中经历了以下几种解决方案的演变:

  1. 基于规则的方法:早期研究主要集中在使用预定义规则或语义解析器来理解自然语言查询并将其转换为SQL查询。
  2. 基于神经网络的方法:为了解决基于规则的方法的局限性,研究者开始利用神经网络来解决NL2SQL任务
  3. 基于预训练语言模型的方法:随着BERT和T5等预训练语言模型的出现,基于PLM的NL2SQL方法在多个基准数据集上取得了竞争性的性能。
  4. 基于大型语言模型的方法:随着LLMs的出现,NL2SQL技术取得了显著进展,LLMs具有卓越的语言理解和新出现的能力,例如使用提示来执行NL2SQL任务。

在2020年以后,基于大预言模型的NL2SQL方法成为主流。

在NL2SQL的发展过程中,主流产品有Spider、BIRD、WikiSQL、KaggleDBQA、Chase。
国内产品开源工具和平台

  • SQLTrans:完全免费开源,基于MIT许可证,允许用户使用Python进行SQL查询和数据分析。
  • Vanna:基于MIT许可证,采用RAG技术,专为SQL生成和相关功能设计。
  • SQLCoder:开源工具,专注于自然语言到SQL的转换。
  • Chat2DB:阿里巴巴开源的工具,支持自然语言与SQL的互相转换。
    企业级应用和产品:
  • NebulaAI:提供NL2SQL功能,免费开放给社区版用户,支持多种数据库。
  • 阿里云DataWorks Copilot:通过大模型技术简化NL2SQL的实现路径,并在多个场景中取得良好效果。

2.4 挑战

在这里插入图片描述
可以看到在LLM阶段 ,主要挑战来自三个方面:自然语言的不确定性、数据库的复杂性和数据的不完整性、从自然语言到SQL的转换,即:

  • 自然语言的不确定性:自然语言可能因歧义和不明确性而含有不确定性,例如词义歧义、句法歧义、信息不足和用户错误。
  • 数据库的复杂性和数据的不完整性:数据库架构的复杂性和数据的庞大体量对NL2SQL任务的有效执行构成挑战,包括表之间的关系复杂性、列名的相似性、特定领域的架构变化以及大数据量和数据的不完整性。
  • 从自然语言到SQL的转换:NL2SQL任务与高级编程语言到低级机器语言的编译不同,因为输入的NL和输出的SQL查询之间通常存在一对多的映射。

上面的三大挑战更具体的细节如下:

  • 不确定的NL Query
    • 词法歧义:一个单词具有多种含义
    • 句法歧义:一个句子可以用好几种方式解析
    • 用户错误:拼写和语法错误
    • 表述不足:语言表述缺乏有效的细节来清晰地传达意图和意思
  • 复杂的数据库和脏内容
    • 表之间复杂的关系:数据库通常包含很多表,而且表之间有复杂的关系
    • 属性和值的歧义:数据库中的属性或者值是有歧义的,例如两个表有相同的属性名,但是它们的含义不相同,造成了很难确定正确的上下文
    • 特定领域的schema设计:不同的领域通常有独特的数据设计和模式特征
    • 大而且脏的数据库数据值:在大型数据库中,有效地处理大量的数据列是非常重要的,数据值可能有些时候是不正确的
  • NL2SQL转换
    • 自由形式的自然语言到有限制且结构化的SQL转化:自然语言是灵活的但是SQL请求必须遵行语法规则
    • 多种可能的SQL请求:一个自然语言请求可以对应满足要求的不同的SQL请求,这可能导致在决定正确的SQL翻译时有歧义
    • 数据库schema依赖:NL2SQL转换过程高度依赖与它进行交互的数据库模式
  • 技术上的挑战
    • SQL语句的效率:NL2SQL模型生成的SQL语句必须既正确又运行效率高
    • 模型的效率:模型在运行时间和生成SQL质量上的平衡
    • 无效且有噪音的训练数据:需要高质量的训练数据来训练模型,但是通常公开的数据集是有噪音且质量不高 原文链接:https://blog.csdn.net/weixin_61597480/article/details/145078111

三 产品分析

3.1 DB-GDP

DB-GPT是一个融合大型语言模型(LLM)与数据库技术的开源框架,在这里插入图片描述
DB-GPT的核心特点

  1. 自然语言驱动的数据库交互
    • 支持自然语言转SQL(Text2SQL),用户可通过对话方式生成查询语句,降低非技术用户的使用门槛。
    • 结合RAG(检索增强生成)框架,提升查询的准确性和相关性,减少模型“幻觉”现象。
  2. 多数据源与智能分析能力
    • 支持Excel、数据库、数仓等多种数据源的自然语言交互,并可生成分析报告与可视化图表。
    • 提供GBI(Global Business Intelligence)功能,支持跨数据源的综合分析。
  3. 模块化与可扩展架构
    • 采用分层设计,包括训练层(DB-GPT-Hub)、协议层(AWEL 2.0)、模块层(RAG、Agent)、服务层(LLMServer、APIServer)等,支持灵活扩展。
    • 支持多智能体(Multi-Agents)协作,通过AWEL协议实现任务编排与自动化决策。
  4. 隐私与安全保护
    • 采用私有化大模型、代理脱敏、联邦学习等技术,确保数据本地化处理,避免隐私泄露。
    • 支持离线部署,适用于金融、医疗等对数据安全要求高的行业。
  5. 高效向量检索与优化
    • 引入VSAG向量索引库,优化高维向量存储与计算,内存消耗仅为HNSW的1/10,提升RAG构建效率。
    • 结合图数据库(如TuGraph),增强复杂数据关系的检索能力。

DB-GPT的应用场景

  1. 企业数据治理与智能分析 :自动执行数据清洗、转换、质量监控,提升数据可用性。
  2. 智能客服与问答系统 :通过自然语言理解用户意图,提供精准回答,降低人工客服成本。
  3. 数据库优化与查询加速 :自动优化SQL查询(如查询重写、索引调整),提升数据库执行效率,实验显示延迟降低9.8%。
  4. 多模态数据整合与知识库问答 :支持PDF、网页、图像等非结构化数据的统一向量存储与检索,构建企业知识库。
  5. 自动化决策与AI代理 :结合插件机制(如Auto-GPT插件),实现自动化数据分析与任务执行。

实践
DB-GDP项目地址: https://github.com/eosphoros-ai/DB-GPT/
教学文档:https://www.yuque.com/eosphoros/dbgpt-docs/bex30nsv60ru0fmx

  1. 连接数据库分析
    可以连接数据库,用户输入问题、要求,然后大模型读取数据库中的元数据,经过分析后生成相应的sql语句,并且可通过修改配置读取数据库中的数据。在这里插入图片描述
  2. 上传数据分析
    可通过上传数据文件,输入问题,大模型根据语义读取文件,分析并生成图表在这里插入图片描述

3.2 DataLab

DataLab:DataLab | 基于LLM的统一BI平台
论文:https://arxiv.org/abs/2412.02205

DataLab是一款以大语言模型驱动的大数据智能体为基础的数据分析工具,目前仅在腾讯内部使用。它连接了Python、SQL、Pyspark等多种常用的数据分析语言,提供了智能数据分析与数据科学工具,入门门槛较高,适用于数据科学家。
挑战

  1. 对自适应LLM上下文管理的需求
  2. 任务之间的信息共享不足
  3. 缺乏领域知识整合

解决方案

  1. DataLab将 BI 工作流与基于一站式LLM的agent框架和jupyter notebook界面的集成统一起来的平台,以弥合不同角色、任务和工具之间的差距
  2. 开发了一种系统的方法,用于领域知识整合,以提高LLM-based agents在实际环境中完成企业特定 BI 任务的性能。
  3. 引入结构化的通信机制来制定不同agent之间的信息共享流程,以促进跨任务执行
  4. 提出了一种自适应上下文管理策略,以提高代理在notebook中的上下文利用能力,以提高效率和成本效益。在这里插入图片描述

基于上面的三个挑战,应对策略分为三个模块:领域知识整合、代理通信、基于单元格的上下文管理

  • 领域知识整合(Domain Knowledge Incorporation)
    简单来说,领域知识整合模块接受三个输入:数据表的架构、关联的脚本历史记录(如SQL查询和Python代码),以及数据沿袭信息。然后,这个模块自动生成知识组件,组织成知识图谱,用于将模糊的用户查询转换为结构化的DSL(domain-specific languages (DSLs),提升BI任务性能。
    流程:输入→处理→生成知识组件→构建知识图谱→转换查询→输出DSL→提升性能
  • 代理间通信(Inter-Agent Communication)
    1. 模块将agnet间的信息流建模为FSM,节点是agent,边是信息转换方向。
    2. 任务完成后,每个代理输出结构化信息单元,包含标识符和描述。
    3. 该模块存在一个共享的信息缓冲区,代理基于FSM主动交换信息,提高效率。
  • 基于单元格的上下文管理(Cell-based Context Management)
    1. 输入:变量引用和单元格内容(Python/SQL)
    2. DAG构建模块处理输入,生成DAG
    3. 用户查询触发遍历DAG,进行修剪
    4. 从共享缓冲区检索信息
    5. 生成上下文(原始单元格和信息单元)
    6. 代理使用上下文完成任务

3.3 Chat2DB

产品分析:https://www.cnblogs.com/mq0036/p/1

优点

  • 开箱即用:操作简单,非常适合非技术人员
  • 企业安全:支持端到端加密和权限管理,满足金融、医疗等领域数据合规问题
  • 多数据源集成:兼容传统数据库和文件格式,避免数据孤岛问题
  • 轻量化部署:相比需要独立服务器的Oracle等传统数据库,Chat2DB可能支持云服务器或个人电脑部署,降低运维成本

缺点

  • 复杂查询效果不好,再加上缺少丰富的元数据支持,很难达到用户想要的成果,这也是text2sql的难题
  • 使用的是传统大模型,就会出现在特定场景下语义理解偏差,即大模型没有经过微调
  • 面对高并发场景和大规模数据集时,性能受限
    适用场景
  • 企业内部数据分析:适合快速生成报表的团队
  • 作为传统数据库的补充工具:比如sql语句优化,快速理解表结构等
  • 适用于简单的数据库

四 论文解读

4.1 基于深度学习的自然语言文本到SQL查询转换:综述

文章主要回顾了近年来在自然语言文本到SQL查询转换(TEXT2SQL)领域的研究进展,重点关注深度学习技术在其中的应用。 文章首先阐述了TEXT2SQL技术的背景和意义,指出其在数据驱动决策时代的重要性,以及为非技术用户提供便捷数据访问的潜力。然而,由于不同研究使用的数据集存在差异,以及缺乏对模型局限性的深入理解,现有的TEXT2SQL模型在实际应用中仍然面临挑战。 文章随后对24种近年来研究的神经网络模型进行了综述,包括卷积神经网络、循环神经网络、指针网络、强化学习、生成模型等。同时,文章也概述了11个广泛用于TEXT2SQL技术模型训练的数据集。 最后,文章探讨了TEXT2SQL技术的未来应用可能性,例如无缝数据查询、辅助非技术用户等。 重要亮点

  • TEXT2SQL技术旨在通过自然语言与数据库交互,为用户提供便捷的数据访问方式。
  • 深度学习技术在TEXT2SQL领域取得了显著进展,但仍存在数据集差异和模型局限性等问题。
  • 文章综述了24种近年来研究的神经网络模型,包括卷积神经网络、循环神经网络、指针网络、强化学习、生成模型等。
  • 文章概述了11个广泛用于TEXT2SQL技术模型训练的数据集。
  • TEXT2SQL技术具有广泛的应用前景,例如无缝数据查询、辅助非技术用户等。

链接:https://arxiv.org/pdf/2208.04415

4.2 自然语言到SQL的黎明:我们是否完全准备好?

简介
从上面的“基于深度学习的自然语言文本到SQL查询转换:综述”,我们大致了解了TEXT2SQL发展历程,而本综述讲大语言模型这种新范式引入到TEXT2SQL中,增强了性能,那该如何对其进行评估,应用到生产,是一个主要问题,于是提出了NL2SQL360评估框架。

亮点

  • NL2SQL360评估框架:为了评估NL2SQL技术的性能,作者提出了NL2SQL360评估框架,该框架可以从多个角度评估NL2SQL方法,包括数据域、SQL特性等。
  • NL2SQL方法比较:通过NL2SQL360评估框架,作者对多种NL2SQL方法进行了比较,并分析了它们在不同场景下的表现。
  • NL2SQL设计空间探索:作者利用NL2SQL360评估框架,探索了NL2SQL设计空间,并自动识别了针对特定用户需求的最佳NL2SQL解决方案。
  • SuperSQL方法:在Spider数据集上,SuperSQL方法在执行精度指标上表现出色,取得了87%的执行精度。

链接: https://arxiv.org/html/2406.01265

参考

DataLab: A Unified Platform for LLM-Powered Business Intelligence
A survey on deep learning approaches for text-to-SQL
业界顶尖排行榜、权威测评数据集及LLM大模型(Spider vs BIRD)全面对比优劣分析[Text2SQL、Text2DSL]
The Dawn of Natural Language to SQL: Are We Fully Ready?
A Survey of NL2SQL with Large Language Models: Where are we, and where are we going?
霖梓控股Doris×ChatBI落地实践

相关文章:

NL2SQL调研

一 背景 1.1 引言 随着数据时代的到来,数据库已成为企业和组织存储、管理和分析数据的核心基础设施。然而,传统的数据库查询需要使用结构化查询语言(SQL),这要求用户具备特定的技术知识,限制了数据库的广…...

服务器ubuntu镜像磁盘空间怎么管理

在 Ubuntu 服务器上,管理镜像磁盘空间是系统维护中的一项关键任务,尤其是在使用虚拟化技术时(如 Docker、LVM、KVM 等)。合理管理磁盘空间可以有效防止磁盘空间不足,提升系统的稳定性和性能。本文将为你介绍如何在 Ubuntu 系统中有效管理镜像…...

uniapp+vue3表格样式

<view class"tableMain" v-if"state.use_scope2"><view class"tableBox"><view class"th"><view class"col">站点名称</view><view class"col">站点状态</view><vi…...

QT中的文件操作

C语言中通过fopen/fread/fwrite/fclose进行文件操作 C中通过fstream/>>/<</close进行文件操作 Linux中通过open/read/write/clos进行文件操作 Qt中同样可以使用上述文件操作 但是Qt同样封装了自己的一套文件操作&#xff0c;&#xff0c;在编写Qt程序时&#xf…...

Vue.js 核心特性解析:响应式原理与组合式API实践

引言 Vue.js 作为一款渐进式前端框架&#xff0c;凭借其简洁的API设计和灵活的组件化开发模式&#xff0c;已经成为现代Web开发的主流选择之一。本文将深入探讨Vue 3的核心特性&#xff0c;包括响应式系统原理、组合式API的使用以及实际开发中的最佳实践&#xff0c;帮助开发者…...

李沐动手深度学习(pycharm中运行笔记)——07.自动求导

07.自动求导&#xff08;与课程对应&#xff09; 1、导入torch import torch 2、假设我们想对函数 y 2x.Tx&#xff0c;就是 2乘x的内积&#xff0c;关于列向量x求导&#xff0c;也就是4x x torch.arange(4.0) # &#xff08;1&#xff09;创建一个列向量 x print("…...

Maven 使用教程

Maven 使用教程 Maven 是一个强大的项目管理和构建工具&#xff0c;主要用于 Java 项目的开发。它通过定义良好的生命周期、插件系统和依赖管理简化了项目的构建过程。本文将详细介绍如何使用 Maven 来进行日常的开发工作。 安装 Maven 下载 Maven 访问 Maven 的官方网站&a…...

ACM会议模板设置单排作者数量

在准备ACM会议的ready版本时涉及到作者设置&#xff0c;ACM会议模板的默认设置是每排三个作者&#xff0c;但是修改为四个一般是可以允许的&#xff0c;可能会节省一些空间。只需要在\documentclass[sigconf,authordraft]{acmart}后面添加代码\settopmatter{authorsperrow4}&am…...

云原生 | K8S中数据存储之StorageClass

在一个大规模的Kubernetes集群里,可能有成千上万个PVC,这就意味着运维人员必须实现创建出这个多个 PV,此外,随着项目的需要,会有新的PVC不断被提交,那么运维人员就需要不断的添加新的,满足要求的PV,否 则新的Pod就会因为PVC绑定不到PV而导致创建失败。而且通过 PVC 请求到一定的…...

衡量矩阵数值稳定性的关键指标:矩阵的条件数

文章目录 1. 定义2. 为什么要定义条件数&#xff1f;2.1 分析线性系统 A ( x Δ x ) b Δ b A(x \Delta x) b \Delta b A(xΔx)bΔb2.2 分析线性系统 ( A Δ A ) ( x Δ x ) b (A \Delta A)(x \Delta x) b (AΔA)(xΔx)b2.3 定义矩阵的条件数 3. 性质及几何意义3…...

蓝桥杯 1. 确定字符串是否包含唯一字符

确定字符串是否包含唯一字符 原题目链接 题目描述 实现一个算法来识别一个字符串的字符是否是唯一的&#xff08;忽略字母大小写&#xff09;。 若唯一&#xff0c;则输出 YES&#xff0c;否则输出 NO。 输入描述 输入一行字符串&#xff0c;长度不超过 100。 输出描述 输…...

【Vue】单元测试(Jest/Vue Test Utils)

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Vue 文章目录 1. Vue 单元测试简介1.1 为什么需要单元测试1.2 测试工具介绍 2. 环境搭建2.1 安装依赖2.2 配置 Jest 3. 编写第一个测试3.1 组件示例3.2 编写测试用例3.3 运行测试 4. Vue Test Utils 核心 API4.1 挂载组件4.2 常…...

查回来的数据除了 id,其他字段都是 null

数据结构不完整&#xff1a;您收到的历史对话和知识库文件数据中&#xff0c;几乎所有重要的字段&#xff08;除了id和title&#xff09;都是null&#xff0c;包括userId、createdTime等关键字段。这会导致前端无法根据创建时间来正确分类显示&#xff08;今天、7天内、更早&am…...

Flink02-学习-套接字分词

flatmap() AMapFunction仅适用于执行一对一转换的情况&#xff1a;对于每个进入的流元素&#xff0c;map()都会发出一个转换后的元素。否则&#xff0c;您需要使用 flatmap() DataStream<TaxiRide> rides env.addSource(new TaxiRideSource(...));DataStream<Enric…...

html5:从零构建经典游戏-扫雷游戏

扫雷是Windows系统自带的经典游戏&#xff0c;陪伴了许多人的童年。 本文将详细解析一个用HTML、CSS和JavaScript实现的扫雷游戏代码&#xff0c;带你了解其背后的实现原理。 游戏概述 这个扫雷游戏实现包含以下核心功能&#xff1a; 1010的游戏棋盘 15个随机分布的地雷 左…...

SVT-AV1源码分析-函数svt_aom_motion_estimation_kernel

一 svt_aom_motion_estimation_kernel函数作用 这段代码是EBSDK 中的一个运动估计 内核函数&#xff0c;用于处理视频编码中的运动估计任务。运动估计任务。运动估计是视频编码中的一个关键步骤&#xff0c;目的是在时间域上找到当前块在参考帧中的最佳匹配块&#xff0c;从而减…...

考研系列-计算机组成原理第六章、总线

一、总线概述 1.总线的基本概念 2.总线的分类 (1)按照传输格式 并行总线的传输速度并不一定比串行总线快,因为并行总线之间存在干扰,不能太快。 (2)按照总线功能 片内总线、系统总线、IO总线、通信总线...

HTML基础完全解析

一、HTML基本结构解析 1.1 文档骨架 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>文档标题</title> </head> <body>页面主体内容 </body> </html> &#x1f3…...

【读写视频】MATLAB详细代码

MATLAB将视频逐帧输出 在MATLAB中&#xff0c;可以使用VideoReader和imwrite函数将视频逐帧输出为图像文件。以下是具体步骤和示例代码&#xff1a; 读取视频并逐帧保存为图像 首先&#xff0c;使用VideoReader函数读取视频文件&#xff0c;然后使用read函数逐帧读取视频&am…...

NCCL 通信与调试

代码仓库 https://github.com/NVIDIA/nccl-tests 代码编译 编译 nccl-tests (MPI 版本): ” 编译支持 MPI 的 nccl-tests 是整合 nvcc, mpicc 和 NCCL 库的关键步骤 初始编译命令 (基于 README): cd /path/to/your/nccl-tests # 进入源码目录 make clean make MPI1 CUDA_HO…...

Linux 在个人家目录下添加环境变量 如FLINK_PROPERTIES=“jobmanager.rpc.address: jobmanager“

问题&#xff1a; Docker Flink Application Mode 命令行形式部署前&#xff0c;需要在Linux执行以下&#xff1a; $ FLINK_PROPERTIES"jobmanager.rpc.address: jobmanager" $ docker network create flink-network 临时变量只在当前session会话窗口生效&#xf…...

Linux中线程池的简单实现 -- 线程安全的日志模块,策略模式,线程池的封装设计,单例模式,饿汉式单例模式,懒汉式单例模式

目录 1. 对线程池的理解 1.1 基本概念 1.2 工作原理 1.3 线程池的优点 2. 日志与策略模式 2.1 日志认识 2.2 策略模式 2.2.1 策略模式的概念 2.2.2 工作原理 2.2 自定义日志系统的实现 3. 线程池设计 3.1 简单线程池的设计 3.2 线程安全的单例模式线程池的设计 3…...

【Web API系列】深入解析 Web Service Worker 中的 WindowClient 接口:原理、实践与进阶应用

前言 在现代 Web 开发领域中&#xff0c;Service Worker 技术已成为构建离线优先应用和实现高级缓存策略的核心支柱。作为 Service Worker API 体系中的重要组成部分&#xff0c;WindowClient 接口为开发者提供了对受控客户端窗口的精准控制能力。本文将从实际工程实践的角度出…...

哈希封装unordered_map和unordered_set的模拟实现

文章目录 &#xff08;一&#xff09;认识unordered_map和unordered_set&#xff08;二&#xff09;模拟实现unordered_map和unordered_set2.1 实现出复用哈希表的框架2.2 迭代器iterator的实现思路分析2.3 unordered_map支持[] &#xff08;三&#xff09;结束语 &#xff08;…...

智诚科技苏州SOLIDWORKS授权代理商的卓越之选

在当今数字化转型浪潮中&#xff0c;SOLIDWORKS软件以其强大的功能和广泛的行业应用&#xff0c;成为企业迈向智能制造的有力工具。它不仅提供直观的3D建模环境&#xff0c;帮助企业设计师快速创建精准的3D模型&#xff0c;还涵盖了从概念设计到详细设计、从样品制作到最终产品…...

【网络原理】从零开始深入理解TCP的各项特性和机制.(二)

本篇博客给大家带来的是TCP/IP原理的知识点,重点以TCP为主,接续上篇. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; …...

51单片机所有寄存器介绍

51单片机所有寄存器介绍 作者将狼才鲸创建日期2025-04-27 参考资料&#xff1a;Intel官方《MCS-51 Programmer’s Guide and Instruction Set.pdf》CSDN阅读地址&#xff1a;51单片机所有寄存器介绍 一、前言 51单片机的寄存器和ARM不一样&#xff0c;有自己专有的名称&…...

4.27算法题

力扣649.Dota2 参议院 649. Dota2 参议院 Dota2 的世界里有两个阵营&#xff1a;Radiant&#xff08;天辉&#xff09;和 Dire&#xff08;夜魇&#xff09; Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程…...

衡石科技:HENGSHI SENSE 数据权限解决方案

编写目的​ 本方案主要讲述 HENGSHI SENSE 的数据权限方案&#xff0c;即在 HENGSHI SENSE 系统中&#xff0c;通过同步企业内部的人员属性和组织架构等信息&#xff0c;实现企业内部的每一个用户对于业务数据的读取权限。 本方案的的预期读者为&#xff1a;HENGSHI SENSE 的…...

矩阵系统源码搭建热门音乐功能板块开发,支持OEM

在数字音乐蓬勃发展的当下&#xff0c;矩阵系统中的热门音乐功能板块成为吸引用户的重要部分。它不仅能为用户推荐当下流行的音乐&#xff0c;还能提升用户在系统中的活跃度和留存率。本文将通过详细的源码搭建过程&#xff0c;带你了解如何在矩阵系统中实现一个功能完备的热门…...

深入理解Android Activity生命周期

引言 在Android开发中,理解Activity的生命周期对于创建高效、稳定的应用程序至关重要。无论你是初学者还是资深开发者,掌握Activity生命周期的概念都能帮助你更好地管理资源、优化性能以及处理各种用户交互场景。本文将详细介绍Activity生命周期中的各个事件,并通过示例代码…...

【WEB3】web3.0是什么

互联网在不断发展。 我们即将翻开新的篇章&#xff0c;迎来翻天覆地的变化。 — Web 1.0 只能阅读信息。 它主要是供我们访问和阅读信息&#xff0c;只有极少数人可以真正发布内容。 — Web 2.0&#xff0c;即互联网目前所处的阶段&#xff0c;我们能够在网络上发布内容、建立…...

2025上海车展 | 移远通信重磅发布AR脚踢毫米波雷达,重新定义“无接触交互”尾门

4月25日&#xff0c;在2025上海国际汽车工业展览会期间&#xff0c;全球领先的物联网和车联网整体解决方案供应商移远通信宣布&#xff0c;其全新AR脚踢毫米波雷达RD7702AC正式发布。 该产品专为汽车尾门“无接触交互”设计&#xff0c;基于先进的毫米波技术&#xff0c;融合AR…...

ubuntu安装git及使用(本地git)

ubuntu安装git及使用教程&#xff08;本地git&#xff09; 1.ubuntu安装git1.1 查看自己的Ubuntu是否已经装有git1.2 下面进行介绍如何Ubuntu终端安装git &#xff08;若已安装则可忽略&#xff09; 2. 配置Git基本信息2.1 若不清楚是否配置的可使用如下命令查看2.2 未配置用户…...

数智读书笔记系列031《HIS内核设计之道——医院信息系统规划设计系统思维》书籍简介与读书笔记

一、作者与出版信息 作者团队(核心贡献者) 任连仲 身份:中国工程院院士(2022年当选),解放军总医院信息科原主任技术贡献: 主导“军字一号”系统架构设计(1997-2005年),支撑全国300余家三甲医院信息化建设提出“医疗数据语义网格”理论,获国家科技进步二等奖(2018年…...

WinForm真入门(18)——DateTimePicker‌控件解析

一、基本概念‌ ‌DateTimePicker‌ 是 Windows 窗体中用于选择日期和时间的控件&#xff0c;支持以下交互方式&#xff1a; 通过下拉日历选择日期通过上下按钮调整时间直接输入日期或时间 适用于需要规范日期格式、限制日期范围或快速输入的场景&#xff08;如预约系统、数据…...

关于堆栈指针的那些事 | bootloader 如何跳转app

问题描述 堆栈指针的值通常存储在 App 的向量表&#xff08;Vector Table&#xff09;的第一个位置&#xff08;0x08002000&#xff09;&#xff0c;为什么&#xff1f; 在嵌入式系统中&#xff0c;堆栈指针&#xff08;SP&#xff09;的值存储在应用程序&#xff08;App&…...

如何在 iPhone 上恢复已删除的联系人:简短指南

从 iPhone 中删除联系人相当容易&#xff0c;但如果您不小心删除了错误的联系人或丢失了所有联系人怎么办&#xff1f;这可能是任何智能手机用户都可能发生的最糟糕的噩梦之一。 如何在 iPhone 上恢复已删除的联系人 我个人在我的列表上看到几个用户发布关于他们如何丢失所有联…...

使用Aspose.Words将Word转换为HTML时,字体样式丢失问题及解决方法

使用Aspose.Words将Word转换为HTML时&#xff0c;字体样式丢失问题及解决方法 引言 ✨一、问题描述 &#x1f4c9;二、问题分析 &#x1f50d;三、解决方案 &#x1f6e0;️四、总结 &#x1f3c1; 引言 ✨ 在实际开发中&#xff0c;使用Aspose.Words将Word文档转换为HTML格式…...

更快的图像局部修改与可控生成:Flex.2-preview

Flex.2-preview 文本生成图像扩散模型介绍 一、模型简介 Flex.2-preview 是一种 开源的 80 亿参数文本生成图像扩散模型&#xff0c;具备通用控制和修复支持功能&#xff0c;是 Flex.1alpha 的下一代版本。该模型由社区开发并为社区服务&#xff0c;采用 Apache 2.0 许可证&a…...

汽车制造行业如何在数字化转型中抓住机遇?

近年来&#xff0c;随着新一轮科技革命和产业变革的深入推进&#xff0c;汽车制造行业正迎来一场前所未有的数字化转型浪潮。无论是传统车企还是新势力品牌&#xff0c;都在积极探索如何通过数字化技术提升竞争力、开拓新市场。那么&#xff0c;在这场变革中&#xff0c;汽车制…...

数据可视化 —— 直方图

一、前言 直方图&#xff08;Histogram&#xff09;是一种用柱状图形表示数据分布的统计图表&#xff0c;它将数据划分为连续的区间&#xff08;称为“分箱”或“区间”&#xff09;&#xff0c;统计每个区间内的数据频数&#xff08;或频率&#xff09;&#xff0c;并用柱形的…...

1、Linux操作系统下,ubuntu22.04版本切换中英文界面

切换中英文界面的方法很多&#xff0c;我也是按照一个能用的方法弄过来并且记录&#xff0c; 1.如果刚开始使用Ubuntu环境&#xff0c;桌面的语言环境为英文&#xff0c;需要安装中文简体的字体包 打开桌面终端&#xff0c;输入 sudo apt install language-pack-zh-hans lan…...

《MySQL 技术内幕-innoDB 存储引擎》笔记

&#x1f4a1; 根据 遗忘曲线&#xff1a;如果没有记录和回顾&#xff0c;6天后便会忘记75%的内容 读书笔记正是帮助你记录和回顾的工具&#xff0c;不必拘泥于形式&#xff0c;其核心是&#xff1a;记录、翻看、思考::: 书名MySQL 技术内幕-innoDB 存储引擎作者姜承尧状态已读…...

C++ AVL树的实现

在上一篇博客我们学习了二叉搜索树的实现&#xff0c;现在我们开始手动实现AVL树。 二叉搜索树-CSDN博客 1.AVL树的概念 AVL树是最先发明的⾃平衡⼆叉查找树&#xff0c;AVL是⼀颗空树&#xff0c;或者具备下列性质的⼆叉搜索树&#xff1a;它的左右⼦树都是AVL树&#xff0c…...

多视觉编码器协同与高低分辨率特征融合技术综述

本文主要介绍&#xff08;论文发表时间&#xff1a;24.03-25.01&#xff09;在多模态中使用多个视觉编码器如何进行特征融合操作&#xff08;之所以用多视觉编码器&#xff0c;主要用途在于&#xff1a;有些视觉编码器可能只能提取到部分信息&#xff0c;就想通过另外一个编码器…...

力扣4-最长公共前缀

一.题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl"示例 2&…...

贪心算法-860.柠檬水找零-力扣(LeetCode)

一、题目解析 我们需要注意我们是没有初始零钱的&#xff0c;所以当第一个顾客支付10或20时&#xff0c;无法找零此时返回false。 二、算法解析 根据贪心算法的解决方式&#xff0c;我们需要先把解决该问题分解为若干步。 首先对于顾客支付的钱共有三种&#xff0c;5&#xf…...

Kubernetes学习笔记-配置Service对接第三方访问

在Kubernetes中配置Service对接第三方访问&#xff0c;可以选择以下方案实现&#xff1a; ExternalName Service&#xff08;基于DNS别名&#xff09;‌ 适用场景‌&#xff1a;外部服务必须有固定域名Service配置文件如下&#xff1a; apiVersion: v1 kind: Service metadata…...

pikachu靶场-敏感信息泄露

一、敏感信息泄露的危害 1. 个人隐私与数据安全 身份盗窃&#xff1a;泄露个人身份信息&#xff08;如姓名、身份证号、手机号&#xff09;可被用于诈骗、冒名开户等犯罪活动。账户劫持&#xff1a;暴露用户账号密码、邮箱等凭证&#xff0c;导致社交媒体、银行账户被非法登录。…...