【MCP】从一个天气查询服务带你了解MCP
1. 前言
这篇文章将通过一个集成高德天气查询的 MCP Server 用例,带你上手开发自己的 MCP Server ,文章将通过以下三种方式(自己编写 Client 端代码,使用 mcp-cli 自带页面,集成到 Claude 桌面版等)带你测试自己的 MCP Server。
PS:文章中的每一步都经过自己亲自上手。整理不易,请不要令色你的赞和收藏。
2. MCP介绍
2.1 什么是MCP?
MCP (Model Context Protocol) 是一个开放协议,由 Anthropic 公司推出的开放标准,用于标准化应用程序如何向 LLM 提供上下文。它可以比作 AI 应用程序的 USB-C 接口,提供了一种标准化方式将 AI 模型连接到不同的数据源和工具。
2.2 架构介绍
MCP 遵循 client-server (客户端-服务端) 架构,并允许一个主机应用程序同时连接多个服务器。下面是其核心架构图:
2.3 传输机制
MCP 中 Server 和 Client 之间主要支持以下两种通信方式,并且都使用 JSON-RPC 2.0 (一种轻量级的远程过程调用(RPC)协议) 交换消息:
-
Stdio 传输:使用标准输入/输出,适合本地通信。
-
SSE 传输:使用 Server-Sent Events 和 HTTP POST 请求,实现响应式输出,适合远程通信。
2.4 你的疑问?
2.4.1 什么是MCP Servers?
MCP Servers 是提供上下文、工具和提示给 AI 客户端的系统。它们可以暴露数据源,如文件、文档、数据库和 API 集成,允许 AI 助手以安全的方式访问实时信息
2.4.2 MCP Servers能提供什么?
MCP Servers 可以共享资源(文件、文档、数据)、暴露工具(API 集成、操作)并提供提示(模板交互)。它们控制自己的资源并维护清晰的系统边界以保障安全。
2.4.3 MCP Servers是如何工作的?
MCP Servers 通过简单的客户端-服务器架构工作。它们通过标准协议公开数据和工具,与主机应用程序(如 Claude 桌面)中的客户端保持安全的 1:1 连接。
2.4.4 MCP Servers安全吗?
是的,安全性已内置到 MCP 协议中。服务器控制自己的资源,无需与LLM提供商共享 API 密钥,并且系统保持清晰的边界。每个服务器管理自己的身份验证和访问控制。
3. 前提条件
这篇文章使用 Python 来开发 MCP Server ,使用高德地图的 API 来查询天气。阅读之前,你需要具备以下条件:
-
已安装 Python 3.10 或更高版本。
-
已申请高德 web 服务 API_KEY,访问 高德开放平台 申请。
我使用的 Python 版本是 3.12,我的系统是 win11。
拓展:目前官方已提供以下几种语言的 SDK:Python、TypeScript、Java、C#、Kotlin等,详情可访问文末的参考文档。
4. 开发
4.1 创建一个Pyhon项目
推荐使用 uv 做为 Python 包管理工具。
1. 安装 uv:
pip install uv
2. 使用uv创建一个 mcp-demo 项目:
uv init mcp-demo
3. 创建uv虚拟环境:
# 进入到刚创建的项目目录下
cd .\mcp-demo\# 创建uv虚拟环境
uv venv .venv
执行完上述命令后,当前目录下会创建一个名为 .venv 的虚拟环境文件夹。
4. 激活虚拟环境:
.\.venv\Scripts\activate
5. 安装 python mcp 依赖:
uv add "mcp[cli]"
6. PyCharm中引入该项目:
使用 PyCharm 打开这个项目,并在【Settings - Python Interpreter】中查看python解释器是否正确(地址为项目路径下的".venv\Scripts\python.exe")。
4.2 MCP Server开发
4.2.1 核心功能
MCP 主要提供一下三种功能:
-
资源(Resources):客户端可读取的文件类数据(如 API 响应或文件内容)。
-
工具(Tools):LLM 可调用的函数(需要用户批准)。
-
提示(Prompts):帮助用户完成特定任务的预编写模板。
通过这篇文章,你可以快速构建一个 MCP Server,使 LLM 能够访问实时天气数据。MCP 提供了统一的接口,可以简化 LLM 与外部数据源的集成过程。
4.2.2 代码
这篇文章主要关注工具(Tools)的使用。
4.2.2.1 创建.env文件
首先在项目路径下创建一个 .env 的文件,用来存储配置信息:
AMAP_API_KEY=<你的高德API_KEY>
4.2.2.2 创建weather-mcp-server.py文件
这篇文章使用官方的 FastMCP 框架构建 MCP 服务端和客户端。
完整代码:
import os
from typing import Dict, Any, Optionalimport httpx
from dotenv import load_dotenv
from mcp.server.fastmcp import FastMCP# 定义一个 FastMCp 实例
mcp = FastMCP("LocalWeatherServer")# 高德天气API配置信息
load_dotenv()
AMAP_WEATHER_API_BASE_URL = "https://restapi.amap.com/v3/weather/weatherInfo"
AMAP_API_KEY = os.getenv("AMAP_API_KEY")async def get_amap_weather(city: str) -> Optional[Dict[str, Any]]:"""调用高德天气接口,获取天气数据"""params = {"city": city,"key": AMAP_API_KEY,"extensions": "all", # all:预报天气,base:实况天气"output": "JSON",}try:async with httpx.AsyncClient(timeout=5.0) as client:response = await client.get(AMAP_WEATHER_API_BASE_URL, params=params)response.raise_for_status()return response.json()except httpx.HTTPError as e:return {"error": f"天气服务请求失败:{e}"}def parse_forecast(cast: Dict[str, str]) -> str:""" 格式化单日天气信息 """return (f"日期:{cast.get('date', '未知')},"f"星期:{cast.get('week', '未知')},"f"白天天气:{cast.get('dayweather', '未知')},"f"夜晚天气:{cast.get('nightweather', '未知')},"f"温度:{cast.get('nighttemp', '未知')}~{cast.get('daytemp', '未知')}℃,"f"风向:{cast.get('daywind', '未知')}~{cast.get('nightwind', '未知')},"f"白天风力:{cast.get('daypower', '未知')}级,"f"夜晚风力:{cast.get('nightpower', '未知')}级。")def format_weather_data(weather_data: Dict[str, Any]) -> str:"""格式化天气响应数据"""if "error" in weather_data:return weather_data["error"]forecasts = weather_data.get("forecasts", [])if not forecasts:return "未找到该城市的天气信息。"forecast = forecasts[0]city = forecast.get("city", "未知城市")casts = forecast.get("casts", [])if not casts:return "未找到该城市的天气信息。"today = parse_forecast(casts[0])future = "\n".join(parse_forecast(c) for c in casts[1:])result = [f"{city}今天的天气:{today}"]if future:result.append(f"未来几天天气:\n{future}")return "\n".join(result)@mcp.tool()
async def fetch_weather(city: str) -> str:"""获取城市天气"""weather_data = await get_amap_weather(city)return format_weather_data(weather_data)if __name__ == "__main__":# 运行 MCP 服务器,默认传输协议 stdiomcp.run(transport="stdio")
5. 测试
5.1 通过编写Client端代码测试
5.1.1 客户端实现完整代码:
创建一个 mcp-client.py 的文件:
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client# 创建标准输入输出(stdio)连接的服务器参数配置
server_params = StdioServerParameters(command="python", # 要执行的命令/可执行文件args=["weather-mcp-server.py"], # 传递给命令的参数列表env=None,
)async def run():"""主运行函数,处理客户端会话逻辑"""# 使用stdio_client建立连接,获取读写通道async with stdio_client(server_params) as (read, write):# 创建客户端会话async with ClientSession(read, write) as session:# 初始化连接(握手协议等)await session.initialize()# 列出所有可用的提示模板# prompts = await session.list_prompts()# 获取特定提示模板,可传入参数# prompt = await session.get_prompt(# "example-prompt", # 提示模板名称# arguments={"arg1": "value"} # 模板参数# )# 列出所有可用资源# resources = await session.list_resources()# 列出所有可用工具tools = await session.list_tools()print(f"工具列表:{tools}")# 读取特定资源内容# content, mime_type = await session.read_resource(# "file://some/path" # 资源URI# )# 调用指定工具result = await session.call_tool("fetch_weather", # 工具名称arguments={"city": "南京"} # 工具参数)print(f"查询结果:{result}")if __name__ == "__main__":import asyncio# 运行主异步函数asyncio.run(run())
5.1.2 启动服务端
首先需要启动 MCP 服务端,PyCharm 中右键启动:
5.1.3 测试
以同样的方式运行客户端测试,其结果如下:
5.2 使用mcp-cli自带页面测试
该方式需要安装 node.js 。
5.2.1 启动服务端
命令行键入:
mcp dev weather-mcp-server.py
运行结果:
5.2.2 测试
浏览器打开 http://127.0.0.1:6274
5.3 集成到 Claude 桌面端测试
首先你需要 下载 Claude 桌面端 。
5.3.1 启动服务端
同 5.2.1
5.3.2 配置claude_desktop_config.json文件
打开 Claude 桌面端 - File- Settings - Developer - Edit Config(我这里已经配置,这个界面会不同)。
点击 Edit Config,进入 Claude 运行目录,找到 claude_desktop_config.json 文件,键入以下配置,将 AMAP_API_KEY 值替换为你的高德 API_KEY:
{"mcpServers": {"LocalWeatherServer": {"command": "uv","args": ["--directory","F:\\workspace\\python\\demos\\mcp-demo","run","weather-mcp-server.py"],"env": {"AMAP_API_KEY": "<your_api_key>"}}}
}
配置完成后,重启 Claude 桌面端(需要在任务管理器杀掉 Calude 进程)。
重启后,对话框下方会出现如下锤子按钮。
5.3.3 测试
在聊天对话框输入 ‘ 南京天气 ’,首次调用会出现如下是否使用工具的提示,点击同意即可。
结果:
到这里,MCP的简单用例就开发完了。如果你想发现、分享和学习各种适用于 AI 应用的 MCP 服务器,可以访问 MCP Servers 。
6. 参考文档
- Model Context Protocol 官网
- MCP Python SDK
相关文章:
【MCP】从一个天气查询服务带你了解MCP
1. 前言 这篇文章将通过一个集成高德天气查询的 MCP Server 用例,带你上手开发自己的 MCP Server ,文章将通过以下三种方式(自己编写 Client 端代码,使用 mcp-cli 自带页面,集成到 Claude 桌面版等)带你测试自己的 MC…...
【Leetcode 每日一题】3392. 统计符合条件长度为 3 的子数组数目
问题背景 给你一个整数数组 n u m s nums nums,请你返回长度为 3 3 3 的 子数组,满足第一个数和第三个数的和恰好为第二个数的一半。 子数组 指的是一个数组中连续 非空 的元素序列。 数据约束 3 ≤ n u m s . l e n g t h ≤ 100 3 \le nums.length…...
SALOME源码分析:Geomtry模块
本文分析SALOME Geometry模块。 一、核心组件 1.1 GeometryGUI 二、关键流程 三、插件 3.1 插件接口 GEOMPluginGUI定义了Geometry可以加载的插件接口。 3.2 插件列表 插件命令描述 BasicGUI BlocksGUI BooleanGUI BuildGUI DisplayGUI EntityGUI GenerationGUI GEOM…...
力扣HOT100之链表:23. 合并 K 个升序链表
这道题我是用最淳朴最简单的思路去做的,用一个while循环持续地将当前遍历到的最小值加入到合并链表中,while循环中使用一个for循环遍历整个指针数组,将其中的最小值和对应下标记录下来,并将其值加入到合并链表中,同时对…...
ArkTS 组件 通用事件 通用属性 速查表
ArkTS 组件 组件 通用事件 速查表 通用事件事件名称简要说明点击事件onClick(event: Callback<ClickEvent>, distanceThreshold: number): T相较于原有 onClick 接口,新增 distanceThreshold 参数作为点击事件移动阈值,当手指的移动距离超出所设…...
SOAP API 和 REST API
SOAP API 和 REST API 是两种主流的 Web 服务通信架构,它们在设计理念、数据格式、协议支持和应用场景上有显著差异。以下是两者的核心对比及典型应用场景: 1. 核心概念与设计哲学 特性SOAP APIREST API本质协议(基于 XML 的标准化协议&…...
简单了解Java的I/O流机制与文件读写操作
一、理解Java的I/O流机制 字节流 Java中的字节流主要由 InputStream 和 OutputStream 这两个抽象类及其子类构成。字节流以字节(byte)为基本处理单元,适用于处理所有类型的数据,包括文本、图片、音频、视频等。 1. InputStream…...
PCIe 转 U.2 接双硬盘指南 - 超微(Supermicro)主板
前言 公司服务器空间不够想扩容,尝试折腾了下超微(Supermicro)服务器的 PCIe 转 U.2,踩了一点小坑,特地写下来给大家参考一下。 现在市面上 U.2 接口的企业级固态硬盘相对其他类型接口的固态硬盘 便宜很多 ÿ…...
【上位机——MFC】文档
相关类 CDocument提供了一个用于管理数据的类,封装了关于数据的管理(数据提取、数据转换、数据存储等),并和视图类进行数据交互。 文档类使用 定义一个自己的文档类,派生自CDocument 程序的创建过程 1.利用框架类对象地址pFrame调用Load…...
JavaEE-多线程实战02
接上 多线程编程实战01 第三个多线程程序 package thread.test;//定义了一个叫MyThread3的类,实现了Runable接口,所以它必须重写run()方法 class MyThread3 implements Runnable {Overridepublic void run() {//线程执行的具体内容//进入一个无限循环,…...
计算机网络 | 应用层(6) -- 套接字编程
💓个人主页:mooridy 💓专栏地址:《计算机网络:自顶向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 💓本博客内容为《计算机网络:自顶向下方法》第二章应用层第七节知识梳理 关注我…...
基于大模型的急性肠套叠全流程预测与诊疗方案研究报告
目录 一、引言 1.1 研究背景与目的 1.2 研究意义与创新点 二、急性肠套叠概述 2.1 定义与分类 2.2 病因与发病机制 2.3 流行病学特征 三、大模型技术原理与应用现状 3.1 大模型基本原理 3.2 在医疗领域的应用案例 3.3 用于急性肠套叠预测的可行性分析 四、术前风险…...
游戏遭遇DDoS攻击如何快速止损?实战防御策略与应急响应指南
是不是很抽象 我自己画的 一、游戏DDoS攻击特征深度解析 游戏行业DDoS攻击呈现复合型特征,2023年监测数据显示,针对游戏服务器的攻击中,63%采用UDP反射放大HTTP慢速攻击组合,攻击峰值达3.2Tbps。攻击者利用游戏协议特性ÿ…...
Linux电源管理(2)_常规的电源管理的基本概念和软件架构
原文: Linux电源管理(2)_Generic PM之基本概念和软件架构 1. 前言 Linux系统中那些常规的电源管理手段,包括关机(Power off)、待机(Standby or Hibernate)、重启(Reboot)等。这些…...
回文链表力扣234
思路: 对于这个题同样的找出题目的要求 1.判断回文 那么我们思考一下判断回文的方法,对于字符串我们只需要翻转一下就行,但是这不是通用的方法,在思考一下,我们是不是可以用双指针,一个在前一个在后,向中…...
互联网的下一代脉搏:深入理解 QUIC 协议
互联网的下一代脉搏:深入理解 QUIC 协议 互联网是现代社会的基石,而数据在其中高效、安全地传输是其运转的关键。长期以来,传输层的 TCP(传输控制协议)一直是互联网的主力军。然而,随着互联网应用场景的日…...
榕壹云国际版短剧系统:基于Spring Boot+MySQL+UniApp的全球短剧创作平台
一、项目背景与简介 在短视频行业高速发展的今天,短剧内容已成为全球用户娱乐消费的新宠。为满足市场对高质量、多样化短剧的需求,我们基于Spring Boot + MySQL + UniApp技术栈开发了榕壹云国际版短剧系统,这是一款面向全球市场的短剧创作与分发平台。系统不仅提供丰富的基…...
为什么选择 Spring Boot? 它是如何简化单个微服务的创建、配置和部署的?
为什么选择 Spring Boot? Spring Boot 的核心目标就是简化 Spring 应用的初始搭建以及开发过程。它并不是要取代 Spring Framework,而是构建在其之上,通过一系列“约定优于配置”的原则和自动化手段,让开发者能够更快的创建出独立…...
方向倒数、梯度和梯度下降的对比关系
一、方向导数与梯度的定义 方向导数 方向导数描述多元函数在某点沿特定方向的变化率。对于函数f(x,y),在点(x0,y0)沿单位向量u(u1,u2)的方向导数定义为: 其物理意义是函数值沿该方向的瞬时变化速率,正负表示增减趋势,…...
全星APQP软件系统:驱动芯片半导体行业研发管理迈向高效与合规新高度
全星APQP软件系统:驱动芯片半导体行业研发管理迈向高效与合规新高度 在芯片半导体行业,一款芯片的研发周期长达数年,涉及设计验证、工艺开发、良率爬坡、量产交付等数百个关键节点,任何一个环节的偏差都可能导致数千万美元的损失…...
文章记单词 | 第50篇(六级)
一,单词释义 fun:英 [fʌn] 美 [fʌn],名词,意为 “享乐;乐趣;快乐;嬉戏;有趣的事;玩笑;逗乐”;形容词,意为 “逗乐的;有…...
RISC-V MCU定时器架构与低功耗设计
RISC-V核低功耗MCU在定时器架构和功耗控制方面具有以下特点: 定时器配置 高级控制定时器:支持互补PWM输出和刹车功能,适合电机控制等场景 通用定时器:提供输入捕获、输出比较和单脉冲模式等基础功能 系统定时器:内置6…...
redis_Windows中安装redis
①Windows安装包下载地址:https://github.com/tporadowski/redis/releases 当前最新版本截图 ②根据自己系统平台的实际情况选择对应的安装包,如:64位win10系统可选择Redis-x64-5.0.14.msi ③下载完成后运行安装,没有特殊要求的话…...
Spring中生成Bean的方式总结-笔记
1. 概略版 Spring生成Bean方式有如下几种,可根据需求选择合适的方式,通常优先使用注解驱动的声明式配置(如Component、Bean),复杂场景结合条件或作用域控制。 方式特点适用场景Component 组件扫描简单直观ÿ…...
学习insightface 的人脸识别
1.Insightface_pytorch版本的自定义数据准备过程 https://github.com/artintel/LearningCode/blob/master/insightface_pytorch_datasets_make/README.md https://github.com/artintel/LearningCode/tree/master/insightface_pytorch_datasets_make 2.mxnet_insightface开源…...
【MQ篇】RabbitMQ之消费失败重试!
目录 引言:消息不丢是底线,失败了优雅重试是修养!消费失败了,为啥不能老是原地复活?🤔智能重试策略一:本地重试(Spring Retry 的魔法)🏠✨智能重试策略二&…...
权力结构下的人才价值重构:从 “工具论” 到 “存在论” 的转变
引言 在现在的公司管理里,常常能听到这样一种说法:“我用你,你才是人才;不用你,你啥都不是。” 这其实反映了一种很常见的评判人才价值的标准,就是只看公司的需求,把人才当作实现公司目标的工…...
【上位机——MFC】视图
相关类 CView及其子类,父类为CWnd类,封装了关于视图窗口的各种操作,以及和文档类的数据交互。 视图窗口的使用 1.定义一个自己的视图类(CMyView),派生自CView,并重写父类成员纯虚函数OnDraw。 2.其余框架类和应用程…...
Unity:Sprite Shapes(精灵形状)
游戏世界的基本构建单位——精灵(Sprite) Sprite(精灵)是什么? Sprite指的是一张小图片,在游戏里代表一个角色、道具、背景元素。 在2D游戏里,比如滑雪游戏,角色、小树、雪地……很…...
火语言RPA--钉钉群通知
【组件功能】:向钉钉群发送文本或markdown消息 在钉钉群创建自定义机器人(Webhook),在组件配置Webhook地址、密钥、文本内容即可向钉钉群发送文本或markdown消息,还可以at群成员或所有人。 配置预览 配置说明 Webho…...
详细图解 Path-SAM2: Transfer SAM2 for digital pathology semantic segmentation
✨ 背景动机 数字病理中的语义分割(semantic segmentation)是非常关键的,比如肿瘤检测、组织分类等。SAM(Segment Anything Model)推动了通用分割的发展,但在病理图像上表现一般。 病理图像(Pa…...
驯龙日记:用Pandas驾驭数据的野性
引言:为什么选择Pandas? "NumPy是手术刀,Pandas是急救箱" 手术刀(NumPy):精密的数值计算 急救箱(Pandas):处理现实数据的全套工具 维度NumPy数组Pandas Se…...
产品经理面经(1)
今天开一个新的栏目,是关于产品经理方面的。产品经理这个岗位每年的需求都是不少的,尤其是近年来AI的兴起造就了产品经理与AI方面深度融合从而催生了“AI产品经理”这种类型的岗位。具体数据如下 总体规模: 2020 年:受疫情影响&am…...
【黑马JavaWeb+AI知识梳理】前端Web基础02 - JS+Vue+Ajax
JS(行为/交互效果) JavaScript(JS)跨平台、面向对象,是用来控制网页行为,实现页面交互效果的脚本语言。 和Java完全不同,但基础语法类似。 组成: ECMAScript:规定了JS…...
Unity Post Processing 小记 【使用泛光实现灯光亮度效果】
一、前言 本篇适用于Unity 2018 - 2019及以上版本,以默认渲染管线为例。文章内容源于个人研究尝试与网络资料收集,可能存在不准确之处。初衷是因新版本制作时老的Bloom插件失效,经研究后分享开启Bloom效果的方法。若在项目中使用Post Proces…...
NFC 碰一碰发视频贴牌技术,音频功能的开发实践与技术解析
在数字化营销与信息交互场景中,NFC 碰一碰技术凭借其便捷性和高效性,成为快速传递多媒体内容的新选择。通过 NFC 实现视频音频的快速传输,不仅能提升用户体验,还能为各类场景带来创新应用。本文将深入探讨该功能开发过程中的关键技…...
新型“电力寄生虫“网络钓鱼攻击瞄准能源企业与知名品牌
本周发布的综合威胁报告显示,自2024年以来,一场名为"电力寄生虫"(Power Parasites)的复杂网络钓鱼活动持续针对全球能源巨头和知名品牌展开攻击。 该攻击活动主要通过精心设计的投资骗局和虚假招聘信息,冒用…...
如何将数据输入到神经网络中
引言 在前面的文章学习中,我们初步了解到神经网络在人工智能领域扮演着至关重要的角色,它具备实现真正人工智能的潜力。真正的人工智能意味着机器能够像人类一样进行感知、学习、推理和决策等复杂活动。而神经网络作为实现这一目标的关键技术,…...
【quantity】2 Unit 结构体(unit.rs)
一、源码 下面代码实现了一个基于类型级别的物理量单位系统,使用Rust的类型系统在编译期保证单位运算的正确性。 use typenum::{Integer, Sum, Diff, Z0, // 0P1, P2, P3, P4, // 1, 2, 3, 4N1, N2, N3 // -1, -2, -3 }; use std::marker::PhantomData; use st…...
OpenCV 图形API(66)图像结构分析和形状描述符------将一条直线拟合到三维点集上函数fitLine3D()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 拟合一条直线到3D点集。 该函数通过最小化 ∑iρ(ri) 来将一条直线拟合到3D点集,其中 ri 是第 i 个点与直线之间的距离,…...
uniapp: 低功耗蓝牙(BLE)的使用
在微信小程序中实现蓝牙对接蓝牙秤的重量功能,主要依赖微信小程序提供的低功耗蓝牙(BLE)API。以下是一个清晰的步骤指南,帮助你完成从连接蓝牙秤到获取重量数据的开发流程。需要注意的是,具体实现可能因蓝牙秤的协议和…...
谢飞机的Java面试之旅:从Spring Boot到Kubernetes的挑战
场景:互联网大厂Java求职 在一家知名互联网大厂的面试现场,严肃的面试官坐在谢飞机的对面,开始了面试。 第一轮:基础技术与平台 面试官: 谢先生,您能简单介绍一下Java SE 8的主要新特性吗? 谢飞机: 当然,Java 8引入了Lambda表达式、Stream API和新的日期时间API。 …...
Shadertoy着色器移植到Three.js经验总结
Shadertoy是一个流行的在线平台,用于创建和分享WebGL片段着色器。里面有很多令人惊叹的画面,甚至3D场景。本人也移植了几个ShaderToy上的着色器。本文将详细介绍移植过程中需要注意的关键点。 1. 基本结构差异 想要移植ShaderToy的shader到three.js&am…...
基于BenchmarkSQL的OceanBase数据库tpcc性能测试
基于BenchmarkSQL的OceanBase数据库tpcc性能测试 安装BenchmarkSQL及其依赖安装软件依赖编译BenchmarkSQLBenchmarkSQL props文件配置数据库和测试表配置BenchmarkSQL压测装载测试数据TPC-C压测(固定事务数量)TPC-C压测(固定时长)生成测试报告重复测试流程梳理安装Benchmar…...
Flutter 泛型 泛型方法 泛型类 泛型接口
目录 泛型简单使用 泛型类的简单使用 泛型接口的使用 通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验) 泛型简单使用 main(){print(getData2("XXX"));getData2<String>("XXX");getData2<int>(1);}Str…...
边缘函数:全栈开发的最后1毫秒性能革命
一、边缘计算的时空折叠术 1. 传统CDN vs. 智能边缘网络 全球电商平台实测数据: 场景云端处理延迟边缘处理延迟转化率提升搜索建议320ms8ms18%个性化推荐450ms12ms27%实时库存检查680ms9ms42%欺诈检测920ms15ms63% 二、边缘全栈架构的量子纠缠 1. 代码的时空分布…...
网店专用版批量转账系统,覆盖淘宝、拼多多、抖店订单信息自动核对+插旗自动备注,支持微信支付宝批量转账
不少电商人在运营过程中,需要用转账工具来解决日常运营过程中的返款问题。 但在实际操作过程中,往往有很多问题。东哥在这里梳理下,方便大家了解: 1.错返/漏返的情况时有发生 为什么会错返和漏返? 实际来看&#x…...
AUTOSAR_RS_ClassicPlatformDebugTraceProfile
AUTOSAR经典平台调试、跟踪与分析支持 AUTOSAR组件调试、跟踪与分析功能详解 目录 简介ARTI核心扩展 核心特定ARTI扩展结构核心参数定义 操作系统和任务扩展 OS特定ARTI扩展任务特定ARTI扩展软件组件特定扩展 总体架构 组件结构接口定义 错误处理 默认错误跟踪器(DET) 总结 1.…...
vue中将html2canvas转成的图片传递给后台 Python Flask 服务
下面将详细介绍如何在 Vue 项目里把 html2canvas 转换得到的图片传递给后台的 Python Flask 服务。 前端(Vue)步骤 1. 安装依赖 首先要确保已经安装了 html2canvas 和 axios,若未安装,可在终端执行以下命令: npm i…...
基于深度学习的智能交通流量监控与预测系统设计与实现
基于深度学习的智能交通流量监控与预测系统设计与实现 摘要 随着城市化进程的加速和机动车保有量的激增,交通拥堵、事故频发、环境污染等问题日益严峻,对传统的交通管理方式提出了巨大挑战。智能交通系统(ITS)作为解决这些问题的…...