4.3 工具调用与外部系统集成:API调用、MCP(模型上下文协议)、A2A、数据库查询与信息检索的实现
工具调用与外部系统集成是智能代理(Agent)系统实现复杂功能和企业级应用的核心支柱。Agent通过API调用访问实时服务,**模型上下文协议(Model Context Protocol, MCP)**标准化数据交互,Agent-to-Agent(A2A)通信实现多Agent协作,数据库查询提供结构化数据支持,信息检索处理非结构化知识。这些技术使Agent能够与企业系统(如CRM、ERP、知识库)无缝集成,广泛应用于金融交易、客服自动化、供应链优化和医疗诊断。然而,安全性、性能瓶颈、系统兼容性和模型不稳定性等挑战需通过优化机制和标准化协议解决。本章基于最新研究,深入探讨这些技术的定义、实现细节、优化策略、行业应用及未来趋势,重点分析如何通过高效集成实现复杂任务。文章控制在约30000字,内容专业、详尽且结构严谨。
4.3.1 API调用
定义与作用
API调用是指Agent通过应用程序编程接口(Application Programming Interface, API)与外部服务交互,获取数据或执行操作的过程。API调用使Agent能够访问动态信息(如市场行情、物流状态)、调用功能(如支付、邮件发送)或更新系统(如CRM记录)。在Agent系统中,API调用是连接外部资源的关键,支撑实时决策和自动化流程。
实现方法与技术细节
API调用的实现依赖以下主流协议和技术:
- RESTful API
RESTful API基于HTTP协议,使用标准方法(GET、POST、PUT、DELETE)操作资源,返回JSON或XML格式数据。Agent通过HTTP客户端(如Python的requests或aiohttp)发送请求。例如,客服Agent通过GET请求调用订单API(GET /orders/{order_id}),获取订单状态。
技术细节:- 请求优化:使用异步HTTP(如aiohttp)支持高并发,减少阻塞。
- 认证:通过OAuth 2.0(Bearer Token)或API密钥(如X-API-Key)确保安全。
- 错误处理:实现指数退避重试(Exponential Backoff),处理429(Too Many Requests)或503(Service Unavailable)错误。
- 缓存:通过Redis缓存频繁请求结果,降低API负载。
- GraphQL
GraphQL通过单一端点支持灵活查询,Agent指定所需字段,避免数据冗余。例如,零售Agent通过GraphQL查询CRM系统,仅获取客户ID和最近订单(query { customer(id: “123”) { id, recentOrders } })。
技术细节:- 查询优化:使用DataLoader批量查询,减少N+1问题。
- 订阅:通过GraphQL Subscriptions(WebSocket)实现实时更新,如订单状态变化。
- 工具:Apollo Client或Relay支持Agent端查询管理。
- gRPC
gRPC使用Protocol Buffers定义接口,通过HTTP/2实现高性能双向通信,适合低延迟场景。金融Agent通过gRPC调用交易服务(TradeService.ExecuteTrade),执行高频买卖。
技术细节:- 序列化:Protobuf提供高效数据压缩,降低带宽需求。
- 负载均衡:通过Envoy代理实现客户端负载均衡。
- 截止时间:设置Deadline Propagation,防止请求超时。
- LangChain工具集成
LangChain的Tools模块通过Tool类封装API调用,支持动态工具发现和执行。例如,Agent通过langchain.tools.APITool调用天气API(参考:LangChain文档)。
技术细节:- 工具定义:通过OpenAPI规范自动生成工具接口。
- 错误日志:集成LangSmith记录API调用失败,优化调试。
优化策略
- 请求聚合:合并多个API调用(如批量查询订单),减少网络开销。
- 断路器模式:通过Hystrix或Resilience4j实现断路器,防止API故障级联。
- 限流:客户端实现令牌桶算法,控制请求速率,避免触发API限制。
- 监控:使用Prometheus和Grafana监控API调用延迟和错误率。
优势
- 实时性:支持动态数据获取,满足实时任务需求。
- 可扩展性:通过API快速集成新服务,适配业务增长。
- 互操作性:REST和GraphQL的广泛支持确保跨系统兼容。
挑战
- 安全性:需通过TLS加密和零信任认证防止数据泄露。
- 性能瓶颈:高并发场景下,API延迟可能影响Agent响应,需优化缓存和并发。
- 接口异构性:不同API的响应格式和错误码差异,需标准化处理。
企业应用案例
- 金融交易
一家对冲基金的交易Agent通过gRPC调用市场数据API,获取实时股价,结合LLM预测趋势,执行买卖。
实现:使用grpc-python发送请求,Protobuf定义MarketData服务,Redis缓存分钟级数据。
优化:通过Envoy负载均衡,降低延迟至10ms以内。
优势:支持高频交易,响应速度提升30%。
挑战:需处理API限流和网络抖动。 - 零售客服
电商客服Agent通过RESTful API调用CRM系统(GET /customers/{id}/orders),获取客户历史订单,生成个性化回复。
实现:使用aiohttp异步请求,OAuth 2.0认证,Memcached缓存客户数据。
优化:批量查询订单,减少API调用次数50%。
优势:客户满意度提升25%。
挑战:需确保CRM API高可用性。
4.3.2 模型上下文协议(MCP)
定义与作用
**模型上下文协议(Model Context Protocol, MCP)**是Anthropic于2024年11月推出的开放标准协议,旨在标准化LLM与外部数据源(如文件、数据库、API)和工具的交互。MCP通过统一接口,使Agent能够访问本地和远程资源,增强上下文感知和任务执行能力。根据Introducing the Model Context Protocol \ Anthropic, MCP类似于“AI的TCP/IP”,为数据源和工具提供标准化的通信通道,支持企业级数据集成。
工作原理
MCP基于客户端-服务器架构:
- MCP服务器
提供数据源或工具的接口,处理Agent请求。例如,一个MCP服务器连接到PostgreSQL数据库,另一个连接到GitHub仓库。服务器通过JSON-RPC 2.0响应请求,支持方法如fetch_data和execute_action。 - MCP客户端
嵌入在Agent或AI应用中,通过JSON-RPC 2.0发送请求,获取数据或执行操作。客户端支持多服务器连接,整合异构数据源。 - 通信流程
- Agent发起请求(如{“method”: “fetch_data”, “params”: {“query”: “SELECT * FROM sales”}})。
- MCP服务器处理请求,返回响应(如{“result”: [{“id”: 1, “amount”: 1000}]})。
- Agent解析响应,结合LLM生成输出。
MCP支持多语言SDK(Python、TypeScript、Kotlin),提供预构建方法(如mcp_client.query_database)。根据Introduction - Model Context Protocol, MCP与AWS、Kubernetes、Git、PostgreSQL等系统兼容。
实现技术
- JSON-RPC 2.0
轻量级协议,支持异步请求和批量处理,减少通信开销。
优化:通过连接池复用TCP连接,降低延迟。 - SDK集成
MCP SDK提供MCPClient和MCPServer类,简化开发。例如,Python SDK的mcp_client.query(“SELECT * FROM users”)直接查询数据库。 - 数据访问控制
通过RBAC(角色权限控制)和JWT认证,确保安全访问。
优化:使用OAuth 2.0 Scope限制数据范围。 - 错误处理
实现try-except捕获JSON-RPC错误(如InvalidParams),支持重试和降级策略。 - 监控
使用OpenTelemetry记录MCP请求日志,集成Grafana分析性能。
优化策略
- 批量请求:通过JSON-RPC Batch模式合并请求,减少网络往返。
- 缓存:使用Redis缓存高频查询结果,降低服务器负载。
- 异步处理:通过asyncio实现异步MCP调用,提升并发性能。
- 负载均衡:通过Nginx或HAProxy分发MCP服务器请求。
优势
- 标准化:统一接口降低集成成本,支持多数据源。
- 上下文增强:实时访问外部数据,提升LLM输出相关性。
- 安全性:内置认证和加密,保护敏感数据。
挑战
- 学习曲线:开发者需熟悉JSON-RPC和MCP SDK,初期成本较高。
- 性能瓶颈:多服务器通信可能引入延迟,需优化网络。
- 生态成熟度:MCP生态尚在发展,社区支持有限。
企业应用案例
- CRM数据分析
零售企业通过MCP连接LLM到PostgreSQL数据库,Agent查询客户销售数据(SELECT * FROM sales WHERE date > ‘2025-01-01’),生成营销报告。
实现:使用Python MCP SDK,RBAC限制数据访问,Redis缓存查询结果。
优化:批量查询降低延迟20%。
优势:分析效率提升30%。
挑战:需优化高并发性能。 - 代码审查
软件公司通过MCP连接LLM到GitHub,Agent检索代码提交历史,生成审查建议。
实现:TypeScript MCP SDK调用fetch_commits,JWT认证。
优化:异步请求支持并行处理。
优势:审查速度提升25%。
挑战:需确保代码数据隐私。
4.3.3 Agent-to-Agent(A2A)通信
定义与作用
Agent-to-Agent(A2A)通信是指多个Agent通过消息传递、共享状态或标准协议交互,共享数据、分配任务或协调行动。A2A通信是多Agent系统(MAS)的核心,支持分布式协作和复杂任务分解。根据Multi-Agent Collaboration Mechanisms, A2A通信支持合作(共享目标)、竞争(竞争输出)和coopetition(合作与竞争结合)模式。
实现方法与技术细节
- 消息队列
使用消息队列(如Kafka、RabbitMQ)实现异步A2A通信。Agent通过发布-订阅模式共享信息。例如,供应链预测Agent发布需求数据,库存Agent订阅并调整库存。
技术细节:- 序列化:使用Avro或JSON序列化消息,确保高效传输。
- 分区:Kafka分区支持高吞吐量,单分区吞吐量达1MB/s。
- 持久化:消息持久化到磁盘,防止数据丢失。
- 工具:Confluent Kafka支持Agent消息管理。
- 标准协议
使用gRPC或WebSocket实现同步/异步通信。gRPC通过Protobuf定义AgentService,支持低延迟A2A交互。例如,金融Agent通过RiskAgent.Communicate共享风险模型。
技术细节:- 双向流:gRPC Streaming支持实时数据交换。
- 认证:通过mTLS(Mutual TLS)确保通信安全。
- 截止时间:设置10ms Deadline,防止阻塞。
- 共享状态
通过分布式数据库(如Redis、etcd)或共享内存实现状态同步。例如,交通Agent通过Redis共享道路状态(SET road_status {data})。
技术细节:- 一致性:使用Raft协议确保分布式一致性。
- 锁机制:通过Redlock实现分布式锁,防止并发冲突。
- 过期策略:设置TTL(Time-To-Live)清理过期状态。
- 协作框架
- OpenAI Swarm:通过例程和交接(handoffs)实现A2A协作,支持动态任务分配(参考:OpenAI Cookbook)。
- Magentic-One:Microsoft的协调器管理A2A通信,分配任务并处理错误(参考:Magentic-One Research)。
- Bee Agent:IBM框架通过模块化设计支持A2A暂停/恢复(参考:Bee Agent框架)。
优化策略
- 消息压缩:使用gzip或zstd压缩消息,降低带宽需求。
- 优先级队列:为高优先级任务(如实时交易)分配专用队列。
- 一致性优化:通过最终一致性模型(如CRDT)降低同步开销。
- 监控:使用Zipkin追踪A2A消息,分析延迟和瓶颈。
优势
- 协作效率:多Agent协同完成复杂任务,提升整体性能。
- 动态性:任务根据Agent能力动态分配,优化资源利用。
- 鲁棒性:分布式通信支持故障恢复,增强系统稳定性。
挑战
- 通信延迟:异步消息可能引入毫秒级延迟,需优化。
- 一致性复杂性:分布式状态同步增加开发难度。
- 安全性:需通过端到端加密防止数据拦截。
企业应用案例
- 供应链优化
需求预测Agent、库存Agent和物流Agent通过Kafka共享数据,协作优化供应链。预测Agent发布需求(publish demand_forecast {data}),库存Agent订阅并调整库存。
实现:Kafka分区支持10万条/秒消息,Avro序列化。
优化:优先级队列降低关键任务延迟。
优势:库存周转率提升20%。
挑战:需处理消息丢失。 - 金融协作
风险Agent和交易Agent通过gRPC共享市场模型,协作评估投资组合。
实现:Protobuf定义RiskService,mTLS认证。
优化:双向流降低通信开销30%。
优势:评估速度提升25%。
挑战:需确保通信安全。
4.3.4 数据库查询
定义与作用
数据库查询是指Agent通过SQL或NoSQL语言从数据库中检索或操作结构化数据的过程。数据库查询为Agent提供可靠数据支持,用于决策、分析和个性化服务。例如,金融Agent查询交易记录,计算风险指标。
实现方法与技术细节
- SQL数据库
使用SQL查询关系型数据库(如PostgreSQL、MySQL)。例如,Agent执行SELECT SUM(amount) FROM transactions WHERE date > ‘2025-01-01’,计算交易总额。
技术细节:- 连接池:使用HikariCP管理连接,支持1000并发查询。
- 索引:B+树索引加速WHERE子句查询,降低延迟至1ms。
- 事务:通过ACID事务确保数据一致性。
- NoSQL数据库
使用API或查询语言操作非关系型数据库(如MongoDB、DynamoDB)。例如,MongoDB的db.customers.find({ “status”: “active” })检索活跃客户。
技术细节:- 分区:DynamoDB分区键支持10万QPS(Queries Per Second)。
- 缓存:MongoDB WiredTiger缓存热点数据。
- 一致性:支持最终一致性读取,降低延迟。
- ORM框架
对象关系映射(ORM)框架(如SQLAlchemy、Prisma)将数据库表映射为对象,简化Agent操作。例如,SQLAlchemy的session.query(Customer).filter(status=‘active’).all()查询客户。
技术细节:- 延迟加载:通过Lazy Loading减少不必要查询。
- 批量操作:支持Bulk Insert/Update,提升性能。
- 迁移:Alembic支持数据库模式迁移。
- MCP数据库查询
MCP通过JSON-RPC接口查询数据库,简化多源数据访问。例如,Agent发送{“method”: “query_database”, “params”: {“sql”: “SELECT * FROM sales”}}(参考:MCP初体验)。
技术细节:- 参数化查询:防止SQL注入。
- 连接复用:通过连接池降低开销。
优化策略
- 查询优化:通过EXPLAIN分析SQL执行计划,优化索引和JOIN。
- 分区与分片:对大表分区(如按日期),降低查询范围。
- 读写分离:主从复制实现读写分离,主库写,从库读。
- 分布式数据库:使用CockroachDB或TiDB支持分布式查询。
优势
- 数据可靠性:结构化数据确保准确性和一致性。
- 高效性:索引和缓存支持毫秒级查询。
- 安全性:RBAC和加密保护数据隐私。
挑战
- 并发瓶颈:高并发查询可能导致锁竞争,需优化。
- 复杂查询:多表JOIN增加开发和执行成本。
- 合规性:需符合GDPR、CCPA等隐私法规。
企业应用案例
- 金融风险评估
交易Agent通过PostgreSQL查询交易数据(SELECT * FROM trades WHERE risk_score > 0.8),评估投资风险。
实现:SQLAlchemy管理查询,HikariCP连接池支持500并发。
优化:分区表按月存储,查询速度提升40%。
优势:风险评估准确率提高20%。
挑战:需优化高并发性能。 - 零售个性化
客服Agent通过MongoDB查询客户记录(db.customers.find({“purchases”: {“$gt”: 5}})),生成推荐。
实现:MongoDB Atlas支持云查询,WiredTiger缓存热点数据。
优化:索引购买字段,查询延迟降至5ms。
优势:转化率提升15%。
挑战:需保护客户隐私。
4.3.5 信息检索
定义与作用
信息检索是指Agent从非结构化或半结构化数据(如文档、网页、邮件)中查找相关信息的过程。信息检索支持知识密集型任务,如问题回答、报告生成和决策支持。根据Retrieval-Augmented Generation, 检索增强生成(RAG)通过外部知识减少LLM幻觉。
实现方法与技术细节
- 搜索引擎
使用外部搜索引擎(如Google)或内部搜索引擎(如Elasticsearch)检索信息。Agent通过关键词或布尔查询(q=policy AND employee)获取文档。
技术细节:- 倒排索引:Elasticsearch倒排索引支持10万QPS。
- 分词器:IK分词器支持中文分词,增强准确性。
- 相关性:BM25算法计算文档相关性。
- 向量搜索
使用向量数据库(如FAISS、Pinecone)实现语义检索,将文本转换为嵌入向量,通过余弦相似度查找。例如,Agent根据查询“退货政策”检索知识库。
技术细节:- 嵌入模型:Sentence-BERT生成768维向量。
- 索引:HNSW(Hierarchical Navigable Small World)索引支持毫秒级搜索。
- 更新:通过增量索引支持动态数据。
- RAG集成
RAG结合检索和生成,先检索相关信息,再由LLM生成答案。例如,客服Agent检索FAQ后生成回复。
技术细节:- 检索器:LangChain的VectorStoreRetriever支持FAISS检索。
- 生成器:通过langchain.chains.RetrievalQA整合LLM。
- 上下文压缩:通过ContextualCompressionRetriever减少冗余。
- 知识图谱
使用Neo4j或RDF存储实体关系,支持复杂检索。例如,医疗Agent通过MATCH (disease)-[:CAUSES]->(symptom)查询疾病症状。
技术细节:- 查询语言:Cypher或SPARQL支持关系查询。
- 推理:通过规则引擎推导隐含关系。
优化策略
- 查询重写:通过LLM重写查询,增强语义匹配。
- 混合搜索:结合关键词和向量搜索,提升召回率。
- 缓存:Redis缓存热门查询结果,降低检索延迟。
- 分布式检索:通过Elasticsearch分片支持大规模数据。
优势
- 广泛性:处理海量非结构化数据,覆盖多种场景。
- 语义支持:向量搜索匹配语义意图。
- 实时性:索引技术支持快速响应。
挑战
- 准确性:需优化算法,避免无关结果。
- 计算成本:向量搜索需GPU支持,成本较高。
- 隐私:需通过匿名化保护检索数据。
企业应用案例
- 知识管理
企业Agent通过Elasticsearch检索员工手册,回答政策查询(q=leave_policy)。
实现:IK分词器支持中文,BM25优化相关性。
优化:缓存热门查询,响应时间降至50ms。
优势:查询效率提升30%。
挑战:需提高召回率。 - 医疗诊断
诊断Agent通过FAISS检索医学文献(query_embedding: [0.1, 0.2, …]),生成诊断建议。
实现:Sentence-BERT生成嵌入,HNSW索引。
优化:增量索引支持实时更新。
优势:诊断准确率提高20%。
挑战:需保护患者数据。
4.3.6 综合企业应用案例
- 金融服务:投资组合管理
-
场景:交易Agent通过API、MCP、A2A、数据库查询和信息检索,管理投资组合。
-
实现:
- API调用:gRPC获取实时股价(MarketService.GetPrice)。
- MCP:查询历史交易(fetch_data: SELECT * FROM trades)。
- A2A:分析Agent与交易Agent通过Kafka共享风险模型。
- 数据库查询:PostgreSQL计算收益(SELECT SUM(profit) FROM trades)。
- 信息检索:RAG检索市场新闻,生成趋势分析。
-
优化:批量API调用,Redis缓存,HNSW索引。
-
优势:收益预测准确率提升25%。
-
挑战:需确保数据安全和实时性。
-
零售:智能客服
-
场景:客服Agent通过多技术集成,处理用户查询。
-
实现:
- API调用:GraphQL查询CRM(query { customer(id: “123”) { orders } })。
- MCP:检索知识库(fetch_data: FAQ)。
- A2A:查询Agent与回复Agent通过gRPC协作。
- 数据库查询:MongoDB获取购买记录(db.customers.find())。
- 信息检索:Elasticsearch检索FAQ(q=return_policy)。
-
优化:异步请求,批量查询,BM25优化。
-
优势:响应速度提升30%。
-
挑战:需优化高并发性能。
-
医疗:辅助诊断
-
场景:诊断Agent整合多源数据,生成诊断建议。
-
实现:
- API调用:RESTful API获取实验室结果(GET /lab_results)。
- MCP:查询电子病历(fetch_data: SELECT * FROM records)。
- A2A:症状Agent与文献Agent通过WebSocket协作。
- 数据库查询:SQL查询患者历史(SELECT * FROM patients)。
- 信息检索:FAISS检索文献(query_embedding)。
-
优化:连接池,增量索引,异步通信。
-
优势:诊断效率提升20%。
-
挑战:需保护隐私和确保准确性。
4.3.7 未来发展趋势
- 标准化协议
MCP和AGNTCY将推动工具和系统互操作性,降低开发成本(参考:AGNTCY标准)。 - 多模态集成
支持图像、语音和视频数据,扩展应用场景,如医疗诊断结合X光片和症状。 - 边缘计算
通过边缘设备(如NVIDIA Jetson)处理API调用和检索,降低云端依赖。 - 安全性增强
零信任架构、差分隐私和区块链将保护数据安全。 - 自动化集成
自动工具发现(如OpenAPI解析)和动态配置将简化开发。
工具调用与外部系统集成通过API调用、MCP、A2A通信、数据库查询和信息检索,为Agent系统提供了强大的数据访问和协作能力。这些技术在金融、零售和医疗等领域的应用,展示了其在自动化、个性化服务和智能决策中的潜力。通过优化策略(如异步处理、缓存、标准化协议),可以有效应对安全性、性能和兼容性挑战。未来,标准化协议、多模态集成和自动化技术将进一步推动Agent系统在企业中的深度应用。
相关文章:
4.3 工具调用与外部系统集成:API调用、MCP(模型上下文协议)、A2A、数据库查询与信息检索的实现
工具调用与外部系统集成是智能代理(Agent)系统实现复杂功能和企业级应用的核心支柱。Agent通过API调用访问实时服务,**模型上下文协议(Model Context Protocol, MCP)**标准化数据交互,Agent-to-Agent&#…...
展锐Android13电池问题导致系统的崩溃,(2)电池电压计算和电池曲线
先看is_bat_low函数的代码: #ifndef LOW_BAT_VOL //# define LOW_BAT_VOL 3400 #define LOW_BAT_VOL 3672 #endif #ifndef LOW_BAT_VOL_CHG //# define LOW_BAT_VOL_CHG 3500 #define LOW_BAT_VOL_CHG 3719 #endifint is_bat_low(void) {int32_t vbat_vol;uin…...
SpringCloud 微服务复习笔记
文章目录 微服务概述单体架构微服务架构 微服务拆分微服务拆分原则拆分实战第一步:创建一个新工程第二步:创建对应模块第三步:引入依赖第四步:被配置文件拷贝过来第五步:把对应的东西全部拷过来第六步:创建…...
【Python爬虫基础篇】--4.Selenium入门详细教程
先解释:Selenium:n.硒;硒元素 目录 1.Selenium--简介 2.Selenium--原理 3.Selenium--环境搭建 4.Selenium--简单案例 5.Selenium--定位方式 6.Selenium--常用方法 6.1.控制操作 6.2.鼠标操作 6.3.键盘操作 6.4.获取断言信息 6.5.…...
【Python爬虫详解】第四篇:使用解析库提取网页数据——XPath
在前一篇文章中,我们介绍了如何使用BeautifulSoup解析库从HTML中提取数据。本篇文章将介绍另一个强大的解析工具:XPath。XPath是一种在XML文档中查找信息的语言,同样适用于HTML文档。它的语法简洁而强大,特别适合处理结构复杂的网…...
二分小专题
P1102 A-B 数对 P1102 A-B 数对 暴力枚举还是很好做的,直接上双层循环OK 二分思路:查找边界情况,找出最大下标和最小下标,两者相减1即为答案所求 废话不多说,上代码 //暴力O(n^3) 72pts // #include<bits/stdc.h> // usin…...
Langchain检索YouTube字幕
创建一个简单搜索引擎,将用户原始问题传递该搜索系统 本文重点:获取保存文档——保存向量数据库——加载向量数据库 专注于youtube的字幕,利用youtube的公开接口,获取元数据 pip install youtube-transscript-api pytube 初始化 …...
【Linux网络】应用层自定义协议与序列化及Socket模拟封装
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
客户案例:西范优选通过日事清实现流程与项目管理的优化
近几年来,新零售行业返璞归真,从线上销售重返线下发展,满足消费者更加多元化的需求,国内家居集合店如井喷式崛起。为在激烈的市场竞争中立于不败之地,西范优选专注于加强管理能力、优化协作效率的“内功修炼”…...
LabVIEW实现Voronoi图绘制功能
该 LabVIEW 虚拟仪器(VI)借助 MathScript 节点,实现基于手机信号塔位置计算 Voronoi 图的功能。通过操作演示,能直观展示 Voronoi 图在空间划分上的应用。 各部分功能详细说明 随机地形创建部分 功能:根据 “Maximum a…...
【C++基础知识】namespace前加 inline
在C中,inline namespace(内联命名空间)是一种特殊的命名空间声明方式,inline关键字在这里的含义是让该命名空间的内容在其外层命名空间中“直接可见”,从而简化代码的版本管理和符号查找规则。以下是详细解释ÿ…...
离线部署kubernetes
麒麟Linux服务器 AMR架构 🧰 离线部署 Kubernetes v1.25.9(麒麟系统 Docker) 一、验证Docker部署状态 检查Docker服务运行状态 systemctl status docker 预期输出应显示 Active: active (running),表明服务已启动18。 …...
【AI提示词】私人教练
提示说明 以专业且细致的方式帮助客户实现健康与健身目标,提升整体生活质量。 提示词 # Role: 私人教练## Profile - language: 中文 - description: 以专业且细致的方式帮助客户实现健康与健身目标,提升整体生活质量 - background: 具备丰富的健身经…...
爬虫学习——获取动态网页信息
对于静态网页可以直接研究html网页代码实现内容获取,对于动态网页绝大多数都是页面内容是通过JavaScript脚本动态生成(也就是json数据格式),而不是静态的,故需要使用一些新方法对其进行内容获取。凡是通过静态方法获取不到的内容,…...
第54讲:总结与前沿展望——农业智能化的未来趋势与研究方向
目录 一、本板块内容回顾:人工智能助力农业的多元化应用 ✅ 精准农业与AI ✅ 农业金融与AI ✅ AI与农业政策 ✅ 农业物联网与AI 二、前沿趋势与研究方向:迈向智能、可持续农业的未来 1. AIGC(生成式AI)在农业中的应用 2. 数字孪生农业:虚拟与现实的无缝对接 3. A…...
创新项目实训开发日志4
一、开发简介 核心工作内容:logo实现、注册实现、登录实现、上传gitee 工作时间:第十周 二、logo实现 1.设计logo 2.添加logo const logoUrl new URL(/assets/images/logo.png, import.meta.url).href <div class"aside-first">…...
常见接口测试常见面试题(JMeter)
JMeter 是 Apache 提供的开源性能测试工具,主要用于对 Web 应用、REST API、数据库、FTP 等进行性能、负载和功能测试。它支持多种协议,如 HTTP、HTTPS、JDBC、SOAP、FTP 等。 在一个线程组中,JMeter 的执行顺序通常为:配置元件…...
发布事件和Insert数据库先后顺序
代码解释 csharp await PublishCreatedAsync(entity).ConfigureAwait(false); await Repository.InsertAsync(entity).ConfigureAwait(false);PublishCreatedAsync(entity):这是一个异步方法,其功能是发布与实体创建相关的事件。此方法或许会通知其他组…...
函数重载(Function Overloading)
1. 函数重载的核心概念 函数重载允许在 同一作用域内定义多个同名函数,但它们的 参数列表(参数类型、顺序或数量)必须不同。编译器在编译时根据 调用时的实参类型和数量 静态选择最匹配的函数版本。 2. 源码示例:基础函数重载 示…...
CGAL 网格等高线计算
文章目录 一、简介二、实现代码三、实现效果一、简介 这里等高线的计算其实很简单,使用不同高度的水平面与网格进行相交,最后获取不同高度的相交线即可。 二、实现代码 #include <iostream> #include <iterator> #include <map>...
计算机组成与体系结构:缓存(Cache)
目录 为什么需要 Cache? 🧱 Cache 的分层设计 🔹 Level 1 Cache(L1 Cache)一级缓存 🔹 Level 2 Cache(L2 Cache)二级缓存 🔹 Level 3 Cache(L3 Cache&am…...
Flutter 在全新 Platform 和 UI 线程合并后,出现了什么大坑和变化?
Flutter 在全新 Platform 和 UI 线程合并后,出现了什么大坑和变化? 在两个月前,我们就聊过 3.29 上《Platform 和 UI 线程合并》的具体原因和实现方式,而事实上 Platform 和 UI 线程合并,确实为后续原生语言和 Dart 的…...
开发 MCP Proxy(代理)也可以用 Solon AI MCP 哟!
MCP 有三种通讯方式: 通道说明备注stdio本地进程内通讯现有sse http远程 http 通讯现有streamable http远程 http 通讯(MCP 官方刚通过决定,mcp-java-sdk 还没实现) 也可以按两大类分: 本地进程间通讯远程通讯&…...
JetBrains GoLang IDE无限重置试用期,适用最新2025版
注意本文仅用于学习使用!!! 本文在重置2024.3.5版本亲测有效,环境为window(mac下应该也一样奏效) 之前eval-reset插件只能在比较低的版本才能起作用。 总结起来就一句:卸载重装,额外要删掉旧安装文件和注册…...
python中socket(套接字)库详细解析
目录 1. 前言 2. socket 库基础 2.1 什么是 socket? 2.2 socket 的类型 3. 基于 TCP 的 socket 编程 3.1 TCP 服务器端代码示例 3.2 TCP 客户端代码示例 3.3 代码分析 4. 基于 UDP 的 socket 编程 4.1 UDP 服务器端代码示例 4.2 UDP 客户端代码示例 4.3…...
鸿蒙-状态管理V1和V2在ForEach循环渲染的表现
目录 前提遇到的问题换V2呗 状态管理V2已经出来好长时间了,移除GAP说明也有一段时间了,相信有一部分朋友已经开始着手从V1迁移到V2了,应该也踩了不少坑。 下面向大家分享一下我使用状态管理V1和Foreach时遇到的坑,以及状态管理V2在…...
深入了解递归、堆与栈:C#中的内存管理与函数调用
在编程中,理解如何有效地管理内存以及如何控制程序的执行流程是每个开发者必须掌握的基本概念。C#作为一种高级编程语言,其内存管理和函数调用机制包括递归、堆与栈。本文将详细讲解这三者的工作原理、用途以及它们在C#中的实现和应用。 1. 递归 (Recur…...
图论---Prim堆优化(稀疏图)
题目通常会提示数据范围: 若 V ≤ 500,两种方法均可(朴素Prim更稳)。 若 V ≤ 1e5,必须用优先队列Prim vector 存图。 #include <iostream> #include <vector> #include <queue> #include <…...
stm32之GPIO函数详解和上机实验
目录 1.LED和蜂鸣器1.1 LED1.2 蜂鸣器 2.实验2.1 库函数:RCC和GPIO2.1.1 RCC函数1. RCC_AHBPeriphClockCmd2. RCC_APB2PeriphClockCmd3. RCC_APB1PeriphClockCmd 2.1.2 GPIO函数1. GPIO_DeInit2. GPIO_AFIODeInit3. GPIO_Init4. GPIO_StructInit5. GPIO_ReadInputDa…...
用 PyQt5 和 asyncio 打造接口并发测试 GUI 工具
接口并发测试是测试工程师日常工作中的重要一环,而一个直观的 GUI 工具能有效提升工作效率和体验。本篇文章将带你用 PyQt5 和 asyncio 从零实现一个美观且功能实用的接口并发测试工具。 我们将实现以下功能: 请求方法选择器 添加了一个下拉框 QComboBo…...
