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

RAGMCP基本原理说明和相关问题解惑

一、RAG架构原理和局限性

1.1 概念解释

RAG(Retrieval-Augmented Generation):检索增强生成,让大模型接受外部输入后,总结输出

向量数据库:向量数据通常是高维空间中的点,代表复杂的数据结构,如文本、图像、音频等,传统数据库通常基于精确匹配或范围查询,而向量数据库则专注于相似性搜索。
Dify的向量数据库Weaviate:结合了图数据库和向量数据库的功能,支持语义搜索。

嵌入模型:Embedding模型,将文本块向量化嵌入向量数据库。

重排序模型:Rerank模型,重排序模型将根据候选文档列表与用户问题语义匹配度进行重新排序,改变相似的排序Top K

1.2 RAG架构原理

参考: 本地知识库痛点与进阶方案
rag架构
在这里插入图片描述

1.3 RAG局限性
  • 检索精度不足:RAG核心流程中,大模型仅仅起到了总结的作用,而检索到信息的精准度大部分取决于向量的相似度匹配,检索结果可能包含无关内容(低精确率)或遗漏关键信息(低召回率)。
  • 切片很粗暴:切片的局部性注定了大模型无法看到整篇文档的信息,因此在回答列举XXX,总结XXX的时候回答是不完整的。故此不适合做结构化数据的统计,倒是适合做知识问答QA,智能客服这些。
  • 没有大局观:RAG没办法判断要用多少个分块来回答问题,也无法判断文档间的联系。
  • 微调和超大上下文模型?:这个能解决这个问题,相当于所有信息都抛给大模型,但是我每次想知道的新东西就要微调一下?微调成本很高,不然大家每天微调一下就好了,还要什么RAG。超大上下文模型,是能解决一部分问题,但是再大也有个上限,而且一次问答消耗的token数很高,也不现实。

二、MCP 的基础知识

2.1 Function Call

由openAI提出,提供大模型与外界系统交互的能力,主动调用预设的函数去获取外部数据。
但并没有想做成规范,导致各家大模型的Function Call的参数并不相同,使得服务方想提供调用就要给每个模型都做适配,成本很高
tips:所以之前有公司来做这种简化适配的事,比如dify的自定义工具功能,把swagger文档给dify制作成dify的工具,使dify上不同模型可以复用工具,不过问题是这个工具出了dify就没有用了,别家用不了。

模型想支持FunctionCall需要事先进行数据集的训练或微调才能稳定获得这种能力
想使用FunctionCall功能需要在与模型对话的消息体中增加一个tools字段,来描述自己的工具,如图:
在这里插入图片描述

2.2 Model Context Protocol

Model Context Protocol(模型上下文协议),就是约好模型怎么传参数,服务怎么返回信息。本来其实也没人重视,但是随之越来越多公司支持它,导致它现在成为了一个业内标准,进而使更多的AI应用程序也支持了它。

概念:

  • MCP Hosts:AI应用程序,如Cursor、Cline,其实就是内部支持了MCP Client
  • MCP Client:专门调用MCP Server的
  • MCP Server:轻量级程序,按协议公开特定功能,形态可以是个cli工具放在客户本地运行,也可以是个云服务远程访问。
    大致分三类:
    1.文件和数据访问类:让大模型能够操作、访问本地文件或数据库,如File System MCP Server
    2.Web自动化类:让大模型能够操作浏览器
    3.三方工具集成类:让大模型能够调用三方平台暴露的APl,如高德地图MCP Server,各家产品出的API封装,自己的openAPI可能比较复杂,这里简化,并且可能返回体都不一样,所以在这层去做大一统,预处理等等。
    在这里插入图片描述
    在这里插入图片描述
    关系流程:
    参考:https://zhuanlan.zhihu.com/p/1897306683727910356
    在这里插入图片描述

特点:

  • 协议标准化:统一工具调用格式
  • 生态兼容性:一次开发即可对接所有模型
  • 动态扩展:新增工具无需修改模型代码,即插即用

价值/解决的问题:

  • 数据孤岛 → 打通本地/云端数据源
  • 重复开发 → 开发者只需适配MCP协议
  • 生态割裂 → 形成统一工具市场
2.3 MCP 对比 Function Call

核心区别

对比维度Function CallMCP
标准化程度由厂商自定义(如 OpenAI 的 JSON 格式)开放标准(遵循 JSON-RPC 2.0)
交互方式同步调用,直接嵌入模型运行时异步通信,通过协议解耦
扩展性受限于模型接口,新增功能需适配即插即用,支持多数据源/工具动态接入
安全性需在客户端处理敏感逻辑(如 API 密钥)服务端隔离敏感操作,提升安全性

适用场景
• Function Call 更适合:
✅ 简单、低延迟任务(如实时翻译、数学计算)
✅ 封闭生态内的功能扩展(如 OpenAI 生态的专属 API 调用)
• MCP 更适合:
✅ 复杂任务协作(如跨平台数据整合、多步骤流程)
✅ 企业级系统集成(如 CRM、ERP 对接,需统一协议)
✅ 高安全性需求场景(如医疗、金融数据隔离)

三、MCP Server如何开发

  • 可以使用任意语言编写
  • 两种模式:stdio、sse即本地cli命令行工具或提供sse服务
    示例:
    其实就是写一些方法函数,接受入参处理后返回,代码可以是一个cli工具,也可以监听一个端口
    在这里插入图片描述
    详细的可以看一个天气的MCP-Server是怎么写的:
    https://github.com/MrCare/mcp_tool/blob/main/src/weather_server/server.py

四、Q&A

4.1 MCP Client 调用本地/其它工具的方式?

MCP Client 通过获取工具列表和工具描述,由大模型确定使用哪个工具并组合入参。如下:

  • 工具列表获取:MCP Client 从本地或远程获取可用的工具列表,每个工具都有详细的描述信息。
  • 工具选择:大模型根据任务需求和分析工具描述,选择最合适的工具。
  • 参数组合:大模型根据任务需求,组合生成调用工具所需的参数。
4.2 MCP Client 与 Server 的通信方式?

MCP Client 与 Server 的通信主要通过以下两种方式实现:

  • 本地 CLI 调用:MCP Client 通过本地命令行接口 (CLI) 直接调用 MCP Server。
  • SSE 长连接:MCP Client 与 MCP Server 之间建立 Server-Sent Events (SSE) 长连接,实现实时通信。
4.3 MCP Server 的实现方式?

MCP Server 的实现遵循规范要求,可以使用以下两种方式:

  • 标准输入输出 (stdio):MCP Server 通过标准输入输出与外部工具或服务进行交互。
  • SSE 工具:MCP Server 支持 SSE 协议,实现与客户端的实时通信。

MCP Server 可以本地cli工具,也可以作为云服务提供接口访问。

4.4 MCP Server 的调用方式?

MCP Server 的调用由 MCP Client 发起

  • 请求发送:MCP Client 向 MCP Server 发送请求,请求中包含任务描述和所需工具。
  • 任务处理:MCP Server 根据请求内容,调用相应的工具或服务进行处理。
  • 结果返回:MCP Server 将处理结果返回给 MCP Client,完成整个调用流程。
4.5 MCP依赖FunctionCall吗?

可依赖可不依赖,两种东西不冲突。
DeepseekR1不支持FunctionCall,但是可以调用MCP,原理是和AI应用程序的实现方式有关,比如cline插件是将MCP的工具信息写到系统提示词中,所以只要模型够聪明就可以调用,而5ire则是将工具信息写到模型交互的tools字段中,也就是依赖了模型的FunctionCall能力

4.5 为什么有FunctionCall了还要MCP?

FunctionCall扩展性不好,没有形成标准,各家都有自己的规范,开发者需要为不同模型适配不同代码,以往智能考dify或扣子这样的应用程序实现一个工具多个模型使用,但是脱离dify就又不能用了。MCP实现大一统,开发者开发一次,模型和AI应用程序也按规范支持,使得大家都能共用

五、MCP 的基本使用

5.1 环境准备
  • 如果使用的MCP Server启动命令是npx,证明是js写的MCP Server则需要node环境和npx命令。
  • 如果是uv或uvx则证明是python写的,那就需要安装uv。uv是新的python包管理工具,可以理解成pip升级版。
  • 未验证:用golang写完交叉编译后,不需要安装任何环境
5.2 在 Cherry Studio 中使用 MCP

Cherry Studio 是一个支持 MCP 的AI聊天软件,小白友好,因为mcp需要安装一下环境,这个软件可以在界面上操作安装。
但是需要自己有模型的api token
具体操作网上很多,就是下载软件后点点点。

5.3 在VS Code+Cline插件使用MCP

也需要自己有模型的api token,没办法白嫖。
这个是使用教程最多的,因为Cline开源免费。
在这里插入图片描述

5.4 在VS Code + 腾讯云CodeBuddy使用MCP(推荐,免费)

不需要api token,可以使用免费的hunyuan或者Deepseek,全都免费。

六、实践:使用 MCP 调用MySQL数据库

6.1 VsCode + 腾讯云CodeBuddy

插件中搜索‘腾讯云代码助手’,如果用cline,就搜cline
在这里插入图片描述

6.2 在 CodeBuddy 中配置 mysql_mcp_server
  • 找到MySql的MCP Server
    如:mysql_mcp_server_pro
    https://github.com/wenb1n-dev/mysql_mcp_server_pro

以下直接参考仓库的readme配置,下面是我的配置方式:

  • 安装环境:uv/npx
安装uv:
brew install uv
# OR
curl -LsSf https://astral.sh/uv/install.sh | sh
# OR
打开PowerShell,执行:
irm https://astral.sh/uv/install.ps1 | iex
  • 配置Setting
    在这里插入图片描述
{"mcpServers": {"operateMysql": {"name": "operateMysql","description": "","isActive": true,"url": "http://localhost:9000/sse",}}
}
6.3 基础 Prompt 优化查询效果

在系统提示词中将数据库的表结构加进去,并且告诉大模型他们的关系关联性等等。

6.4 MCP+DB检索效果

实操

6.5 目前的局限性
  • 切忌让A!检索过大的数据,因为这种方式不像RAG,每次只检索一小部分需要的内容,它是真正的会执行SQL,你要多少数据,就查多少数据,如果一次查询数据量过大,会消耗大量Token,甚至让MCP客户端卡死
  • 很多MCP客户端是依靠大量系统提示词来实现与MCP工具的通信,所以一旦使用MCP,Token的消耗量一定会大幅增长

相关文章:

RAGMCP基本原理说明和相关问题解惑

一、RAG架构原理和局限性 1.1 概念解释 RAG(Retrieval-Augmented Generation):检索增强生成,让大模型接受外部输入后,总结输出 向量数据库:向量数据通常是高维空间中的点,代表复杂的数据结构…...

PyGame游戏开发(含源码+演示视频+开结题报告+设计文档)

前言: 大二小学期python课上基于pygame做的一个游戏小demo,当时老师花了一天讲解了下python基础语法后(也是整个大学四年唯一学习python的时间),便让我们自学网课一周然后交项目,所以做的非常仓促&#xff…...

Git标签

Git标签 1. 添加标签 使用 tag 命令可以给某次 commit 提交的版本打上标签,相当于这个 commit id 的别名,在实践中,会使用 v1.0 之类的标签提示这是正式版的第一个版本。 git tag v1.0 [commit id]缺省输入 commit id会给最新的一次提交打…...

USB学习【6】USB传输错误的处理

1.前言 我们从物理层到信号层,到协议层,他们分别在不同的层面完成不同的功能。 总结一下: 物理层实现了高低电平的检测。 信号层更进一步,通过一些方法,实现了二进制的传输。 协议层,因为可以二进制传输了…...

深入解析 Vision Transformer (ViT) 与其在计算机视觉中的应用

在近年来,深度学习尤其在计算机视觉领域取得了巨大的进展,而 Vision Transformer(ViT)作为一种新的视觉模型,它的表现甚至在许多任务中超过了传统的卷积神经网络(CNN),如 ResNet。在…...

《Go小技巧易错点100例》第三十一篇

本期分享: 1.Go struct内存对齐 2.使用空结构体(struct{})节省内存 Go struct内存对齐 在计算机系统中,CPU 访问内存时并不是逐字节读取的,而是以特定大小的块(通常为 4/8 字节)为单位进行读取。当数据的内存地址正…...

全栈项目实战:Vue3+Node.js开发博客系统

全栈项目实战:Vue3Node.js开发博客系统 一、项目架构设计 1. 技术栈选型 前端技术栈: Vue 3 Composition APITypeScriptPinia状态管理Vue Router 4Element Plus UI组件库Vite构建工具 后端技术栈: Node.js (Express/Koa)MongoDB (Mong…...

查看YOLO版本的三种方法

查看YOLO版本的三种方法: 一、通过命令行直接查询 使用Python交互式查询: from ultralytics import __version__ print(__version__) # 示例输出: 11.0.5二、检查PyTorch环境兼容性 import torch, ultralytics print(f"PyTorch: {torch.__versi…...

基于Docker的Bitwarden的私有本地部署

基于Docker的Bitwarden的私有本地部署 文章目录 基于Docker的Bitwarden的私有本地部署 本文首发地址 https://h89.cn/archives/355.html bitwarden 默认连接的是国外服务器 https://bitwarden.com/ ,连接不是很稳定,也没有安全感,所以我选择了…...

点和体素哪个好

3D 深度学习中基于体素和基于点云的方法哪种更优?-腾讯云开发者社区-腾讯云 https://zhuanlan.zhihu.com/p/372497398 GitHub - open-mmlab/OpenPCDet: OpenPCDet Toolbox for LiDAR-based 3D Object Detection....

C++ STL编程 vector空间预留、vector高效删除、vector数据排序、vector代码练习

vector空间预留&#xff0c;作用是避免申请每次申请内存&#xff0c;提高运行效率。 对应的接口是 vector.reverse() vector的高效删除&#xff0c;对应的代码见下&#xff0c;一个时间复杂度是n&#xff0c;一个时间复杂度是1 #include<iostream> #include<vector…...

Android架构模式推荐及分析和MVC架构模式制作一个简单的底部tab切换

目录 主流架构模式对比 适用场景 MVP‌&#xff1a;团队协作开发,需要高可测试性的项目 MVC架构模式制作一个简单的底部tab切换 &#xff08;Model-View-Controller&#xff09;结构 代码 效果 主流架构模式对比 ‌对比维度‌‌MVC‌ ‌MVP‌ ‌MVVM‌ ‌MVI‌ ‌学习…...

【PVE】ProxmoxVE8虚拟机,存储管理(host磁盘扩容,qcow2/vmdk导入vm,vm磁盘导出与迁移等)

【PVE】ProxmoxVE8虚拟机&#xff0c;存储管理&#xff08;host磁盘扩容&#xff0c;qcow2/vmdk导入vm&#xff0c;vm磁盘导出与迁移等&#xff09; 文章目录 1、host 磁盘扩容2、qcow2/vmdk导入vm3、vm 磁盘导出与迁移 1、host 磁盘扩容 如何给host扩容磁盘&#xff0c;如增加…...

【JEECG 组件扩展】JSwitch开关组件扩展单个多选框样式

功能说明&#xff1a; 基于JeecgBoot开源框架&#xff0c;JSwitch开关组件扩展&#xff0c;支持单个多选样式。 效果展示&#xff1a; 使用示例&#xff1a; {field: JSwitch,component: JSwitch,label: JSwitch,},{field: JSwitchCheckBox,component: JSwitch,label: JSwitch…...

卷积神经网络-从零开始构建一个卷积神经网络

目录 一、什么是卷积神经网络CNN 1.1、核心概念 1.2、卷积层 二、什么是卷积计算 2.1、卷积计算的例子: 2.2、点积 2.3、卷积与点积的关系 2.4、Padding(填充) 2.4.1、Padding的主要作用 1、控制输出特征图尺寸 2、保留边缘信息 3. 支持深层网络训练 2.4.2、Str…...

Linux 常用命令集合

以下是一份 Linux 常用命令集合&#xff0c;涵盖文件操作、系统管理、网络管理、权限管理、进程管理等常见任务&#xff0c;并附上代码示例&#xff1a; 1. 文件与目录操作 命令作用示例ls列出目录内容ls -l&#xff08;详细列表&#xff09; ls -a&#xff08;显示隐藏文件&a…...

STM32f103 标准库 零基础学习之按键点灯(不涉及中断)

注意&#xff0c;此次代码不涉及中断&#xff0c;不涉及中断&#xff0c;不涉及中断 目录 1.初始化LED 2.初始化按键 3.粗略的延时函数 4.判断引脚电平 5.通过异或反转电平 开始 │ ├── 初始化LED&#xff08;GPIOA Pin1 推挽输出&#xff09; ├── 初始化按键&…...

【c++】【数据结构】二叉搜索树详解

目录 二叉搜索树的定义二叉搜索树的模拟实现查找函数循环版递归版 插入函数循环版递归版 删除函数循环版递归版 二叉搜索树的定义 二叉搜索树是一种特别的二叉树&#xff0c;是二叉树的搜索特化版。学过排序的都知道&#xff0c;在数组有序的情况下二分查找可以以极高的频率找…...

高精地图数据错误的侵权责任认定与应对之道

首席数据官高鹏律师团队 在自动驾驶与智慧交通快速发展的今天&#xff0c;高精地图作为核心基础设施&#xff0c;其数据准确性直接关系到公共安全。然而&#xff0c;技术并非完美&#xff0c;一旦因地图数据错误导致事故或损失&#xff0c;比如当自动驾驶汽车因高精地图数据错…...

Python训练营打卡——DAY22(2025.5.11)

复习日 学习参考如何使用kaggle平台&#xff0c;写下使用注意点&#xff0c;并对下述比赛提交代码 泰坦尼克号——来自灾难的机器学习 数据来源&#xff1a; kaggle泰坦里克号人员生还预测 挑战 泰坦尼克号沉没是历史上最臭名昭著的海难之一。 1912年4月15日&#xff0c;在被普…...

【计算机视觉】OpenCV实战项目 :Image_Cartooning_Web_App:基于深度学习的图像卡通化

Image_Cartooning_Web_App&#xff1a;基于深度学习的图像卡通化Web应用深度解析 1. 项目概述2. 技术原理与模型架构2.1 核心算法2.2 系统架构 3. 实战部署指南3.1 环境配置3.2 模型部署3.3 处理流程示例 4. 常见问题与解决方案4.1 模型加载失败4.2 显存溢出4.3 边缘伪影 5. 关…...

王道计算机网络知识点总结

计算机网络知识点总结 一、计算机网络体系结构 &#xff08;一&#xff09;计算机网络概述 计算机网络概念&#xff1a;互连的、自治的计算机系统的集合&#xff0c;目的是资源共享&#xff0c;组成包括多台自治计算机&#xff0c;规则是网络协议。 计算机网络的组成&#…...

Java学习笔记(对象)

一、对象本质 状态&#xff08;State&#xff09;&#xff1a;通过成员变量&#xff08;Field&#xff09;描述 行为&#xff08;Behavior&#xff09;&#xff1a;通过成员方法&#xff08;Method&#xff09;实现 class Person {String name;int age;void eat() {System.o…...

并发笔记-给数据上锁(二)

文章目录 核心挑战 (The CRUX)29.1 并发计数器 (Concurrent Counters)1. 简单非并发计数器 (Figure 29.1)2. 同步计数器&#xff08;单锁版本 - Coarse-Grained Lock, Figure 29.2&#xff09;3. 可伸缩计数&#xff1a;近似/懒惰计数器 (Approximate/Sloppy Counter, Figure 2…...

Three.js + React 实战系列 - 页脚区域 Footer 组件 ✨

对个人主页设计和实现感兴趣的朋友可以订阅我的专栏哦&#xff01;&#xff01;谢谢大家&#xff01;&#xff01;&#xff01; 为个人主页画上完美句号&#xff1a;设计一个美观实用的页脚组件 在完成 Hero、About、Projects、Contact 等模块后&#xff0c;我们为整个页面添上…...

基于Flask、Bootstrap及深度学习的水库智能监测分析平台

基于Flask、Bootstrap及深度学习的水库智能监测分析平台 项目介绍 本项目是基于Flask框架构建的水库智能监测分析平台&#xff0c;集水库数据管理、实时监测预警、可视化分析和智能预测功能于一体。 预测水位的预警级别&#xff1a;蓝色预警没有超过正常水位且接近正常水位1米…...

JavaSE核心知识点02面向对象编程02-08(异常处理)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点02面向对象编程02-08&#…...

7系列 之 SelectIO 资源

背景 《ug471_7Series_SelectIO.pdf》介绍了Xilinx 7 系列 SelectIO 的输入/输出特性及逻辑资源的相关内容。 第 1 章《SelectIO Resources》介绍了输出驱动器和输入接收器的电气特性&#xff0c;并通过大量实例解析了各类标准接口的实现。 第 2 章《SelectIO Logic Resource…...

【目标检测系列】YOLOV1解读

目标检测系列文章 目录 目标检测系列文章&#x1f4c4; 论文标题&#x1f9e0; 论文逻辑梳理1. 引言部分梳理 (动机与思想) &#x1f4dd; 三句话总结&#x1f50d; 方法逻辑梳理&#x1f680; 关键创新点&#x1f517; 方法流程图关键疑问解答Q1: 关于 YOLOv1 中的 "conf…...

GIF图像技术介绍

以下是对GIF格式的详细介绍,涵盖其定义、发展历程、技术特性、应用场景及与其他格式的对比: 一、GIF的定义与起源 GIF(Graphics Interchange Format,图形交换格式)由美国CompuServe公司于1987年推出,旨在解决早期互联网带宽不足的问题。其开发者Steve Wilhite采用LZW无损…...

【TI MSPM0】CCS工程管理

一、关于WORKSPACE 1.导入工程路径 导入工程时&#xff0c;实际是将工程从原路径复制到了Workspace路径下&#xff08;默认是在C盘user路径下&#xff09; 2.工程保存备份 关于工程的保存&#xff0c;可以右击文件夹&#xff0c;点击Reveal打开文件夹 将对应的文件夹进行复…...

牛客周赛 Round 92-题解

牛客周赛 Round 92-题解 A-小红的签到题 code #include<iostream> #include<string> using namespace std; string s; int main() {int n;cin >> n;cout << "a_";for (int i 0; i < n - 2; i )cout << b;return 0; }B-小红的模…...

iVX 图形化编程平台:结合 AI 原生开发的革新与实践

一、技术架构&#xff1a;重构 AI 与编程的交互逻辑 1. 信息密度革命&#xff1a;从线性代码到图形化语义单元 传统文本编程存在显著的信息密度瓶颈。以 "按钮点击→条件判断→调用接口→弹窗反馈" 流程为例&#xff0c;Python 实现需定义函数、处理缩进并编写 30 …...

微服务架构中如何保证服务间通讯的安全

在微服务架构中,保证服务间通信的安全至关重要。服务间的通信通常是通过HTTP、gRPC、消息队列等方式实现的,而这些通信链路可能面临多种安全风险。为了应对这些风险,可以采取多种措施来保证通信安全。 常见的服务间通信风险 1.数据泄露:在服务间通信过程中,敏感数据可能会…...

长短期记忆网络(LSTM)深度解析:从理论到实践的全方位指南

一、LSTM基础理论:超越传统RNN的记忆架构 1.1 RNN的长期依赖问题 传统循环神经网络(RNN)在处理长序列时面临的根本挑战是梯度消失/爆炸问题。当序列长度超过10-20个时间步时,RNN难以学习到早期时间步的信息。数学上,这源于反向传播过程中梯度的链式法则: 复制 下载 ∂…...

FramePack AI图片生成视频 v1.1 整合包

今天&#xff0c;我兴奋地要为大家介绍一款革命性的AI工具——FramePack&#xff0c;这是一个让人眼前一亮的图生视频整合包。想象一下&#xff0c;在2025年5月11日的今天&#xff0c;哪怕你的电脑显存仅有6G&#xff0c;你也可以轻松创造艺术&#xff01; FramePack的神奇之处…...

在 C++中,指针数组与数组指针的区别

1. 指针数组:本质上是一个数组,数组中的每个元素都是一个指针。也就是说,这个数组存储的是多个指针变量,这些指针可以指向不同的对象(比如不同的变量、数组等) 。 2. 数组指针:本质上是一个指针,这个指针指向一个数组。即它指向的是数组的首地址,通过这个指针可以操作…...

Ubuntu 24服务器部署abp vnext应用程序的完整教程

一、服务器配置 1、安装Nginx 2、安装.NetCore SDK 或.NetCore 运行时 以上两步参考 《UbuntuNginxSupervisord部署.net core web应用程序_nginx部署netcore-CSDN博客》 二、abp vnext程序部署 1、程序发布 使用VS进行发布 2、程序上传 使用winSCP工具 3、openiddict…...

Ingrees 控制器与 Ingress 资源的区别

在 Kubernetes 中&#xff0c;单纯的 Ingress 资源定义文件&#xff08;YAML&#xff09;本身不会直接创建 Pod。Ingress 的作用是定义路由规则&#xff08;如将外部流量路由到集群内的服务&#xff09;&#xff0c;而实际处理流量的 Pod 是由 Ingress 控制器&#xff08;如 Ng…...

动态路由实现原理及前端控制与后端控制的核心差异

在 Web 开发领域&#xff0c;动态路由是构建灵活、高效应用的关键技术之一。它能够根据不同的条件和请求&#xff0c;动态地决定页面的跳转和数据的加载&#xff0c;极大提升用户体验。本文将深入剖析动态路由的实现原理&#xff0c;并详细探讨前端控制和后端控制两种模式的最大…...

stm32 WDG看门狗

目录 stm32 WDG看门狗一、WDG基础知识1&#xff09;WDG&#xff08;Watchdog&#xff09;看门狗简介 二、IWDG独立看门狗1&#xff09;IWDG键寄存器2&#xff09;IWDG超时时间 三、WWDG窗口看门狗1&#xff09;WWDG框图2&#xff09;WWDG工作特性3&#xff09;WWDG超时时间4&am…...

MySQL索引详解(下)(SQL性能分析,索引使用)

索引是MySQL性能优化的核心&#xff0c;但如何精准分析查询瓶颈、合理设计索引&#xff0c;是开发者必须掌握的技能。本文结合实战案例&#xff0c;系统讲解SQL性能分析工具链与索引使用技巧&#xff0c;帮助读者构建高性能数据库系统。 一、SQL性能分析&#xff1a;从宏观到微…...

添加文字标签

上节我们学会了如何在地图中标记位置,那么可不可以为地图添加文字注释呢?答案是肯定的,我们依旧以广州塔为例. //添加文字标签和广告牌var label viewer.entities.add({position: Cesium.Cartesian3.fromDegrees(113.3191,23.109,100),label:{text:"广州塔",font:&…...

数据并行基础概念知识

架构分为PS与ring-allreduce&#xff1b;方法主要是zero系列zeroDP123、ZeroR 、Zero-offerload、Zero-Infinite、Zero 相关博客介绍的很清楚&#xff0c;在这里总结一下 图解系列很通透&#xff0c;通俗易懂1 更详细的介绍后面几种方式&#xff0c;提供动图链接2 提供混合精度…...

Linux系列(3)----用户和用户组管理、系统管理

声明&#xff1a; 本文参考 ❤️肝下25万字的《决战Linux到精通》笔记&#xff0c;你的Linux水平将从入门到入魔❤️【建议收藏】_linux笔记 小小明-CSDN博客 不理解的命令需要自己操作一遍 方可理解 不知道怎么租用服务器并链接的看这个文章 如何租用服务器并通过ssh连接…...

【沉浸式求职学习day36】【初识Maven】

沉浸式求职学习 Maven1. Maven项目架构管理工具2.下载安装Maven3.利用Tomcat和Maven进入一个网站 Maven 为什么要学习这个技术&#xff1f; 在Java Web开发中&#xff0c;需要使用大量的jar包&#xff0c;我们手动去导入&#xff0c;这种操作很麻烦&#xff0c;PASS&#xff01…...

Nipype 简单使用教程

Nipype 简单使用教程 基础教程**一、Nipype 核心概念与工作流构建****1. 基本组件****2. 工作流构建步骤** **二、常用接口命令速查表****1. FSL 接口****2. FreeSurfer 接口****3. ANTS 接口****4. 数据处理接口** **三、高级特性与最佳实践****1. 条件执行&#xff08;基于输…...

DA14585墨水屏学习(2)

一、user_svc2_wr_ind_handler函数 void user_svc2_wr_ind_handler(ke_msg_id_t const msgid,struct custs1_val_write_ind const *param,ke_task_id_t const dest_id,ke_task_id_t const src_id) {// sprintf(buf2,"HEX %d :",param->length);arch_printf("…...

【LeetCode Hot100 | 每日刷题】排序数组

912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题&#xff0c;时间复杂度为 O(nlog(n))&#xff0c;并且空间复杂度尽可能小。 示例 1&…...

leetcode热题100——day26

21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 AC代码 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, val0, nextNone): # self.val val # …...