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

Python-MCPInspector调试

Python-MCPInspector调试

使用FastMCP开发MCPServer,熟悉【McpServer编码过程】+【MCPInspector调试方法】-> 可以这样理解:只编写一个McpServer,然后使用MCPInspector作为McpClient进行McpServer的调试


1-核心知识点

  • 1-熟悉【McpServer编码过程】
  • 2-熟悉【McpServer调试方法-MCP Inspector】

2-思路整理

1-核心思路

  • 1-编写传统的Service业务代码
  • 2-在Service业务代码头上添加@tool装饰器,即可实现FastMCP的Tool功能
  • 3-在Service业务代码头上添加@mcp.tool()装饰器,即可实现FastMCP的McpServer功能
  • 4-主程序指定运行方法-stdio进程启动(但是不要自己去启动)
  • 5-使用MCPInspector调试McpServer(2个步骤)
    • 【mcp dev city_02_mcp_server.py】是启动mcpInspector并指定mcpServer的路径,
    • 然后在Inspector中启动city_02_mcp_server.py->【uv run --with mcp mcp run city_02_mcp_server.py】

2-核心代码

  • 1-在Service业务代码头上添加@tool装饰器,即可实现FastMCP的Tool功能
# 假设 mcp 已经正确导入
try:from mcp import tool
except ImportError:# 如果 mcp 未找到,模拟一个 tool 装饰器def tool(func):return func# 在 Service 业务代码头上添加 @tool 装饰器
@tool
async def get_city_list(self) -> list:"""获取所有的城市信息。返回:str: 所有的城市信息列表"""logging.info(f"获取所有的城市信息")city_list = []for city in self.CITY_WEATHER_DATA:city_list.append(city)return city_list
  • 2-在Service业务代码头上添加@mcp.tool()装饰器,即可实现FastMCP的McpServer功能
from mcp.server.fastmcp import FastMCPfrom city_01_service import CityDataServer# 1-初始化 MCP 服务器
mcp = FastMCP("CityDataServer")# 2-初始化城市信息服务器(业务代码+@tool装饰器)
city_server = CityDataServer()# 3-在 Service 业务代码头上添加@mcp.tool()装饰器
@mcp.tool()
# 获取所有城市列表
async def get_city_list():"""获取所有城市列表。返回:str: 所有城市列表"""city_list = await city_server.get_city_list()return city_list# 4-主程序指定运行方法-stdio进程启动
if __name__ == "__main__":mcp.run(transport='stdio')

3-参考网址

  • 个人代码实现仓库:https://gitee.com/enzoism/python_mcp_01_inspector

4-上手实操

1-空工程初始化环境

mkdir my_project
cd my_project
python -m venv .venv

2-激活环境

# Windows
source .venv/Scripts/activate# Mac
source .venv/bin/activate

3-添加依赖

对应的依赖是在激活的环境中

# uv用于后续MCP Inspector的连接
pip install uv httpx mcp

4-项目结构

  • city_01_service.py:城市服务脚本
  • city_02_mcp_server.py:MCP 服务器脚本

5-创建Python城市服务

city_01_service.py:城市服务脚本

import logging# 假设 mcp 已经正确导入
try:from mcp import tool
except ImportError:# 如果 mcp 未找到,模拟一个 tool 装饰器def tool(func):return func# 配置日志打印级别
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)# 定义城市服务
class CityDataServer:# 模拟城市的天气数据CITY_WEATHER_DATA = {"北京": {"condition": "晴", "temperature": 25, "humidity": 40},"上海": {"condition": "多云", "temperature": 27, "humidity": 60},"广州": {"condition": "雨", "temperature": 30, "humidity": 80},"深圳": {"condition": "多云", "temperature": 29, "humidity": 70},"杭州": {"condition": "晴", "temperature": 26, "humidity": 50},}@toolasync def get_city_weather(self, city: str) -> str:"""获取指定城市的天气信息。参数:city (str): 城市名称返回:str: 天气信息描述"""logging.info(f"获取天气信息: {city}")if city in self.CITY_WEATHER_DATA:weather = self.CITY_WEATHER_DATA[city]return f"{city} : {weather['condition']} , {weather['temperature']} °C,湿度 {weather['humidity']} %"else:return f"抱歉,未找到 {city} 的天气信息"@toolasync def get_city_list(self) -> list:"""获取所有的城市信息。返回:str: 所有的城市信息列表"""logging.info(f"获取所有的城市信息")city_list = []for city in self.CITY_WEATHER_DATA:city_list.append(city)return city_list@toolasync def get_city_detail(self, city: str) -> str:"""获取指定城市的信息。参数:city (str): 城市名称返回:str: 城市信息"""logging.info(f"获取指定城市的信息: {city}")if city in await self.get_city_list():return f"{city} : 一个风景秀丽的城市,你值得去玩一把"else:return f"抱歉,未找到 {city} 的城市信息"

6-暴露Python城市MCPServer服务

city_02_mcp_server.py:MCP 服务器脚本

from mcp.server.fastmcp import FastMCPfrom city_01_service import CityDataServer# 初始化 MCP 服务器
mcp = FastMCP("CityDataServer")
# 初始化城市信息服务器
city_server = CityDataServer()# 获取天气信息的工具
@mcp.tool()
async def get_city_weather(city: str) -> str:"""获取指定城市的天气信息。参数:city (str): 城市名称返回:str: 天气信息描述"""city_weather_info = await city_server.get_city_weather(city)return city_weather_info@mcp.tool()
# 获取所有城市列表
async def get_city_list():"""获取所有城市列表。返回:str: 所有城市列表"""city_list = await city_server.get_city_list()return city_list@mcp.tool()
# 获取指定城市的信息
async def get_city_detail(city: str):"""获取指定城市的信息。参数:city (str): 城市名称返回:str: 指定城市的信息"""city_info = await city_server.get_city_detail(city)return city_info# 主程序
if __name__ == "__main__":mcp.run(transport='stdio')

7-MCP Inspector调试

1-安装MCP Inspector

运行机制:先运行【MCPInspector】再运行【uv run --with mcp mcp run city_02_mcp_server.py】

# 1-安装MCP Inspector
pip install mcp[cli]
2-运行MCP Inspector服务
# 2-运行MCP Inspector
mcp dev city_02_mcp_server.py
3-访问MCP Inspector网页

再运行【uv run --with mcp mcp run city_02_mcp_server.py】

  • http://127.0.0.1:6274

相关文章:

Python-MCPInspector调试

Python-MCPInspector调试 使用FastMCP开发MCPServer,熟悉【McpServer编码过程】【MCPInspector调试方法】-> 可以这样理解:只编写一个McpServer,然后使用MCPInspector作为McpClient进行McpServer的调试 1-核心知识点 1-熟悉【McpServer编…...

C 语言数据结构基石:揭开数组名的面纱与计算数组大小

各类资料学习下载合集 ​​https://pan.quark.cn/s/8c91ccb5a474​​ 在前面的文章中,我们已经学习了 C 语言一维数组的定义和初始化。我们知道数组是用来存储一系列相同类型数据的集合,并通过下标来访问每个元素。但是,除了通过下标访问单个元素,数组名本身在 C 语言中也…...

Java高频面试之并发编程-15

hello啊,各位观众姥爷们!!!本baby今天又来报道了!哈哈哈哈哈嗝🐶 面试官:as-if-serial 是什么?单线程的程序一定是顺序执行的吗? as-if-serial 规则 定义: …...

MySQL数据库迁移SQL语句指南

MySQL数据库迁移SQL语句指南 一、基础迁移方法 1. 使用mysqldump进行全量迁移 -- 导出源数据库(在命令行执行) mysqldump -u [源用户名] -p[源密码] --single-transaction --routines --triggers --events --master-data2 [数据库名] > migration…...

Vue:生命周期钩子

深入理解 Vue 的钩子函数(生命周期函数) Vue 的钩子函数(生命周期函数)是 Vue 实例在不同阶段自动调用的函数。可以在 Vue 实例的创建、更新、销毁等阶段插入自己的逻辑。 钩子函数的作用 想象一下,Vue 实例的生命周…...

深入理解设计模式之原型模式(Prototype Pattern)

一、为什么需要原型模式? 在传统对象创建方式中,我们通过new关键字直接调用构造函数创建实例。但当遇到以下场景时: 对象初始化需要消耗大量资源(如数据库连接)需要创建的对象与现有实例高度相似希望屏蔽对象创建的复…...

K8S cgroups详解

以下是 Kubernetes 中 cgroups(Control Groups) 的详细解析,涵盖其核心原理、在 Kubernetes 中的具体应用及实践操作: 一、cgroups 基础概念 1. 是什么? cgroups 是 Linux 内核提供的 资源隔离与控制机制&#xff0c…...

ARMV8 RK3399 u-boot TPL启动流程分析 --start.S

上电后运行的第一支文件&#xff1a;arch/arm/cpu/armv8/start.S CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK1 #include <asm/arch/boot0.h> 跳转到 arch/arm/include/asm/arch-rockchip/boot0.h CONFIG_SPL_BUILD1 b 1f ROCKCHIP_EARLYRETURN_TO_BROMno TINY_FRAMEWORKno …...

【网络原理】数据链路层

目录 一. 以太网 二. 以太网数据帧 三. MAC地址 四. MTU 五. ARP协议 六. DNS 一. 以太网 以太网是一种基于有线或无线介质的计算机网络技术&#xff0c;定义了物理层和数据链路层的协议&#xff0c;用于在局域网中传输数据帧。 二. 以太网数据帧 1&#xff09;目标地址 …...

保姆级教程|YOLO11改进】【卷积篇】【4】使用RFAConv感受野注意力卷积,重塑空间特征提取,助力高效提点

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

虚幻引擎5-Unreal Engine笔记之常用核心类的继承关系

虚幻引擎5-Unreal Engine笔记之常用核心类的继承关系 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之常用核心类的继承关系1.UE5中常用核心类的继承关系1.1.简化版1.2.plantuml图1.3.plantuml代码1.4.关于大写字母U和A2.1.组件和类的关系&#xff0c;组件也是类吗&…...

力扣2680题解

记录 2025.5.9 题目&#xff1a; 思路&#xff1a; 1.计算初始或值&#xff1a;首先计算数组中所有元素的按位或结果 allOr&#xff0c;这表示在不进行任何左移操作时数组的或值。 2.计算固定或值&#xff1a;在计算 allOr 的同时&#xff0c;计算一个 fixed 值&#xff0c;…...

搭建基于chrony+OpenSSL(NTS协议)多层级可信时间同步服务

1、时间同步服务的层级概念 在绝大多数IT工程师实际工作过程中&#xff0c;针对于局域网的时间同步&#xff0c;遇到最多的场景是根据实际的需求&#xff0c;搭建一个简单的NTP时间同步服务以时间对局域网中的服务器、网络设备、个人电脑等基础设施实现同步授时功能。虽然这样…...

虚拟内存:深入解析与性能优化

文章目录 虚拟内存的概念虚拟内存的实现方式虚拟内存的页面置换算法虚拟内存的性能影响结论 在现代计算机系统中&#xff0c;虚拟内存&#xff08;Virtual Memory&#xff09;是一种至关重要的技术&#xff0c;它极大地提高了系统的多任务处理能力和内存利用率。本文将深入探讨…...

元数据和主数据

元数据和主数据是数据管理中的两个关键概念&#xff0c;其核心区别如下&#xff1a; 1. 定义与本质 元数据&#xff08;Metadata&#xff09; “关于数据的数据”&#xff0c;用于描述数据的属性、结构、来源、用途等上下文信息。 示例&#xff1a;数据库表的字段名称、数据类型…...

JavaScript事件处理全解析:从基础到最佳实践

在现代Web开发中&#xff0c;事件处理是构建交互式应用的核心技术。JavaScript提供了多种事件绑定方式&#xff0c;每种方法都有其适用场景和特点。本文将深入探讨7种主流的事件绑定方法&#xff0c;通过代码示例和原理分析&#xff0c;帮助开发者选择最合适的解决方案。 一、…...

高级数据结构:线段树

线段树概述 线段树是一种处理区间问题的优越算法&#xff0c;也是算法竞赛的常客。 线段树的特点是&#xff0c;类似于一棵二叉树&#xff0c;将一个序列分解成多个区间并储存在二叉树上。 例如&#xff0c;把区间 [ 1 , 10 ] [1,10] [1,10]作为树的根节点&#xff0c;然后把…...

精讲C++四大核心特性:内联函数加速原理、auto智能推导、范围for循环与空指针进阶

前引&#xff1a;在C语言长达三十余年的演进历程中&#xff0c;每一次标准更新都在试图平衡性能与抽象、控制与安全之间的微妙关系。从C11引入的"现代C"范式开始&#xff0c;开发者得以在保留底层控制能力的同时&#xff0c;借助语言特性大幅提升代码的可维护性与安全…...

用ffmpeg压缩视频参数建议

注意:代码中的斜杠\可以删除 一、基础压缩命令&#xff08;画质优先) ffmpeg -i input.mp4 \-c:v libx264 -preset slow -crf 23 \ # H.264编码&#xff0c;平衡速度与质量-c:a aac -b:a 128k \ # 音频压缩-vf "scaleif(gt(a,16/9),1920,-2):if(…...

uni-app学习笔记(二)--vue页面代码的构成和新建页面

vue页面的构成 一.template 模板区&#xff0c;主要放html布局&#xff0c;注意&#xff0c;如果是开发uni-app&#xff0c;模板区不要放div,h1等标签了&#xff0c;用了在小程序和app端起不到作用。具体应该使用哪些组件&#xff0c;可在uni-app官网上查看&#xff1a;组件-…...

机器语言程序、汇编语言程序、硬件描述语言程序、编译程序、解释程序和链接程序

程序类型定义与核心特征处理对象 / 输入输出结果所属领域典型例子 / 作用机器语言程序由二进制指令&#xff08;0/1 序列&#xff09;构成&#xff0c;可被 CPU 直接执行&#xff0c;与硬件架构强绑定。无&#xff08;直接执行&#xff09;无&#xff08;直接运行&#xff09;低…...

智能语音助手的未来:从交互到融合

摘要 随着人工智能技术的不断进步&#xff0c;智能语音助手已经成为我们生活中不可或缺的一部分。从简单的语音指令到复杂的多模态交互&#xff0c;语音助手正在经历一场深刻的变革。本文将探讨智能语音助手的发展历程、当前的技术瓶颈以及未来的发展方向&#xff0c;特别是其在…...

Redis从基础到高阶应用:核心命令解析与延迟队列、事务消息实战设计

Redis基础知识 #切换数据库 bd:0>select 2 "OK" bd:2>dbsize "0" #清空数据库 bd:0>flushdb "OK" #设置值 bd:0>set name "lyt" "OK" #查看所有key bd:0>keys *1) "name" #获取key bd:0>get …...

操作系统原理实验报告

操作系统原理课程的实验报告汇总 实验三&#xff1a;线程的创建与撤销 实验环境&#xff1a;计算机一台&#xff0c;内装有VC、office等软件 实验日期&#xff1a;2024.4.11 实验要求&#xff1a; 1.理解&#xff1a;Windows系统调用的基本概念&#xff0c;进程与线程的基…...

Python爬虫实战:研究nodejs aes加密

1. 引言 1.1 研究背景与意义 在当今数字化时代,Web 数据的价值日益凸显。通过爬虫技术获取公开数据并进行分析,能够为企业决策、学术研究等提供有力支持。然而,为了保护数据安全和隐私,许多网站采用了加密技术对数据进行保护,其中 AES 加密是一种常见且安全的加密算法。…...

线程的一些事(2)

在java中&#xff0c;线程的终止&#xff0c;是一种“软性”操作&#xff0c;必须要对应的线程配合&#xff0c;才能把终止落实下去 然而&#xff0c;系统原生的api其实还提供了&#xff0c;强制终止线程的操作&#xff0c;无论线程执行到哪&#xff0c;都能强行把这个线程干掉…...

基于 PostgreSQL 的 ABP vNext + ShardingCore 分库分表实战

&#x1f680; 基于 PostgreSQL 的 ABP vNext ShardingCore 分库分表实战 &#x1f4d1; 目录 &#x1f680; 基于 PostgreSQL 的 ABP vNext ShardingCore 分库分表实战✨ 背景介绍&#x1f9f1; 技术选型&#x1f6e0;️ 环境准备✅ Docker Compose&#xff08;多库 & 读…...

御网杯2025 Web,Msic,密码 WP

Web YWB_Web_xff 审计代码&#xff0c;发现需要$cip2.2.2.1 使用burpsuite抓包&#xff0c;添加X-Forwarded-For:2.2.2.1 然后得到flag YWB_Web_未授权访问 更加题目描述知道需要admin登录&#xff0c;但是现在是guest。 使用burpsuite抓包 发现cookie里面存在user&#xff…...

tensorflow 1.x

简介 TensorFlow&#xff1a;2015年谷歌&#xff0c;支持python、C&#xff0c;底层是C&#xff0c;主要用python。支持CNN、RNN等算法&#xff0c;分CPU TensorFlow/GPU TensorFlow。 TensorBoard&#xff1a;训练中的可视化。 快捷键&#xff1a;shiftenter执行命令,Tab键进…...

[ERTS2012] 航天器星载软件形式化模型驱动研发 —— 对 Scade 语言本身的影响

在《从ERTS学习SCADE发展》中提到&#xff0c;在 ERTS 会议中&#xff0c;Scade团队会在该会议中介绍与Scade相关的工作。在 ERTS 2012 中&#xff0c;Scade 团队介绍了使用Scade作为主要工具&#xff0c;应用在航天器星载软件开发中的相关话题。原材料可参考 《Formal Model D…...

Spring Boot 集成 Flink CDC 实现 MySQL 到 Kafka 实时同步

Spring Boot 集成 Flink CDC 实现 MySQL 到 Kafka 实时同步 📌 项目背景 在大数据实时处理场景中,数据库变更数据的捕获与传输是关键环节。Flink CDC 提供了从 MySQL 等数据库中实时捕获数据变更的能力,并通过 Apache Flink 引擎实现流式处理。 本项目使用 Spring Boot …...

软件体系结构(Software Architecture)

文章目录 1. 分层架构&#xff08;Layered Architecture&#xff09;核心逻辑代码示例&#xff08;伪代码&#xff09;典型场景优缺点 2. 客户端-服务器&#xff08;Client-Server&#xff09;核心逻辑典型交互流程应用场景代码示例&#xff08;RESTful API&#xff09;优缺点 …...

RS485和RS232 通信配置

RS232 目前硬件上支持RS232的有以下板卡&#xff1a; LubanCat-5IO底板&#xff08;含有RS232x2&#xff09; 7.1. 引脚定义 具体的引脚定义可以参考背面的丝印 LubanCat-5IO底板 引脚定义图 7.2. 跳帽配置 LubanCat-5IO底板 鲁班买5IO底板上的RS485和RS232是共用同一组…...

【高数上册笔记篇02】:数列与函数极限

【参考资料】 同济大学《高等数学》教材樊顺厚老师B站《高等数学精讲》系列课程 &#xff08;注&#xff1a;本笔记为个人数学复习资料&#xff0c;旨在通过系统化整理替代厚重教材&#xff0c;便于随时查阅与巩固知识要点&#xff09; 仅用于个人数学复习&#xff0c;因为课…...

【网络安全】——大端序(Big-Endian)​​和​​小端序(Little-Endian)

字节序&#xff08;Endianness&#xff09;是计算机系统中多字节数据&#xff08;如整数、浮点数&#xff09;在内存中存储或传输时&#xff0c;​​字节排列顺序​​的规则。它分为两种类型&#xff1a;​​大端序&#xff08;Big-Endian&#xff09;​​和​​小端序&#xf…...

机器学习极简入门:从基础概念到行业应用

有监督学习&#xff08;supervised learning&#xff09; 让模型学习的数据包含正确答案&#xff08;标签&#xff09;的方法&#xff0c;最终模型可以对无标签的数据进行正确处理和预测&#xff0c;可以分为分类与回归两大类 分类问题主要是为了“尽可能分开整个数据而画线”…...

MIT XV6 - 1.5 Lab: Xv6 and Unix utilities - xargs

接上文 MIT XV6 - 1.4 Lab: Xv6 and Unix utilities - find xargs 继续实验&#xff0c;实验介绍和要求如下 (原文链接 译文链接) : Write a simple version of the UNIX xargs program for xv6: its arguments describe a command to run, it reads lines from the standard …...

Springboot整合Swagger3

Springboot整合Swagger3、常用注解解释、访问Swagger地址出现404、403、拒绝访问等问题_swagger3注解-CSDN博客...

经典音乐播放器——完美歌词 Poweramp Music Player 3 build

—————【下 载 地 址】——————— 【本章单下载】&#xff1a;https://drive.uc.cn/s/d6c480bc47604 【百款黑科技】&#xff1a;https://ucnygalh6wle.feishu.cn/wiki/HPQywvPc7iLZu1k0ODFcWMt2n0d?fromfrom_copylink —————【下 载 地 址】——————— 本…...

锚定基础与拥抱融合:C 语言在编程教育与技术社区的破圈之路

引言 在 Python 占据 TIOBE 指数榜首的 2025 年&#xff0c;C 语言以 23.4% 的稳定份额&#xff08;2025 年 5 月数据&#xff09;持续稳居前三&#xff0c;这一现象在编程教育领域尤为显著&#xff1a;全球 92% 的计算机科学本科课程仍将 C 语言作为必修基础课&#xff0c;而…...

深度学习入门:从神经网络基础到前向传播全面解析

深度学习入门:从神经网络基础到前向传播全面解析 🔥 重磅干货! 本文是《深度学习基础与核心技术详解》专栏的开篇之作,将系统性地带你走进深度学习的世界!建议收藏+关注,错过可能要找很久哦~ 目录 深度学习概述神经网络基础 2.1 生物神经元与人工神经元2.2 感知机模型2.…...

Lambda表达式能用在哪些场景?

Lambda表达式是Java 8引入的一种强大特性&#xff0c;它允许以简洁的方式表示匿名函数&#xff08;即没有名字的函数&#xff09;。Lambda表达式可以用于许多场景&#xff0c;尤其是在与函数式接口、Stream API、并发编程等结合时&#xff0c;能够显著简化代码并提高开发效率。…...

英语听力口语词汇--2.宣传类

1.approach uk /əˈprəʊtʃ/ n.&#xff08;思考问题的&#xff09;方式&#xff0c;方法&#xff0c;态度 2.foreign uk /ˈfɒr.ən/ adj.外国的 3.alliance uk /əˈlaɪ.əns/ n.结盟国家&#xff08;或团体&#xff09;,同盟国家&#xff08;或团体&#xff09;&...

『 测试 』测试基础

文章目录 1. 调试与测试的区别2. 开发过程中的需求3. 开发模型3.1 软件的生命周期3.2 瀑布模型3.2.1 瀑布模型的特点/缺点 3.3 螺旋模型3.3.1 螺旋模型的特点/缺点 3.4 增量模型与迭代模型3.5 敏捷模型3.5.1 Scrum模型3.5.2 敏捷模型中的测试 4 测试模型4.1 V模型4.2 W模型(双V…...

Pandas 时间处理利器:to_datetime() 与 Timestamp() 深度解析

Pandas 时间处理利器&#xff1a;to_datetime() 与 Timestamp() 深度解析 在数据分析和处理中&#xff0c;时间序列数据扮演着至关重要的角色。Pandas 库凭借其强大的时间序列处理能力&#xff0c;成为 Python 数据分析领域的佼佼者。其中&#xff0c;to_datetime() 函数和 Ti…...

支持向量机的回归用法详解

支持向量机的回归用法详解 在机器学习的广阔领域中&#xff0c;支持向量机&#xff08;SVM&#xff09;是一种极具影响力的算法&#xff0c;它不仅在分类任务上表现出色&#xff0c;在回归任务中同样有着独特的应用价值。本文将深入探讨 SVM 的回归用法&#xff0c;包括其基本…...

计算机基础

今天不和大家分享算法了&#xff0c;最近为什么一直分享算法题&#xff0c;一个是因为最近很忙加上状态不太在线&#xff0c;第二个是因为我报了ICPC的比赛&#xff0c;也就是大学生程序设计大赛&#xff0c;所以平时刷算法比较多一些&#xff0c;虽然说结果上也没有很多的收获…...

用C语言实现的——一个支持完整增删查改功能的二叉排序树BST管理系统,通过控制台实现用户与数据结构的交互操作。

一、知识回顾 二叉排序树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;&#xff0c;又称二叉查找树或二叉搜索树&#xff0c;是一种特殊的二叉树数据结构。 基本性质&#xff1a; ①有序性 对于树中的每个节点&#xff0c;其左子树中所有节点的值都小于该节点的…...

uniapp-商城-53-后台 商家信息(更新修改和深浅copy)

1、概述 文章主要讨论了在数据库管理中如何处理用户上传和修改商家信息的问题&#xff0c;特别是通过深浅拷贝技术来确保数据更新的准确性和安全性。 首先&#xff0c;解释了深拷贝和浅拷贝的区别&#xff1a;浅拷贝使得两个变量共享相同的内存地址&#xff0c;而深拷贝则创建新…...

vue数据可视化开发echarts等组件、插件的使用及建议-浅看一下就行

在 Vue 项目中使用 ECharts 进行数据可视化开发时&#xff0c;可以结合 Vue 的响应式特性和 ECharts 的强大功能&#xff0c;实现动态、交互式的图表展示。 一、ECharts 基础使用 1. 安装 ECharts npm install echarts2. 在 Vue 组件中使用 ECharts <template><div…...