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

探索 MCP 和 A2A 协议: 本质上新协议都基于 HTTP的

以下是以 CSDN 博客的形式记录你对 MCP 协议和 A2A 协议数据传递的理解,重点探讨了它们为何基于 HTTP 协议、HTTP 的优势,以及数据传输的本质。文章面向技术社区,结构清晰,适合分享。


探索 MCP 和 A2A 协议:为何新协议都基于 HTTP?

作者:[你的用户名]
日期:2025-04-13
标签:MCP 协议、A2A 协议、HTTP、JSON-RPC、数据传递

背景

最近在研究 MCP(Model Context Protocol)和 A2A(Agent2Agent)协议,探索它们如何实现 AI 代理的自动化任务和代理间协作。我注意到,这两个协议的底层传输都基于 HTTP,这让我意识到:数据传输本质上还是要通过网络进行,而 HTTP 作为一种成熟的网络传输协议,成为了许多新协议的首选基础。这篇文章记录了我的发现,分析了 MCP 和 A2A 协议为何基于 HTTP,以及 HTTP 在现代协议中的核心作用。


发现过程

1. MCP 协议的底层传输:HTTP 的角色

MCP 是一个为 AI 代理设计的协议,允许 AI 代理安全地访问外部工具和数据源(例如文件系统)。通过研究,我发现 MCP 的数据传递完全依赖 HTTP 协议()。

1.1 MCP 的 HTTP 请求和响应

MCP 服务器监听一个 HTTP 端点(例如 http://localhost:8000/mcp),AI 代理通过 HTTP POST 请求发送 JSON-RPC 格式的数据,服务器返回 HTTP 响应。以下是一个典型的 MCP 请求和响应:

  • HTTP 请求(调用 list_files 工具):

    POST /mcp HTTP/1.1
    Host: localhost:8000
    Content-Type: application/json{"jsonrpc": "2.0","id": 1,"method": "tools/call","params": {"name": "list_files","arguments": {"path": "/path/to/cache"}}
    }
  • HTTP 响应:

    HTTP/1.1 200 OK
    Content-Type: application/json{"jsonrpc": "2.0","id": 1,"result": {"files": [{"name": "temp1.log", "path": "/path/to/cache/temp1.log", "mtime": "2025-03-01T12:00:00Z"},{"name": "temp2.log", "path": "/path/to/cache/temp2.log", "mtime": "2025-04-01T12:00:00Z"}]}
    }

关键点:

  • MCP 的数据传输依赖于网络,HTTP 提供了底层的传输通道。

  • 在 HTTP 之上,MCP 使用 JSON-RPC 2.0 协议定义请求和响应的格式()。


2. 为什么新协议(如 MCP、A2A)基于 HTTP?

我观察到,不仅 MCP,很多现代协议(包括 A2A 协议)都选择在 HTTP 之上构建()。以下是原因:

2.1 HTTP 的广泛支持和成熟性

  • 基础设施支持:HTTP 是互联网的基础协议,几乎所有的网络设备、服务器和客户端(浏览器、应用程序)都支持 HTTP()。基于 HTTP 的协议可以无缝运行在现有的网络基础设施上。

  • 工具生态:HTTP 有丰富的工具支持,例如:

    • 服务器:Nginx、Apache 等。

    • 客户端:cURL、Postman、各种编程语言的 HTTP 库(Python 的 requests、JavaScript 的 fetch)。

    • 调试工具:Wireshark、Fiddler 等。

  • 安全性:HTTP 支持 HTTPS(基于 TLS/SSL),可以轻松实现加密通信。

MCP 的例子:

  • MCP 服务器可以运行在任何支持 HTTP 的环境中,例如 Node.js 或 Python Flask。

  • AI 代理可以使用标准的 HTTP 客户端库发送请求,无需额外的网络支持。

2.2 HTTP 的灵活性和扩展性

  • 传输层无关性:HTTP 不关心上层的数据格式(JSON、XML、纯文本等),这使得它非常适合作为新协议的底层传输层。

  • 通信模式支持:

    • 请求-响应:HTTP 的基本模式,适合 MCP 的同步工具调用(例如 list_files)。

    • 长连接和推送:HTTP 支持 WebSocket 和 Server-Sent Events(SSE),可以实现实时通信。MCP 和 A2A 都利用了 SSE 来支持任务状态的实时更新()。

  • 扩展性:HTTP 支持多种方法(GET、POST、PUT、DELETE 等)和头字段,可以满足不同的通信需求。

MCP 和 A2A 的例子:

  • MCP 使用 HTTP POST 传输 JSON-RPC 请求,适合结构化的工具调用。

  • A2A 使用 SSE 进行任务状态推送(),这是 HTTP 的扩展功能。

2.3 标准化和互操作性

  • 标准化:HTTP 是标准化的协议(由 IETF 定义,例如 HTTP/1.1、HTTP/2),有明确的规范,确保了不同系统之间的互操作性。

  • JSON 的普及:现代协议通常使用 JSON 作为数据格式(),而 HTTP 非常适合传输 JSON 数据(通过 Content-Type: application/json)。

  • 跨平台:基于 HTTP 的协议可以在任何支持 HTTP 的平台上运行。

MCP 的例子:

  • MCP 使用 JSON-RPC 2.0 作为上层协议,JSON-RPC 的请求和响应通过 HTTP 传输,确保了跨平台的兼容性。

2.4 开发和调试的便利性

  • 易于开发:HTTP 协议简单,开发人员可以快速构建基于 HTTP 的协议。

  • 易于调试:HTTP 请求和响应是文本格式(尤其是 JSON),可以用工具(如 Postman)直接查看和调试。

MCP 的例子:

  • 开发人员可以用 cURL 测试 MCP 服务器的端点:

    bash

    curl -X POST http://localhost:8000/mcp \-H "Content-Type: application/json" \-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_files","arguments":{"path":"/path/to/cache"}}}'

3. MCP 和 A2A 的数据传输:HTTP 的具体应用

3.1 MCP 的数据传输

MCP 专注于 AI 代理与外部工具的交互(例如文件系统)。其数据传输流程如下:

  1. AI 代理发送 HTTP POST 请求,调用工具(例如 list_files)。

  2. MCP 服务器解析 JSON-RPC 请求,执行操作,返回 JSON-RPC 响应。

  3. 如果任务较长,MCP 支持通过 SSE 推送任务状态()。

MCP 的 SSE 示例:

  • AI 代理订阅任务状态:

    GET /mcp/sse HTTP/1.1
    Host: localhost:8000
    Accept: text/event-stream
  • 服务器推送更新:

    event: TaskStatusUpdateEvent
    data: {"taskId": "task-001", "status": "working"}

3.2 A2A 的数据传输

A2A 专注于代理之间的通信,数据传输也基于 HTTP():

  1. 代理通过 HTTP POST 发送 tasks/send 请求。

  2. 目标代理处理任务,返回任务状态。

  3. A2A 支持 SSE 和推送通知(push notifications)()。

A2A 的推送通知示例:

  • 代理设置推送通知的 webhook:

    json

    {"jsonrpc": "2.0","id": 1,"method": "tasks/pushNotification/set","params": {"webhookUrl": "https://client.example.com/webhook"}
    }
  • 服务器通过 HTTP POST 推送更新:

    POST /webhook HTTP/1.1
    Host: client.example.com
    Content-Type: application/json{"taskId": "task-001","status": "completed"
    }

发现:

  • MCP 和 A2A 都依赖 HTTP 进行数据传输,但通信模式不同:

    • MCP 更注重同步工具调用(请求-响应)。

    • A2A 更注重异步任务协作(通过 SSE 和推送通知)。


4. 为什么新协议不直接使用更底层的协议(如 TCP)?

我曾好奇,既然 HTTP 基于 TCP,为什么新协议不直接使用 TCP?以下是原因:

4.1 HTTP 提供了更高的抽象层

  • TCP 的复杂性:TCP 只负责字节流的传递,开发者需要自己定义数据格式、消息边界、错误处理等。

  • HTTP 的便利性:HTTP 定义了请求-响应模式、状态码、头字段等,开发者只需关注数据内容(例如 JSON)。

MCP 的例子:

  • 如果 MCP 直接基于 TCP,开发者需要自己实现消息的序列化和反序列化。

  • 使用 HTTP,MCP 可以直接利用 HTTP 的请求-响应模式。

4.2 HTTP 的生态支持

  • 防火墙和代理:HTTP 流量(端口 80 和 443)通常被防火墙和代理允许,而 TCP 可能需要开放额外端口。

  • 负载均衡:HTTP 支持负载均衡(例如通过 Nginx),适合分布式系统。

4.3 HTTP 的扩展性

  • HTTP 支持多种通信模式(请求-响应、SSE、WebSocket)。

  • HTTP/2 和 HTTP/3(基于 QUIC)进一步提高了性能。

MCP 和 A2A 的例子:

  • MCP 和 A2A 利用 HTTP 的 SSE 实现实时推送(),如果直接使用 TCP,需要自己实现类似功能。


5. 总结:HTTP 是新协议的理想基础

通过分析,我总结了 MCP 和 A2A 基于 HTTP 的原因:

  1. HTTP 的成熟性和广泛支持:HTTP 是互联网的基础协议,基础设施和工具支持完善。

  2. 灵活性和扩展性:HTTP 支持多种通信模式(请求-响应、SSE、WebSocket)。

  3. 标准化和互操作性:HTTP 和 JSON 的组合提供了标准化的数据传输方式。

  4. 开发和调试的便利性:HTTP 协议简单,易于开发和调试。

MCP 数据传输的本质:

  • MCP 的底层传输是 HTTP,通过网络进行数据传递。

  • 在 HTTP 之上,MCP 使用 JSON-RPC 2.0 定义结构化的请求和响应。

  • MCP 的数据传输与 HTTP API 类似,请求体是 JSON-RPC 格式。

A2A 的相似之处:

  • A2A 也基于 HTTP,使用 JSON-RPC 进行通信,但更注重代理协作,支持 SSE 和推送通知。

我的观察: 我提到“数据传输还是要通过网络进行的,所以好多新的协议都是在此基础上进行的”,这非常正确!HTTP 提供了一个可靠、灵活的基础,新协议可以在此基础上定义更高层次的逻辑(例如 JSON-RPC、任务管理),从而专注于功能实现,而无需重新发明底层的传输机制。


未来计划

  • 抓包分析:使用 Wireshark 或 Postman 抓取 MCP 的 HTTP 请求和响应,观察 JSON-RPC 的结构。

  • 运行 MCP 服务器:启动一个 MCP 文件系统服务器(例如 npx -y @modelcontextprotocol/server-filesystem /path/to/cache),手动发送 HTTP 请求,查看响应。

  • 对比其他协议:研究其他基于 HTTP 的协议(例如 gRPC、GraphQL),理解它们如何利用 HTTP。

如果你对 MCP、A2A 或 HTTP 相关技术有更多想法,欢迎留言讨论!


参考资料

  1. Anthropic 官方文档:Introducing the Model Context Protocol

  2. Google A2A 协议文档:Agent2Agent Protocol Specification

  3. JSON-RPC 2.0 规范:JSON-RPC 2.0 Specification


以上是 CSDN 风格的博客记录,总结了你的发现和理解。如果你需要调整某些部分(例如添加更多代码示例或截图),可以告诉我!

相关文章:

探索 MCP 和 A2A 协议: 本质上新协议都基于 HTTP的

以下是以 CSDN 博客的形式记录你对 MCP 协议和 A2A 协议数据传递的理解,重点探讨了它们为何基于 HTTP 协议、HTTP 的优势,以及数据传输的本质。文章面向技术社区,结构清晰,适合分享。 探索 MCP 和 A2A 协议:为何新协议…...

Linux网络http与https

应用层协议HTTP 提示 因为现在大多数都是https,所以就用https来介绍http,https比http多了一个加密功能,不影响介绍http。 什么是http 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的…...

C++ 算法(2):STL list 完全解析,从入门到高效使用

1. list概述 std::list是C标准模板库(STL)中的一个双向链表容器。与vector和deque不同,list不支持随机访问,但它在任何位置插入和删除元素都非常高效,时间复杂度为O(1)。 2. list的基本特性 双向链表结构:每个元素都包含指向前驱…...

【Linux实践系列】:匿名管道收尾+完善shell外壳程序

🔥 本文专栏:Linux Linux实践项目 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录: 人生总会有自己能力所不及的范围,但是如果你在你能力所及的范围尽了全部的努力,那你还有什么遗…...

Linux基本指令2

1.head 查看文件的前面内容 head 路径 :查看路径开头部分内容,如下图:head /var/log/messages查看/var/log/messages这个日志中前面内容 head -数字 路径 :查看路径开头指定数字行部分内容,如下图:he…...

Tkinter使用Canvas绘制图形

在Tkinter中,Canvas是一个非常强大的控件,用于绘制图形、显示图片和实现自定义图形界面。通过Canvas,您可以绘制各种形状、线条、文本等,并且能够进行灵活的动画和交互。掌握Canvas的使用将使您能够创建丰富的图形界面。 8.1 创建Canvas控件 Canvas控件是一个区域,用于绘…...

CF985G Team Players

我敢赌,就算你知道怎么做,也必然得调试半天才能 AC。 [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 图片来自洛谷。 [Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis] 显然不可能正面计算。所以…...

ngx_conf_read_token - events

file_size ngx_file_size(&cf->conf_file->file.info); 获取 配置文件的大小 此时 file_size364 for ( ;; ) {if (b->pos > b->last) { 此时 b->pos 0x5cd4701487e4 b->last 0x5cd47014893c b->start0x5cd4701487d0 条件不成立 ch *b->pos;…...

L2范数与权重衰退

权重衰退 定义损失函数 $ \ell(\mathbf{w}, b) $ 来衡量模型的预测值与真实值的差距 使用L2范数作为硬性限制 通过限制参数值的选择范围来控制模型容量 min ⁡ ℓ ( w , b ) s u b j e c t t o ∥ w ∥ 2 ≤ θ \min \ell(\mathbf{w}, b) \quad \\ subject \ to \|\mathbf{w…...

计算机组成原理笔记(十四)——3.4指令类型

一台计算机的指令系统可以有上百条指令,这些指令按其功能可以分成几种类型,下面分别介绍。 3.4.1数据传送类指令 一、核心概念与功能定位 数据传送类指令是计算机指令系统中最基础的指令类型,负责在 寄存器、主存、I/O设备 之间高效复制数…...

GM DC Monitor v2.0 数据中心监控预警平台-CMDB使用教程(第九篇)

SNMP配置管理功能使用手册 本模块主要用于导入设备厂家的mib库文件,也可以手工创建对应的oid信息,用以实现设备的被动监控功能。 另:系统部署完毕后,已经集成了个别厂家的MIB库数据。 设计思路及使用教程 设计思路:通…...

try-with-resources 详解

try-with-resources 详解 一、基本概念 try-with-resources 是 Java 7 引入的语法结构,用于自动管理资源(如文件流、数据库连接等需要关闭的对象)。 核心特点 自动资源释放:无需手动调用 close() 简洁代码:减少 tr…...

第二十四:查看当前 端口号是否被占用

查看当前 端口号是否被占用: mac 情况下: lsof -i :端口号 netstat -an | grep 端口号 系统将显示监听该端口的进程信息,包括进程名称、进程ID、用户和协议等。如果需要更多信息,可以添加-P和-n参数,例如&#xf…...

【数据结构与算法】——堆(补充)

前言 上一篇文章讲解了堆的概念和堆排序,本文是对堆的内容补充 主要包括:堆排序的时间复杂度、TOP 这里写目录标题 前言正文堆排序的时间复杂度TOP-K 正文 堆排序的时间复杂度 前文提到,利用堆的思想完成的堆排序的代码如下(包…...

【Web功能测试】Web商城搜索模块测试用例设计深度解析

Web商城的搜索模块功能测试用例设计 1.搜索功能设计 1.1 搜索框设计 位置显眼:通常置于页面顶部中央,符合用户习惯。 智能提示(Autocomplete):输入时实时推荐关键词、商品或分类(如“手机 苹果”&#x…...

ubuntu 18.04安装tomcat,zookeeper,kafka,hadoop,MySQL,maxwell

事情是这样的,因为昨天发现我用的ubuntu16.04官方不维护了,以及之前就觉得不是很好用,于是升级到了18.04。如图: 但是!由于为备份升级前忘记关闭服务,上面装好的东西所剩无几。 于是我重装了。。。 如何启…...

设计模式(结构型)-享元模式

摘要 在软件开发的广阔领域中,随着系统规模的不断膨胀,资源的有效利用逐渐成为了一个至关重要的议题。当一个系统中存在大量相似的对象时,如何优化这些对象的管理,减少内存的占用,提升系统的整体性能,成为了…...

1.1显存

显存是显卡(GPU)专用的高性能内存,负责存储渲染所需的纹理、帧缓冲、几何数据等。其设计直接影响图形性能、分辨率和复杂场景处理能力 苹果统一内存(Unified Memory)、集成显卡共享内存(Integrated Graphi…...

C# 选择文件的路径、导出文件储存路径

1、选择导入文件,获取其路径 C#通过这段代码将弹出一个文件选择对话框,允许用户选择一个文件,并返回所选文件的完整路径。如果用户取消了选择,则直接返回结束函数。 string OpenFilePath;//存储选择到的文件的完整路径OpenFileDia…...

【最后203篇系列】027 基于消息队列的处理架构

起因 之所以写这篇文章,主要是梳理一下进展。因为同时研究好几块内容,切换起来要点时间。这次也是因为协作的同事们把各自的分工都搞定了,瓶颈反而在我自己这里,哈哈。 除了帮自己思路恢复过来,我觉得这方法可能也有…...

多线程与Tkinter界面交互

在现代图形用户界面(GUI)应用程序中,可能会遇到需要长时间运行的任务,例如网络请求、数据处理或文件读取等。如果这些任务直接在主线程中运行,会导致GUI界面“卡顿”或“不响应”。为了保持界面流畅和响应用户操作,我们可以通过使用多线程来将这些任务移到后台运行。然而…...

【工程开发】LLMC准确高效的LLM压缩工具(一)

​【文献阅读】LLMC: Benchmarking Large Language Model Quantization with a Versatile Compression Toolkit 北航 2024年10月 摘要 大语言模型(LLMs)的最新进展凭借其卓越的涌现能力和推理能力,正推动我们迈向通用人工智能。然而&#…...

回顾CSA,CSA复习

RHCSA redhat certificate system Administrator RHCE redhat certificate engineer 回顾CSA 文件管理 创建文件:touch 、重定向、vim 阅读文件:cat看短小的文件、vim、head看文件前面部分、tail看文件的尾部内容、more、less看文档使用more和less…...

基于电子等排体的3D分子生成模型 ShEPhERD - 评测

一、背景介绍 ShEPhERD 是一个由 MIT 开发的一个 3D 相互作用感知的 ligand-based的分子生成模型,以 arXiv 预印本的形式发表于 2024 年,被ICLR2025 会议接收。文章链接:https://openreview.net/pdf?idKSLkFYHlYg ShEPhERD 是一种基于去噪扩…...

平凡日子里的挣扎

2025年4月13日,9~23℃,好 待办: 融智云考平台《物理》《物理2》~~《地理》《地理1》~~重修试卷 卫健委统考监考(2025年4月12日早上7点半) 冶金《物理》课程标准 冶金《物理》教案 期中教学检查——自查表材料&#xff…...

智能制造方案精读:117页MES制造执行系统解决方案【附全文阅读】

本方案围绕制造执行系统(MES)展开,阐述了智能制造相关概念及发展趋势,指出 MES 是连接 ERP 与生产现场的关键系统。介绍其在加工、装配及其他场景的应用,通过实例展示各场景下的功能、特点和实施效果,如实现生产信息可视化、产品追溯、设备监控等。还提及实施 MES 面临的…...

[推荐]AI驱动的知识图谱生成器(AI Powered Knowledge Graph Generator)

网址:https://github.com/robert-mcdermott/ai-knowledge-graph# 一、介绍 简介:以非结构化文本文档为输入,使用您选择的LLM以主语-谓语-宾语 (SPO) 三元组的形式提取知识,并将这些关系可视化为交互式知识图谱 特点&#xff1a…...

波束形成(BF)从算法仿真到工程源码实现-第七节-关于波束10个基本概念

一、波束10个基本概念 1.作用: 对多路麦克风信号进行合并处理,抑制非目标方向的干扰信号,增强目标方向的声音信号。 2.原理: 调整相位阵列的基本单元参数,使得某些角度的信号获得相长干涉,而另一些角度的…...

深度学习(第一集)

123 import torch# 创建一个需要计算梯度的张量 x1 torch.tensor([2.0], requires_gradTrue)# 定义一个简单的函数 y x^2 y x1 ** 4# 计算梯度 y.backward()print("x1.grad 的值:", ) # 打印 x1.grad print("x1.grad 的值:", x1…...

Spring 事务传播行为

在Spring框架中,事务传播行为(Transaction Propagation)定义了事务在多个方法调用之间的行为方式。理解这些传播行为对于设计可靠的事务管理策略至关重要。以下是Spring支持的七种事务传播行为及其应用场景的详细说明: 1. REQUIRED(默认) 行为:如果当前存在事务,则加入…...

搬运机器人的基本工作场景及原理

搬运机器人广泛应用于工业生产中,主要用于搬运、堆放、装配等工作。它通过机械手臂的运动,结合机器视觉技术完成各种自动化作业。 一、搬运机器人的设计原理 搬运机器人通常采用可移动门架式结构,手臂承载机构安装在导轨上,可以沿…...

Ubuntu终端中常用的快捷键整理

1. 导航与编辑 光标移动: Ctrl A:跳转到行首。 Ctrl E:跳转到行尾。 Alt B:向左移动一个单词(或 Ctrl ←)。 Alt F:向右移动一个单词(或 Ctrl →)。 删除操作…...

mysql安装-MySQL MGR(Group Replication)+ ProxySQL 架构

文章目录 前言一、环境规划二、安装 MySQL 8.0.36(主库,CentOS 9)2.1 添加 Yum 源2.2 安装 MySQL 8.0.362.3 初始化 三、配置主库 my.cnf(192.168.1.101)四、(可选)创建远程可访问的用户&#x…...

Opencv使用cuda实现图像处理

main.py import os import cv2 print(fOpenCV: {cv2.__version__} for python installed and working) image cv2.imread(bus.jpg) if image is None:print("无法加载图像1") print(cv2.cuda.getCudaEnabledDeviceCount()) cv2.cuda.setDevice(0) cv2.cuda.printCu…...

ubuntu 安装samba

ubuntu 版本:Ubuntu 24.04.2 LTS 1. 保证连网 2. 安装samba sudo apt install samba 在安装结束以后,我们可以使用下面的命令来查看安装: apt list | grep samba freeipa-client-samba/noble 4.11.1-2 amd64 ldb-tools/noble 2:2.8.0samba…...

山东大学软件学院创新项目实训开发日志(12)之将对话记录保存到数据库中

在之前的功能开发中,已经成功将deepseekAPI接口接入到springbootvue项目中,所以下一步的操作是将对话和消息记录保存到数据库中 在之前的开发日志中提到数据库建表,所以在此刻需要用到两个表,conversation表和message表&#xff…...

欢乐力扣:反转链表二

文章目录 1、题目描述2、思路 1、题目描述 反转链表二。  给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 2、思路 参考官方题解&#xff0c;基本思路…...

【CS*N是狗】亲测可用!!WIN11上禁用Chrome自动更新IDM插件

现象&#xff1a;每次打开chrome后IDM会弹出提示插件版本不一致。经过排查后发现是chrome把IDM插件给更新了&#xff0c;导致IDM提示版本不匹配。经过摸索后&#xff0c;得到了可行的方案。 第一步&#xff0c;打开Chrome&#xff0c;把IDM插件卸载掉&#xff0c;然后重新安装I…...

Linux:DNS服务配置(课堂实验总结)

遇到的问题&#xff0c;都有解决方案&#xff0c;希望我的博客能为你提供一点帮助。 操作系统&#xff1a;rocky Linux 9.5 ​​一、配置DNS服务器的核心步骤​​ 步骤 1&#xff1a;安装 BIND 软件​​ ​​检查是否安装​​&#xff1a; rpm -qa | grep "^bind"…...

啥是Spring,有什么用,既然收费,如何免费创建SpringBoot项目,依赖下载不下来的解决方法,解决99%问题!

一、啥是Spring&#xff0c;为啥选择它 我们平常说的Spring指的是Spring全家桶&#xff0c;我们为什么要选择Spring&#xff0c;看看官方的话&#xff1a; 意思就是&#xff1a;用这个东西&#xff0c;又快又好又安全&#xff0c;反正就是好处全占了&#xff0c;所以我们选择它…...

【LeetCode】算法详解#4 ---合并区间

1.题目介绍 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 1 < intervals.length < 104interval…...

安装树莓派3B+环境

目录 一、安装树莓派3B环境 1.1 格式化SD卡 1.2 环境安装与配置 1.2.1 安装Raspberry Pi 1.2.2 SSH访问树莓派 1.3 创建用户账号 二、在树莓派上用C和Python编程运行一个简单的程序 2.1 C语言程序 2.2 Python程序 三、总结 树莓派是一款功能强大的微型计算机&#xf…...

​​STM32(3.3V 系统)通过串口直接向 ATmega328P(5V 系统)发送数据​​,居然能正常通信

​​核心结论​​ 如果 ​​STM32&#xff08;3.3V 系统&#xff09;通过串口直接向 ATmega328P&#xff08;5V 系统&#xff09;发送数据​​&#xff0c;​​3.3V 的 TX 高电平可能无法被 ATmega328P 可靠识别为逻辑“1”​​&#xff01;以下是详细分析&#xff1a; ​​1.…...

Java 8中的Lambda 和 Stream (from Effective Java 第三版)

42.Lambda 优先于匿名类 在之前的做法中&#xff08;Historically&#xff09;&#xff0c;使用单个抽象方法的接口&#xff08;或很少的抽象类【只有一个抽象方法的抽象类数量比较少】&#xff09;被用作函数类型。它们的实例称为函数对象&#xff0c;代表一个函数或一种行为。…...

MIPI协议介绍

MIPI协议介绍 mipi 协议分为 CSI 和DSI,两者的区别在于 CSI用于接收sensor数据流 DSI用于连接显示屏 csi分类 csi 分为 csi2 和 csi3 csi2根据物理层分为 c-phy 和 d-phy, csi-3采用的是m-phy 一般采用csi2 c-phy 和 d-phy的区别 d-phy的时钟线和数据线是分开的,2根线一对…...

深入解析 HTML 中 `<script>` 标签的 async 和 defer 属性

一、背景与问题 在网页性能优化中&#xff0c;脚本的加载和执行方式直接影响页面渲染速度和用户体验。传统 <script> 标签的阻塞行为可能导致页面“白屏”&#xff0c;而 async 和 defer 属性提供了非阻塞的解决方案。本周重点研究二者的差异、适用场景及实际应用。 二、…...

【从0到1学Elasticsearch】Elasticsearch从入门到精通(上)

黑马商城作为一个电商项目&#xff0c;商品的搜索肯定是访问频率最高的页面之一。目前搜索功能是基于数据库的模糊搜索来实现的&#xff0c;存在很多问题。 首先&#xff0c;查询效率较低。 由于数据库模糊查询不走索引&#xff0c;在数据量较大的时候&#xff0c;查询性能很差…...

2.0 全栈运维管理:Linux网络基础核心概念解析、Proxmox网络组件详解、虚拟化网络模型分类

本文是Proxmox VE 全栈管理体系的系列文章之一&#xff0c;如果对 Proxmox VE 全栈管理感兴趣&#xff0c;可以关注“Proxmox VE 全栈管理”专栏&#xff0c;后续文章将围绕该体系&#xff0c;从多个维度深入展开。 摘要&#xff1a;Linux 网络基础借助桥接、VLAN 和 Bonding 实…...

案例驱动的 IT 团队管理:创新与突破之路: 第四章 危机应对:从风险预见到创新破局-4.1.3重构过程中的团队士气管理

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 案例驱动的 IT 团队管理&#xff1a;创新与突破之路 - 第四章 危机应对&#xff1a;从风险预见到创新破局4.1.3 重构过程中的团队士气管理1. 技术债务重构与团队士气的矛盾2…...

洛谷刷题小结

#include <iostream> using namespace std; int n, m,ans0; char s[105][105]; //深搜 void dfs(int x, int y) {//将搜索到的水坑看为干地s[x][y] .;//确定八个方向int next[8][2] {{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1},};//朝八个方向搜索for (in…...