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

MCP 协议详细分析一 initialize ping tools/list tools/call

MCP 协议详细分析一 (initialize ping tools/list tools/call)

本节基于 实现一个 java 的mcp client 调用的 一个python 的mcp server 的日志,完整展示一次典型的 MCP Java SDK 通信流程、工具调用、通知机制与日志记录,仅包含 echo-simple 和 echo-with-notifications 两个工具,内容简明、无省略。

2. 详细流程图

主程序McpAsyncClientCustomLoggingTransportHttpClientSseTransportMCP服务器创建CustomLoggingHttpClientTransport委托HTTP传输层构建McpAsyncClient调用initialize()发送initialize请求POST /sse/ (initialize)HTTP POST请求返回初始化响应传递响应处理初始化响应初始化完成发送initialized通知POST /sse/ (initialized)HTTP POST请求调用tools/list发送tools/list请求POST /sse/ (tools/list)HTTP POST请求返回工具列表传递响应处理工具列表响应工具列表返回调用callTool(echo-with-notifications)发送tools/call请求POST /sse/ (tools/call)HTTP POST请求发送多条notifications/message传递通知处理通知触发loggingConsumer发送tools/call响应传递最终响应处理最终响应返回工具调用结果调用closeGracefully()关闭连接关闭HTTP连接关闭SSE连接主程序McpAsyncClientCustomLoggingTransportHttpClientSseTransportMCP服务器

3. 详细日志记录(按请求分组)

请求:initialize

=== MCP DEMO CLIENT WITH NOTIFICATIONS AND SAMPLING ===
Connecting to MCP server at: http://localhost:8080
=========================================================
Custom logging HTTP transport created--- Initializing client ---
22:13:36.494 [main] DEBUG i.m.client.McpAsyncClient - Initialization process started
=== ESTABLISHING MCP CONNECTION ===
Target Server URL: http://localhost:8080
SSE Endpoint: http://localhost:8080/sse/
Setting up SSE connection for MCP communication
Handler configured for bidirectional message processing
=====================================
22:13:36.601 [main] DEBUG i.m.spec.McpClientSession - Sending message for method initialize
=== SENDING MCP MESSAGE ===
Target URL: http://localhost:8080/sse/
HTTP Method: POST
Content-Type: application/json
User-Agent: MCP-Java-SDK-Debug/1.0
Authorization: Bearer abcd1234
Message type: JSONRPCRequest
Message content: {"jsonrpc":"2.0","method":"initialize","id":"5ed91d29-0","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"Spring AI MCP Client","version":"0.3.1"}}}
===========================
=== MESSAGE SENT SUCCESSFULLY ===
HTTP POST to http://localhost:8080/sse/ completed
=================================
22:13:36.665 [HttpClient-1-Worker-1] DEBUG i.m.spec.McpSchema - Received JSON message: {"jsonrpc":"2.0","id":"5ed91d29-0","result":{"protocolVersion":"2024-11-05","capabilities":{"experimental":{},"prompts":{"listChanged":true},"resources":{"subscribe":false,"listChanged":true},"tools":{"listChanged":true}},"serverInfo":{"name":"python mcp server","version":"1.10.1"}}}
=== INCOMING MCP MESSAGE ===
Received from: http://localhost:8080/sse/
Message type: JSONRPCResponse
Message content: {"jsonrpc":"2.0","id":"5ed91d29-0","result":{"protocolVersion":"2024-11-05","capabilities":{"experimental":{},"prompts":{"listChanged":true},"resources":{"subscribe":false,"listChanged":true},"tools":{"listChanged":true}},"serverInfo":{"name":"python mcp server","version":"1.10.1"}}}
============================
22:13:36.715 [HttpClient-1-Worker-1] DEBUG i.m.spec.McpClientSession - Received Response: JSONRPCResponse[jsonrpc=2.0, id=5ed91d29-0, result={protocolVersion=2024-11-05, capabilities={experimental={}, prompts={listChanged=true}, resources={subscribe=false, listChanged=true}, tools={listChanged=true}}, serverInfo={name=python mcp server, version=1.10.1}}, error=null]
22:13:36.739 [HttpClient-1-Worker-1] INFO  i.m.client.McpAsyncClient - Server response with Protocol: 2024-11-05, Capabilities: ServerCapabilities[completions=null, experimental={}, logging=null, prompts=PromptCapabilities[listChanged=true], resources=ResourceCapabilities[subscribe=false, listChanged=true], tools=ToolCapabilities[listChanged=true]], Info: Implementation[name=python mcp server, version=1.10.1] and Instructions null
=== SENDING MCP MESSAGE ===
Target URL: http://localhost:8080/sse/
HTTP Method: POST
Content-Type: application/json
User-Agent: MCP-Java-SDK-Debug/1.0
Authorization: Bearer abcd1234
Message type: JSONRPCNotification
Message content: {"jsonrpc":"2.0","method":"notifications/initialized"}
===========================
=== OUTGOING MCP RESPONSE ===
Sending to: http://localhost:8080/sse/
Response type: JSONRPCResponse
=== MESSAGE SENT SUCCESSFULLY ===
HTTP POST to http://localhost:8080/sse/ completed
=================================
Response content: {"jsonrpc":"2.0","id":"5ed91d29-0","result":{"protocolVersion":"2024-11-05","capabilities":{"experimental":{},"prompts":{"listChanged":true},"resources":{"subscribe":false,"listChanged":true},"tools":{"listChanged":true}},"serverInfo":{"name":"python mcp server","version":"1.10.1"}}}
==============================
Client initialized successfully

请求:ping

--- Pinging server ---
22:13:36.765 [main] DEBUG i.m.client.McpAsyncClient - Joining previous initialization
22:13:36.767 [main] DEBUG i.m.spec.McpClientSession - Sending message for method ping
=== SENDING MCP MESSAGE ===
Target URL: http://localhost:8080/sse/
HTTP Method: POST
Content-Type: application/json
User-Agent: MCP-Java-SDK-Debug/1.0
Authorization: Bearer abcd1234
Message type: JSONRPCRequest
Message content: {"jsonrpc":"2.0","method":"ping","id":"5ed91d29-1"}
===========================
=== MESSAGE SENT SUCCESSFULLY ===
HTTP POST to http://localhost:8080/sse/ completed
=================================
22:13:36.773 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpSchema - Received JSON message: {"jsonrpc":"2.0","id":"5ed91d29-1","result":{}}
=== INCOMING MCP MESSAGE ===
Received from: http://localhost:8080/sse/
Message type: JSONRPCResponse
Message content: {"jsonrpc":"2.0","id":"5ed91d29-1","result":{}}
============================
22:13:36.775 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpClientSession - Received Response: JSONRPCResponse[jsonrpc=2.0, id=5ed91d29-1, result={}, error=null]
=== OUTGOING MCP RESPONSE ===
Sending to: http://localhost:8080/sse/
Response type: JSONRPCResponse
Ping successful. Response:
{ }

请求:tools/list

--- Listing tools ---
22:13:36.776 [main] DEBUG i.m.client.McpAsyncClient - Joining previous initialization
Response content: {"jsonrpc":"2.0","id":"5ed91d29-1","result":{}}
==============================
22:13:36.777 [main] DEBUG i.m.spec.McpClientSession - Sending message for method tools/list
=== SENDING MCP MESSAGE ===
Target URL: http://localhost:8080/sse/
HTTP Method: POST
Content-Type: application/json
User-Agent: MCP-Java-SDK-Debug/1.0
Authorization: Bearer abcd1234
Message type: JSONRPCRequest
Message content: {"jsonrpc":"2.0","method":"tools/list","id":"5ed91d29-2","params":{}}
===========================
=== MESSAGE SENT SUCCESSFULLY ===
HTTP POST to http://localhost:8080/sse/ completed
=================================
22:13:36.787 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpSchema - Received JSON message: {"jsonrpc":"2.0","id":"5ed91d29-2","result":{"tools":[{"name":"echo-simple","description":"简单的Echo工具:直接返回输入的消息(不包装JSON格式)\n\nArgs:\n    message: 要回显的消息\n    \nReturns:\n    相同的输入消息","inputSchema":{"properties":{"message":{"title":"Message","type":"string"}},"required":["message"],"type":"object"},"outputSchema":{"properties":{"result":{"title":"Result","type":"string"}},"required":["result"],"title":"_WrappedResult","type":"object","x-fastmcp-wrap-result":true}},{"name":"echo-with-notifications","description":"带不同级别通知的Echo工具:演示MCP日志通知功能\n\nArgs:\n    message: 要回显的消息\n    notification_level: 通知级别\n    \nReturns:\n    处理后的消息","inputSchema":{"properties":{"message":{"description":"要回显的消息","title":"Message","type":"string"},"notification_level":{"default":"info","description":"通知级别 (debug/info/warning/error)","title":"Notification Level","type":"string"}},"required":["message"],"type":"object"},"outputSchema":{"properties":{"result":{"title":"Result","type":"string"}},"required":["result"],"title":"_WrappedResult","type":"object","x-fastmcp-wrap-result":true}}]}}
=== INCOMING MCP MESSAGE ===
Received from: http://localhost:8080/sse/
Message type: JSONRPCResponse
Message content: {"jsonrpc":"2.0","id":"5ed91d29-2","result":{"tools":[{"name":"echo-simple","description":"简单的Echo工具:直接返回输入的消息(不包装JSON格式)\n\nArgs:\n    message: 要回显的消息\n    \nReturns:\n    相同的输入消息","inputSchema":{"properties":{"message":{"title":"Message","type":"string"}},"required":["message"],"type":"object"},"outputSchema":{"properties":{"result":{"title":"Result","type":"string"}},"required":["result"],"title":"_WrappedResult","type":"object","x-fastmcp-wrap-result":true}},{"name":"echo-with-notifications","description":"带不同级别通知的Echo工具:演示MCP日志通知功能\n\nArgs:\n    message: 要回显的消息\n    notification_level: 通知级别\n    \nReturns:\n    处理后的消息","inputSchema":{"properties":{"message":{"description":"要回显的消息","title":"Message","type":"string"},"notification_level":{"default":"info","description":"通知级别 (debug/info/warning/error)","title":"Notification Level","type":"string"}},"required":["message"],"type":"object"},"outputSchema":{"properties":{"result":{"title":"Result","type":"string"}},"required":["result"],"title":"_WrappedResult","type":"object","x-fastmcp-wrap-result":true}}]}}
============================
22:13:36.791 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpClientSession - Received Response: JSONRPCResponse[jsonrpc=2.0, id=5ed91d29-2, result={tools=[{name=echo-simple, description=简单的Echo工具:直接返回输入的消息(不包装JSON格式)Args:message: 要回显的消息Returns:相同的输入消息, inputSchema={properties={message={title=Message, type=string}}, required=[message], type=object}, outputSchema={properties={result={title=Result, type=string}}, required=[result], title=_WrappedResult, type=object, x-fastmcp-wrap-result=true}}, {name=echo-with-notifications, description=带不同级别通知的Echo工具:演示MCP日志通知功能Args:message: 要回显的消息notification_level: 通知级别Returns:处理后的消息, inputSchema={properties={message={description=要回显的消息, title=Message, type=string}, notification_level={default=info, description=通知级别 (debug/info/warning/error), title=Notification Level, type=string}}, required=[message], type=object}, outputSchema={properties={result={title=Result, type=string}}, required=[result], title=_WrappedResult, type=object, x-fastmcp-wrap-result=true}}]}, error=null]
=== OUTGOING MCP RESPONSE ===
Sending to: http://localhost:8080/sse/
Response type: JSONRPCResponse--- Testing Notifications Feature ---
Response content: {"jsonrpc":"2.0","id":"5ed91d29-2","result":{"tools":[{"name":"echo-simple","description":"简单的Echo工具:直接返回输入的消息(不包装JSON格式)\n\nArgs:\n    message: 要回显的消息\n    \nReturns:\n    相同的输入消息","inputSchema":{"properties":{"message":{"title":"Message","type":"string"}},"required":["message"],"type":"object"},"outputSchema":{"properties":{"result":{"title":"Result","type":"string"}},"required":["result"],"title":"_WrappedResult","type":"object","x-fastmcp-wrap-result":true}},{"name":"echo-with-notifications","description":"带不同级别通知的Echo工具:演示MCP日志通知功能\n\nArgs:\n    message: 要回显的消息\n    notification_level: 通知级别\n    \nReturns:\n    处理后的消息","inputSchema":{"properties":{"message":{"description":"要回显的消息","title":"Message","type":"string"},"notification_level":{"default":"info","description":"通知级别 (debug/info/warning/error)","title":"Notification Level","type":"string"}},"required":["message"],"type":"object"},"outputSchema":{"properties":{"result":{"title":"Result","type":"string"}},"required":["result"],"title":"_WrappedResult","type":"object","x-fastmcp-wrap-result":true}}]}}
==============================

请求:tools/call(echo-with-notifications)

Request params:
{"name" : "echo-with-notifications","arguments" : {"notification_level" : "warning","message" : "测试通知功能!"}
}
22:13:36.807 [main] DEBUG i.m.client.McpAsyncClient - Joining previous initialization
22:13:36.808 [main] DEBUG i.m.spec.McpClientSession - Sending message for method tools/call
=== SENDING MCP MESSAGE ===
Target URL: http://localhost:8080/sse/
HTTP Method: POST
Content-Type: application/json
User-Agent: MCP-Java-SDK-Debug/1.0
Authorization: Bearer abcd1234
Message type: JSONRPCRequest
Message content: {"jsonrpc":"2.0","method":"tools/call","id":"5ed91d29-3","params":{"name":"echo-with-notifications","arguments":{"notification_level":"warning","message":"测试通知功能!"}}}
===========================
=== MESSAGE SENT SUCCESSFULLY ===
HTTP POST to http://localhost:8080/sse/ completed
=================================
22:13:36.820 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpSchema - Received JSON message: {"method":"notifications/message","params":{"level":"debug","data":"这是一个调试级别的通知"},"jsonrpc":"2.0"}
=== INCOMING MCP MESSAGE ===
Received from: http://localhost:8080/sse/
Message type: JSONRPCNotification
Message content: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"debug","data":"这是一个调试级别的通知"}}
============================
22:13:36.823 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpClientSession - Received notification: JSONRPCNotification[jsonrpc=2.0, method=notifications/message, params={level=debug, data=这是一个调试级别的通知}]
22:13:36.842 [HttpClient-1-Worker-2] DEBUG i.m.client.McpAsyncClient - Logging: LoggingMessageNotification[level=DEBUG, logger=null, data=这是一个调试级别的通知]=== NOTIFICATION RECEIVED ===
Level: DEBUG
Logger: null
Data: 这是一个调试级别的通知
=============================
=== OUTGOING MCP RESPONSE ===
Sending to: http://localhost:8080/sse/
Response type: JSONRPCNotification
Response content: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"debug","data":"这是一个调试级别的通知"}}
==============================
22:13:36.845 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpSchema - Received JSON message: {"method":"notifications/message","params":{"level":"info","data":"这是一个信息级别的通知"},"jsonrpc":"2.0"}
=== INCOMING MCP MESSAGE ===
Received from: http://localhost:8080/sse/
Message type: JSONRPCNotification
Message content: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"这是一个信息级别的通知"}}
============================
22:13:36.847 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpClientSession - Received notification: JSONRPCNotification[jsonrpc=2.0, method=notifications/message, params={level=info, data=这是一个信息级别的通知}]
22:13:36.848 [HttpClient-1-Worker-2] DEBUG i.m.client.McpAsyncClient - Logging: LoggingMessageNotification[level=INFO, logger=null, data=这是一个信息级别的通知]=== NOTIFICATION RECEIVED ===
Level: INFO
Logger: null
Data: 这是一个信息级别的通知
=============================
=== OUTGOING MCP RESPONSE ===
Sending to: http://localhost:8080/sse/
Response type: JSONRPCNotification
Response content: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"这是一个信息级别的通知"}}
==============================
22:13:36.850 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpSchema - Received JSON message: {"method":"notifications/message","params":{"level":"warning","data":"警告:您选择了警告级别来处理消息: 测试通知功能!"},"jsonrpc":"2.0"}
=== INCOMING MCP MESSAGE ===
Received from: http://localhost:8080/sse/
Message type: JSONRPCNotification
Message content: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"warning","data":"警告:您选择了警告级别来处理消息: 测试通知功能!"}}
============================
22:13:36.851 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpClientSession - Received notification: JSONRPCNotification[jsonrpc=2.0, method=notifications/message, params={level=warning, data=警告:您选择了警告级别来处理消息: 测试通知功能!}]
22:13:36.852 [HttpClient-1-Worker-2] DEBUG i.m.client.McpAsyncClient - Logging: LoggingMessageNotification[level=WARNING, logger=null, data=警告:您选择了警告级别来处理消息: 测试通知功能!]=== NOTIFICATION RECEIVED ===
Level: WARNING
Logger: null
Data: 警告:您选择了警告级别来处理消息: 测试通知功能!
=============================
=== OUTGOING MCP RESPONSE ===
Sending to: http://localhost:8080/sse/
Response type: JSONRPCNotification
Response content: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"warning","data":"警告:您选择了警告级别来处理消息: 测试通知功能!"}}
==============================
22:13:36.854 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpSchema - Received JSON message: {"jsonrpc":"2.0","id":"5ed91d29-3","result":{"content":[{"type":"text","text":"{\"result\": true, \"message\": \"带warning级别通知的Echo成功\", \"timestamp\": \"2025-07-19T22:13:36.819802Z\", \"tool_name\": \"echo_with_notifications\", \"data\": {\"echo_message\": \"测试通知功能!\", \"notification_level\": \"warning\", \"notifications_sent\": [\"debug\", \"info\", \"warning\"]}}"}],"structuredContent":{"result":"{\"result\": true, \"message\": \"带warning级别通知的Echo成功\", \"timestamp\": \"2025-07-19T22:13:36.819802Z\", \"tool_name\": \"echo_with_notifications\", \"data\": {\"echo_message\": \"测试通知功能!\", \"notification_level\": \"warning\", \"notifications_sent\": [\"debug\", \"info\", \"warning\"]}}"},"isError":false}}
=== INCOMING MCP MESSAGE ===
Received from: http://localhost:8080/sse/
Message type: JSONRPCResponse
Message content: {"jsonrpc":"2.0","id":"5ed91d29-3","result":{"content":[{"type":"text","text":"{\"result\": true, \"message\": \"带warning级别通知的Echo成功\", \"timestamp\": \"2025-07-19T22:13:36.819802Z\", \"tool_name\": \"echo_with_notifications\", \"data\": {\"echo_message\": \"测试通知功能!\", \"notification_level\": \"warning\", \"notifications_sent\": [\"debug\", \"info\", \"warning\"]}}"}],"structuredContent":{"result":"{\"result\": true, \"message\": \"带warning级别通知的Echo成功\", \"timestamp\": \"2025-07-19T22:13:36.819802Z\", \"tool_name\": \"echo_with_notifications\", \"data\": {\"echo_message\": \"测试通知功能!\", \"notification_level\": \"warning\", \"notifications_sent\": [\"debug\", \"info\", \"warning\"]}}"},"isError":false}}
============================
22:13:36.856 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpClientSession - Received Response: JSONRPCResponse[jsonrpc=2.0, id=5ed91d29-3, result={content=[{type=text, text={"result": true, "message": "带warning级别通知的Echo成功", "timestamp": "2025-07-19T22:13:36.819802Z", "tool_name": "echo_with_notifications", "data": {"echo_message": "测试通知功能!", "notification_level": "warning", "notifications_sent": ["debug", "info", "warning"]}}}], structuredContent={result={"result": true, "message": "带warning级别通知的Echo成功", "timestamp": "2025-07-19T22:13:36.819802Z", "tool_name": "echo_with_notifications", "data": {"echo_message": "测试通知功能!", "notification_level": "warning", "notifications_sent": ["debug", "info", "warning"]}}}, isError=false}, error=null]
=== OUTGOING MCP RESPONSE ===
Sending to: http://localhost:8080/sse/
Response type: JSONRPCResponse
Response content: {"jsonrpc":"2.0","id":"5ed91d29-3","result":{"content":[{"type":"text","text":"{\"result\": true, \"message\": \"带warning级别通知的Echo成功\", \"timestamp\": \"2025-07-19T22:13:36.819802Z\", \"tool_name\": \"echo_with_notifications\", \"data\": {\"echo_message\": \"测试通知功能!\", \"notification_level\": \"warning\", \"notifications_sent\": [\"debug\", \"info\", \"warning\"]}}"}],"structuredContent":{"result":"{\"result\": true, \"message\": \"带warning级别通知的Echo成功\", \"timestamp\": \"2025-07-19T22:13:36.819802Z\", \"tool_name\": \"echo_with_notifications\", \"data\": {\"echo_message\": \"测试通知功能!\", \"notification_level\": \"warning\", \"notifications_sent\": [\"debug\", \"info\", \"warning\"]}}"},"isError":false}}
==============================
Notification tool response:
{"content" : [ {"type" : "text","text" : "{\"result\": true, \"message\": \"带warning级别通知的Echo成功\", \"timestamp\": \"2025-07-19T22:13:36.819802Z\", \"tool_name\": \"echo_with_notifications\", \"data\": {\"echo_message\": \"测试通知功能!\", \"notification_level\": \"warning\", \"notifications_sent\": [\"debug\", \"info\", \"warning\"]}}"} ],"isError" : false
}--- Waiting for notifications ---
Timeout waiting for notifications, received: 3 out of 5 expected

请求:closeGracefully

--- Closing client ---
=== CLOSING MCP CONNECTION ===
Closing connection to: http://localhost:8080/sse/
Initiating graceful shutdown of transport
Transport closed successfully
==============================
Client closed successfully

4. 工具列表与参数(本次仅包含 echo-simple、echo-with-notifications)

22:13:36.787 [HttpClient-1-Worker-2] DEBUG i.m.spec.McpSchema - Received JSON message: {"jsonrpc":"2.0","id":"5ed91d29-2","result":{"tools":[{"name": "echo-simple","description": "简单的Echo工具:直接返回输入的消息(不包装JSON格式)\n\nArgs:\n    message: 要回显的消息\n    \nReturns:\n    相同的输入消息","inputSchema": {"properties": {"message": { "title": "Message", "type": "string" }},"required": ["message"],"type": "object"},"outputSchema": {"properties": {"result": { "title": "Result", "type": "string" }},"required": ["result"],"title": "_WrappedResult","type": "object","x-fastmcp-wrap-result": true}},{"name": "echo-with-notifications","description": "带不同级别通知的Echo工具:演示MCP日志通知功能\n\nArgs:\n    message: 要回显的消息\n    notification_level: 通知级别\n    \nReturns:\n    处理后的消息","inputSchema": {"properties": {"message": { "description": "要回显的消息", "title": "Message", "type": "string" },"notification_level": { "default": "info", "description": "通知级别 (debug/info/warning/error)", "title": "Notification Level", "type": "string" }},"required": ["message"],"type": "object"},"outputSchema": {"properties": {"result": { "title": "Result", "type": "string" }},"required": ["result"],"title": "_WrappedResult","type": "object","x-fastmcp-wrap-result": true}}
]}}

http://www.xdnf.cn/news/15784.html

相关文章:

  • C++数据结构————集合
  • 暑期训练8
  • 读书笔记:最好使用C++转型操作符
  • MCP 协议详细分析 二 Sampling
  • NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化
  • Supertest(Node.js)接口测试
  • NJU 凸优化导论(9) 对偶(II)KKT条件+变形重构
  • 笔试强训——第一周
  • 阿里云服务器 CentOS 7 安装 MySQL 8.4 超详细指南
  • 2025年医疗人工智能发展现状
  • 网络基础DAY14-可靠性概念及要求+链路聚合
  • 机器学习漫画小抄 - 彩图版
  • 『 C++ 入门到放弃 』- AVL树
  • 了解.NET Core状态管理:优化技巧与常见问题解决方案
  • 暑假--作业3
  • Linux 自旋锁
  • 13.4 Meta LLaMA开源模型家族全面解析:从Alpaca到Vicuna的技术内幕
  • 笛卡尔积规避:JOIN条件完整性检查要点
  • React生命周期
  • 【Bluedroid】btif_av_sink_execute_service之服务器启用源码流程解析
  • 一动一静皆消耗——IC设计之低功耗技术(Low Power Design)
  • install_arm_docker.sh
  • Redis性能测试全攻略:工具实操与性能优化指南
  • 安装单机版本Redis
  • 2025第15届上海国际生物发酵展:聚焦合成生物与绿色制造,共启生物经济新时代
  • 在 .NET Core 中创建 Web Socket API
  • Spring AI 1.0版本 + 千问大模型之文本对话
  • FPGA自学——二选一多路选择器
  • 南洋理工空中导航零样本迁移与泛化!VLFly:基于开放词汇目标理解的无人机视觉语言导航
  • 1. Spring AI概述