MCP 入门指南

文章来源:https://anmolbaranwal.com/

本文涵盖内容如下:

  1. 现有AI工具的问题。
  2. MCP及其核心组件介绍。
  3. MCP 内部是如何工作的?
  4. MCP 解决的问题以及它为何重要。
  5. MCP 的 3 个层(以及我最终如何理解它们)。
  6. 使用内置 Auth 连接 100 多个托管 MCP 服务器的最简单方法。
  7. MCP 的一些限制。

1. 现有AI工具的问题

如果您曾经尝试构建一个可以真正执行诸如检查电子邮件或发送聊天消息(基于您的工作流程)等操作的 AI 代理,那么您就会知道其中的痛苦。

API 太多,上下文信息不足

你想让AI使用的每个工具,本质上都是一个小型API集成。想象一下,一个用户问:“张三有没有给我发邮件,说昨天的比赛报告?”

对于LLM来说,答案是:

  • 请注意,这是一个电子邮件搜索任务。
  • 选择正确的端点search_email_messages
  • 用自然语言解析并总结结果

所有这些都保持在上下文窗口内。这很重要。模型经常会忘记、猜测或产生幻觉。如果你无法验证准确性,你甚至都没有意识到问题的存在。

API 是基于步骤的,但 LLM 不擅长记住步骤

让我们举一个 CRM 的基本例子

  • 首先,您获取联系人 ID →get_contact_id
  • 然后,获取他们的当前数据→read_contact
  • 最后,修补更新→patch_contact

在传统代码中,你可以将其抽象成一个函数,然后就完成了。但是使用 LLM 呢?每一步都有可能因为参数错误、字段缺失或链式调用中断而出错。然后你的“AI 助手”就会突然用自然语言道歉,而不是更新任何内容。

脆弱的提示词工程

API 在不断发展,文档在变化,授权流程也在更新。你可能某天早上醒来发现,原本运行良好的代理现在因为第三方的变更而崩溃了。

与传统应用不同的是,它没有共享的框架或抽象层可供依赖。每个 AI 工具集成都如同脆弱的提示词工程,需要快速构建工程和 JSON 代码。这可能会破坏 AI 代理的“肌肉记忆”。

LLM锁定

构建了很棒的 GPT-4 工具。但是,如果你切换到 Claude 或 Gemini 等其他工具,则需要从头重写所有函数描述和系统提示。这不是一个大问题,但没有通用的解决方案。

必须有一种方式让工具和模型清晰地沟通,而不是将所有逻辑塞进臃肿的提示词中。这就是 MCP 的用武之地。

2. MCP及其核心组件介绍

模型上下文协议 (MCP)是一种新的开放协议,它标准化了应用程序向 LLM 提供上下文和工具的方式。

可以将其视为 AI 的通用连接器。MCP 作为 Cursor 的插件系统,允许您通过将其连接到各种数据源和工具来扩展 Agent 的功能。

img

MCP 帮助您在 LLM 之上构建代理和复杂的工作流程。

例如,Obsidian 的 MCP 服务器可帮助 AI 助手搜索和阅读 Obsidian 库中的笔记。

您的 AI 代理现在可以:

→ 通过 Gmail 发送电子邮件
→ 在 Linear 中创建任务
→ 在 Notion 中搜索文档
→ 在 Slack 中发布消息
→ 在 Salesforce 中更新记录

所有这些都通过标准化界面发送自然语言指令来实现。

想想这对生产力意味着什么。以前需要在 5 个以上应用之间切换的任务,现在只需与客服人员进行一次对话即可完成。

从本质上讲,MCP 遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器。

img

核心组件

以下是任何通用 MCP 服务器中的核心组件:

  • MCP hosts- 想要通过 MCP 访问数据的 Claude Desktop、Cursor、Windsurf 或 AI 工具等应用程序。
  • MCP Clients- 协议客户端与 MCP 服务器保持 1:1 连接,充当通信桥梁。
  • MCP Servers- 轻量级程序,每个程序通过标准化模型上下文协议公开特定功能(如读取文件、查询数据库…)。
  • Local Data Sources- 您计算机上的 MCP 服务器可以安全访问的文件、数据库和服务。例如,浏览器自动化 MCP 服务器需要访问您的浏览器才能运行。
  • Remote Services- MCP 服务器可以连接的外部 API 和基于云的系统。

如果你有兴趣了解该架构,可以查看官方文档。它涵盖了协议层、连接生命周期、错误处理以及整体实现。

3. MCP 内部是如何工作的?

MCP 生态系统由几个共同运作的关键参与者组成。让我们简要地了解一下它们。

img

客户端

客户端是你实际使用的应用程序,例如 Cursor、Claude Desktop 等。它们的作用是:

  • 向 MCP 服务器请求可用功能
  • 向 AI 模型展示这些能力(工具、资源、提示)
  • 将AI的工具使用请求转发回服务器并返回结果
  • 为模型提供基本的 MCP 协议概述,以实现一致的交互

它们处理系统前端之间的通信:用户、AI 模型和 MCP 服务器。

服务器

MCP 服务器充当用户/AI 与外部服务之间的中介。它们:

  • 提供标准化的 JSON-RPC 接口用于工具和资源访问
  • 将现有 API 转换为与 MCP 兼容的功能,而无需更改 API
  • 处理身份验证、能力定义和通信标准

他们为客户端提供上下文、工具和提示词。

  • 服务提供商

这些是执行实际任务的外部系统或平台(例如 Discord、Notion、Figma)。它们不会为 MCP 更改 API。

整个设置允许开发人员将任何兼容的 API 插入任何支持 MCP 的客户端,避免依赖大型 AI 提供商的集中式集成。

MCP 构建模块:工具、资源和提示

  • 工具

工具代表人工智能可以执行的操作,例如search_emailscreate_issue_linear。它们构成了模型如何通过 MCP 执行现实世界功能的基础。

  • 资源

资源是指 MCP 服务器希望向客户端提供的任何类型的数据。这些可以包括:

  • 文件内容
  • 数据库记录
  • API 响应
  • 实时系统数据
  • 屏幕截图和图片
  • 日志文件
  • 以及更多

每个资源都由一个唯一的 URI(例如 )标识,file://user/prefs.json该 URI 可以是项目注释、编码偏好或任何特定于您的内容。它包含文本或二进制数据。

资源使用遵循此格式的 URI 来标识。

[协议]: //[主机]/[路径]

例如:

  • file:///home/user/documents/report.pdf
  • postgres://database/customers/schema
  • screen://localhost/display1

服务器也可以定义自己的 URI 方案。更多详情请参阅官方文档。

  • 提示词

工具让AI做事,但提示词指导AI在做事时如何表现。

这就像在使用工具时向模型提供的指令。它们充当操作指南,帮助人工智能遵循特定的风格、工作流程或安全协议,例如在按下delete_everything按钮之前遵循特定的安全检查清单。

🎯 让我们探讨一个实际场景:

想象一下 Google 日历 MCP 服务器。日历 API 功能强大而且功能丰富,每个事件都包含访客、时区、提醒、附件等字段。如果你要求 AI 模型执行这些操作`,它可能很难从中筛选出相关数据。

这就是prompts我们resources进来的地方。

MCP 提示可以指导模型:

处理日历事件时,仅修改标题或参与者匹配的事件。使用该list-events工具提取相关事件,将其复制到临时资源 ( Resource B),在那里应用更改,然后使用update-events-from-resource同步功能将其同步回来。

这种模式让人工智能专注于受控状态下的干净、可编辑数据 ( the resource),并以可重复使用的标准化指令 ( the prompt) 和适当的操作 ( tool) 为指导。

img

可以阅读Builder.io上的概念示例,他们已经在 MCP 提示下对其进行了介绍。

当客户端连接到 MCP 服务器时,它会请求可用工具、资源和提示的列表。根据用户的输入,客户端选择向模型显示的内容。当模型选择一个操作时,客户端会通过服务器执行该操作,并通过数据流确保正确的授权。

4. MCP 解决的问题以及它的重要性

MCP解决的问题:

  • 一个通用协议=数千种工具

这种通用协议意味着一个 AI 可以与数千种工具集成,只要这些工具具有 MCP 接口,从而无需为每个新应用程序进行自定义集成。

服务使用一致的JSON-RPC格式描述它们可以做什么(“发送 Discord 消息”、“创建 Linear 票证”)以及如何执行这些操作(参数、身份验证方法)。

  • 角色明确划分:模型思考,工具行动

它在人工智能模型(思考者)和外部工具(执行者)之间建立了清晰的区分。你的AI代理不会因为Slack每次调整API而崩溃。

  • 使用 MCP,您在将 GPT 替换为 Claude 或 Gemini 时无需重新编写所有工具描述。您的工具和逻辑保持不变
  • MCP 支持记忆和多步骤工作流程,这意味着您的代理可以记住跨任务的事情并智能地将操作链接在一起
  • 它可以减少幻觉。总的来说,MCP 使用清晰、结构化的工具定义。这有助于 AI 保持扎实和准确

MCP 为何重要?

  • 它将通用AI助理开发人员的需求变成了现实。
  • 将这些操作组合成复杂的工作流程(由 AI 处理逻辑)的潜力将导致自动化智能新时代

因此,MCP 使开发人员能够更轻松地利用 AI 做更多事情。

5. MCP 的 3 个层(以及我最终如何理解它们)

这就是我对这个概念的详细理解。我会附上一个常见的例子,希望能帮助你快速理解。

⚡ 模型 ↔ 语境:“用LLM能理解的方式与他交流”

想象一下,模型就像机器人的大脑(LLM)。它可以处理信息,但需要明确的指令。上下文提供了这些指令,使其能够正常工作。

例如:如果你告诉机器人“给我做一个三明治”,这太模糊了。但如果说“用这些面包、火腿和奶酪做一个三明治”,就能给机器人提供理解和执行任务的语境。

  • 模型是机器人(LLM)。
  • 上下文是您给出的具体指示(三明治的配料)。

⚡ 上下文 ↔ 协议:“为 LLM 提供结构化的内存、工具和状态”

一旦机器人接收到指令(上下文),它就需要一种方式来遵循指令、记住细节并使用工具。这一切都由 完成Protocol,它是让机器人运用记忆和工具完成工作的系统。

我们还是以三明治为例。给它制定一个规程,可以帮助它记住食材,知道如何用刀等等。

  • 上下文告诉机器人该做什么。
  • 协议为其提供了执行此操作的工具和内存。

这是完成任务的结构。

⚡ 协议 ↔ 运行时:“实际运行 AI 代理”

机器人知道该做什么(上下文)以及如何去做(协议)。现在它需要真正地去做,这可以通过运行时来实现。

回到三明治的例子,运行时就是三明治开始执行的时刻。它就像任务开始执行的环境(比如厨房)。

  • 协议为机器人提供了遵循的方法。
  • 运行时是机器人实际工作的环境。

让我们将这三个层放在一起,看看使用会产生什么效果饭店版

  • Model是厨师。他们拥有烹饪的知识和技能。
  • Context是菜单。它告诉厨师需要哪些食材,以及这道菜应该是什么样子、味道如何。
  • Protocol是服务员。服务员会把订单交给厨师,准确地告诉厨师菜品的制作方法,甚至会记住你是否对某种食物过敏。
  • 厨房Runtime是厨师实际准备食物的地方。所有工具、加热和准备工作都在这里进行。

一旦您了解了服务器和客户端等核心组件(在“MCP 的内部工作原理”部分中介绍),一切就变得有意义了。

各层相互配合,使整个系统正常运转。

6. 使用内置方法连接 100 多个托管 MCP 服务器的最简单方法

在本节中,我们将探索将 Cursor 与 MCP 服务器连接起来的最简单方法。

如果您想了解如何在 Cursor 中添加和使用自定义 MCP 服务器,请阅读官方文档。

步骤 1:先决条件。

安装 Node.js 并确保npx它在您的系统中可用。

第 2 步:在 Cursor 中启用 MCP 服务器。

您可以使用打开 Cursor 中的命令面板Ctrl + Shift + P并搜索光标设置。

img

您会在侧边栏上找到 MCP 选项。

img

步骤 3:使用预定义的 MCP 服务器

我们也可以从头创建一个,但为了简单起见,我们使用预定义的。

我们将使用 Composio 作为服务器,因为它们内置了身份验证功能。您可以在mcp.composio.dev找到 Composio 的列表。

  • 内置身份验证支持 OAuth、API 密钥、JWT 和 Basic 身份验证。这意味着您无需创建自己的登录系统。
  • 完全托管的服务器无需复杂的设置,可以轻松地将 AI 代理与 Gmail、Slack、Notion、Linear 等 250 多种工具集成。
  • 提供 20,000 多个预构建的 API 操作,无需编码即可快速集成。
  • 根据您的配置需求,可以在本地或远程操作。
  • 更好的工具调用准确性使 AI 代理能够与集成应用程序顺畅交互。
  • 它与 AI 代理兼容,这意味着它可以将 AI 代理连接到工具,以便在单个对话中执行发送电子邮件、创建任务或管理票证等任务。

这也意味着更少的停机时间和维护问题。您可以在status.composio.dev查看状态。

img

您可以轻松地与一堆有用的 MCP 服务器集成,而无需编写任何代码。

img

通过每个选项,您可以找到活跃用户总数、当前版本、最近更新时间以及所有可用的操作。

您将找到使用它来安装的说明TypeScriptPython并且它支持 Claude (MacOS)、Windsurf (MacOS) 和 Cursor 作为 MCP 主机。

img

步骤4:集成MCP服务器

现在是时候集成一个带光标的邮件服务器了。目前,我们将使用 Gmail MCP 服务器。

以前是使用 SSE,但 Cursor 最近用改变了这种方法npx command。我们需要生成终端命令。请查看此页面来生成您的终端命令。

终端命令将如下所示。

npx @composio / mcp @latest setup“https://mcp.composio.dev/gmail/xyzxyz...” ——客户端光标

您可以在终端中运行此命令并重新启动 Cursor 以注意更改。

如果您使用的是 Python,请按照以下方法安装 composio-toolset。

pip install composio_openai从composio_openai导入 ComposioToolSet,App
从openai导入 OpenAIopenai_client = OpenAI () 
composio_toolset = ComposioToolSet (entity_id= "default" ) 
tools = composio_toolset.get_tools ( apps=[ App . GMAIL ])

根据您的使用情况,您可以将最终配置放在两个位置:

  1. 对于特定于项目的工具,请.cursor/mcp.json在项目目录中创建一个文件。这允许您定义仅在该特定项目中可用的 MCP 服务器。
  2. 对于您想要在所有项目中使用的工具,请\~/.cursor/mcp.json在主目录中创建一个文件。这将使 MCP 服务器在您的所有 Cursor 工作区中可用。终端将强制执行第二个选项,使其可全局访问。

img

它将显示必要的操作和状态绿点,表示已成功集成。

img

mcp.json如下。

{ “mcpServers” : { “gmail_composio” : { “url” : “https://mcp.composio.dev/gmail/freezing-wrong-dress-7RHVw0” } } 
}

您可以查看示例服务器和实现列表。您可以按照此结构(根据您的偏好选择)集成社区服务器。

✅ SSE 服务器配置。

Cursor 支持此配置,您可以指定url要连接到 SSE 服务器的字段。

// 此示例演示了使用 SSE 格式的 MCP 服务器
// 用户应手动设置并运行服务器
// 它可以联网,以允许其他人访问它
{ "mcpServers" :  { "server-name" :  { "url" :  "http://localhost:3000/sse" , "env" :  { "API_KEY" :  "value" } } } 
}

✅ STDIO 服务器配置 (Python)

这将使用 Python 脚本通过标准输入/输出 (STDIO) 传输设置一个 MCP 服务器。此方法主要用于本地开发。

// 如果您使用的是 CLI 服务器 Python 
// 此示例演示了使用 stdio 格式的 MCP 服务器
// Cursor 会自动为您运行此过程
// 这使用 Python 服务器,使用 `python` 运行
{ "mcpServers" :  { "server-name" :  { "command" :  "python" , "args" :  [ "mcp-server.py" ] , "env" :  { "API_KEY" :  "value" } } } 
}

✅ STDIO 服务器配置(Node.js)

// 如果您使用的是 CLI 服务器 Node.js 
// 此示例演示了使用 stdio 格式的 MCP 服务器
// Cursor 会自动为您运行此过程
// 这使用 Node.js 服务器,使用 `npx` 运行
{ "mcpServers" :  { "server-name" :  { "command" :  "npx" , "args" :  [ "-y" ,  "mcp-server" ] , "env" :  { "API_KEY" :  "value" } } } 
}

步骤 5:直接在 Agent 内使用服务器。

在继续操作之前,请务必检查Composio MCP 服务器页面上可用的操作。您还可以在仪表板上找到工具和操作。

img

您可以使用命令打开聊天Ctrl + I

您可以启用Agent ModeCursor 中最自主的模式,该模式旨在以最少的指导处理复杂的编码任务。

img

我更喜欢在执行之前进行一些控制,所以我选择默认设置。您可以输入任何查询。只需点击run tool按钮即可。

如您所见,它将调用适当的 MCP 服务器(如果您有多个),并且它将根据您的提示相应地使用正确的操作。

img

由于没有活动连接,它将首先建立一个连接。您需要授权该过程。

img

img

我使用的是很久以前创建的虚拟账户,建议你也这么做,以便进行测试。一旦你满意了,就可以用你的主账户来自动化操作。

如您所见,它正确获取了电子邮件。

img

让我们通过发送一封``主题为“Composio 演示”的电子邮件进行检查,并在电子邮件正文中说明测试 MCP 服务器。

img

正如您所看到的,我收到了具有提示中指定的正确主题和正文的电子邮件。

img

发送电子邮件

img

收到电子邮件

使用此 MCP服务器,您可以做很多令人惊奇的事情,例如Get attachments、、、、、、、等等。Create email draft``Modify thread labels``Reply to a thread``get contacts``delete message``move to trash``search people``send email

永远记住,你的能力是有限的。我已经测试了超过 15 个提示,以分析极端情况。

img

8.MCP的一些局限性

MCP 的期望和现实可能大相径庭。当你仔细阅读这些要点时,你就会明白我的意思。

img

别误会我的意思,MCP 非常有前景,但您应该注意以下一些限制:

⚡ 并非所有 AI 平台都支持 MCP

Claude(尤其是其桌面应用程序)以及 Cursor 或 Windsurf 等工具直接支持 MCP。但如果您使用的是 ChatGPT 或本地 LLaMA 模型之类的工具,它可能无法开箱即用。

有一些开源工具试图解决这个问题,但在 MCP 得到更广泛的采用之前,所有 AI 助手的支持都很困难。

⚡ Agent自主权并不完美

MCP赋予了能力,但是AI的判断还不够完善。

例如,工具的使用取决于模型对工具描述和使用情境的理解程度。它通常需要及时调整或代理端逻辑来提高可靠性。

⚡ 性能开销

通过 MCP 使用工具会增加开销。每次调用都是外部的,速度可能比 AI 自行回答慢得多。例如,通过 MCP 工具从网页抓取数据可能需要几秒钟,而模型只需几毫秒就能从训练数据中猜出答案。

现在,如果您正在协调多个工具,延迟就会累积起来,就像按顺序调用 5 个不同的 MCP 服务器来执行以下操作:

  • 从 Google Drive 获取文件
  • 使用 LLM 工具总结内容
  • 翻译摘要
  • 根据翻译生成推文
  • 使用 Buffer 等社交媒体工具进行安排

该链可能需要 10 到 15 秒,具体取决于服务器响应时间。

一些代理可以处理并行工具的使用,因此您可以进一步优化流程。

⚡ 信任问题

让人工智能执行实际操作可能会有风险。即使人工智能通常能正确执行,用户也常常希望在事情发生之前进行审查。

目前,大多数工具要么完全自主,要么完全不自主。很少有中间地带,让人工智能既能利用自主性,又能在关键时刻将控制权交给用户。我们都需要一个human in the loop……

❌ 糟糕的方法:AI 未经询问就立即发送电子邮件。

✅ 更好的方法:AI 会说,I'm about to email X with this message, is it okay to send?并且只有在您批准后才会采取行动。

⚡ 可扩展性问题

当今大多数 MCP 服务器都是为单个用户构建的,通常只是在开发人员的笔记本电脑上运行。

单个 MCP 服务器服务多个独立代理或用户的情况目前尚未得到深入探索。为此,公司需要处理更复杂的问题,例如并发请求、分离数据上下文以及强制使用速率限制。

这个领域的生态系统仍有发展空间,尤其是 MCP 网关或企业级 MCP 服务器框架等理念。

⚡ 安全标准

MCP 没有内置身份验证或授权。

Authentication & Authorization:MCP 本身不支持用户或代理的身份验证。如果您将 MCP 服务器暴露在网络上,则必须自行添加安全措施。

一些实现使用 OAuth 2.1 来添加权限范围(read-only or write-only access),但目前没有标准方法,因此每个服务器处理身份验证的方式都不同。

Correct Permissions:理想情况下,代理应该只使用他们需要的工具。但是,如果有多个强大的工具可用(例如浏览器访问和终端),除非您手动禁用,否则没有什么可以阻止AI使用错误的工具。

Prompt Injection:如果人工智能误解了提示,它可能会犯错。更糟糕的是,有人可能会编写恶意提示,诱骗人工智能执行有害操作(prompt injection)。安全措施取决于每个 MCP 服务器的构建方式。

如果您想了解如何减轻 MCP 实施中的安全风险,请阅读以下内容:

  • 了解并减轻Microsoft MCP 实施中的安全风险。
  • Pillar 的MCP 安全风险。

MCP 仍然很新。随着需求的发现,我们将进一步开发以解决更多边缘情况。

在AI模型方面,我们可能会看到针对工具使用和MCP进行微调的模型。Anthropic已经提到了未来AI models optimized for MCP interaction

如果您计划构建 MCP,这里有一些不错的资源:

  • mcp-chat — 是一款适用于 MCP 服务器的 CLI 聊天客户端。用于测试和评估 MCP 服务器和代理
  • mastra registry — MCP 服务器目录的集合,用于将 AI 连接到您最喜欢的工具。
  • smithery.ai — 通过 MCP 服务器为您的代理扩展 4,630种功能。详细信息包括monthly tool callslocal option``tools``API``installation instructions for different clients
  • 官方团队提供的热门 MCP 服务器目录— GitHub 上 2 万颗星。
  • 1800+ MCP 服务器的光标目录。
  • 这些 MCP 完全是 我的 Cursor 工作流程的 10 倍——带有实际用例的 YouTube 视频。

MCP 仍在不断发展,但其核心理念始终保持不变,我已尽力解释其概念。希望您能从中找到一些有用的信息。

与代理的一次对话可以帮助您自动化复杂的工作流程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第 14 届蓝桥杯 C++ 青少组省赛中 / 高级组真题解析

一、选择题 第 1 题 题目:C 中,bool 类型的变量占用字节数为( )。 A. 1 B. 2 C. 3 D. 4 答案:A 解析: C 标准规定,bool类型至少占用 1 字节(1 byte),用于存…

使用 Selenium 爬取动态网页数据 —— 实战与坑点详解

本文记录了笔者在爬取网页数据过程中遇到的各种技术挑战,包括页面动态渲染、JavaScript 注入等问题,并最终给出一个可运行的完整方案。 文章目录 网页获取不到数据🚀 尝试用 Selenium 渲染页面 网页获取不到数据 某网页数据依赖大量 JavaSc…

【信息系统项目管理师】法律法规与标准规范——历年考题(2024年-2020年)

手机端浏览☞【信息系统项目管理师】法律法规与标准规范——历年考题(2024年-2020年) 2024年上半年综合知识【占比分值3′】 42、关于招标投标的描述,不正确的是(属于同一集团组织成员的投标人可以按照该组织要求协同投标&#xf…

多模态大语言模型arxiv论文略读(五十六)

DesignQA: A Multimodal Benchmark for Evaluating Large Language Models’ Understanding of Engineering Documentation ➡️ 论文标题:DesignQA: A Multimodal Benchmark for Evaluating Large Language Models’ Understanding of Engineering Documentation …

Docker 渡渡鸟镜像同步站 使用教程

Docker 渡渡鸟镜像同步站 使用教程 🚀 介绍 Docker.aityp.com(渡渡鸟镜像同步站)是一个专注于为国内开发者提供 Docker 镜像加速和同步服务的平台。它通过同步官方镜像源(如 Docker Hub、GCR、GHCR 等),为…

Unity:AddTorque()(增加旋转力矩)

目录 什么是 AddTorque()? 第一性原理出发:什么是 Torque(力矩)? Torque 公式 Unity 中 AddTorque 的工作原理 参数属性 🔍 Linear Drag(线性阻力) 线性阻力模拟的现实情况&…

async/await的另一种食用方法

在JavaScript/TypeScript的异步编程中,async/await让我们的代码看起来更像是同步的,极大地提高了可读性。然而,错误处理仍然是一个需要仔细考虑的问题。今天我要分享一种优雅的错误处理模式,它能让你的异步代码更加简洁。 传统tr…

计算机网络 - stp生成树实验

【实验假设】 我们使用 Cisco Packet Tracer 或类似的模拟软件,或物理的 Cisco 交换机。 交换机初始为默认配置(或已通过 write erase 和 reload 清除配置)。 PC 已配置 IP 地址如下(示例): PC0: 192.168…

浅析 Spring 中 FactoryBean 的实现与使用

浅析 Spring 中 FactoryBean 的实现与使用 一、FactoryBean核心机制剖析二、高级应用场景与实战三、框架级应用案例解析四、FactoryBean常见面试题 一、FactoryBean核心机制剖析 1. 本质与双重角色 FactoryBean是Spring容器中用于定制化对象创建的核心接口(org.spri…

vue3 element-plus 输入框回车跳转页面问题处理

问题描述&#xff1a; 当页面搜索条件只有一个的情况下&#xff0c;输入框不管有没有值&#xff0c;回车后会跳转页面 解决办法&#xff0c;给表单添加 submit.prevent <el-form ref"ruleForm" :model"search" label-width"120px" class&qu…

(51单片机)LCD展示动画(延时函数)(LCD1602教程)

前言&#xff1a; 前面我们说过&#xff0c;之前LCD1602模块有点难&#xff0c;但是现在&#xff0c;我们通过几遍博客的学习&#xff0c;今天来讲一下LCD1602的原理 演示视频&#xff1a; LCD1602流动 源代码&#xff1a; main.c #include <STC89C5xRC.H> #include &q…

深入了解 OpenIddict:实现 OAuth 2.0 和 OpenID Connect 协议的 .NET 库

在现代 Web 开发中&#xff0c;身份验证和授权是安全性的重要组成部分。随着对安全性的要求不断增加&#xff0c;OAuth 2.0 和 OpenID Connect&#xff08;OIDC&#xff09;协议已经成为许多应用程序的标准身份验证方式。而 OpenIddict&#xff0c;作为一个用于实现 OAuth 2.0 …

【C++游戏引擎开发】第30篇:物理引擎(Bullet)—软体动力学系统

一、软体动力学理论体系 1.1 连续体力学基础 1.1.1 变形梯度张量 物体运动可描述为映射函数: x = ϕ ( X , t ) \mathbf{x} = \phi(\mathbf{X},t) x

Android Compose 层叠布局(ZStack、Surface)源码深度剖析(14)

Android Compose 层叠布局&#xff08;ZStack、Surface&#xff09;源码深度剖析 一、引言 在 Android 应用开发领域&#xff0c;用户界面&#xff08;UI&#xff09;的设计与实现一直是至关重要的环节。随着技术的不断演进&#xff0c;Android Compose 作为一种全新的声明式…

性能优化实践:内存优化技巧

性能优化实践&#xff1a;内存优化技巧 在Flutter应用开发中&#xff0c;内存优化是提升应用性能的关键环节之一。本文将从实战角度深入探讨Flutter内存优化的各种技巧&#xff0c;帮助你构建高性能的Flutter应用。 一、内存分析工具使用 1. DevTools内存分析器 启动DevTool…

2025-05-07 Unity 网络基础8——UDP同步异步通信

文章目录 1 UDP 概述1.1 通信流程1.2 TCP 与 UDP1.3 UDP 分包1.4 UDP 黏包 2 同步通信2.1 服务端2.2 客户端2.3 测试 3 异步通信3.1 Bgin / End 方法3.2 Async 方法 1 UDP 概述 1.1 通信流程 ​ 客户端和服务端的流程如下&#xff1a; 创建套接字 Socket。用 Bind() 方法将套…

如何减少锁竞争并细化锁粒度以提高 Rust 多线程程序的性能?

在并发编程中&#xff0c;锁&#xff08;Lock&#xff09;是一种常用的同步机制&#xff0c;用于保护共享数据免受多个线程同时访问造成的竞态条件&#xff08;Race Condition&#xff09;。然而&#xff0c;不合理的锁使用会导致严重的性能瓶颈&#xff0c;特别是在高并发场景…

AGV智能搬运机器人:富唯智能引领工业物流高效变革

在智能制造与工业4.0深度融合的今天&#xff0c;物流环节的高效与精准已成为企业核心竞争力的关键。富唯智能凭借其自主研发的AGV智能搬运机器人&#xff0c;以创新技术重塑工业物流标准&#xff0c;助力企业实现降本增效的跨越式发展。 一、技术突破&#xff1a;精准导航与智能…

K8s 资源分类

K8s 资源分类图谱 内置资源的分类 1、工作负载相关&#xff1a; Pod&#xff1a;最小的部署单元&#xff0c;包含一个或多个容器。 Deployment&#xff1a;管理无状态应用的副本和滚动更新。 StatefulSet&#xff1a;适用于有状态应用&#xff08;如数据库&#xff09;&#…

VLM-AD:通过视觉语言模型监督实现端到端自动驾驶

《VLM-AD: End-to-End Autonomous Driving through Vision-Language Model Supervision》2024年12月发表&#xff0c;来自Cruise和美国东北大学的论文。 人类驾驶员依靠常识推理来驾驭多样化和动态的现实世界场景。现有的端到端&#xff08;E2E&#xff09;自动驾驶&#xff0…