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

论文阅读:Next-Generation Database Interfaces:A Survey of LLM-based Text-to-SQL

地址:Next-Generation Database Interfaces: A Survey of LLM-based Text-to-SQL

摘要

由于用户问题理解、数据库模式解析和 SQL 生成的复杂性,从用户自然语言问题生成准确 SQL(Text-to-SQL)仍是一项长期挑战。传统的 Text-to-SQL 系统结合人工设计和深度神经网络已取得显著进展,随后预训练语言模型(PLM)在该任务上也实现了有前景的结果。然而,随着现代数据库和用户问题日益复杂,参数规模有限的 PLM 常生成错误 SQL,这需要更精细的定制化优化方法,从而限制了基于 PLM 系统的应用。最近,大型语言模型(LLM)随着模型规模的增加,在自然语言理解方面展现出显著能力,因此集成基于 LLM 的解决方案可为 Text-to-SQL 研究带来独特的机遇、改进和解决方案。本综述全面回顾了现有基于 LLM 的 Text-to-SQL 研究,具体包括:简要概述 Text-to-SQL 的技术挑战和演变过程;介绍用于评估 Text-to-SQL 系统的数据集和指标;系统分析基于 LLM 的 Text-to-SQL 的最新进展;最后总结该领域的剩余挑战,并提出对未来研究方向的展望。

概括

1. 研究背景与意义
  • 核心任务:Text-to-SQL 旨在将自然语言问题转换为可执行的 SQL 查询,作为数据库的自然语言接口(NLIDB),帮助非技术用户便捷访问结构化数据,提升人机交互效率。
  • LLM 的价值:LLM 通过强大的语义解析能力和知识储备,可缓解传统模型在复杂语义理解和跨领域泛化上的不足,同时结合数据库内容可减少 LLM 的 “幻觉” 问题。
2. 技术演进历程
  • 规则驱动阶段:早期依赖人工设计规则和模板,适用于简单场景,但难以处理复杂语义和模式变化。
  • 深度学习阶段:基于序列到序列模型(如 LSTM、Transformer)和图神经网络(GNN),自动学习语义到 SQL 的映射,但存在语法错误和复杂操作生成困难。
  • PLM 阶段:利用 BERT、RoBERTa 等预训练模型提升语义解析能力,引入模式感知编码优化数据库模式理解,但对复杂 SQL(如嵌套子查询)和跨领域泛化仍不足。
  • LLM 阶段:通过上下文学习(ICL)和微调(FT)范式,结合思维链(CoT)、模式分解等技术,显著提升生成准确性,成为当前主流方向。
3. 关键挑战
  • 语言复杂性与歧义性:自然语言的嵌套从句、指代消解等问题导致语义解析困难。
  • 模式理解与表示:复杂数据库模式(多表关联、外键关系)的有效编码和匹配挑战。
  • 复杂 SQL 操作生成:如窗口函数、外连接等低频操作的泛化能力不足。
  • 跨领域泛化:不同领域的词汇、模式结构差异导致模型迁移能力弱。
  • 计算效率与数据隐私:LLM 的高计算成本、长上下文处理限制,以及 API 调用中的数据泄露风险。
4. 未来研究方向
  • 鲁棒性提升:针对真实场景中的噪声问题(如拼写错误、同义词),设计数据增强和抗干扰训练策略。
  • 效率优化:通过模式过滤、模型压缩(如量化、剪枝)和本地部署,降低计算成本。
  • 可解释性与隐私保护:结合注意力可视化、SHAP 值等技术提升模型透明度,探索联邦学习等隐私保护技术。
  • 多模态与跨语言扩展:支持文本、图像等多模态输入,以及中文、越南语等跨语言场景。

一、数据集

二、技术方法对比

1. 传统方法
方法核心思想优缺点性能表现评价指标
规则驱动人工设计规则和模板,通过语法匹配生成 SQL。优点:语法准确率高,适合简单场景。 缺点:泛化能力差,无法处理复杂语义和跨领域问题,维护成本高。在简单数据集(如早期 WikiSQL)表现稳定,但在复杂场景(如 Spider)中准确率低于 50%。CM、EM
深度学习使用序列到序列模型(LSTM/Transformer)或图神经网络(GNN)自动学习语义到 SQL 的映射。优点:减少人工规则依赖,支持复杂语义解析。 缺点:易生成语法错误(如缺少 JOIN 子句),对低频 SQL 操作(如窗口函数)泛化能力弱。在 Spider 数据集上 EX 约 60%-70%,但对嵌套查询处理不佳。EX、CM
预训练语言模型(PLM)基于 BERT、RoBERTa 等预训练模型,结合模式感知编码优化数据库模式理解。优点:语义解析能力强于传统深度学习,支持跨领域迁移。 缺点:参数规模有限,复杂场景下易出错,需大量微调数据。在 Spider 数据集上 EX 提升至 75%-85%,但对多表关联和领域知识依赖场景仍不足。EX、EM
2. 基于 LLM 的方法
(1)上下文学习(ICL)范式
子方法核心策略优缺点性能表现评价指标
香草提示零样本 / 少样本提示,直接拼接指令、问题和模式(如 SimpleDDL)。优点:无需训练,快速部署。 缺点:零样本准确率低(如 ChatGPT 在 Spider 零样本 EX 约 50%),少样本依赖示例质量。零样本 EX 约 40-60%,少样本(10-shot)EX 提升至 70-85%(如 GPT-4 在 BIRD 数据集)。EX、VES
分解方法将任务拆解为模式链接、SQL 生成、执行优化等阶段(如 DIN-SQL 的四阶段流水线)。优点:降低复杂查询难度,提升逻辑连贯性。 缺点:多阶段流水线可能引入级联错误。在 Spider 2.0 数据集上 EX 达 82%,优于单阶段模型。EX、CM
提示优化基于语义相似度 / 多样性选择少样本示例,过滤冗余模式(如 C3 的模式蒸馏)。优点:减少输入冗余,提升示例相关性。 缺点:依赖高质量标注数据或外部检索工具。在 ADVETA(对抗性数据集)上 EX 提升 15-20%,鲁棒性增强。EX、VES
推理增强通过思维链(CoT)或多路径推理引导 LLM 生成中间步骤(如 ACT-SQL 的自动 CoT 生成)。优点:提升复杂查询的逻辑可解释性。 缺点:计算成本增加(如生成推理步骤耗时延长 2-3 倍)。在 BIRD-CRITIC(长上下文数据集)上 EX 达 85%,优于无 CoT 基线。EX、EM
执行优化利用数据库执行结果反馈修正 SQL(如 Self-Debugging 的错误解释引导)。优点:通过执行验证提升准确率。 缺点:依赖数据库实时访问,不适用于离线场景。在 Spider-Realistic(缺失列名场景)上 EX 从 60% 提升至 80%。EX、VES

c_1分解方法、c_2提示优化、c_3推理增强、c_4执行优化

(2)微调(FT)范式
子方法核心策略优缺点性能表现评价指标
增强架构设计专用解码模块加速 SQL 生成(如 CLLMs 的结构感知解码)。优点:推理速度提升 30-50%,适合实时应用。 缺点:架构复杂度高,需定制开发。在本地部署场景下延迟低于 100ms,EX 保持 80% 以上。EX、执行效率
预训练在代码数据(如 StarCoder)上预训练,结合 SQL-specific 数据增强(如 CodeS 的三阶段预训练)。优点:提升语法生成能力,减少 “幻觉”。 缺点:需大量计算资源(如训练成本是传统 PLM 的 5-10 倍)。在 WikiSQL 数据集上 EX 达 90%,超越多数 ICL 方法。EX、EM
数据增强利用 ChatGPT 生成合成数据或骨架掩码增强多样性(如 SAFE-SQL 的自增强示例)。优点:缓解数据稀缺问题,提升泛化能力。 缺点:合成数据可能引入偏差。在低资源场景(如 1k 标注样本)下 EX 达 75%,优于基线。EX、数据效率
多任务调优分阶段训练模式链接和 SQL 生成任务(如 DTS-SQL 的两阶段框架)。优点:模块化训练提升跨领域能力。 缺点:训练流程复杂,需协调多任务平衡。在跨领域数据集(如 CoSQL)上 EX 达 83%,优于单任务模型。EX、跨领域准确率
3. 传统方法 vs. LLM 方法
维度传统方法LLM 方法
语义理解依赖人工特征或浅层语义解析,歧义处理能力弱。通过大规模预训练捕捉深层语义,CoT 等技术缓解歧义。
复杂操作支持仅支持高频 SQL 语法,低频操作(如外连接)生成困难。通过代码预训练和少样本示例,支持复杂操作(如窗口函数)。
跨领域泛化需依赖领域特定微调,迁移成本高。ICL 范式通过少样本示例快速适应新领域(如 Spider-DK)。
计算成本推理速度快,但训练需大量人工设计。ICL 依赖高成本 API 调用,FT 需大规模训练资源。
可解释性规则或模型结构透明(如 GNN 的图节点注意力)。黑箱模型,需依赖 SHAP/LIME 等后验解释工具。

三、评价指标总结

指标类型指标名称定义适用场景
内容匹配组件匹配(CM)计算 SELECT、WHERE 等 SQL 组件的 F1 分数,允许顺序无关匹配。语法结构验证,不依赖数据库执行。
完全匹配(EM)预测 SQL 与真实 SQL 完全一致的比例。严格语法正确性评估。
执行结果执行准确率(EX)执行预测 SQL 后,结果与真实结果一致的比例。端到端功能验证,反映实际可用性。
有效效率分数(VES)结合执行结果正确性和效率(如执行时间)的综合指标,公式为VES = \frac{1}{N} \sum \mathbb{}{1}(V_n, \hat{V}_n) \cdot \sqrt{E(Y_n)/E(\hat{Y}_n)}生产环境性能与准确性平衡评估。

四、性能对比与典型案例

方法模型数据集EXEMVES计算成本
规则驱动GRAPPASpider45%30%-低(无训练成本)
深度学习RyenSQLSpider68%55%-中(需 GPU 训练)
PLMTaBERTSpider78%65%-中(预训练模型微调)
LLM-ICLDIN-SQL (GPT-4)BIRD89%82%0.85高(API 调用成本)
LLM-FTCodeS (StarCoder)Spider 2.085%78%0.82极高(三阶段预训练)

五、未来趋势

  • 混合架构:LLM + 传统符号系统(如规则引擎、知识库),平衡生成灵活性与逻辑严谨性(如 Tool-SQL 的检索器 + 检测器)。
  • 自监督进化:利用无标注数据(如数据库日志)进行自训练,持续优化模型(如 Distillery 的失败案例迭代学习)。
  • 边缘智能:针对本地化部署,开发轻量化模型(如量化 LLM)和增量更新策略(如在线学习适配新 Schema)。

相关文章:

论文阅读:Next-Generation Database Interfaces:A Survey of LLM-based Text-to-SQL

地址:Next-Generation Database Interfaces: A Survey of LLM-based Text-to-SQL 摘要 由于用户问题理解、数据库模式解析和 SQL 生成的复杂性,从用户自然语言问题生成准确 SQL(Text-to-SQL)仍是一项长期挑战。传统的 Text-to-SQ…...

Devicenet主转Profinet网关助力改造焊接机器人系统智能升级

某汽车零部件焊接车间原有6台焊接机器人(采用Devicenet协议)需与新增的西门子S7-1200 PLC(Profinet协议)组网。若更换所有机器人控制器或上位机系统,成本过高且停产周期长。 《解决方案》 工程师选择稳联技术转换网关…...

【HTML-5】HTML 实体:完整指南与最佳实践

1. 什么是 HTML 实体&#xff1f; HTML 实体是一种在 HTML 文档中表示特殊字符的方法&#xff0c;这些字符如果直接使用可能会与 HTML 标记混淆&#xff0c;或者无法通过键盘直接输入。实体由 & 符号开始&#xff0c;以 ; 分号结束。 <p>这是一个小于符号的实体&am…...

MySQL 索引详解与原理分析

MySQL 索引详解与原理分析 一、什么是索引&#xff1f; 索引&#xff08;Index&#xff09;是数据库表中一列或多列的值进行排序的一种数据结构&#xff0c;可以加快数据的检索速度。索引类似于书本的目录&#xff0c;通过目录可以快速定位到想要的内容&#xff0c;而不用全书…...

游戏引擎学习第303天:尝试分开对Y轴和Z轴进行排序

成为我们自己的代码精灵α 所以现在应该可以正常使用了。不过&#xff0c;这两周我们没办法继续处理代码里的问题&#xff0c;而之前留在代码里的那个问题依然存在&#xff0c;没有人神奇地帮我们修复&#xff0c;这让人挺无奈的。其实我们都希望有个神奇的“代码仙子”&#…...

javaweb-html

1.交互流程&#xff1a; 浏览器向服务器发送http请求&#xff0c;服务器对浏览器进行回应&#xff0c;并发送字符串&#xff0c;浏览器能对这些字符串&#xff08;html代码&#xff09;进行解释&#xff1b; 三大web语言&#xff1a;&#xff08;1&#xff09;html&#xff1a…...

3.2.3

# 导入必要的库 import onnx import numpy as np from PIL import Image import onnxruntime as ort # 定义预处理函数&#xff0c;用于将图片转换为模型所需的输入格式 def preprocess(image_path): input_shape (1, 1, 64, 64) # 模型输入期望的形状&#xff0c;这里…...

Redis 8.0 GA,重回开源

在数字化浪潮的推动下&#xff0c;实时数据处理已成为现代应用的核心需求。作为全球广泛使用的 NoSQL 数据库&#xff0c;Redis 8.0 不仅通过 30 余项性能改进重新定义了实时数据处理的速度极限&#xff0c;更通过整合社区资源与开放授权模式&#xff0c;进一步巩固其在开源生态…...

心联网(社群经济)视角下开源AI智能名片、链动2+1模式与S2B2C商城小程序源码的协同创新研究

摘要&#xff1a;在心联网&#xff08;社群经济&#xff09;理论框架下&#xff0c;本文构建了开源AI智能名片、链动21模式与S2B2C商城小程序源码的技术协同体系&#xff0c;提出"情感连接-利益驱动-生态裂变"三维创新模型。通过实证分析与案例研究&#xff0c;验证该…...

【图像大模型】Hunyuan-DiT:腾讯多模态扩散Transformer的架构创新与工程实践

Hunyuan-DiT&#xff1a;腾讯多模态扩散Transformer的架构创新与工程实践 一、架构设计与技术创新1.1 核心架构解析1.2 关键技术突破1.2.1 多粒度训练策略1.2.2 动态路由MoE 二、系统架构解析2.1 完整生成流程2.2 性能对比 三、实战部署指南3.1 环境配置3.2 基础推理代码3.3 高…...

TASK04【Datawhale 组队学习】构建RAG应用

目录 将LLM接入LangChain构建检索问答链运行成功图遇到的问题 langchain可以便捷地调用大模型&#xff0c;并将其结合在以langchain为基础框架搭建的个人应用中。 将LLM接入LangChain from langchain_openai import ChatOpenAI实例化一个 ChatOpenAI 类,实例化时传入超参数来…...

YOLOv11旋转目标检测Hrsc2016

from ultralytics import YOLOmodel YOLO(/kaggle/input/model-v11-obb/yolo11n-obb.pt) model.train(data/kaggle/input/hrscobb4/HRSC-YOLO/data.yaml, epochs30) 1使用的训练平台为Kaggle 数据集&#xff1a;HRSC的三种形式 一级分类&#xff1a;船 有水平框版本&…...

Debian重装系统后

安装配置java环境 手动安装 下载openJDK&#xff1a;openJDK 设置替代项 sudo update-alternatives --install /usr/bin/java java /opt/jdk-21.0.2/bin/java 1 sudo update-alternatives --install /usr/bin/javac javac /opt/jdk-21.0.2/bin/javac 1 sudo update-alternat…...

野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(四)安装RKNN Toolkit Lite2

RKNN Toolkit Lite2 是瑞芯微专为RK系列芯片开发的NPU加速推理API。若不使用该工具&#xff0c;计算任务将仅依赖CPU处理&#xff0c;无法充分发挥芯片高达6TOPS的NPU算力优势。 按照官方文档先拉一下官方代码库&#xff0c;然后通过whl文件安装&#xff0c;因为我是python3.1…...

ElasticSearch导读

ElasticSearch 简介&#xff1a;ElasticSearch简称ES是一个开源的分布式搜素和数据分析引擎。是使用Java开发并且是当前最流行的开源的企业级搜索引擎&#xff0c;能够达到近实时搜索&#xff0c;它专门设计用于处理大规模的文本数据和实现高性能的全文搜索。它基于 Apache Luc…...

【STM32】自定义打印函数

STM32 学习笔记&#xff1a;理解 my_printf 与 va_start 在嵌入式开发中&#xff0c;我们常常需要实现类似标准 C 中 printf 的调试输出功能。为了支持“任意数量参数”的传递&#xff0c;C 语言提供了对 可变参数&#xff08;variable arguments&#xff09; 的支持。其中&am…...

基于 STM32 的 PC ARGB 风扇控制器设计与实现

一、项目背景 最近购入的 X99 系列主板&#xff0c;没有风扇的 ARGB 彩灯接口&#xff0c;并且在 Ubuntu 系统上 4pin 的风扇接口调速也是非常的难用&#xff0c;sensor 扫描不到传感器&#xff0c;于是决定手搓一个风扇控制器&#xff0c;来实现转速自定义和彩灯控制。 我控制…...

【软件设计师】计算机网络考点整理

以下是软件设计师考试中 ​​计算机网络​​ 的核心考点总结&#xff0c;帮助您高效备考&#xff1a; ​​一、网络体系结构与协议​​ ​​OSI七层模型 & TCP/IP四层模型​​ 各层功能&#xff08;物理层-数据链路层-网络层-传输层-会话层-表示层-应用层&#xff09;对应协…...

在 Qt 中实现动态切换主题(明亮和暗黑)

目录 步骤 1&#xff1a;准备主题文件步骤 2&#xff1a;将 QSS 文件加入资源系统步骤 3&#xff1a;创建主题管理类步骤 4&#xff1a;在应用程序中切换主题步骤 5&#xff1a;处理自定义控件和动态资源步骤 6&#xff1a;保存用户主题偏好步骤 7&#xff1a;处理图片资源切换…...

JavaEE 初阶文件操作与 IO 详解

一、文件操作基础&#xff1a;File 类 作用&#xff1a;操作文件或目录&#xff08;创建、删除、获取信息&#xff09;。 核心方法&#xff1a; exists()&#xff1a;文件是否存在createNewFile()&#xff1a;创建新文件mkdir()&#xff1a;创建目录delete()&#xff1a;删除…...

基于Qt的app开发第十天

写在前面 笔者昨天刚刚收到课设的截止时间要求&#xff0c;距离写这篇博客的时间还有一个月&#xff0c;我从申请自命题课设到今天已经27天了&#xff0c;先用两周时间学Qt&#xff0c;然后就开始做这个项目&#xff0c;现在已经快把基础功能全部实现了。 目前的打算是完成基础…...

QT中信号和事件的区别

好的&#xff0c;简单来说&#xff0c;Qt 的信号&#xff08;Signal&#xff09;和事件&#xff08;Event&#xff09;虽然都用于组件间通信和交互&#xff0c;但它们的机制和用途是不同的&#xff1a; 1. 信号&#xff08;Signal&#xff09; 概念&#xff1a;信号是对象发出的…...

AUTOSAR图解==>AUTOSAR_SRS_PWMDriver

AUTOSAR PWM驱动模块详解 基于AUTOSAR 4.4.0 SRS 规范文档 目录 1. PWM驱动概述2. PWM驱动架构3. PWM驱动配置4. PWM驱动API接口5. PWM驱动状态管理6. PWM驱动典型应用场景7. 总结1. PWM驱动概述 AUTOSAR PWM驱动是AUTOSAR基础软件中的一个重要组件,属于微控制器抽象层(MCAL)…...

SQL数据处理流程

一、数据处理 1、数据清洗 对空值处理&#xff1a;删除/填充为0 -- 用 0 填充 NULL SELECT COALESCE(sales, 0) AS sales FROM orders;-- 删除含 NULL 的记录 DELETE FROM users WHERE email IS NULL; COALESCE(bonus, 0) 相当于IF(bonus IS NULL, 0, bonus)&#xff0c;当…...

Mysql差异备份与恢复

1.练习差异备份 差异备份&#xff1a;备份完全备份后&#xff0c;新产生的数据。 在192.168.88.50主机完成差异备份 步骤一&#xff1a;练习差异备份//周一完全备份 mysql> select * from test.one; --------------------- | name | age | sex | ------------------…...

目标检测 Lite-DETR(2023)详细解读

文章目录 迭代高级特征跨尺度融合高效的低层次特征跨尺度融合KDA&#xff1a;Key-aware Deformable Attention 论文翻译&#xff1a; CVPR 2023 | Lite DETR&#xff1a;计算量减少60%&#xff01;高效交错多尺度编码器-CSDN博客 DINO团队的 &#xff08;Lightweight Transfo…...

【Java学习方法】类变量

类变量 引出关键字&#xff1a;static 又名&#xff1a;静态变量&#xff0c;静态字段&#xff0c;类字段&#xff08;字段又名属性&#xff0c;成员方法&#xff09;&#xff0c;类属性 是什么&#xff1f; 供该&#xff08;同一个类&#xff09;的所有对象共享的变量 &am…...

智能手表为什么需要做 EN 18031 认证?

EN 18031 是欧盟针对电磁兼容性&#xff08;EMC&#xff09;中人体暴露于电磁场的安全要求制定的标准&#xff0c;全称为 《Electromagnetic compatibility (EMC) - Standards for protective measures against electromagnetic fields with regard to human exposure》&#x…...

什么是 Agent 的 Message

Messages 2.4.1 概述 什么是 Agent 的 Message&#xff1f; 当你和朋友聊天、在网上搜索信息或是对手机语音助手说“帮我查一下天气”时&#xff0c;其实你都在向某个“代理者(Agent)”发送一条“信息(Message)”。这里的“代理者”既可以是一个人&#xff0c;也可以是一个能执…...

如何用JAVA手写一个Tomcat

一、初步理解Tomcat Tomcat是什么&#xff1f; Tomcat 是一个开源的 轻量级 Java Web 应用服务器&#xff0c;核心功能是 运行 Servlet/JSP。 Tomcat的核心功能&#xff1f; Servlet 容器&#xff1a;负责加载、实例化、调用和销毁 Servlet。 HTTP 服务器&#xff1a;监听端口…...

WebRTC与RTSP|RTMP的技术对比:低延迟与稳定性如何决定音视频直播的未来

引言 音视频直播技术已经深刻影响了我们的生活方式&#xff0c;尤其是在教育、医疗、安防、娱乐等行业中&#xff0c;音视频技术成为了行业发展的重要推动力。近年来&#xff0c;WebRTC作为一种开源的实时通信技术&#xff0c;成为了音视频领域的重要选择&#xff0c;它使得浏览…...

COMPUTEX 2025 | 广和通创新解决方案共筑AI交互新纪元

5月20日至23日&#xff0c;广和通携多领域创新解决方案亮相2025年台北国际电脑展&#xff08;COMPUTEX 2025&#xff09;&#xff0c;台北南港展览馆#K0727a展位。此次展会&#xff0c;广和通围绕“Advancing Connectivity Intelligent Future”为主题&#xff0c;设置四大核心…...

COMPUTEX 2025 | 广和通率先发布基于MediaTek T930 平台的5G模组FG390

5月19日&#xff0c;全球领先的无线通信模组和AI解决方案提供商广和通率先发布基于MediaTek T930平台的5G模组FG390系列。FG390系列模组为以5G固定无线接入&#xff08;Fixed Wireless Access&#xff0c;FWA&#xff09;为代表的MBB终端产品而设计&#xff0c;将在CPE&#xf…...

Power Integrations 汽车电源管理方案:为汽车应用增加系统价值

在新能源汽车产业蓬勃发展的当下&#xff0c;高效的电源管理方案成为提升汽车性能与可靠性的关键。近期&#xff0c;Power Integrations 举办线上交流会&#xff0c;介绍了基于其 1700V InnoSwitch3-AQ 反激式开关 IC 的五款全新参考设计&#xff0c;旨在为 800V 纯电动汽车提供…...

汽车转向系统行业2025数据分析报告

汽车转向系统市场概况 2024年全球汽车转向系统市场规模约为2769.4亿元&#xff0c;预计到2031年将增长至3296.3亿元&#xff0c;年均复合增长率&#xff08;CAGR&#xff09;为2.5%。这一增长主要得益于汽车行业的持续发展以及转向系统技术的不断进步。 市场驱动因素 汽车转…...

Tiny C 编译器中,如何实现宏展开和头文件包含的预处理逻辑?

首先&#xff0c;预处理的主要功能包括宏展开、头文件包含、条件编译等。用户的问题主要集中在宏展开和头文件包含&#xff0c;所以需要分别考虑这两个部分。 关于宏展开&#xff0c;首先需要解析#define指令。编译器在预处理阶段需要维护一个符号表&#xff0c;用来存储宏的名…...

谈谈 Kotlin 中的构造方法,有哪些注意事项?

在 Kotlin 中&#xff0c;构造方法分为主构造方法&#xff08;Primary Constructor&#xff09;和次构造方法&#xff08;Secondary Constructor&#xff09;。 1 主构造方法 主构造方法是类的核心构造方法&#xff0c;直接在类头声明&#xff0c;位于类名之后。 1.1 基本语…...

Elasticsearch常用命令

以下是 Elasticsearch 查看集群状态配置和索引完整操作流程的详细命令: 一、查看集群状态与配置 1. 集群健康状态 curl -X GET "localhost:9200/_cluster/health?pretty" 关键参数: level=indices:显示每个索引的健康状态 level=shards:显示每个分片的详细状…...

深入解读RTP协议:RFC 3550的技术分析与应用

引言 实时传输协议&#xff08;RTP&#xff09;&#xff0c;作为一项重要的技术规范&#xff0c;在多媒体通信中扮演着至关重要的角色。尤其在音视频传输中&#xff0c;RTP为媒体流提供了端到端的传输机制&#xff0c;能够支持高质量、低延迟的音视频数据流传输。随着互联网及…...

使用 electron-builder 打包与发布 Electron 应用

基于 electron-vite-vue 项目结构 本文将基于 electron-vite-vue 脚手架&#xff0c;详细介绍如何使用 electron-builder 实现&#xff1a; ✅ 多平台打包&#xff08;Windows / macOS / Linux&#xff09;✅ 自动更新发布配置✅ 常用构建脚本与输出结构 &#x1f4c1; 项目结…...

命令行删除node_modules

文章目录 前言一、linux二、windows 前言 最近公司在重构项目&#xff0c;使用的monorepo&#xff0c;这就导致多个项目有多个node_modules。所以在主项目的package.json中写一个清除所有项目的node_modules。第一次研究命令行的代码&#xff0c;记录一下。但我感觉我写的不太…...

naive-ui切换主题

1、在App.vue文件中使用 <script setup lang"ts"> import Dashboard from ./views/dashboard/index.vue import { NConfigProvider, NGlobalStyle, darkTheme } from naive-ui import { useThemeStore } from "./store/theme"; // 获取存储的主题类…...

开源Vue表单设计器FcDesigner中组件联动的配置教程

在用FcDesigner表单开发中&#xff0c;经常需要实现组件之间的联动行为&#xff0c;例如当某个输入框的值满足特定条件时&#xff0c;动态显示或隐藏其他组件。FormCreate 提供了强大的组件联动功能&#xff0c;通过 control 配置项实现组件的加载、显示、禁用和必填等状态控制…...

使用 Shadcn UI 构建 Java 桌面应用

许多桌面应用程序&#xff0c;如 Slack、Notion、Microsoft Teams 和 Linear&#xff0c;都采用基于 Web 的用户界面。这已成为现代软件开发中的常见做法&#xff0c;开发者可以借助熟悉的 Web 技术构建应用&#xff0c;从而简化开发流程。 在本篇文章中&#xff0c;我们将向您…...

25_05_19Linux实战篇、第一章_01若依前后端部署之路(后端)

Linux_实战篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;若依前后端动静分离(后端 ) 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.20 适用环境: Rocky9.5 文档说明 本文围绕 Linux 实战展开&#x…...

Python慕课学习记录

中国大学MOOC&#xff08;慕课&#xff09;观看记录&#xff1a; Python123课后相应的练习、考试记录...

2025年渗透测试面试题总结-快手[实习]安全工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 快手[实习]安全工程师 一面问题分析与详细回答 1. 自我介绍 4. 项目问题与解决 7. 防止SQL注入&…...

【iOS(swift)笔记-10】利用类的继承来实现不同地区语言的显示

XCode项目原生开发有自带的可区分语言的功能体系&#xff0c;建议采用原生开发&#xff0c;此处利用类的继承来实现不同地区语言的显示是为了方便&#xff0c;而且在unity游戏开发中采用此法也挺灵活适用。 // 定义一个语言控制类 class LanguageController { // 根据系统切换…...

C语言中的弱符号 __attribute__((weak)) 的使用方法

以下是一个脱离 CallStack.h 的极简 C 语言示例&#xff0c;通过 弱符号覆盖 和 运行时检查 两个场景&#xff0c;展示 __attribute__((weak)) 的核心用法&#xff1a; 一、代码实现 1. 弱符号定义与覆盖&#xff08;weak_demo.c&#xff09; // weak_demo.c #include <st…...

禁止window安全中心乱删文件

将文件/文件夹添加到 Defender 排除列表 如果你确定文件安全&#xff0c;可以将其添加到 排除列表&#xff0c;防止 Defender 误删&#xff1a; Windows 安全中心 → “病毒和威胁防护” → “管理设置”。 下拉找到 “排除项” → “添加或删除排除项”。 点击 “ 添加排除…...