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

谷歌开源代理开发工具包(Agent Development Kit,ADK):让多智能体应用的构建变得更简

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

 

【本周AI新闻: Llama 4 超大上下文Gooogle 开源 Agent SDK】 https://www.bilibili.com/video/BV1irdRYfEzx/

人工智能的世界正迅速从单一用途的模型迈向智能、自主的多智能体系统。然而,构建这些多智能体系统也带来了新的挑战。正因如此,我们在 Google Cloud NEXT 2025 上推出了全新的开源框架 —— Agent Development Kit(ADK)。该框架由 Google 开发,旨在简化从头到尾的代理系统开发过程。ADK 使得像你这样的开发者能够更灵活、更精准地构建可投入生产的代理应用。

ADK 是支撑 Google 内部产品如 Agentspace 和 Google 客户互动套件(CES)背后的框架。通过开源 ADK,我们希望为开发者提供强大、灵活的工具,以便在快速演变的智能体生态中构建解决方案。ADK 的设计具有极高的灵活性,可支持不同模型并适配不同部署环境。


ADK 的核心支柱:构建、交互、评估、部署

ADK 提供了涵盖整个代理开发生命周期的能力:

  • 天生支持多智能体: 通过模块化方式构建可扩展的应用,在层级结构中组合多个专长智能体,实现复杂的协调和任务分派。

  • 丰富的模型生态: 自由选择你需要的模型。ADK 支持任意模型,包括 Gemini 或通过 Vertex AI Model Garden 提供的模型,也支持 LiteLLM 集成,可使用来自 Anthropic、Meta、Mistral AI、AI21 Labs 等的模型。

  • 强大的工具生态: 为代理配备多样化能力:使用预置工具(如 Search、Code Exec)、MCP(Model Context Protocol)工具、第三方库(如 LangChain、LlamaIndex),甚至可以使用其他代理作为工具(如 LangGraph、CrewAI)。

  • 内建流式交互: 借助 ADK 独特的双向音频和视频流功能,与代理进行类似人类的对话。只需几行代码,即可构建自然的交互方式,突破文字限制,进入多模态对话时代。

  • 灵活的编排机制: 使用流程代理(Sequential、Parallel、Loop)定义可预测的流水线,或借助 LLM 驱动的动态路由(如 LlmAgent transfer)实现自适应行为。

  • 集成的开发体验: 通过强大的命令行工具(CLI)和可视化 Web UI,本地开发、测试与调试。可逐步查看事件、状态和代理执行过程。

  • 内建评估功能: 可系统性地通过预定义测试用例评估代理的最终响应质量和执行路径。

  • 简易部署: 可容器化代理并部署到任意环境。


快速上手:构建你的第一个代理

虽然我们推荐你查阅文档中的示例,但核心理念是“Pythonic 简洁”。你需要定义代理的逻辑、可调用的工具,以及其信息处理方式。ADK 提供结构用于管理状态、编排工具调用并与底层大语言模型(LLM)交互。

以下是一个基本代理的示例:

from google.adk.agents import LlmAgent 
from google.adk.tools import google_searchdice_agent = LlmAgent(model="gemini-2.0-flash-exp",  # 必填:指定使用的 LLMname="question_answer_agent",  # 必填:代理名称description="A helpful assistant agent that can answer questions.",instruction="""Respond to the query using google search""",tools=[google_search],  # 指定可用工具
)

运行方式:使用 adk web

这个简单示例展示了基础结构。ADK 的优势在于支持复杂应用,包括多个代理、复杂工具调用和动态编排,同时保持对流程的精确控制。

ADK 提供多种交互方式:CLI、Web UI、API Server 和 Python API。你定义代理的方式(通常在 agent.py 中)始终一致,不同点仅在于交互方式如何发起和管理。


构建多智能体应用:Weather Agent 示例

让我们来看一个使用多代理协作的示例:WeatherAgent 负责天气查询,但当遇到问候语时会转交给 GreetingAgent。

步骤1:定义工具(Tool)

代理通过工具执行具体操作。以下为天气查询的工具定义:

def get_weather(city: str) -> Dict:print(f"--- Tool: get_weather called for city: {city} ---")city_normalized = city.lower().replace(" ", "")mock_weather_db = {"newyork": {"status": "success", "report": "The weather in New York is sunny with a temperature of 25°C."},"london": {"status": "success", "report": "It's cloudy in London with a temperature of 15°C."},"tokyo": {"status": "success", "report": "Tokyo is experiencing light rain and a temperature of 18°C."},"chicago": {"status": "success", "report": "The weather in Chicago is sunny with a temperature of 25°C."},"toronto": {"status": "success", "report": "It's partly cloudy in Toronto with a temperature of 30°C."},"chennai": {"status": "success", "report": "It's rainy in Chennai with a temperature of 15°C."},}if city_normalized in mock_weather_db:return mock_weather_db[city_normalized]else:return {"status": "error", "error_message": f"Sorry, I don't have weather information for '{city}'."}

步骤2:定义代理及其关系

greeting_agent = Agent(model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),name="greeting_agent",instruction="You are the Greeting Agent. Your ONLY task is to provide a friendly greeting to the user. Do not engage in any other conversation or tasks.",description="Handles simple greetings and hellos",
)farewell_agent = Agent(model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),name="farewell_agent",instruction="You are the Farewell Agent. Your ONLY task is to provide a polite goodbye message. Do not perform any other actions.",description="Handles simple farewells and goodbyes",
)root_agent = Agent(name="weather_agent_v2", model="gemini-2.0-flash-exp",description="You are the main Weather Agent, coordinating a team. - Your main task: Provide weather using the `get_weather` tool. Handle its 'status' response ('report' or 'error_message'). - Delegation Rules: - If the user gives a simple greeting (like 'Hi', 'Hello'), delegate to `greeting_agent`. - If the user gives a simple farewell (like 'Bye', 'See you'), delegate to `farewell_agent`. - Handle weather requests yourself using `get_weather`. - For other queries, state clearly if you cannot handle them.",tools=[get_weather],sub_agents=[greeting_agent, farewell_agent]
)

委派机制说明:

  • 默认允许代理进行任务委派。

  • 在处理用户消息时,LLM 会参考当前代理及其子代理的描述字段来决定是否进行委派。

  • 如果某个代理的描述更契合当前任务(例如问候语),则自动进行转移。


完整生命周期:评估与部署

构建智能代理只是开始,将其可靠交付给用户才是目标。ADK 内建评估工具可用来系统性测试执行路径和响应质量,使用方式包括:

  • AgentEvaluator.evaluate() 编程方式集成测试套件;

  • 命令行工具:adk eval

  • Web UI。

部署方面,可将代理容器化并部署至任意环境,或使用 Vertex AI Agent Engine 进行托管部署,快速将原型转为可投入生产的企业级系统。


选择 ADK 还是 Genkit?

两者对比如下:

特性Agent Development Kit (ADK)Genkit
主要用途多智能体系统构建泛用型 AI 体验构建
模型支持集成 LiteLLM、Vertex AI、支持多模型Google AI、Vertex AI、插件生态支持
核心焦点定义智能体行为和交互提供底层构建模块
支持流式✅ 双向音视频流

选择建议:

  • 复杂多智能体系统 → 使用 ADK。

  • 灵活泛用 AI 应用 → 使用 Genkit。


ADK 在 Google Cloud 上的优势

尽管 ADK 可跨平台运行,但其在 Google Cloud 环境中有优化设计,特别是:

  • 原生支持 Gemini 模型及 Vertex AI;

  • 通过 Application Integration 使用超过 100 个预建连接器;

  • 无需复制数据即可访问 AlloyDB、BigQuery、NetApp 数据;

  • 可安全连接 Apigee 管理的现有 API。


用 ADK 构建下一代智能代理

Agent Development Kit(ADK)是构建下一代 AI 应用的强大开源基础设施,专为多智能体系统设计,具备以下优势:

  • 精准控制代理行为和编排;

  • 丰富的工具与生态集成;

  • 一体化开发体验;

  • 系统化的评估框架;

  • 清晰的部署路径(支持托管);

相关文章:

谷歌开源代理开发工具包(Agent Development Kit,ADK):让多智能体应用的构建变得更简

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

揭开人工智能与机器学习的神秘面纱:开发者的视角

李升伟 编译 人工智能(AI)和机器学习(ML)早已不再是空洞的流行语——它们正在彻底改变我们构建软件、做出决策以及与技术互动的方式。无论是自动化重复性任务,还是驱动自动驾驶汽车,AI/ML都是现代创新的核…...

35.Java线程池(线程池概述、线程池的架构、线程池的种类与创建、线程池的底层原理、线程池的工作流程、线程池的拒绝策略、自定义线程池)

一、线程池概述 1、线程池的优势 线程池是一种线程使用模式,线程过多会带来调度开销,进而影响缓存局部性和整体性能,而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务,这避免了在处理短时间任务时创建与…...

【NumPy科学计算:高性能数组操作核心指南】

目录 前言:技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现运行结果验证 三、性能对比测试方法论量化数据对比结果分析 四、最佳实践推荐方案 ✅常见错误 ❌调试技…...

软考 系统架构设计师系列知识点之杂项集萃(50)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(49) 第78题 著作权中,()的保护期不受限制。 A. 发表权 B. 发行权 C. 署名权 D. 展览权 正确答案:C。 所属知识点:旧版…...

实现定长的内存池

池化技术 所谓的池化技术,就是程序预先向系统申请过量的资源,然后自己管理起来,以备不时之需。这个操作的价值就是,如果申请与释放资源的开销较大,提前申请资源并在使用后并不释放而是重复利用,能够提高程序…...

定制一款国密浏览器(7):铜锁和BoringSSL

上一章简单介绍了一下国密算法,本章开始进入实战,进行国密算法的移植。算法的移植以铜锁为蓝本,移植到 BoringSSL 中。 BoringSSL 也是由 OpenSSL fork 而来,那能否修改 Chromium 的源码,使用铜锁库呢?这种方式我也考虑并尝试过,最后发现两者的接口差别太大,Chromium …...

Docker 安装CRMEB陀螺匠教程

首先下载代码到服务器中,打开终端,并切换到项目源码根目录: 通过 Docker compose 启动项目 第一次启动时需要拉取和打包相关镜像,所需时长视网络情况而定,需耐心等待。 配置反向代理 参考 Nginx 配置 Nginx 反向代…...

Java中的static都能用来修饰什么?

在Java编程语言中,static关键字是非常重要的修饰符,可以用于多种不同的地方。可用来修饰变量、方法、代码块以及类。 1.静态变量 定义:静态变量属于类本身,而不是类的任何特定实例(new出来的对象)。 特点&a…...

词法分析器设计实验

掌握生成词法分析器的方法,加深对词法分析原理的理解。掌握设计、编制并调试词法分析程序的思想和方法。本实验是高级语言程序设计、数据结构和编译原理中词法分析原理等知识的综合。 【实验内容及要求】完善以下代码(红色标注处)并加上注释(蓝色标注处) int Getsym…...

matlab求和∑函数方程编程?

matlab求和∑函数方程编程? 一 题目:求下列函数方程式的和 二:代码如下: >> sum_result 0; % 初始化求和变量 for x 1:10 % 设…...

Vue3.5 企业级管理系统实战(十四):动态主题切换

动态主题切换是针对用户体验的常见的功能之一,我们可以自己实现如暗黑模式、明亮模式的切换,也可以利用 Element Plus 默认支持的强大动态主题方案实现。这里我们探讨的是后者通过 CSS 变量设置的方案。 1 组件准备 1.1 修改 Navbar 组件 在 src/layo…...

Python中for循环及其相关函数range(), zip(), enumerate()等

一、Python中的for循环及其相关函数 Python的for循环是算法竞赛中最常用的迭代工具之一,因其简洁和灵活性非常适合快速实现逻辑。以下详细讲解for循环及相关函数在竞赛中的使用场景。 1. for循环基本语法 Python的for循环用于遍历可迭代对象(如列表、…...

数据结构与算法——链表OJ题详解(2)

文章目录 一、前言二、OJ续享2.1相交链表2.2环形链表12.2环形链表2 三、总结 一、前言 哦了兄弟们,咱们上次在详解链表OJ题的时候,有一部分OJ题呢up并没有整理完,这一个星期呢,up也是在不断的学习并且沉淀着,也是终于…...

免费送源码:Java+ssm+MySQL 基于PHP在线考试系统的设计与实现 计算机毕业设计原创定制

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对在线考试等问题,对如何通过计算…...

Android之JNI详解

Android之JNI详解 简介创建项目注册动态注册静态注册 关键词解读基础数据类型引用java对象JNI引用与释放cmake配置文件 简介 JNI(Java Native Interface) 是 Java 提供的一种编程框架,用于在 Java 应用程序中调用和与用其他编程语言&#xf…...

React Hooks: useRef,useCallback,useMemo用法详解

1. useRef(保存引用值) useRef 通常用于保存“不会参与 UI 渲染,但生命周期要长”的对象引用,比如获取 DOM、保存定时器 ID、WebSocket等。 新建useRef.js组件,写入代码: import React, { useRef, useSt…...

Java基础知识

概念 请介绍全局变量和局部变量的区别 Java中的变量分为成员变量和局部变量,它们的区别如下: 成员变量: 1. 成员变量是在类的范围里定义的变量; 2. 成员变量有默认初始值; 3. 未被static修饰的成员变量也叫…...

体验智能体构建过程:从零开始构建Agent

1. 什么是智能体? 智能体(Agents)是一种能够感知环境、做出决策并采取行动来实现特定目标的自主实体。智能体的复杂程度各不相同,从简单的响应式智能体(对刺激直接做出反应)到更高级的智能体(能…...

如何从项目目标到成功标准:构建可量化、可落地的项目评估体系

引言 在项目管理领域,"项目成功"的定义往往比表面看起来更复杂。根据PMI的行业报告,67%的项目失败源于目标与成功标准的不匹配。当项目团队仅关注"按时交付"或"预算达标"时,常会忽视真正的价值创造。本文将通…...

大模型论文:Language Models are Few-Shot Learners(GPT3)

大模型论文:Language Models are Few-Shot Learners(GPT3) 文章地址:https://proceedings.neurips.cc/paper_files/paper/2020/file/1457c0d6bfcb4967418bfb8ac142f64a-Paper.pdf 一、摘要 我们证明了,扩大语言模型的规模在任务无关的 few…...

驱动学习专栏--字符设备驱动篇--1_chrdevbase

字符设备驱动简介 字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节 流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC 、 SPI , LCD 等等都是字符设备&…...

muduo库源码分析: TcpConnection

一. 主要成员: socket_:用于保存已连接套接字文件描述符。channel_:封装了上面的socket_及其各类事件的处理函数(读、写、错误、关闭等事件处理函数)。这个Channel中保存的各类事件的处理函数是在TcpConnection对象构造函数中注册…...

【SLAM】ubuntu 18.04 编译安装 OpenCV 3.2.0 时出现哈希错误

本文首发于❄慕雪的寒舍 1. 前言 1.1. 问题说明 在amd64的ubuntu 18.04 desktop上编译安装 OpenCV 3.2.0 的时候,我遇到了cmake构建错误。错误的核心报错如下 for file: [/home/king/slam/pkg/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32…...

挂马漏洞 asp连接冰蝎webshell (附webshell源码 仅限学习研究)

目录 ASP WebShell代码 代码说明&#xff1a; 部署步骤&#xff1a; 使用冰蝎客户端连接&#xff1a; 注意事项&#xff1a; ASP WebShell代码 <% 冰蝎连接密码&#xff08;需与冰蝎客户端配置一致&#xff09; Dim key key "mysecretkey123" 自定义密码…...

Grafana将弃用AngularJS-我们该如何迁移

AngularJS 弃用时间线 AngularJS 支持已在 Grafana 9 中正式弃用。在 2024 年 5 月发布的 Grafana 11 中&#xff0c;所有 Grafana Cloud 和自托管安装默认关闭该功能。到 Grafana 12 版本时&#xff0c;将完全移除对 AngularJS 的支持&#xff0c;包括配置参数开关 angular_s…...

基于单片机的病房呼叫系统设计

2.1 总体方案设计 本课题为基于单片机的病房呼叫系统设计&#xff0c;在此将整个系统架构设计如图2.1所示&#xff0c;在此采用八个按键模拟8个不同的病房号&#xff0c;再通过8个LED指示灯对病房号的状态进行指示&#xff0c;当用户按键按键时&#xff0c;相应的LED灯会点亮…...

简述一下Unity的UnityWebRequest

UnityWebRequest是Unity引擎中用于处理网络请求的强大工具&#xff0c;尤其适用于与Web服务器进行交互&#xff0c;比如获取数据、上传文件或下载资源等。相较于旧版的WWW类&#xff0c;UnityWebRequest提供了更灵活、更高效的API&#xff0c;支持多种HTTP方法&#xff0c;并能…...

文件操作和IO - 2

目录 Java 中操作文件 File 概述 属性 构造方法 方法 getParent getName getPath getAbsolutePath getCanonicalPath exists isFile isDirectory createNewFile delete deleteOnExit list listFiles mkdir mkdirs 完&#xff01; Java 中操作文件 Java 对于文件操…...

⑪数据中心网络M-LAG实战

一、DeviceA-M-LAG-Mater配置 1、M-LAG 系统配置。 # m-lag mad exclude interface GigabitEthernet1/0/7 m-lag mad exclude interface Vlan-interface100 m-lag mad exclude interface Vlan-interface101 m-lag system-mac 0002-0002-0002 m-lag system-number 1 m-la…...

Win10系统安装WSL2-Ubuntu, 并使用VScode开始工作

本教程基于博主当前需要使用 WSL2(Windows Subsystem for Linux 2) 而编写&#xff0c;将自己使用的经过分享给大家。有什么意见建议敬请大家批评指正。此过程需要打开 Microsoft Store 话不多说&#xff0c;立即开始~ 文章目录 1. 检查系统版本2. 启动 WSL 功能3. 安装Ubuntu4…...

Node.js种cluster模块详解

Node.js 中 cluster 模块全部 API 详解 1. 模块属性 const cluster require(cluster);// 1. isMaster // 判断当前进程是否为主进程 console.log(是否为主进程:, cluster.isMaster);// 2. isWorker // 判断当前进程是否为工作进程 console.log(是否为工作进程:, cluster.isW…...

Window 10使用WSL2搭建Linux版Android Studio应用开发环境

一、背景 公司基于高通SA8155、SA8295等车载芯片进行座舱系统开发,使用repo统一管理系统及应用源码仓库。 Android应用端使用Ubuntu环境Android Studio进行开发,使用repo进行平台性管理,包含所有应用仓库。由于gradle配置使用了linux下文件软链接,无法直接使用Window环境…...

PostgreSQL 的统计信息

PostgreSQL 的统计信息 PostgreSQL 的统计信息是查询优化和性能调优的基础&#xff0c;系统通过多种统计信息来评估数据分布和访问模式&#xff0c;从而生成高效的执行计划。 一 统计信息类型与用途 1.1 核心统计类别 统计类型存储位置主要用途更新机制表和索引扫描统计pg_…...

【Linux】Linux基础指令

Linux系统初步介绍 Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统&#xff61; 严格来讲,Linux 只是操作系统内核本身,但通常采用“Linux内核”来表达该意思&#…...

【SLAM】在ORB_SLAM2的ROS模式下使用RealSense D435相机

本文介绍了如何在ORB_SLAM2项目中使用RealSense D435相机作为RGB-D输入源&#xff0c;包括ROS下启动D435相机、ORB_SLAM2订阅Topic、ORB_SLAM2读取realsense-viewer录制的rosbag文件等步骤。。 本文首发于❄慕雪的寒舍 1. 前言 先前已经编写了如何用TUM数据集运行ORB_SLAM3以及…...

scapy使用

https://scapy.readthedocs.io/en/latest/introduction.html 在 Mac 上使用 Scapy 抓取特定 IP 的流量并保存到 a.pcap 的步骤如下&#xff1a; 步骤 1&#xff1a;安装 Scapy 在终端中执行以下命令安装&#xff1a; pip install scapy步骤 2&#xff1a;创建 Python 脚本 …...

C2000 系统控制(4) — CPU Memory

CPU 内存 内存控制器 在 C2000 实时微控制器上&#xff0c;RAM 具有不同的特性。这些特性包括&#xff1a; CPU 专用&#xff1a;M0、M1 RAMCPU 和 CLA 共享&#xff1a;LSx RAMCPU、DMA 和 HIC 共享&#xff1a;GSx RAM用于在处理器之间发送和接收消息&#xff1a;MSG RAM …...

Linux网络编程——详解网络层IP协议、网段划分、路由

目录 一、前言 二、IP协议的认识 1、什么是IP协议&#xff1f; 2、IP协议报头 三、网段划分 1、初步认识IP与路由 2、IP地址 I、DHCP动态主机配置协议 3、IP地址的划分 I、CIDR设计 II、子网数目的计算 III、子网掩码的确定 四、特殊的IP地址 五、IP地址的数量限…...

解析医疗器械三大文档:DHF、DMR与DHR

医疗器械的 DHF、DMR 和 DHR 是质量管理体系&#xff08;QMS&#xff09;中的核心文件&#xff0c;贯穿产品全生命周期&#xff0c; 确保医疗器械的安全性、有效性和合规性。 一、三大文件的定义与法规依据 缩写全称法规依据&#xff08;以 FDA 为例&#xff09;核心目的DHF…...

SQL 全文检索原理

全文检索(Full-Text Search)是SQL中用于高效搜索文本数据的技术&#xff0c;与传统的LIKE操作或简单字符串比较相比&#xff0c;它能提供更强大、更灵活的文本搜索能力。 基本概念 全文检索的核心思想是将文本内容分解为可索引的单元(通常是词或词组)&#xff0c;然后建立倒排…...

基于Rosen梯度投影法的约束优化问题求解及MATLAB实现

摘要 在工程优化、经济建模等领域&#xff0c;约束优化问题普遍存在&#xff0c;其核心是在满足线性或非线性约束条件下求解目标函数的极值。本文聚焦Rosen梯度投影法&#xff0c;系统阐述其算法原理、实现步骤及MATLAB编程方法。 关键词&#xff1a;Rosen梯度投影法&#xf…...

Model Context Protocol (MCP) - 尝试创建和测试一下MCP Server

1.简单介绍 MCP是Model Context Protocol的缩写&#xff0c;是Anthropic开源的一个标准协议。MCP使得大语言模型可以和外部的数据源&#xff0c;工具进行集成。当前MCP在社区逐渐地流行起来了。同时official C# SDK(仓库是csharp-sdk) 也在不断更新中&#xff0c;目前最新版本…...

Linux上位机开发实践(关于Qt的移植)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 linux平台上面&#xff0c;很多界面应用&#xff0c;都是基于qt开发的。不管是x86平台&#xff0c;还是arm平台&#xff0c;qt使用的地方都比较多。…...

Node.js 项目 用 `Docker Compose` 发布的完整流程

Node.js 项目 用 Docker Compose 发布的完整流程 ✅ 一、基本项目结构示例 以一个简单 Express 项目为例&#xff1a; my-node-app/ ├── app.js # 启动文件 ├── package.json ├── package-lock.json ├── Dockerfile # 构建 Node 容器 ├…...

Java基础:浅析Java中的XML文件处理

概述 XML&#xff08;全称Extensible Markup Language,可扩展标记语言&#xff09; .本质是一种数据的格式&#xff0c;可以用来存储复杂的数据结构&#xff0c;和数据关系 XML特点 1.XML中的“<标签名>”成为一个标签或者一个元素&#xff0c;一般成对出现的 2.XML…...

MCU刷写——S19(S-Record)文件格式详解及Python代码

工作之余来写写关于MCU的Bootloader刷写的相关知识,以免忘记。今天就来聊聊S19这种文件的格式,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。 学习过程中如有任何疑问,可底下评论! 如果觉得文章内容在工作学习中有帮助到你,麻烦点赞收藏评论+关注走一波!感谢…...

HTML — 过渡与动画

HTML过渡与动画是提升网页交互体验的核心技术&#xff0c;主要通过CSS实现动态效果。 过渡 CSS过渡&#xff08;Transition&#xff09;介绍 适用于元素属性变化时的平滑渐变效果&#xff0c;如悬停变色、尺寸调整。通过定义transition-property&#xff08;过渡属性&#xf…...

python【标准库】multiprocessing

文章目录 介绍多进程Process 创建子进程共享内存数据多进程通信Pool创建子进程多进程案例多进程注意事项介绍 python3.10.17版本multiprocessing 是一个多进程标准模块,使用类似于threading模块的API创建子进程,充分利用多核CPU来并行处理任务。提供本地、远程的并发,高效避…...

BANK OF CHINA(HONG KONG)网点

BANK OF CHINA(HONG KONG)网点开户 ZoneBankAddressDates东区杏花邨分行香港柴湾杏花邨东翼商场205-208号20240415: 11:15, 13:00, 11:15, 13:00, 11:15, 13:0020240412: 11:15, 13:00东区鲗鱼涌分行香港鰂鱼涌英皇道1060号柏惠苑20240412: 09:45 注意事项 到达指定分行时&am…...