文章目录

  • 前言
  • 一、MCP(model context protocol)
    • 1.1、概念描述
    • 1.2、MCP作用与意义
    • 1.3、MCP架构
  • 二、使用MCP(model context protocol)
    • 2.1、云平台使用MCP
    • 2.2、软件客户端使用MCP
    • 2.3、Spring AI程序中使用MCP
  • 三、Spring AI MCP(model context protocol)开发过程
    • 3.1、MCP服务端开发
    • 3.2、MCP客户端开发
  • 四、MCP(model context protocol)部署方案
  • 五、MCP(model context protocol)安全性


前言

若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力!有问题请私信或联系邮箱:funian.gm@gmail.com

一、MCP(model context protocol)

1.1、概念描述

  • MCP(Model Context Protocol,模型上下文协议)是一种开放标准,目的是增强 AI 与外部系统的交互能力。它为 AI 提供了与外部工具、资源和服务交互的标准化方式,让 AI 能够访问最新数据、执行复杂操作,并与现有系统集成。
  • 根据官方定义,MCP 是一种开放协议,它标准化了应用程序如何向大模型提供上下文的方式,可以将 MCP 想象成 AI 应用的 USB 接口,为 AI 模型连接不同的数据源和工具提供了标准化的方法。

在这里插入图片描述

  • MCP 协议的 6 大核心概念:

    • Resources(资源):服务端向客户端提供各种数据,如文本、文件、数据库记录、API 响应等,客户端可决定何时使用这些资源,使 AI 能够访问最新信息和外部知识,为模型提供更丰富的上下文。
    • Prompts(提示词):服务端定义可复用的提示词模板和工作流,供客户端和用户直接使用,作用是标准化常见的 AI 交互模式,如作为 UI 元素(斜杠命令、快捷操作)呈现给用户,简化用户与 LLM 的交互过程。
    • Tools(工具):MCP 中最实用的特性,服务端提供给客户端可调用的函数,使 AI 模型能够执行计算、查询信息或与外部系统交互,极大扩展了 AI 的能力范围。
    • Sampling(采样):允许服务端通过客户端向大模型发送生成内容的请求(反向请求),使 MCP 服务能够实现复杂的智能代理行为,同时保持用户对整个过程的控制和数据隐私保护。
    • Roots(根目录):MCP 协议的安全机制,定义了服务器可以访问的文件系统位置,限制访问范围,为 MCP 服务提供安全边界,防止恶意文件访问。
    • Transports(传输):定义客户端和服务器间的通信方式,包括 Stdio(本地进程间通信)和 SSE(网络实时通信),确保不同环境下的可靠信息交换。
    • 开发 MCP 服务,根据MCP官方的描述,主要关注前 3 个概念,其中 Tools 工具是重中之重。

在这里插入图片描述

1.2、MCP作用与意义

  • MCP 协议的作用和意义:
    • 增强 AI 能力:通过 MCP 协议,AI 应用能够轻松接入他人提供的服务,从而实现更多功能,比如搜索网页、查询数据库、调用第三方 API、执行计算等。
    • 作为协议或标准:MCP 本身并不提供具体服务,而是定义了一套规范,让服务提供者和使用者共同遵守。这类似于 HTTP 协议,能有效降低开发者的理解成本。
    • 标准化的好处:以增加 AI 查询地图能力为例,若没有标准化,不同项目或开发者可能会重复开发相关功能,且质量和效果参差不齐。而 MCP 标准化后,官方或第三方可以将查询地图能力做成服务,供需要的人直接接入,节省开发成本且效果一致。若更多人开放服务,还能打造服务市场,造福开发者。
    • 标准造就生态:这并非新现象,可类比前端的 NPM 包、后端的 Maven 仓库和 Docker 镜像源,以及手机应用市场,都是通过标准形成生态,促进资源共享和行业发展。mcp体验的网址。

在这里插入图片描述

1.3、MCP架构

  • 宏观架构:MCP 的核心是 “客户端 - 服务器” 架构,MCP 客户端主机可以连接到多个服务器。客户端主机是指希望访问 MCP 服务的程序,例如 Claude Desktop、IDE、AI 工具或部署在服务器上的项目。

在这里插入图片描述

  • MCP 客户端:MCP Client 是 MCP 架构中的关键组件,主要负责和 MCP 服务器建立连接并进行通信。它能自动匹配服务器的协议版本、确认可用功能、负责数据传输和 JSON-RPC 交互。此外,它还能发现和使用各种工具、管理资源、和提示词系统进行交互。除了核心功能,MCP 客户端还支持根管理、采样控制以及同步或异步操作等额外特性,并提供多种数据传输方式,包括适用于本地调用的 Stdio 标准输入 / 输出,以及适用于远程调用的基于 Java HttpClient 和 WebFlux 的 SSE 传输。客户端可以通过不同传输方式调用不同的 MCP 服务,既可以是本地的,也可以是远程的。

在这里插入图片描述

  • MCP 服务端:MCP Server 也是整个 MCP 架构的关键组件,主要用来为客户端提供各种工具、资源和功能支持。它负责处理客户端的请求,包括解析协议、提供工具、管理资源以及处理各种交互信息。同时,它还能记录日志、发送通知,并且支持多个客户端同时连接,保证高效的通信和协作。和客户端一样,它也可以通过多种方式进行数据传输,比如 Stdio 标准输入 / 输出、基于 Servlet / WebFlux / WebMVC 的 SSE 传输,以满足不同应用场景。这种设计使得客户端和服务端完全解耦,任何语言开发的客户端都可以调用 MCP 服务。

在这里插入图片描述

二、使用MCP(model context protocol)

  • 使用方式:本节将实战 3 种使用 MCP 的方式,分别是云平台使用 MCP、软件客户端使用 MCP 和程序中使用 MCP。无论哪种使用方式,原理类似,且有 2 种可选的使用模式,即本地下载 MCP 服务端代码并运行(类似引入 SDK),或者直接使用已部署的 MCP 服务(类似调用别人的 API)。
  • MCP 服务获取:目前有很多 MCP 服务市场,开发者可以在这些平台上找到各种现成的 MCP 服务,例如:
    • MCP.so:较为主流,提供丰富的 MCP 服务目录。
    • GitHub Awesome MCP Servers:开源 MCP 服务集合。
    • 阿里云百炼 MCP 服务市场。
    • Spring AI Alibaba 的 MCP 服务市场。
    • Glama.ai MCP 服务。
  • 其中,绝大多数 MCP 服务市场仅提供本地下载 MCP 服务端代码并运行的使用方式,因为部署 MCP 服务需要成本。不过,有些云服务平台提供了云端部署的 MCP 服务,比如阿里云百炼平台,在线填写配置后就能使用,可以轻松和平台上的 AI 应用集成,但一般局限性较大,不太能直接在自己的代码中使用。

在这里插入图片描述

2.1、云平台使用MCP

  • 1、根据阿里云百炼平台的官方文档操作。

在这里插入图片描述

  • 2、登录阿里云百炼平台。

在这里插入图片描述

  • 3、使用高德地图的MCP服务,开通即可。

在这里插入图片描述

  • 4、在应用管理添加智能体,进入智能体应用,添加MCP服务。

在这里插入图片描述
在这里插入图片描述

  • 5、测试MCP服务。

在这里插入图片描述

2.2、软件客户端使用MCP

  • 支持情况:不同的客户端软件对 MCP 的支持程度不同,可在官方文档中查看各客户端支持的特性。
  • 以 Cursor 为例的演示:以主流 AI 客户端 Cursor 为例演示如何使用 MCP 服务,由于没有现成的部署了 MCP 服务的服务器,采用本地运行的方式。
  • 环境准备:首先安装本地运行 MCP 服务需要用到的工具,具体安装什么工具取决于 MCP 服务的配置要求。

具体步骤如下:

  • 1、MCP 市场找到高德地图 MCP,发现 Server Config 中定义了使用 npx 命令行工具来安装和运行服务端代码。

在这里插入图片描述

  • 2、从配置中还发现,使用地图 MCP 需要 API Key,可以到地图开放平台创建应用并添加 API Key。
    在这里插入图片描述

  • 3、打开Cursor客户端的聊天的设置界面。
    在这里插入图片描述

  • 4、添加高德的MCP服务,输入申请的MCP的API,保存配置。

在这里插入图片描述

在这里插入图片描述

  • 5、使用道德的MCP服务,测试验证。

在这里插入图片描述

2.3、Spring AI程序中使用MCP

  • 目标与框架选择:利用 Spring AI 框架,在程序中使用 MCP 实现一个能够根据另一半的位置推荐约会地点的 AI 助手。类似的 Java MCP 开发框架还有 Solon AI MCP,但由于更多地使用 Spring 生态,所以推荐使用 Spring AI 框架。
  • 学习文档建议:首先要了解 Spring AI MCP 客户端的基本使用方法,建议参考 Spring AI Alibaba 的文档,因为 Spring AI 官方文档更新太快,包的路径可能会变动。

在这里插入图片描述

  • 1、在maven中央仓库引入依赖。
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId><version>1.0.0-M6</version>
</dependency>
  • 2、需要在resources目录下新建一个名为mcp-servers.json的配置文件,用于定义项目中需要用到的 MCP 服务。更改为自己的API_KAY。Windows 环境下的命令配置:在 Windows 环境下,命令配置需要添加.cmd后缀,例如npx.cmd,否则会出现找不到命令的错误。

在这里插入图片描述

  • 3、Spring 配置文件修改:需要修改 Spring 配置文件,编写 MCP 客户端配置。由于是本地运行 MCP 服务,所以使用stdio模式,并且要指定 MCP 服务配置文件的位置,具体代码需后续给出。
spring:ai:mcp:client:stdio:servers-configuration: classpath:mcp-servers.json
  • 4、编写测试代码。
 @Resourceprivate ToolCallbackProvider toolCallbackProvider;/*** AI 旅游报告功能(调用 MCP 服务)** @param message* @param chatId* @return*/public String doChatWithMcp(String message, String chatId) {ChatResponse chatResponse = chatClient.prompt().user(message).advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId).param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 20))// 开启日志,便于观察效果.advisors(new LoggerAdvisor()).tools(toolCallbackProvider).call().chatResponse();String content = chatResponse.getResult().getOutput().getText();log.info("content: {}", content);return content;}
  • 通过自动注入的ToolCallbackProvider获取到配置中定义的 MCP 服务提供的所有工具,并提供给ChatClient,具体代码需后续给出。
  • MCP 调用的本质,它类似工具调用,并非 AI 服务器主动调用 MCP 服务,而是告诉 AI “MCP 服务提供了哪些工具”,如果 AI 想要使用这些工具完成任务,就会告知后端程序,后端程序在执行工具后将结果返回给 AI,最后由 AI 总结并回复,后续会给出对应的流程图。

在这里插入图片描述

  • 5、单元测试。
 @Testvoid doChatWithMcp() {String chatId = UUID.randomUUID().toString();// 测试地图 MCPString message = "帮我搜索成都武侯区的景点图片";String answer = TravelApp.doChatWithMcp(message, chatId);Assertions.assertNotNull(answer);}
  • 6、测试验证。

在这里插入图片描述

三、Spring AI MCP(model context protocol)开发过程

3.1、MCP服务端开发

  • 开发基础:服务端开发主要基于 Spring AI MCP Server Boot Starter,能够自动配置 MCP 服务端组件,使开发者能够轻松创建 MCP 服务,向 AI 客户端提供工具、资源和提示词模板,从而扩展 AI 模型的能力范围。
  • 引入依赖:Spring AI 提供了 3 种 MCP 服务端 SDK,分别支持非响应式和响应式编程,可根据需要选择对应的依赖包:
    • spring-ai-starter-mcp-server:提供 stdio 传输支持,不需要额外的 web 依赖。
    • spring-ai-starter-mcp-server-webmvc:提供基于 Spring MVC 的 SSE 传输和可选的 stdio 传输(一般建议引入这个)。
    • spring-ai-starter-mcp-server-webflux:提供基于 Spring WebFlux 的响应式 SSE 传输和可选的 stdio 传输。

在这里插入图片描述

  • 图片搜索的MCP服务自定义开发,步骤如下。

  • 1、引入依赖并在 Pexels 网站生成 API Key,在项目根目录下新建 module(模块),名称未完整显示。注意建议在新项目中单独打开该模块,不要直接在原项目的子文件夹中操作,否则可能出现路径上的问题。引入必要的依赖,包括 Lombok、hutool 工具库和 Spring AI MCP 服务端依赖。

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-mcp-server-webmvc-spring-boot-starter</artifactId><version>1.0.0-M6</version>
</dependency>

在这里插入图片描述

  • 2、撰写配置文件。 Stdio、WebMVC SSE 和 WebFlux SSE 三种服务端依赖可以选择,开发时只需要填写不同的配置,开发流程都一样,此处选择引入 WebMVC。
spring:ai:mcp:server:name: MCP-Serverversion: 0.0.1type: SYNC# stdiostdio: true# stdiomain:web-application-type: nonebanner-mode: off
spring:ai:mcp:server:name: MCP-Serverversion: 0.0.1type: SYNC# stdiostdio: false# stdio
spring:application:name: search-mcp-serverprofiles:active: stdio
server:port: 8127
  • 3、开发MCP服务。无论采用哪种传输方式,开发 MCP 服务的过程都类似,和开发工具调用一样,直接使用@Tool注解标记服务类中的方法。注册 Bean:然后在 Spring Boot 项目启动时注册一个ToolCallbackProvider Bean 。
package com.funian.mcpserver.tools;/*** @Auther FuNian* @Major Computer Software*/
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;@Service
public class ImageSearchTool {// 替换为你的 Pexels API 密钥(需从官网申请)private static final String API_KEY = "自己的API";// Pexels 常规搜索接口(请以文档为准)private static final String API_URL = "https://api.pexels.com/v1/search";@Tool(description = "search image from web")public String searchImage(@ToolParam(description = "Search query keyword") String query) {try {return String.join(",", searchMediumImages(query));} catch (Exception e) {return "Error search image: " + e.getMessage();}}/*** 搜索中等尺寸的图片列表** @param query* @return*/public List<String> searchMediumImages(String query) {// 设置请求头(包含API密钥)Map<String, String> headers = new HashMap<>();headers.put("Authorization", API_KEY);// 设置请求参数Map<String, Object> params = new HashMap<>();params.put("query", query);// 发送 GET 请求String response = HttpUtil.createGet(API_URL).addHeaders(headers).form(params).execute().body();// 解析响应JSONreturn JSONUtil.parseObj(response).getJSONArray("photos").stream().map(photoObj -> (JSONObject) photoObj).map(photoObj -> photoObj.getJSONObject("src")).map(photo -> photo.getStr("medium")).filter(StrUtil::isNotBlank).collect(Collectors.toList());}
}
package com.funian.mcpserver;import com.funian.mcpserver.tools.ImageSearchTool;
import org.springframework.ai.tool.ToolCallbackProvider;
import org.springframework.ai.tool.method.MethodToolCallbackProvider;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;@SpringBootApplication
public class McpServerApplication {public static void main(String[] args) {SpringApplication.run(McpServerApplication.class, args);}@Beanpublic ToolCallbackProvider imageSearchTools(ImageSearchTool imageSearchTool) {return MethodToolCallbackProvider.builder().toolObjects(imageSearchTool).build();}
}
  • 4、单元测试。
package com.funian.mcpserver.tools;import jakarta.annotation.Resource;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;/*** @Auther FuNian* @Major Computer Software*/
@SpringBootTest
class ImageSearchToolTest {@Resourceprivate ImageSearchTool imageSearchTool;@Testvoid searchImage() {String result = imageSearchTool.searchImage("computer");Assertions.assertNotNull(result);}
}
  • 5、测试验证。

在这里插入图片描述

  • 6、Maven package打包,客户端会使用Jar包。

在这里插入图片描述

3.2、MCP客户端开发

  • 1、引入依赖。
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId><version>1.0.0-M6</version>
</dependency>
  • 2、测试Stdio方式。
 "MCP-Server": {"command": "java","args": ["-Dspring.ai.mcp.server.stdio=true","-Dspring.main.web-application-type=none","-Dlogging.pattern.console=","-jar","MCP-Server/target/MCP-Server-0.0.1-SNAPSHOT.jar"],"env": {}}
  • 3、测试验证。

在这里插入图片描述

  • 4、测试SSE方式。
spring:ai:mcp:client:sse:connections:server:url: http://localhost:8127# stdio:# servers-configuration: classpath:mcp-servers.json

四、MCP(model context protocol)部署方案

  • 分为本地部署和远程部署:

    • 本地部署:适用于 stdio 传输方式,流程与开发 MCP 一致,只需将 MCP Server 的代码打包(如 jar 包),上传到 MCP Client 可访问的路径下,通过编写对应的 MCP 配置即可启动。例如后端项目放在服务器 A 上,若项目需要调用 Java 开发的 MCP Server,需将 MCP Server 的可执行 jar 包也放到服务器 A 上。这种方式简单粗暴,适合小项目,但缺点是每个 MCP 服务都要单独部署,服务多了会很麻烦。
    • 远程部署:适用于 SSE 传输方式,流程与部署后端 web 项目一样,需在服务器上部署服务(如 jar 包)并运行。
  • Serverless 平台部署:除了部署到自己的服务器,由于 MCP 服务一般是职责单一的小型项目,很适合部署到 Serverless 平台。使用该平台,开发者只需关注业务代码编写,无需管理服务器等基础设施,系统会根据实际使用量自动扩容并按使用付费,显著降低运维成本和开发复杂。

  • MCP 服务提交至第三方平台:

    • 提交操作:可以把 MCP 服务提交到各种第三方 MCP 服务市场,类似于将应用发布到应用商店,让其他人也能使用自己的 MCP 服务。
    • 好处:这种做法有点像开源,至少可以提升技术影响力、收获一波流量,这也是大公司在 MCP 服务市场上占坑的原因之一。

在这里插入图片描述

五、MCP(model context protocol)安全性

  • 安全现状:MCP 不是一个很安全的协议,安装使用恶意 MCP 服务可能导致隐私泄露、服务器器权限泄露、服务器被恶意执行脚本等问题。
  • 安全问题成因:
    • 信息不对称问题:用户一般只能看到工具的基本功能描述,不会关注 MCP 服务的源码及背后指令,而 AI 能看到完整工具描述,包括隐藏在代码中的指令。恶意开发者可在用户不知情下通过 AI 操控系统行为,且 AI 仅通过描述了解工具能做什么,不了解实际做了什么。例如开发的搜索图片服务,源码中未真正搜索图片,而是返回垃圾图片,AI 也无法知晓。
    • 上下文混合与隔离不足:所有 MCP 工具描述加载到同一会话上下文中,恶意 MCP 工具可影响其他正常工具行为。例如某恶意 MCP 工具描述为忽视其他提示词,只输出特定内容,若拼接进 Prompt 中,会影响 AI 回复,类似 SQL 注入。
    • 大模型本身安全意识不足:大模型被设计为精确执行指令,对恶意指令缺乏有效识别和抵抗能力。例如可直接给大模型添加系统预设,改变 AI 回复。
    • MCP 协议缺乏严格版本控制和更新通知机制:远程 MCP 服务可在用户不知情下更改功能或添加恶意代码,客户端无法感知。例如恶意 MCP 服务提供的 SSE 调用地址,在用户不知情时更新服务,继续调用原地址会遭受攻击。
  • 改进期望:期待 MCP 官方对协议进行改进,包括优化 MCP 服务和工具定义,明确区分功能描述和执行指令;完善权限控制,建立 “最小权限” 原则,涉及敏感数据操作需用户明确授权;建立安全检测机制,检测并禁止工具描述中的恶意指令;规范 MCP 生态,提高 MCP 服务共享门槛,服务市场对上架服务进行安全审计,自动检测潜在恶意代码模式。

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

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

相关文章

Linux的 iproute2 配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge)笔记250713

Linux的 iproute2 配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge&#xff09;笔记250713 在 Linux 中使用 iproute2 工具集配置网络是现代且推荐的方法&#xff0c;它取代了旧的 ifconfig、route、brctl、vconfig 等命令。iproute2 提供了统一的接口 ip …

当信任上链解码区块链溯源系统开发逻辑与产业变革

当信任上链&#xff1a;解码区块链溯源系统的开发逻辑与产业变革在上海某高端超市的进口水果区&#xff0c;消费者王女士拿起一盒车厘子&#xff0c;用手机扫描包装上的二维码&#xff0c;屏幕立刻弹出一串动态信息&#xff1a;智利瓦尔帕莱索港口的装船时间、海关清关的具体日…

可视化DIY小程序工具!开源拖拽式源码系统,自由搭建,完整的源代码包分享

温馨提示&#xff1a;文末有资源获取方式传统的小程序开发对技术要求较高&#xff0c;这使得许多非技术人员望而却步。可视化DIY小程序工具应运而生&#xff0c;它通过拖拽式操作和开源代码系统&#xff0c;极大地降低了开发门槛&#xff0c;让更多人能够快速构建个性化小程序。…

【MLLM】多模态理解GLM-4.1V-Thinking模型

note GLM-4.1V-Thinking模型引入 课程采样强化学习&#xff08;RLCS, Reinforcement Learning with Curriculum Sampling&#xff09; 策略&#xff0c;在多个复杂推理任务中实现能力突破&#xff0c;整体性能达到 10B 级别视觉语言模型的领先水平。GLM-4.1V-9B-Thinking 通过…

【C++详解】STL-priority_queue使用与模拟实现,仿函数详解

文章目录一、priority_queue使用仿函数控制优先级sort算法里的仿函数二、手撕优先级队列优先级队列的容器适配器入堆出堆top/size/empty迭代器区间构造初始化(解耦)三、仿函数仿函数控制冒泡排序仿函数控制priority_queue比较逻辑仿函数使用场景仿函数的其他使用场景源码一、pr…

在mac m1基于ollama运行deepseek r1

1 下载和安装 在ollama的官网下载mac m1版本的ollama https://ollama.com/ 最终获得如下所示的下载地址 https://github.com/ollama/ollama/releases/latest/download/Ollama.dmg 然后点击安装&#xff0c;然后测试 ollama list 2 运行deepseek r1 deepseek-r1:8b 比较适…

TCP与UDP协议详解:网络世界的可靠信使与高速快递

> 互联网的骨架由传输层协议支撑,而TCP与UDP如同血管中的红细胞与血小板,各司其职却又缺一不可 ### 一、初识传输层双雄:网络通信的基石 想象你要给朋友寄送重要文件: - **TCP** 如同顺丰快递:**签收确认+物流追踪**,确保文件完整送达 - **UDP** 如同普通信件:**直接…

Datawhale AI 夏令营【更新中】

Datawhale AI 夏令营【更新中】夏令营简介大模型技术&#xff08;文本&#xff09;方向&#xff1a;用AI做带货视频评论分析机器学习&#xff08;数据挖掘&#xff09;方向&#xff1a;用AI预测新增用户夏令营简介 本次AI夏令营是Datawhale在暑期发起的大规模AI学习活动&#…

AutoDL挂载阿里云OSS

文章目录前言AutoDL 设置阿里OSS设置OSS配置相关key 相关竞猜时间前言 最近&#xff0c;AutoDL提示北京A区网盘功能要下架&#xff0c;然后需要对网盘中数据进行转移等操作&#xff0c;我想网盘中数据下载到本地&#xff0c;大概16G&#xff1b;直接在网盘那里下载&#xff0c…

java 基本数据类型所对应的包装类

一,对应列举Java 中有 8 种基本数据类型&#xff0c;每种基本数据类型都有对应的包装类&#xff0c;它们分别是&#xff1a;二,包装类的作用1. 满足面向对象编程需求Java 是面向对象的编程语言&#xff0c;基本数据类型不是对象&#xff0c;无法使用面向对象的特性&#xff08;…

牛客网50题-10

1.小苯的数字权值#include <iostream> #include <algorithm> using namespace std;const int max_n 2000000; int d[max_n 1]; int f[max_n 1];int main() {for(int i 1; i<max_n;i){for(int j i; j<max_n;ji){d[j];}}for(int i1; i<max_n;i){f[i] d…

基于springboot的大学公文收发管理系统

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业多年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…

【机器学习】反向传播如何求梯度(公式推导)

写在前面 前期学习深度学习的时候&#xff0c;很多概念都是一笔带过&#xff0c;只是觉得它在一定程度上解释得通就行&#xff0c;但是在强化学习的过程中突然意识到&#xff0c;反向传播求梯度其实并不是一件简单的事情&#xff0c;这篇博客的目的就是要讲清楚反向传播是如何对…

ALB、NLB、CLB 负载均衡深度剖析

ALB、NLB、CLB 负载均衡深度剖析 前言 笔者在上周的实际工作中遇到了一个典型的负载均衡选择问题&#xff1a;在使用代理调用相关模型时&#xff0c;最初配置 Nginx 的代理地址为 ALB 的 7 层虚拟 IP&#xff08;VIP&#xff09;&#xff0c;但由于集团网络默认的超时时间为 3 …

历史数据分析——云南白药

医药板块走势分析: 从月线级别来看 2008年11月到2021年2月,月线上走出了两个震荡中枢的月线级别2085-20349的上涨段; 2021年2月到2024年9月,月线上走出了20349-6702的下跌段; 目前月线级别放巨量,总体还在震荡区间内,后续还有震荡和上涨的概率。 从周线级别来看 从…

【读书笔记】《Effective Modern C++》第3章 Moving to Modern C++

《Effective Modern C》第3章 Moving to Modern C 一、区分圆括号 () 与大括号 {} &#xff08;Item 7&#xff09; C11 引入统一初始化&#xff08;brace‑initialization&#xff09;&#xff0c;即使用 {} 来初始化对象&#xff0c;与传统的 () 存在细微差别&#xff1a;避…

Rust基础-part1

Rust基础[part1]—安装和编译 安装 ➜ rust curl --proto https --tlsv1.2 https://sh.rustup.rs -sSf | sh安装成功 [外链图片转存中…(img-ClSHJ4Op-1752058241580)] 验证 ➜ rust rustc --version zsh: command not found: rustc因为我是用的是zsh&#xff0c;所以zsh配置…

PyQt5布局管理(QGridLayout(网格布局))

QGridLayout&#xff08;网格布局&#xff09; QGridLayout&#xff08;网格布局&#xff09;是将窗口分隔成行和列的网格来进行排列。通常可以使用函数addWidget()将被管理的控件&#xff08;Widget)添加到窗口中&#xff0c;或者使用addLayout() 函数将布局&#xff08;Layou…

Java设计模式之行为型模式(责任链模式)介绍与说明

一、核心概念与定义 责任链模式是一种行为型设计模式&#xff0c;其核心思想是将请求沿着处理对象链传递&#xff0c;直到某个对象能够处理该请求为止。通过这种方式&#xff0c;解耦了请求的发送者与接收者&#xff0c;使多个对象有机会处理同一请求。 关键特点&#xff1a; 动…

SQL server之版本的初认知

SQL server之版本的初认知 为什么要编写此篇文档呢&#xff0c;主要是因为在最近测试OGG实时同步SQL server数据库表数据的时候&#xff0c;经过多次测试&#xff0c;发现在安装了一套SQL server2017初始版本&#xff0c;未安装任何补丁的时候&#xff0c;在添加TRANDATA的时候…