4.3 工具调用与外部系统集成:API调用、MCP(模型上下文协议)、A2A、数据库查询与信息检索的实现

news2025/4/25 11:29:11

工具调用与外部系统集成是智能代理(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调用的实现依赖以下主流协议和技术:

  1. 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负载。
  2. GraphQL
    GraphQL通过单一端点支持灵活查询,Agent指定所需字段,避免数据冗余。例如,零售Agent通过GraphQL查询CRM系统,仅获取客户ID和最近订单(query { customer(id: “123”) { id, recentOrders } })。
    技术细节
    • 查询优化:使用DataLoader批量查询,减少N+1问题。
    • 订阅:通过GraphQL Subscriptions(WebSocket)实现实时更新,如订单状态变化。
    • 工具:Apollo Client或Relay支持Agent端查询管理。
  3. gRPC
    gRPC使用Protocol Buffers定义接口,通过HTTP/2实现高性能双向通信,适合低延迟场景。金融Agent通过gRPC调用交易服务(TradeService.ExecuteTrade),执行高频买卖。
    技术细节
    • 序列化:Protobuf提供高效数据压缩,降低带宽需求。
    • 负载均衡:通过Envoy代理实现客户端负载均衡。
    • 截止时间:设置Deadline Propagation,防止请求超时。
  4. 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的响应格式和错误码差异,需标准化处理。

企业应用案例

  1. 金融交易
    一家对冲基金的交易Agent通过gRPC调用市场数据API,获取实时股价,结合LLM预测趋势,执行买卖。
    实现:使用grpc-python发送请求,Protobuf定义MarketData服务,Redis缓存分钟级数据。
    优化:通过Envoy负载均衡,降低延迟至10ms以内。
    优势:支持高频交易,响应速度提升30%。
    挑战:需处理API限流和网络抖动。
  2. 零售客服
    电商客服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基于客户端-服务器架构:

  1. MCP服务器
    提供数据源或工具的接口,处理Agent请求。例如,一个MCP服务器连接到PostgreSQL数据库,另一个连接到GitHub仓库。服务器通过JSON-RPC 2.0响应请求,支持方法如fetch_data和execute_action。
  2. MCP客户端
    嵌入在Agent或AI应用中,通过JSON-RPC 2.0发送请求,获取数据或执行操作。客户端支持多服务器连接,整合异构数据源。
  3. 通信流程
    • 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等系统兼容。

实现技术

  1. JSON-RPC 2.0
    轻量级协议,支持异步请求和批量处理,减少通信开销。
    优化:通过连接池复用TCP连接,降低延迟。
  2. SDK集成
    MCP SDK提供MCPClient和MCPServer类,简化开发。例如,Python SDK的mcp_client.query(“SELECT * FROM users”)直接查询数据库。
  3. 数据访问控制
    通过RBAC(角色权限控制)和JWT认证,确保安全访问。
    优化:使用OAuth 2.0 Scope限制数据范围。
  4. 错误处理
    实现try-except捕获JSON-RPC错误(如InvalidParams),支持重试和降级策略。
  5. 监控
    使用OpenTelemetry记录MCP请求日志,集成Grafana分析性能。

优化策略

  • 批量请求:通过JSON-RPC Batch模式合并请求,减少网络往返。
  • 缓存:使用Redis缓存高频查询结果,降低服务器负载。
  • 异步处理:通过asyncio实现异步MCP调用,提升并发性能。
  • 负载均衡:通过Nginx或HAProxy分发MCP服务器请求。

优势

  • 标准化:统一接口降低集成成本,支持多数据源。
  • 上下文增强:实时访问外部数据,提升LLM输出相关性。
  • 安全性:内置认证和加密,保护敏感数据。

挑战

  • 学习曲线:开发者需熟悉JSON-RPC和MCP SDK,初期成本较高。
  • 性能瓶颈:多服务器通信可能引入延迟,需优化网络。
  • 生态成熟度:MCP生态尚在发展,社区支持有限。

企业应用案例

  1. CRM数据分析
    零售企业通过MCP连接LLM到PostgreSQL数据库,Agent查询客户销售数据(SELECT * FROM sales WHERE date > ‘2025-01-01’),生成营销报告。
    实现:使用Python MCP SDK,RBAC限制数据访问,Redis缓存查询结果。
    优化:批量查询降低延迟20%。
    优势:分析效率提升30%。
    挑战:需优化高并发性能。
  2. 代码审查
    软件公司通过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(合作与竞争结合)模式。

实现方法与技术细节

  1. 消息队列
    使用消息队列(如Kafka、RabbitMQ)实现异步A2A通信。Agent通过发布-订阅模式共享信息。例如,供应链预测Agent发布需求数据,库存Agent订阅并调整库存。
    技术细节
    • 序列化:使用Avro或JSON序列化消息,确保高效传输。
    • 分区:Kafka分区支持高吞吐量,单分区吞吐量达1MB/s。
    • 持久化:消息持久化到磁盘,防止数据丢失。
    • 工具:Confluent Kafka支持Agent消息管理。
  2. 标准协议
    使用gRPC或WebSocket实现同步/异步通信。gRPC通过Protobuf定义AgentService,支持低延迟A2A交互。例如,金融Agent通过RiskAgent.Communicate共享风险模型。
    技术细节
    • 双向流:gRPC Streaming支持实时数据交换。
    • 认证:通过mTLS(Mutual TLS)确保通信安全。
    • 截止时间:设置10ms Deadline,防止阻塞。
  3. 共享状态
    通过分布式数据库(如Redis、etcd)或共享内存实现状态同步。例如,交通Agent通过Redis共享道路状态(SET road_status {data})。
    技术细节
    • 一致性:使用Raft协议确保分布式一致性。
    • 锁机制:通过Redlock实现分布式锁,防止并发冲突。
    • 过期策略:设置TTL(Time-To-Live)清理过期状态。
  4. 协作框架
    • 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能力动态分配,优化资源利用。
  • 鲁棒性:分布式通信支持故障恢复,增强系统稳定性。

挑战

  • 通信延迟:异步消息可能引入毫秒级延迟,需优化。
  • 一致性复杂性:分布式状态同步增加开发难度。
  • 安全性:需通过端到端加密防止数据拦截。

企业应用案例

  1. 供应链优化
    需求预测Agent、库存Agent和物流Agent通过Kafka共享数据,协作优化供应链。预测Agent发布需求(publish demand_forecast {data}),库存Agent订阅并调整库存。
    实现:Kafka分区支持10万条/秒消息,Avro序列化。
    优化:优先级队列降低关键任务延迟。
    优势:库存周转率提升20%。
    挑战:需处理消息丢失。
  2. 金融协作
    风险Agent和交易Agent通过gRPC共享市场模型,协作评估投资组合。
    实现:Protobuf定义RiskService,mTLS认证。
    优化:双向流降低通信开销30%。
    优势:评估速度提升25%。
    挑战:需确保通信安全。

4.3.4 数据库查询

定义与作用

数据库查询是指Agent通过SQL或NoSQL语言从数据库中检索或操作结构化数据的过程。数据库查询为Agent提供可靠数据支持,用于决策、分析和个性化服务。例如,金融Agent查询交易记录,计算风险指标。

实现方法与技术细节

  1. SQL数据库
    使用SQL查询关系型数据库(如PostgreSQL、MySQL)。例如,Agent执行SELECT SUM(amount) FROM transactions WHERE date > ‘2025-01-01’,计算交易总额。
    技术细节
    • 连接池:使用HikariCP管理连接,支持1000并发查询。
    • 索引:B+树索引加速WHERE子句查询,降低延迟至1ms。
    • 事务:通过ACID事务确保数据一致性。
  2. NoSQL数据库
    使用API或查询语言操作非关系型数据库(如MongoDB、DynamoDB)。例如,MongoDB的db.customers.find({ “status”: “active” })检索活跃客户。
    技术细节
    • 分区:DynamoDB分区键支持10万QPS(Queries Per Second)。
    • 缓存:MongoDB WiredTiger缓存热点数据。
    • 一致性:支持最终一致性读取,降低延迟。
  3. ORM框架
    对象关系映射(ORM)框架(如SQLAlchemy、Prisma)将数据库表映射为对象,简化Agent操作。例如,SQLAlchemy的session.query(Customer).filter(status=‘active’).all()查询客户。
    技术细节
    • 延迟加载:通过Lazy Loading减少不必要查询。
    • 批量操作:支持Bulk Insert/Update,提升性能。
    • 迁移:Alembic支持数据库模式迁移。
  4. MCP数据库查询
    MCP通过JSON-RPC接口查询数据库,简化多源数据访问。例如,Agent发送{“method”: “query_database”, “params”: {“sql”: “SELECT * FROM sales”}}(参考:MCP初体验)。
    技术细节
    • 参数化查询:防止SQL注入。
    • 连接复用:通过连接池降低开销。

优化策略

  • 查询优化:通过EXPLAIN分析SQL执行计划,优化索引和JOIN。
  • 分区与分片:对大表分区(如按日期),降低查询范围。
  • 读写分离:主从复制实现读写分离,主库写,从库读。
  • 分布式数据库:使用CockroachDB或TiDB支持分布式查询。

优势

  • 数据可靠性:结构化数据确保准确性和一致性。
  • 高效性:索引和缓存支持毫秒级查询。
  • 安全性:RBAC和加密保护数据隐私。

挑战

  • 并发瓶颈:高并发查询可能导致锁竞争,需优化。
  • 复杂查询:多表JOIN增加开发和执行成本。
  • 合规性:需符合GDPR、CCPA等隐私法规。

企业应用案例

  1. 金融风险评估
    交易Agent通过PostgreSQL查询交易数据(SELECT * FROM trades WHERE risk_score > 0.8),评估投资风险。
    实现:SQLAlchemy管理查询,HikariCP连接池支持500并发。
    优化:分区表按月存储,查询速度提升40%。
    优势:风险评估准确率提高20%。
    挑战:需优化高并发性能。
  2. 零售个性化
    客服Agent通过MongoDB查询客户记录(db.customers.find({“purchases”: {“$gt”: 5}})),生成推荐。
    实现:MongoDB Atlas支持云查询,WiredTiger缓存热点数据。
    优化:索引购买字段,查询延迟降至5ms。
    优势:转化率提升15%。
    挑战:需保护客户隐私。

4.3.5 信息检索

定义与作用

信息检索是指Agent从非结构化或半结构化数据(如文档、网页、邮件)中查找相关信息的过程。信息检索支持知识密集型任务,如问题回答、报告生成和决策支持。根据Retrieval-Augmented Generation, 检索增强生成(RAG)通过外部知识减少LLM幻觉。

实现方法与技术细节

  1. 搜索引擎
    使用外部搜索引擎(如Google)或内部搜索引擎(如Elasticsearch)检索信息。Agent通过关键词或布尔查询(q=policy AND employee)获取文档。
    技术细节
    • 倒排索引:Elasticsearch倒排索引支持10万QPS。
    • 分词器:IK分词器支持中文分词,增强准确性。
    • 相关性:BM25算法计算文档相关性。
  2. 向量搜索
    使用向量数据库(如FAISS、Pinecone)实现语义检索,将文本转换为嵌入向量,通过余弦相似度查找。例如,Agent根据查询“退货政策”检索知识库。
    技术细节
    • 嵌入模型:Sentence-BERT生成768维向量。
    • 索引:HNSW(Hierarchical Navigable Small World)索引支持毫秒级搜索。
    • 更新:通过增量索引支持动态数据。
  3. RAG集成
    RAG结合检索和生成,先检索相关信息,再由LLM生成答案。例如,客服Agent检索FAQ后生成回复。
    技术细节
    • 检索器:LangChain的VectorStoreRetriever支持FAISS检索。
    • 生成器:通过langchain.chains.RetrievalQA整合LLM。
    • 上下文压缩:通过ContextualCompressionRetriever减少冗余。
  4. 知识图谱
    使用Neo4j或RDF存储实体关系,支持复杂检索。例如,医疗Agent通过MATCH (disease)-[:CAUSES]->(symptom)查询疾病症状。
    技术细节
    • 查询语言:Cypher或SPARQL支持关系查询。
    • 推理:通过规则引擎推导隐含关系。

优化策略

  • 查询重写:通过LLM重写查询,增强语义匹配。
  • 混合搜索:结合关键词和向量搜索,提升召回率。
  • 缓存:Redis缓存热门查询结果,降低检索延迟。
  • 分布式检索:通过Elasticsearch分片支持大规模数据。

优势

  • 广泛性:处理海量非结构化数据,覆盖多种场景。
  • 语义支持:向量搜索匹配语义意图。
  • 实时性:索引技术支持快速响应。

挑战

  • 准确性:需优化算法,避免无关结果。
  • 计算成本:向量搜索需GPU支持,成本较高。
  • 隐私:需通过匿名化保护检索数据。

企业应用案例

  1. 知识管理
    企业Agent通过Elasticsearch检索员工手册,回答政策查询(q=leave_policy)。
    实现:IK分词器支持中文,BM25优化相关性。
    优化:缓存热门查询,响应时间降至50ms。
    优势:查询效率提升30%。
    挑战:需提高召回率。
  2. 医疗诊断
    诊断Agent通过FAISS检索医学文献(query_embedding: [0.1, 0.2, …]),生成诊断建议。
    实现:Sentence-BERT生成嵌入,HNSW索引。
    优化:增量索引支持实时更新。
    优势:诊断准确率提高20%。
    挑战:需保护患者数据。

4.3.6 综合企业应用案例

  1. 金融服务:投资组合管理
  • 场景:交易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 未来发展趋势

  1. 标准化协议
    MCP和AGNTCY将推动工具和系统互操作性,降低开发成本(参考:AGNTCY标准)。
  2. 多模态集成
    支持图像、语音和视频数据,扩展应用场景,如医疗诊断结合X光片和症状。
  3. 边缘计算
    通过边缘设备(如NVIDIA Jetson)处理API调用和检索,降低云端依赖。
  4. 安全性增强
    零信任架构、差分隐私和区块链将保护数据安全。
  5. 自动化集成
    自动工具发现(如OpenAPI解析)和动态配置将简化开发。

工具调用与外部系统集成通过API调用、MCP、A2A通信、数据库查询和信息检索,为Agent系统提供了强大的数据访问和协作能力。这些技术在金融、零售和医疗等领域的应用,展示了其在自动化、个性化服务和智能决策中的潜力。通过优化策略(如异步处理、缓存、标准化协议),可以有效应对安全性、性能和兼容性挑战。未来,标准化协议、多模态集成和自动化技术将进一步推动Agent系统在企业中的深度应用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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.…

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 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…

客户案例:西范优选通过日事清实现流程与项目管理的优化

近几年来,新零售行业返璞归真,从线上销售重返线下发展,满足消费者更加多元化的需求,国内家居集合店如井喷式崛起。为在激烈的市场竞争中立于不败之地,西范优选专注于加强管理能力、优化协作效率的“内功修炼”&#xf…

LabVIEW实现Voronoi图绘制功能

该 LabVIEW 虚拟仪器(VI)借助 MathScript 节点,实现基于手机信号塔位置计算 Voronoi 图的功能。通过操作演示,能直观展示 Voronoi 图在空间划分上的应用。 各部分功能详细说明 随机地形创建部分 功能:根据 “Maximum a…

爬虫学习——获取动态网页信息

对于静态网页可以直接研究html网页代码实现内容获取,对于动态网页绝大多数都是页面内容是通过JavaScript脚本动态生成(也就是json数据格式),而不是静态的,故需要使用一些新方法对其进行内容获取。凡是通过静态方法获取不到的内容,…

创新项目实训开发日志4

一、开发简介 核心工作内容&#xff1a;logo实现、注册实现、登录实现、上传gitee 工作时间&#xff1a;第十周 二、logo实现 1.设计logo 2.添加logo const logoUrl new URL(/assets/images/logo.png, import.meta.url).href <div class"aside-first">…

常见接口测试常见面试题(JMeter)

JMeter 是 Apache 提供的开源性能测试工具&#xff0c;主要用于对 Web 应用、REST API、数据库、FTP 等进行性能、负载和功能测试。​它支持多种协议&#xff0c;如 HTTP、HTTPS、JDBC、SOAP、FTP 等。 在一个线程组中&#xff0c;JMeter 的执行顺序通常为&#xff1a;配置元件…

计算机组成与体系结构:缓存(Cache)

目录 为什么需要 Cache&#xff1f; &#x1f9f1; Cache 的分层设计 &#x1f539; Level 1 Cache&#xff08;L1 Cache&#xff09;一级缓存 &#x1f539; Level 2 Cache&#xff08;L2 Cache&#xff09;二级缓存 &#x1f539; Level 3 Cache&#xff08;L3 Cache&am…

Flutter 在全新 Platform 和 UI 线程合并后,出现了什么大坑和变化?

Flutter 在全新 Platform 和 UI 线程合并后&#xff0c;出现了什么大坑和变化&#xff1f; 在两个月前&#xff0c;我们就聊过 3.29 上《Platform 和 UI 线程合并》的具体原因和实现方式&#xff0c;而事实上 Platform 和 UI 线程合并&#xff0c;确实为后续原生语言和 Dart 的…

stm32之GPIO函数详解和上机实验

目录 1.LED和蜂鸣器1.1 LED1.2 蜂鸣器 2.实验2.1 库函数&#xff1a;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 工具

接口并发测试是测试工程师日常工作中的重要一环&#xff0c;而一个直观的 GUI 工具能有效提升工作效率和体验。本篇文章将带你用 PyQt5 和 asyncio 从零实现一个美观且功能实用的接口并发测试工具。 我们将实现以下功能&#xff1a; 请求方法选择器 添加了一个下拉框 QComboBo…

Qt实战之将自定义插件(minGW)显示到Qt Creator列表的方法

Qt以其强大的跨平台特性和丰富的功能&#xff0c;成为众多开发者构建图形用户界面&#xff08;GUI&#xff09;应用程序的首选框架。而在Qt开发的过程中&#xff0c;自定义插件能够极大地拓展应用程序的功能边界&#xff0c;让开发者实现各种独特的、个性化的交互效果。想象一下…

【Vue】TypeScript与Vue3集成

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Vue 文章目录 1. 前言2. 环境准备与基础搭建2.1. 安装 Node.js 与 npm/yarn/pnpm2.2. 创建 Vue3 TypeScript 项目2.2.1. 使用 Vue CLI2.2.2. 使用 Vite&#xff08;推荐&#xff09;2.2.3. 目录结构简述 3. Vue3 TS 基础语法整…

Linux之七大难命令(The Seven Difficult Commands of Linux)

Linux之七大难命令 、背景 作为Linux的初学者&#xff0c;肯定要先掌握高频使用的指令&#xff0c;这样才能让Linux的学习在短时间内事半功倍。但是&#xff0c;有些指令虽然功能强大&#xff0c;但因参数多而让初学者们很害怕&#xff0c;今天介绍Linux中高频使用&#xff0…

5.3.1 MvvmLight以及CommunityToolkit.Mvvm介绍

MvvmLight、CommunityToolkit.Mvvm是开源包,他们为实现 MVVM(Model-View-ViewModel)模式提供了一系列实用的特性和工具,能帮助开发者更高效地构建 WPF、UWP、MAUI 等应用程序。 本文介绍如下: 一、使用(旧)的MvvmLight库 其特点如下,要继承的基类是ViewModelBase;且使用…

Dbeaver 执行 SQL 语句和执行 SQL 脚本的区别

执行 SQL 语句 执行 SQL 语句对应图标&#xff1a; 适用于执行单个 SQL 的情形&#xff0c;默认是在光标处或选中的文本上执行 SQL 查询。 实际上同时选择多个 SQL 并通过该方式去执行也可能成功&#xff0c;只是有失败的风险。因此不建议使用它来同时执行多个 SQL 语句。 情况…

《Python3网络爬虫开发实战(第二版)》配套案例 spa6

Scrape | Moviehttps://spa6.scrape.center/ 请求影片列表api时&#xff0c;不仅有分页参数&#xff0c;还多了一个token&#xff0c;通过重发请求发现token有时间限制&#xff0c;所以得逆向token的生成代码。 通过xhr断点定位到接口请求位置 刷新页面或者点翻页按钮&#x…

Python基础语法:字面量,注释,关键字,标识符,变量和引用,程序执行的3大流程

目录 字面量&#xff08;数据的类型&#xff09; 字面量的含义 常见字面量类型&#xff08;6种&#xff09; 输出各类字面量&#xff08;print语句&#xff09; 注释&#xff08;单行和多行注释&#xff09; 注释的作用 单行注释和多行注释 单行注释&#xff08;ctrl/&a…