APIGen-MT:高效生成多轮人机交互Agent数据的两阶段框架
APIGen-MT:高效生成多轮人机交互数据的两阶段框架
引言
随着人工智能技术的飞速发展,AI代理(Agent)已从简单的聊天机器人发展为能够执行复杂现实任务的系统,例如管理金融交易、安排预约和处理客户服务等。然而,构建真正稳健可靠的AI代理仍面临一个关键挑战:高质量多轮交互数据的稀缺性。本文将深入解析一个创新性的解决方案——APIGen-MT框架,这是一个专为生成高质量多轮人机交互数据而设计的两阶段框架。
研究背景:多轮人机交互数据的挑战
数据稀缺与收集成本
在公共预训练语料库中,高质量的代理交互数据极为稀缺。现有的多轮对话数据集往往无法满足复杂任务的需求,特别是在需要精确执行、可靠性和遵循特定领域政策的应用场景中。而手动收集和标注这类数据不仅耗时,而且成本高昂,尤其对于需要专业知识的特定领域应用。
多轮交互的固有复杂性
多轮交互涉及复杂的对话动态,包括长期依赖关系的跟踪、缺失信息的请求以及复杂函数调用的执行。直接一次性生成这样的多轮对话数据极具挑战性,因为任何一个中间步骤的错误或幻觉(hallucination)都可能导致整个交互的失败。此外,每轮对话的内容依赖于之前的函数调用及其输出,这使得保持一致性和正确性变得尤为困难。
现有方法的局限性
现有的数据生成方法大多集中在单轮交互上,无法捕捉真实世界中多轮交互的复杂性。一些方法虽然涉及多轮交互,但缺乏真实的人机互动元素,这对于生成真实感强的数据至关重要。
APIGen-MT: 两阶段框架解决方案
APIGen-MT通过将任务生成过程分为两个明确的阶段,巧妙地解决了上述挑战:
第一阶段:任务配置和验证
这一阶段旨在生成详细的任务蓝图(blueprint),包括用户意图、可验证的地面真实动作(groundtruth actions)和预期的最终输出。具体步骤如下:
-
上下文准备:收集与任务相关的上下文信息,如可用的API、领域特定的规则或策略、参考数据等。
-
基于LLM的数据生成器:使用大型语言模型(LLM)生成初始任务配置,包括:
- 详细的用户指令(q),描述高级意图
- 完成意图所需的地面真实动作序列(agt)
- 提供给用户的预期最终输出(ogt)
-
格式和执行检查:对生成的配置进行自动技术验证,包括:
- 验证生成动作的结构正确性(如有效的API调用格式)
- 确认每个动作在模拟目标环境中的可执行性
-
评审委员会:通过多个LLM评审员组成的委员会对通过规则检查的任务进行语义评估,评估任务的质量、一致性、完整性及合理性。
-
反馈生成和改进:如果任务在验证或评审阶段失败,反馈生成器会汇总失败原因和评审意见,进行反思并生成改进计划,指导数据生成器在后续迭代中优化任务提案。
第二阶段:人机环境交互轨迹收集
基于第一阶段生成的验证任务配置,这一阶段通过模拟人机交互来生成完整的多轮交互轨迹:
-
模拟人机交互:使用基于LLM的模拟人类用户与测试代理(如gpt-4o)进行交互。模拟人类用户根据任务指令和特定人格特征,逐步揭示信息或子目标,而代理则解释不断发展的上下文,根据需要与环境进行API调用,并做出连贯的响应。
-
轨迹收集:通过模拟交互产生完整的交互轨迹,包括对话轮次、代理动作和环境响应。每个轨迹通过与第一阶段生成的地面真实动作(agt)和预期输出(ogt)进行比较来验证。只有通过状态和输出检查的轨迹才会被接受进入数据集,确保交互既具有动态合理性,又基于正确的解决方案。
框架的关键创新点
-
两阶段分离设计:通过将任务生成和对话模拟分开,APIGen-MT确保了任务结构的正确性和对话的自然性。
-
反馈循环机制:通过迭代反馈机制,框架能够从失败中学习并逐步改进任务生成过程。
-
真实模拟人机交互:通过模拟真实的人机对话,生成既真实又可验证的多轮交互数据。
τ-bench 案例研究
使用 τ-bench 作为测试平台实现了 APIGen-MT 框架。为了生成和验证任务,将每个 τ-bench 域中可用的 API 建模为有向图,其中节点表示 API,边表示 API 之间的依赖关系。利用专门的上下文采样器(包括 API 采样器、策略采样器、域数据采样器、角色采样器和示例采样器)来确保任务的多样性、真实性和扎实性。
实施严格的三阶段验证流程:
- 第一阶段:操作验证——格式检查、执行检查、政策合规性检查
- 第二阶段:对齐验证——评估真实操作是否准确满足用户意图
- 第三阶段:最终语义审查与细化- 根据委员会的综合评分
另外还引入了反向任务重组技术,该技术利用组合性原理,从更简单、经过独立验证的“构建块”构建复杂任务。在第二阶段,模拟了由 LLM 建模的代理与人类用户之间的多轮交互轨迹。采用拒绝采样,以确保只保留达到任务目标的轨迹。
实验验证与性能评估
模型训练与基准测试
研究者使用APIGen-MT生成的数据训练了一系列不同架构和规模的模型(xLAM-2-fc-r系列),包括Llama 3.1/3.2和Qwen 2.5,参数规模从1B到70B不等。这些模型在两个流行的代理能力基准测试上进行了评估:τ-bench和BFCL v3。
实验结果亮点
- BFCL v3测试结果:
- xLAM-2-70b-fc-r和xLAM-2-32b-fc-r分别占据排行榜的前两名位置
- xLAM-2-70b-fc-r在多轮准确率上达到了75.12%
- 较小的模型如xLAM-2-8b-fc-r也展现出显著能力,其多轮准确率为69.25%
- xLAM-2-3b-fc-r在相关性检测方面达到了94.44%的准确率
- τ-bench测试结果:
- xLAM-2-70b-fc-r模型的整体成功率达到56.2%,显著优于基础的Llama 3.1 70B Instruct模型(38.2%)和其他开源模型如DeepSeek v3(40.6%)
- 该模型表现甚至超过了某些专有模型如gpt-4o(52.9%),接近Claude 3.5 Sonnet(60.1%)
- 较小的模型如xLAM-2-32b-fc-r和xLAM-2-8b-fc-r也展现出令人印象深刻的性能,成功率分别为54.6%和46.7%
一致性与稳定性实验
- pass^k曲线分析:
- 结果显示,随着k的增加,APIGen-MT训练的模型的成功率下降幅度较小,表明其具有更高的可靠性和一致性
- 特别是在复杂的航空领域,xLAM-2-70b-fc-r的pass^5得分高于Claude,体现出其在多次试验中的一致性
- BoN用户LM设置评估:
- 采用Best-of-N(BoN)用户LM设置的实验表明,使用BoN用户模拟的模型在平均成功率上更高,且方差更低
- 这证明BoN方法不仅能提高用户模拟的稳定性,还能提升代理性能
数据收集与统计
研究者使用τ-bench提供的API,在零售和航空两个领域中收集数据。统计结果显示:
- 任务配置的成功率(Phase 1)达到了70%
- 轨迹模拟的成功率(Phase 2)为67%
- 总共收集到3,820个验证通过的轨迹
- 轨迹轮次范围从1次到29次不等
- 平均每个轨迹包含7次工具调用和6次用户轮次
这些数据充分证明了APIGen-MT框架能有效生成复杂领域中具有严格策略约束的高质量多轮数据。
未来研究方向
尽管APIGen-MT取得了显著进展,仍有一些值得进一步探索的方向:
1. 提高人类用户模拟的稳定性
- 研究更确定性的人类用户模拟方法,如基于规则的系统或强化学习代理
- 开发更精细的过滤指标,以更好地评估和选择高质量的模拟轨迹
2. 利用失败轨迹的价值
- 将失败的轨迹作为负样本,与成功的轨迹一起用于对比学习
- 对失败轨迹进行详细分析,提取常见错误模式并在训练中加以利用
3. 提高验证效率
- 开发更高效的验证算法,如基于启发式的验证方法或增量验证策略
- 根据任务复杂性和历史验证结果,自适应调整采样策略
4. 扩展应用领域
- 将APIGen-MT框架应用于医疗、金融、教育等更多领域
- 针对不同领域特点,优化框架各组件
5. 强化学习集成
- 将强化学习技术集成到框架中,使代理能在与环境交互中动态调整行为
- 通过强化学习实现自适应改进,根据环境反馈自动优化策略
结论
APIGen-MT框架通过其两阶段设计,有效解决了生成高质量多轮人机交互数据的难题。实验结果表明,使用该框架生成的数据训练的模型在多个基准测试中明显优于现有基线模型,且较小的模型也能达到与较大模型相媲美的性能。这一创新框架不仅为AI代理的训练提供了宝贵的数据资源,也为未来更可靠、高效和具备强大能力的AI代理系统的发展铺平了道路。
随着人工智能向着更智能、更自主的方向发展,像APIGen-MT这样的技术将在推动AI代理能力进步方面发挥越来越重要的作用,为各行各业的智能自动化带来更多可能性。
相关文章:
APIGen-MT:高效生成多轮人机交互Agent数据的两阶段框架
APIGen-MT:高效生成多轮人机交互数据的两阶段框架 引言 随着人工智能技术的飞速发展,AI代理(Agent)已从简单的聊天机器人发展为能够执行复杂现实任务的系统,例如管理金融交易、安排预约和处理客户服务等。然而&#x…...
02-redis-数据结构实现原理
1、redis整体涉及的结构 在redis中整体是KV键值对的方式进行访问的,redis的查询的时间复杂度O(1),底层的数据结构其实跟java中的HashMap底层实现类似,整体采用的是数组链表的实现方式,哈希冲突的时候使用的是链表法解决࿱…...
京华幻梦:科技自然共生诗篇
故事摘要 故事发生在现代中国北京,展现了未来城市的奇幻景象与科技变革。在这个充满想象的未来世界里,科技与自然不再对立,而是达成了和谐共生的美妙平衡。故宫、鸟巢、798艺术区等标志性地点,在科技的赋能下焕发新的生机&#x…...
python:面向对象之包
1.包的定义: 包就是把有联系的模块组织在一起,即放在同一文件夹下,并且在这个文件夹下创建一个__init__.py文件,这个文件就叫做包。 2.包的创建: 创建好好会自动生成一个__init__.py文件。 3.包的调用: …...
spring boot整合redis
spring boot整合redis 步骤: ① 引入redis依赖 <dependency><groupId>org.springframework.boot</group><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>②在application.yml配置文件中,…...
DIA——边缘检测
1.边缘 边缘是像素的突变位置。 2.常见边缘检测算法 通过找到一阶导数的极值点或者二阶导数的过零点来确定边缘像素的位置。边缘检测通常使用算子,即特定的卷积核。通过差分对离散的像素点求导,然后转化成卷积核进行卷积。使用卷积统一涵盖求导&…...
redis 免安装版本 启动方法 windows 安装包
redis 免安装版本 启动方法 windows 安装包 下载解压直接使用 百度网盘连接如下 链接:https://pan.baidu.com/s/1W4ICvdUUxkWPhK93GtdG0Q 提取码:vzw3 下载解压后会用32位和64位两种,根据自己的电脑选择 cmd命令 cd /d D:\yaochengwei\so…...
C语言练习二 进制转换
#include <stdio.h>// 强制类型转换int main(){int i 5;float j i / 2; // 只是把整形先除了 再赋值float k (float)i / 2; //先强制改成float 再赋值printf("%f\n",j);printf("%f\n",k);return 0; } #include <stdio.h> int main(){int…...
AlDente Pro for Mac电脑 充电限制保护工具
AlDente Pro for Mac电脑 充电限制保护工具 一、介绍 AlDente Pro for Mac,是一款充电限制保护工具,是可以限制最大充电百分比来保护电池的工具。锂离子和聚合物电池(如 MacBook 中的电池)在40% 至 80% 之…...
物联网卡(NB-IoT/4G)技术详解
物联网卡(IoT SIM卡)是专为物联网设备设计的流量卡,支持NB-IoT、4G Cat.1等低功耗广域网络(LPWAN),广泛应用于智能烟感、共享设备、车联网等领域。以下是NB-IoT和4G物联网卡的对比与选型指南。 1. NB-IoT v…...
HTML5 Video (视频) 深入解析
一、引言 在当今的互联网时代,视频已经成为网站内容中不可或缺的一部分。从产品介绍、教程演示到娱乐内容,视频以其生动直观的特点吸引着大量用户。HTML5 的出现,为在网页上展示视频提供了一个标准且强大的解决方案,改变了过去依赖插件(如 Flash)来显示视频的局面。 二…...
NO.87十六届蓝桥杯备战|动态规划-完全背包|疯狂的采药|Buying Hay|纪念品(C++)
完全背包 先解决第⼀问 状态表⽰: dp[i][j]表⽰:从前i个物品中挑选,总体积不超过j,所有的选法中,能挑选出来的最⼤价 值。(这⾥是和01背包⼀样哒) 那我们的最终结果就是dp[n][V] 。状态转移⽅…...
Win11企业版安装wsl遇到的坑
起因是windows11上安装了docker desktop,但是启动以后显示Docker Engine stopped,一顿搜索。 可以参考:windows 11系统下打开docker 提示 docker engine stopped - DbWong_0918 - 博客园 我这边主要是检查了第2点,开启windows h…...
C++手撕单链表及逆序打印
在学习数据结构的过程中,链表是一个非常重要的基础数据结构。今天,我们将通过C手动实现一个单链表,并添加一个逆序打印的功能,帮助大家更好地理解链表的实现和操作。 一、链表简介 链表是一种线性数据结构,其中每个元…...
Kubernetes外部etcd集群的快速Docker Compose 部署
一、背景 在高可用 Kubernetes 部署中,需要单独部署外部 etcd 集群,而不是使用 kubeadm 默认在 master 节点上部署的 etcd。以下是关于这一配置场景的详细记录。 二、etcd简介 etcd 是一个高可用的分布式键值存储系统,主要用于存储和管理配…...
docker的目录挂载与卷映射
文章目录 一、目录挂载背景定义使用 二、卷映射背景定义区别使用docker对卷的操作 一、目录挂载 背景 上一文,我们提了docker exec进入容器修改页面很麻烦,所以在这里,我们学习一个新的容器使用方法,叫“目录挂载” 定义 长话…...
十三种物联网/通信模块综合对比——《数据手册--物联网/通信模块》
物联网/通信模块 名称 功能 应用场景 USB转换模块 用于将USB接口转换为其他类型的接口,如串口、并口等,实现不同设备之间的通信。 常用于计算机与外部设备(如打印机、扫描仪等)的连接,以及数据传输和设…...
IntelliJ IDEA 中安装和使用通义灵码 AI 编程助手教程
随着人工智能技术的发展,AI 编程助手逐渐成为提升开发效率的强大工具。通义灵码是阿里云推出的一款 AI 编程助手,它能够帮助开发者实现智能代码补全、代码解释、生成单元测试等功能,极大地提升了编程效率和代码质量。 IntelliJ IDEA 是一款广…...
工业 IOT 平台重塑锂电龙头数字化未来
在 “双碳” 目标驱动下,新能源锂电池产业正经历前所未有的扩张期。作为全球原材料领域的龙头企业,某锂电巨头在国内布局的多个生产基地却陷入 “成长的烦恼”:车间里工人忙着手工录入数据,设备运行状态靠纸质报表传递,…...
蓝牙连接hci 命令和事件的交互
参考:在HCI层看蓝牙的连接过程_hci 获取蓝牙pin码-CSDN博客 我这边查看的是core 5.2 一、数据交互流程 1、ACL连接建立后的可选流程 参考蓝牙core5.2: vol2 --> PartF --> 4 1.1 AUTHENTICATION REQUESTED Authentication can be explicitly executed at …...
Maven超级详细安装部署
1.到底什么是Maven?搞清楚这个 Maven 是一个项目管理工具,主要用于 Java 项目的构建、依赖管理和文档生成。 它基于项目对象模型(POM),通过 pom.xml 文件定义项目的配置。 (简单说破:就是工程…...
OSPF不规则区域和LSA
OSPF不规则区域 1.远离骨干的非骨干区域 R1-R4四台路由器能够正常学习到彼此路由,但是R5不行,因为R5是非法ABR 解决方法: 1使用Tunnel隧道将AR4连接到骨干区域 (1) 使用隧道解决不规则区域的问题 a.可能造成选路不…...
深入了解 UI 咨询公司:数字化时代的品牌助推器
在数字化浪潮席卷全球的当下,用户界面(UI)设计已然成为企业在激烈市场竞争中脱颖而出的关键因素。UI 咨询公司应运而生,凭借其专业的知识与技能,为企业的数字化转型和品牌建设提供强大助力。 UI 咨询公司的重要性 提…...
网络建设与运维神州数码DCN sFlow网络流量信息协议
简介 用于监控网络流量信息的协议。 主要操作:由被监视的交换机,路由器把被监控的数据通过采样,统计等操作发送到用于监控的用户端分析器,由分析器对收到的数据进行用户所要求的分析,从而达到监控网络的目的。 各 sFlo…...
NO.88十六届蓝桥杯备战|动态规划-多重背包|摆花(C++)
多重背包 多重背包问题有两种解法: 按照背包问题的常规分析⽅式,仿照完全背包,第三维枚举使⽤的个数;利⽤⼆进制可以表⽰⼀定范围内整数的性质,转化成01 背包问题。 ⼩建议:并不是所有的多重背包问题都能…...
vue2添加背景水印-手动实现(无组件模式)
1. App.vue <template><div id"app" class"app"><router-view></router-view></div> </template><script> export default {mounted() {this.updateWatermark();// 监听路由变化this.$router.afterEach(() >…...
华为数通Datacom认证考试难度怎么样?
华为数通Datatcom认证是华为针对数据通信领域推出的技术认证体系,分为HCIA(初级)、HCIP(中级)、HCIE(专家级)三个等级,考试难度逐级递增,对考生的理论知识和实践能力…...
一文读懂WPF系列之常用控件以及样式
WPF控件 控件分类概览常用控件常用控件代码示例和效果 样式与模板应用样式定义方式行内样式页面/窗口级资源样式(Local Resource)应用程序全局资源独立资源字典(ResourceDictionary)控件模板(ControlTemplate&…...
代码随想录算法训练营第十四天
LeetCode题目: 513. 找树左下角的值112. 路径总和106. 从中序与后序遍历序列构造二叉树 其他: 今日总结 往期打卡 513. 找树左下角的值 跳转: 513. 找树左下角的值 学习: 代码随想录公开讲解 问题: 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边…...
国产信创数据库:PolarDB 分布式版 V2.0,支持集中分布式一体化
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。点此查看详情https://www.aliyun.com/activity/database/polardbx-v2?spma2c6h.13046898.publish-article.8.44146ffaE0lEWT 立即咨询专家…...
【教学类-102-07】剪纸图案全套代码07——Python点状虚线优化版本+制作1图2图6图
背景需求: 我觉得这个代码里面的输入信息分离太远(42行和241行),想重新优化一下 【教学类-102-05】蛋糕剪纸图案(留白边、沿线剪)04——Python白色(255)图片转为透明png再制作“点状边框和虚线边框”-CSDN博客文章浏览阅读864次,点赞14次,收藏27次。【教学类-102-0…...
基于VSCode的Qt开发‘#include ui_test.h’报错没有该文件
笔者在基于VSCode进行Qt开发时,test.ui文件是在Qt软件中绘制的,导致本项目无法使用这个ui文件,报错如标题。事实上,本工程中也确实没有生成这个头文件。出现这个错误的原因是ui文件没有被编译为c头文件。 要生成 ui_test.h 文件&…...
微信小程序跳2
// 图片压缩 compressImage (image {}, options {}) { return new Promise((resolve, reject) > { const { width 0 } image const { compressAfterSizeFlag false, scaleFlag false, scaleTargetWidth 768 } options // 超过100k压缩 const maxFileSizeLimit 100 …...
如何将excel数据快速导入数据库
最近老是收到一些手工数据,并且需要关联分析,就想到如何快速将数据导入数据库后关联查询输出结果,下面是一段将excel数据写入mysql的脚本,欢迎大家提出优化意见相互学习。 import os import pandas as pd import pymysql import …...
C++之多态
文章目录 一、多态的概念 多态的定义与类型 二、多态的实现 三、虚函数 虚函数的概念 虚函数的重写/覆盖 协变 析构函数的重写/覆盖 override,final关键字 override final 纯虚函数与抽象类 三个概念辨析 四、多态实现的原理 虚函数表指针 动态绑定与静态绑定 …...
从PDF中提取表格:以GB/T2260—2007为例
文章目录 先说结论前因后果思路1、PDF2CSV2、PDF2MD → MD2CSV3、针对不同表格的两种思路1) 竖形三线表2)五元素为一组 还没结束批量处理1、分割markdown文档2、跳过另一种格式的文档 总结一下 先说结论 结论就是,博主用了一天的时间去研究如…...
日常记录-群晖nas的docker注册表被墙,用Mac电脑的docker拉取镜像并安装到nas中
文章目录 前言一、拉取镜像二、安装到nas中总结 前言 群晖nas的docker注册表被墙,用Mac电脑的docker拉取镜像并安装到nas中 一、拉取镜像 群晖nas的架构师x86,Mac电脑的架构师arm。 在mac电脑中执行命令: # 镜像拉取 docker pull --platf…...
DeepSeek:重构办公效率的AI新范式
目录 一、效率跃迁的三重引擎 二、效率提升的量级突破 三、智能办公的范式转移 四、未来办公的效率奇点 当企业主面对堆积如山的文件审批、跨时区协作的沟通损耗、重复机械的数据整理时,是否想过这些场景正在吞噬团队的生产力?据麦肯锡研究显示&…...
AI小程序+SpringAI+管理后台+源码+支持动态添加大模型+支持动态添加AI应用
前言 今天给大家介绍一款 前端由uniapp开发的小程序,完美在小程序上运行,对话采用流式对话。后端由springbootspringai开发的应用软件源码。 功能简介 支持在管理后台动态新增“DeepSeek”,“openai”,“千帆”,“智…...
RAG的实现快速示例
RAG(Retrieval-Augmented Generation)其实就是结合了检索与生成,核心流程分为 检索(Retrieval) 和 生成(Generation) 两大阶段,通过外部知识库增强生成式模型的准确性和可靠性。 流程其实也很简单,如下图: 关于RAG的基本概念的介绍,可以参考: RAG(检索增强生成)快…...
利用 PHP 爬虫获取京东商品详情 API 返回值说明及代码示例
在电商领域,京东作为国内知名的电商平台,提供了丰富的商品信息。通过调用京东商品详情 API,我们可以获取商品的详细信息,如商品标题、价格、图片、描述等。这些信息对于数据分析、价格监控、商品推荐等场景具有重要价值。本文将详…...
PyTorch CUDA内存管理优化:深度理解GPU资源分配与缓存机制
在深度学习工程实践中,当训练大型模型或处理大规模数据集时,上述错误信息对许多开发者而言已不陌生。这是众所周知的 CUDA out of memory错误——当GPU尝试为张量分配空间而内存不足时发生。这种情况尤为令人沮丧,特别是在已投入大量时间优化…...
大模型基础知识扫盲
1 模型量化: 是什么:大模型量化是一种“压缩”技术,把模型里高精度的数字(比如32位浮点数)简化成低精度的数字(比如8位定点数)。 有什么用:它让模型占的空间更小,跑起来…...
《穿透表象,洞察分布式软总线“无形”之奥秘》
分布式系统已成为众多领域的关键支撑技术,而分布式软总线作为实现设备高效互联的核心技术,正逐渐走入大众视野。它常被描述为一条“无形”的总线,这一独特属性不仅是理解其技术内涵的关键,更是把握其在未来智能世界中重要作用的切…...
Python Cookbook-5.13 寻找子序列
任务 需要在某大序列中查找子序列。 解决方案 如果序列是字符串(普通的或者Unicode),Python 的字符串的 find 方法以及标准库的re模块是最好的工具。否则,应该使用Knuth-Morris-Pratt算法(KMP): def KnuthMorrisPratt(text,pattern): 在序列text中找…...
(自用)蓝桥杯准备(需要写的基础)
要写的文件 led_app lcd_app key_app adc_app usart_app scheduler LHF_SYS一、外设引脚配置 1. 按键引脚 按键引脚配置如下: B1:PB0B2:PB1B3:PB2B4:PA0 2. LCD引脚 LCD引脚配置如下: GPIO_Pin_9 /* …...
STM32Cubemx-H7-14-Bootloader(上)-ST和串口烧录
前言 本文主要研究,如果把ST单片机的SWDIO和SWDCLK引脚改成推挽输出后,我们又应该怎么重新烧录,以及如何使用串口下载。 当没有设置STlink烧录为引脚或者设置成其他功能的时候 如果想恢复,那么就在烧录之前,一直按住…...
“深入浅出:Java中的Lambda表达式及其应用“
前言 Lambda表达式是Java 8引入的一项强大特性,它允许以更加简洁的方式表示匿名函数。Lambda表达式不仅让代码更加简洁、清晰,而且为函数式编程提供了有力支持,从而提升了Java语言的表达能力。 在本文中,我们将深入浅出地探讨La…...
6.1es新特性解构赋值
解构赋值是 ES6(ECMAScript 2015)引入的语法,通过模式匹配从数组或对象中提取值并赋值给变量。: 功能实现 数组解构:按位置匹配值,如 let [a, b] [1, 2]。对象解构:按属性名匹配值,…...
【从0到1学RabbitMQ】RabbitMQ高级篇
学完基础篇之后我们对用户下单这个业务进行了改造,我们可以吧用户支付这个业务抽出来,放入队列当中去执行。如下图: 但是这里我们思考一下,如果MQ通知失败了,支付服务中支付流水显示支付成功,而交易服务中…...