Agent系列:AppAgent v2-屏幕智能Agent(详解版)
-
引言
-
简介
-
方法
-
Agent 框架
-
Agent 交互
-
探索阶段
-
部署阶段
-
文档生成
-
高级功能
-
-
实验结果
-
总结
-
局限性
-
未来工作
1. 引言
大语言模型(LLM)如 ChatGPT 和 GPT-4 显著提升了自然语言处理能力,并且推动了智能体在自主决策中的应用。最初,这些智能体专为基于文本的交互方式设计,展现了卓越的表现,包括记忆自适应性和多任务处理能力。然而,现实世界的应用程序不仅仅局限于文本输入,还涉及视觉和其他模态数据的处理,这对传统智能体提出了挑战。
为应对这一需求,近年来涌现了多模态智能体,如 AssistGPT、Vipergpt 和 Visual ChatGPT 等,它们能够在复杂环境中执行多步骤推理、信息提取和集成,并根据用户输入作出适应性响应。此前的工作如 AppAgent v1 和 MobileAgent 通过模拟人类的交互方式,已经在智能手机应用程序中展示了较大的潜力。
尽管如此,准确识别图形用户界面仍然是多模态智能体面临的关键挑战。依赖视觉特征的传统方法往往因识别模型的局限性而不够准确。而移动环境的动态特性和频繁的应用更新也进一步加剧了这一挑战。即便是如 GPT-4 这样的先进模型,在处理不熟悉的视觉元素时仍显不足,尤其是在应对小众应用时。
为了解决这些问题,AppAgent v1 通过自动化探索和观看演示的方式增强了智能体的决策能力,但其过于依赖现成的解析器,限制了智能体在处理不标准界面元素时的灵活性。为此,AppAgent v2 提出了一种新的多模态智能体框架,扩展了动作空间,使其能够更广泛地适应不同类型的应用程序和界面元素。
1. 简介
随着多模态大语言模型(MLLM)的发展,视觉智能体(Agent)正逐渐在软件界面中,尤其是图形用户界面(GUI)中,发挥重要作用。本文设计了一个专为移动设备打造的智能体框架 AppAgent v2,该框架基于大语言模型,能够在移动设备上导航并模拟用户交互行为。AppAgent v2 通过构建灵活的动作空间,增强了其在不同应用程序中的适应性,支持解析器、文本和视觉描述的结合。智能体的工作分为两个阶段:探索(Exploration)和部署(Deployment)。
在探索阶段,智能体通过自动或手动的方式记录用户界面各元素的功能,并将其存储在结构化的知识库中。部署阶段,智能体通过 RAG(检索增强生成)技术从知识库中检索信息并实时更新,使其能够准确高效地完成任务,包括跨多个应用程序执行复杂的多步骤操作。实验结果表明,AppAgent v2 在各种基准测试中的表现优异,验证了其在实际场景中的有效性。AppAgent v2官方表示代码将很快开源。更多关于端侧大模型、Agent及其实践,欢迎关注微信公众号《小窗幽记机器学习》:
2. 方法
AppAgent v2 的多模态智能体框架分为两个阶段:探索和部署。在探索阶段,智能体通过自主或手动方式分析用户界面,记录 UI 元素及其功能,形成知识库。在部署阶段,智能体利用知识库中的信息,根据任务要求进行操作。
图1:appAgent 流程。探索模块采用Agent驱动或手动探索,将元素信息收集到文档中。部署阶段使用RAG实时检索和更新文档,从而快速准备执行任务
2.1 Agent 框架
AppAgent v2 在 Android 15 环境下使用 Android Studio 模拟器实现。智能体通过调用 AndroidController 发送指令与手机交互,结合 OCR 和检测模型,从屏幕截图中提取 UI 元素的信息(如 Android ID、文本、坐标等),并将其用于任务推断和决策。
2.2 Agent 交互
智能体通过一套标准化的指令与 Android 系统交互,指令包括点击、输入文本、滑动、返回、长按等操作。这些指令被转换为 Android 系统可执行的命令,确保与界面的交互精确无误。
2.3 探索阶段
在探索阶段,智能体通过两种方式分析用户界面:智能体驱动的探索和手动探索。
-
智能体驱动的探索:智能体自动识别需要交互的 UI 元素并执行操作,记录交互前后的变化,并根据结果反思操作的有效性。
-
手动探索:当智能体对某些界面的理解有限时,引入手动探索,GPT-4 通过观察人类的操作
记录 UI 元素的变化和任务流程,帮助智能体在未来的任务中更好地理解和应对复杂的界面和操作。
2.4 部署阶段
在部署阶段,智能体利用自查检索器(Self-query Retriever)从知识库中检索相关文档,结合当前的 GUI 信息和任务要求,执行操作。智能体可以根据任务的需要动态更新知识库,确保在不同应用场景中快速适应。通过不断更新历史信息和操作结果,智能体能够优化其决策过程,直到任务完成。
2.5 文档生成
探索阶段收集的 UI 元素信息被存储在结构化的知识库中。该知识库包括元素的 Android ID、可见标签、文本内容、视觉特征(如颜色、形状)及其屏幕坐标等。知识库支持实时更新和动态检索,确保智能体可以随着任务的变化不断调整其操作策略。
2.6 高级功能
AppAgent v2 还具有以下增强功能:
-
视觉特征决策:当无法通过标准解析器识别 UI 元素时,智能体会转向基于视觉特征的决策,利用 OCR 技术识别界面中的文本和图标,确保在面对全新界面时仍能有效操作。
-
安全检查:智能体在执行涉及敏感信息的操作(如账户密码或支付)时,会自动切换到手动模式,确保用户隐私不受侵犯。
-
跨应用任务管理:智能体能够在多个应用程序之间切换,执行复杂的跨应用任务,如从一个应用中提取信息并在另一个应用中执行操作。
3. 实验
为了评估 AppAgent v2 的性能,本文在 Android 平台上进行了一系列实验,涵盖多个基准测试和用户研究。
3.1 定量结果
AppAgent v2 在三个基准测试中进行了评估:DroidTask、AppAgent v1 基准和 Mobile-Eval。
-
DroidTask:在 13 个流行应用程序衍生出的 158 个任务中,AppAgent v2 在完成率上表现优异,显著超过了 GPT-4 和带有记忆组件的 AutoDroid,证明了其强大的任务执行能力。
-
AppAgent v1 基准:在 Twitter、Telegram 和其他常用应用的测试中,AppAgent v2 通过探索和部署阶段的结合,展示了其在多种任务和界面中的适应能力,成功率大幅提升。
-
Mobile-Eval:在 10 个常用移动应用程序中,AppAgent v2 在成功率、过程分数、相对效率和完成率四个指标上均表现出色,验证了其高效、准确地执行复杂任务的能力。
表2: MobileAgent和appAgent在Mobile-Eval上的指标对比结果
3.2 用户研究
为了进一步展示 AppAgent v2 的实际应用效果,本文进行了用户研究,模拟了复杂的跨应用任务。结果表明,AppAgent v2 能够准确执行长时间、多步骤的任务,展现了其在实际场景中处理复杂任务的能力和灵活性。
图3:跨app应用上的定性结果
3.3 UI 界面解析分析
AppAgent v2 结合了结构化数据和视觉特征两种方法解析 UI 界面。对于常规应用,智能体依赖从 Android 系统解析的 XML 数据,而对于自定义开发的应用,智能体则通过 OCR 和视觉特征识别图标和文本。该双重策略显著提高了智能体的适应性和任务执行的可靠性。
4. 总结
本文提出了一个多模态智能体框架 AppAgent v2,显著提升了智能体在移动设备上的交互能力。通过整合解析器和视觉特征,AppAgent v2 构建了一个灵活的动作空间,能够适应不同类型的应用程序界面,并通过探索和部署两个阶段有效管理移动设备的动态环境。实验证明了该框架在图形用户界面识别和复杂任务执行方面的优越性,尤其是在跨应用任务和新环境中的适应能力。
AppAgent v2 的主要贡献包括:
-
多模态智能体框架的引入:结合解析器和视觉特征,构建了灵活的动作空间,增强了智能体与图形用户界面的交互能力,提高了其在新环境中的适应性。
-
结构化存储格式的开发:结合 RAG 技术,实现了对知识库的实时更新和访问,增强了智能体的决策精度和任务执行效率。
-
广泛的实验证明:通过多个基准测试和用户研究,验证了智能体在各种移动应用程序中的有效性,展示了其适应性、用户友好性和操作效率。
AppAgent v2 在现有技术基础上进一步提升了智能体在复杂移动环境中的表现,为未来的多模态智能体研究提供了重要的参考和改进方向。
5. 局限性
尽管 AppAgent v2 在多个应用场景中表现优异,但仍存在一些局限性:
-
数字标签识别的局限性:AppAgent v2 依赖智能体识别 UI 上的数字标签来确定特定元素。当 UI 元素本身包含数字时,可能会导致混淆。这种问题可以通过预先的手动探索和记录来缓解。
-
隐藏 UI 元素的交互难题:智能体在处理一些隐藏 UI 元素(如加速视频播放的按钮)时,由于缺乏先验知识,可能无法检测到相关元素,进而限制了其执行某些操作的能力。未来的工作将侧重于增强 UI 识别能力,并结合先验知识来解决这些问题。
6. 未来工作
未来的研究工作将集中在以下几个方面:
-
增强跨应用任务处理能力:进一步优化智能体在多个应用程序之间切换时的决策流程,提升其处理复杂跨应用任务的效率。
-
优化视觉特征识别:改进视觉特征的识别与操作,特别是在面对复杂或定制化的应用界面时,确保智能体始终能够做出正确的交互决策。
-
提高智能体的用户体验:通过优化智能体的反馈机制和任务执行过程,进一步提升用户体验,使其更加直观和高效。
总之,AppAgent v2 为多模态智能体的发展提供了坚实的基础,并为未来的移动设备智能体研究指明了方向。
相关文章:
Agent系列:AppAgent v2-屏幕智能Agent(详解版)
引言 简介 方法 Agent 框架 Agent 交互 探索阶段 部署阶段 文档生成 高级功能 实验结果 总结 局限性 未来工作 1. 引言 大语言模型(LLM)如 ChatGPT 和 GPT-4 显著提升了自然语言处理能力,并且推动了智能体在自主决策中的应用。…...
Word如何插入图片并移动到某个位置
Word如何插入图片并移动到某一个位置 新建word→插入→图片 选择合适的位置→选择图片→打开 点击图片→布局选项→选择文字环绕下的任意一个→固定在页面上 点击图片就可以将图片移动到任意位置...
[CTF/网络安全] 攻防世界 upload1 解题详析
姿势 在txt中写入一句话木马<?php eval($_POST[qiu]);?> 回显如下: 查看源代码: Array.prototype.contains function (obj) { var i this.length; while (i--) { if (this[i] obj) { return true; } } return false; } function …...
golang:微服务架构下的日志追踪系统(二)
背景 在使用Gin框架进行服务开发时,我们遇到了一个日志记录的问题。由于Gin的上下文(*gin.Context)实现了context.Context接口,在调用日志记录器的Info、Warn、Error等方法时,直接传递Gin的上下文通常不会导致编译错误…...
单片机的存储器类型
单片机(Microcontroller Unit, MCU)是一种将计算机的主要部分集成在一个芯片上的微型计算机。它集成了处理器(CPU)、存储器、输入输出接口等必要的功能模块,广泛应用于各种嵌入式系统中。单片机的存储器结构对于理解和使用单片机至关重要&…...
深入剖析MySQL数据库架构:核心组件、存储引擎与优化策略(一)
sql语句分为两大类:查询(select)、增删改----修改(update) select语句的执行流程 执行sql语句的流程:连接数据库、缓存查询、解析器、优化器、执行器、存储引擎操作数据 客户端:图形界面工具…...
java常见的面试题
目录 一、 spring的配置文件的哪四处? 1.数据源(Data Source)配置 2.事务管理器(Transaction Manager)配置 3. 扫描组件(Component Scanning)配置 4. AOP(面向切面编程)配置&…...
2025吉林大学软件学院研究生人工智能原理真题
选择题 5题共10分 5.以下模型不需要训练过程的是? A.支持向量机 B.决策树 C.KNN近邻算法 D.卷积神经网络 简答题 4题35分 1.大模型是否已经通过图灵测试 2.三个近二十年来的机器学习模型和应用案例 3.LDA原理和算法流程 4.CNN原理和算法流程 证明题 谓词逻辑15…...
Qt判别不同平台操作系统调用相应动态库读取RFID
本示例使用的读卡器:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b8jdyXi&ftt&id562957272162 #include <QDebug> #include "mainwindow.h" #include "./ui_mainwindow.h" #include "QLibrary"…...
智慧工地系统:建筑施工智能化管理的全新模式
智慧工地概述 智慧工地是将互联网的理念和和物联网的技术引入建筑工地,依托物联网、互联网、大数据、5G技术,建立云端数据平台,形成大数据的业务体系,打通一线操作与远程监管的链条,实现劳务、安全、环境、材料等各个…...
js将object整个实体对象作为参数传递
①将object实体转化成json字符串传递: JSON.stringify(obj) ②将json字符串转化成JSON对象值:JSON.parse(json) 实际应用: <div id"div_notice" stylefont-size:14px; width:100%; height:200px; overflow-y:auto;></di…...
shell的循环结构
1、思维导图 2、定义一个find函数,查找ubuntu和root的gid并使用变量接收结果 #!/bin/bash #第二题查找gid并返回结果 find() {u_gidid -g ubuntur_gidid -g rootecho "root-gid$r_gid"echo "ubuntu-gid$u_gid" } ret$(find) echo $ret3、定义一…...
STM32-笔记29-蓝牙遥控插座项目
一、实验前期准备 手机通过蓝牙模块远程遥控风扇。(插座的原理就是继电器,所以控制继电器就是控制插座电源) 二、项目实现 复制项目文件夹32-蓝牙模块实现,重命名33-蓝牙遥控插座项目 找到一个继电器项目,把继电器复…...
计算机网络复习(习题)
术语辨析 数据链路层 该层在两个通信实体之间传送以帧为单位的数据,通过差错控制方法,使有差错的物理线路变成无差错数据链路。 网络层 负责使分组以适当的路径通过通信子网的层次。 运输层 负责向两台主机中进程之间的通信提供通用的数据传输服务的层次。 应用层…...
webserver的http实现
1、用了状态机,为什么要用状态机? 在逻辑处理模块中,响应的http请求采用主从状态机完成, 传统的控制流程都是按照顺序执行的,状态机能够处理任意顺序的事件,并能提供有意义的响应--即使这些事件发生的顺序和…...
C语言----指针
目录 1.概念 2.格式 3.指针操作符 4.初始化 1. 将普通变量的地址赋值给指针变量 a. 将数组的首地址赋值给指针变量 b. 将指针变量里面保存的地址赋值给另一个指针变量 5.指针运算 5.1算术运算 5.2 关系运算 指针的大小 总结: 段错误 指针修饰 1. con…...
Elasticsearch与数据库数据一致性:最佳实践与解决方案
在现代应用程序中,Elasticsearch(ES)作为一个高效的分布式搜索引擎,常常与数据库一同使用,以提供强大的搜索、分析和数据可视化功能。然而,数据库和Elasticsearch之间的同步与一致性常常成为一个挑战。如何…...
C# 基本语法
C# 基本语法 介绍 C#(读作 "C sharp")是一种现代的、面向对象的编程语言,由微软开发,并在2000年首次发布。它是.NET框架的一部分,被广泛用于开发各种类型的应用程序,包括桌面应用、Web应用、移…...
CDGA|浅析自动化对数据治理的深远影响
在数字化时代,数据治理已成为企业管理的核心议题之一。随着数据量的快速增长和复杂性的不断提升,传统的手工数据管理方式已难以满足企业的需求。而自动化技术的引入,为数据治理带来了新的动力,正在逐步改变数据治理的面貌。 自动化…...
【机器学习】【朴素贝叶斯分类器】从理论到实践:朴素贝叶斯分类器在垃圾短信过滤中的应用
🌟 关于我 🌟 大家好呀!👋 我是一名大三在读学生,目前对人工智能领域充满了浓厚的兴趣,尤其是机器学习、深度学习和自然语言处理这些酷炫的技术!🤖💻 平时我喜欢动手做实…...
小程序租赁系统的优势与应用探索
内容概要 小程序租赁系统,听起来很高大上,但实际上它比你想象的要实用得多!设想一下,几乎所有的租赁需求都能通过手机轻松解决。这种系统的便捷性体现在让用户随时随地都能发起租赁请求,而不再受制于传统繁琐的手续。…...
汇编环境搭建
学习视频 将MASM所在目录 指定为C盘...
ubuntu24.04使用open-vm-tools无法在主机和虚拟机之间拖拽文件夹
最近安装了vmware用ubuntu24.04作为虚拟机 然后发现无法在主机和虚拟机之间复制粘贴 然后安装了 sudo apt-get install open-vm-tools-desktop重启虚拟机,发现可以复制粘贴文字,但是文件和文件夹仍然不行 搜索发现是Ubuntu(22.04࿰…...
C++软件设计模式之模板方法模式
模板方法模式是面向对象软件设计模式之一,其主要意图是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下重新定义算法的某些特定步骤。 动机 在软件开发中,常常会遇到这样的情…...
20241231 机器学习ML -(2)KNN(scikitlearn)
1. build DKTree 递推创建Tree;当前维度找中位数分割 数据集 left set,Node(mid), right set. * 循环维度(当log(Nsample)>featureSize) 2. DKTree KNN search * 理论部分向量几何有介绍。 每个维度列中,中位数对应的数据点…...
Prometheus之终极指南(The Ultimate Guide to Prometheus)
Prometheus之终极指南 Prometheus 彻底改变了我们在现代 DevOps 生态系统中监控基础设施、应用程序和服务的方式。它不仅仅是一个工具;它是一个由指标收集、告警和实时监控组成的生态系统,受到 Uber、Google 和 SoundCloud 等组织的信任。在本文中&…...
如何使用Python调用淘宝api接口获取商品详情信息?
使用 Python 调用淘宝 API 接口获取商品详情信息,可按照以下步骤进行: 注册并获取 API 密钥 访问淘宝api文档,点击 “立即测试” 按钮,按照提示完成注册流程。注册成功后,登录测试平台,进入 “控制台” 页面…...
ubuntu 22下解决Unment dependencies问题
问题现象 在使用apt安装包的时候,出现如下错误: 解决方案 第一步 sudo apt-get -f install sudo apt-get update sudo apt-get upgrade第二步 sudo apt-get update sudo apt-get clean sudo apt-get autoremove第三步 sudo apt --fix-broken inst…...
leetcode 热题100(155. 最小栈)multiset c++
链接:155. 最小栈 - 力扣(LeetCode) 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。…...
某小程序sign签名参数逆向分析
文章目录 1. 写在前面2. 接口分析3. 分析还原 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python…...
阿里云redis内存优化——PCP数据清理
在阿里云安装了一个redis节点,今天使用时忽然想着点击了一下分析内存。好家伙,居然崩出了一个30多M的块出来。问题是我本地安装的redis没有这个啊,怎么奇怪冒出这个来了。 本着把系统用干榨尽的态度,研究了下这个问题的来源。网上…...
YOLOv10-1.1部分代码阅读笔记-head.py
head.py ultralytics\nn\modules\head.py 目录 head.py 1.所需的库和模块 2.class Detect(nn.Module): 3.class Segment(Detect): 4.class OBB(Detect): 5.class Pose(Detect): 6.class Classify(nn.Module): 7.class WorldDetect(Detect): 8.class RTDETRDec…...
java开发中注解汇总
注解作用位置注意mybatis Data Getter Setter ToString EqualsAndHashCode AllArgsConstructor NoArgsConstructor Data 代替:无参构造,get,set,toString,hashCode,equals Getter Setter 可放在类和方法上&…...
Java开发 PDF文件生成方案
业务需求背景 业务端需要能够将考试答卷内容按指定格式呈现并导出为pdf格式进行存档,作为紧急需求插入。导出内容存在样式复杂性,包括特定的字体(中文)、字号、颜色,页面得有页眉、页码,数据需要进行表格聚…...
Python机器学习笔记(十七、分箱、离散化、线性模型与树)
数据表示的最佳方法:取决于数据的语义,所使用的模型种类。 线性模型与基于树的模型(决策树、梯度提升树和随机森林)是两种成员很多同时又非常常用的模 型,它们在处理不同的特征表示时就具有非常不同的性质。我们使用w…...
[极客大挑战 2019]Http 1
进入环境: 检查源码发现有一个链接,但是这里没有绑定,需要手动跳转,打开后,发现提示: 这里就是需要我们从https://Sycsecret.buuoj.cn来访问它 因此我们抓包,使用referer:服务器伪造…...
最近学习shader的一些总结
旨在总结最近学习shader过程中一些关键要素,强化下记忆,如果有错误也烦请指出。 1.Properties 可调节变量,用于定义从外部传入到内部的变量, 以及外部通过访问这些变量名, 可以获取这些变量的值 其中定义时指定的类型, 在后文中类型不一定相同(基本不…...
庐山派K230学习日记1 从点灯到吃灰
1 简介 庐山派以K230为主控芯片,支持三路摄像头同时输入,典型网络下的推理能力可达K210的13.7倍(算力约为6TOPS)。支持CanMV,可作为AI与边缘计算平台 K230简介 K230芯片集成了两颗RISC-V处理器核心,双核…...
在Swagger(现称为OpenAPI)中各类@api之间的区别
在Swagger(现称为OpenAPI)中,ApiOperation 是用来描述单个API操作的注解。除此之外,Swagger还提供了其他一些类似的注解,它们用于不同层次或目的来增强API文档的详细程度和可读性。以下是这些注解及其之间的区别&#…...
【网络协议】开放式最短路径优先协议OSPF详解(二)
前言 第一部分:【网络协议】开放式最短路径优先协议OSPF详解(一) 在第一部分中,我们了解了链路状态路由协议并讨论了 OSPF 的工作原理,同时学习了如何配置 OSPF。在本章的第二部分中,我们将进一步探讨 OS…...
windows文件夹自定义右键调用powershell完成7zip加密打包
准备powershell脚本 2. regedit的路径是:计算机\HKEY_CLASSES_ROOT\Directory\shell\,在此项目下新增子项目diy_command\command,command的数据值为powershell D:\windowsProjects\directory_diy.ps1 %1 效果,点击后进入和power…...
MySQL 入门教程
MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 在本教程中,会让大家快速掌握MySQL的基本知识,并轻松使用MySQL数据库。 什么…...
BOOST 库在机器视觉中的应用及示例代码分析
一、引言 机器视觉是一门让计算机模拟人类视觉功能,对图像或视频数据进行理解、分析和决策的学科领域。在机器视觉的开发过程中,常常需要高效处理各种数据结构、进行数值计算、实现多线程并行处理以及运用优秀的算法框架等。BOOST 库作为一个功能强大、…...
第二十六天 自然语言处理(NLP)词嵌入(Word2Vec、GloVe)
自然语言处理(NLP)中的词嵌入(Word2Vec、GloVe)技术,是NLP领域的重要组成部分,它们为词汇提供了高维空间到低维向量的映射,使得语义相似的词汇在向量空间中的距离更近。以下是对这些技术的详细解…...
Log4j2 详解(异步日志打印及CSV格式日志输出)
Log4j2 详解 Apache Log4j2 是一个功能强大的 Java 日志记录框架,提供高性能和灵活的配置。本文档涵盖了 Log4j2 的核心功能及其详细使用方式,包括基础配置、异步日志、CSV 格式日志的输出以及使用注意事项。 一 Log4j2 基础概念与配置 1.1 Log4j2 介绍…...
[网络安全] DVWA之Content Security Policy (CSP) Bypass 攻击姿势及解题详析合集
CSP概念 CSP 是 Content Security Policy(内容安全策略)的缩写,是一种用于增强 Web 应用程序安全性的安全机制。它通过允许网站管理员控制页面中加载内容的来源来减少跨站脚本攻击(XSS)等常见的安全风险。 CSP 的工作…...
linux shell脚本 【分支结构case...in 、循环结构、函数】内附练习
1.思维导图 2.练习 1.定义一个find函数,查找ubuntu和root的gid 2.定义一个数组,写一个函数完成对数组的冒泡排序 bubble() {n${#arr[*]}for((i0;i<n-1;i));dofor((j0;j<n-1-i;j));doif ((arr[j]>arr[j1]));thentemp${arr[j]}arr[j]${arr[j1]}a…...
C# 设计模式(结构型模式):桥接模式
C# 设计模式(结构型模式):桥接模式 在软件设计中,我们经常会遇到系统的变化频繁,或者需要灵活扩展功能的场景。这时,桥接模式(Bridge Pattern)便显得尤为重要。桥接模式是一个结构型…...
RC充电电路仿真与分析
RC充电原理 下图是一个常见的RC充电电路:(假设R10K,C100nF) SW断开时,这个电路处于断路状态,C既没有充电也没有放电;SW闭合时,直流电源5V为电容C充电; 充电时电容两端…...
在 SQL 中获取第m个开始的n条记录方法汇总
在 SQL 中,要获取第m个开始的n条记录,主要取决于你使用的数据库系统和支持的功能。以要获取第10个开始的20条记录为例说明几种常见的方法: 1. 使用 LIMIT 和 OFFSET 适用于 MySQL、PostgreSQL 等支持 LIMIT 的数据库。 SELECT * FROM table…...