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

【AI论文】MM-IFEngine:迈向多模态指令遵循

摘要:指令遵循(IF)能力衡量多模态大语言模型(MLLM)准确理解用户告诉他们的内容以及他们是否做得正确的能力。 现有的多模态指令训练数据很少,基准测试简单,指令原子化,对于要求精确输出约束的任务,评估策略不精确。 为了解决这个问题,我们提出了MM-IFEngine,这是一种有效的流水线,可以生成高质量的图像指令对。 我们的MM-IFEngine管道产生了大规模、多样化和高质量的训练数据MM-IFInstruct-23k,适用于监督微调(SFT),并扩展为MM-IFDPO-23k用于直接偏好优化(DPO)。 我们进一步介绍了MM-IFEval,这是一个具有挑战性和多样性的多模态指令遵循基准,包括:(1)输出响应的组合级约束和与输入图像相关的感知级约束,以及(2)一个综合评估管道,结合了基于规则的评估和判断模型。 我们进行了SFT和DPO实验,并证明在MM-IFInstruct-23k和MM-IFDPO-23k上微调MLLM在各种IF基准测试上取得了显著进步,如MM-IFEval(+10.2%)、MIA(+7.6%)和IFEval(+12.3%)。 完整的数据和评估代码将在https://github.com/SYuan03/MM-IFEngine上发布。Huggingface链接:Paper page,论文链接:2504.07957

研究背景和目的
研究背景

随着人工智能技术的不断进步,多模态大语言模型(MLLMs)在理解并执行用户指令方面展现出了巨大的潜力。然而,现有的多模态指令遵循(Instruction Following, IF)训练数据稀缺,基准测试简单且指令原子化,对于要求精确输出约束的任务,评估策略也不够精确。这些问题限制了MLLMs在真实世界应用中的表现,特别是在需要精确理解和执行复杂指令的场景中。

具体而言,现有的多模态IF基准测试大多仅包含简单且原子化的指令,缺乏多样性和复杂性,导致模型在这些基准上的表现趋于饱和。此外,训练数据的稀缺性也限制了模型的泛化能力,使其难以处理未见过的指令和任务。因此,开发一种能够生成高质量、多样化和复杂的多模态指令数据的方法,以及建立一个更具挑战性的基准测试,成为当前研究的重要方向。

研究目的

本研究旨在解决现有多模态指令遵循训练数据稀缺、基准测试简单以及评估策略不精确的问题。通过提出MM-IFEngine这一有效的流水线,生成高质量的图像指令对,为MLLMs提供大规模、多样化和高质量的训练数据。同时,本研究还旨在引入一个具有挑战性和多样性的多模态指令遵循基准MM-IFEval,以更全面地评估MLLMs的指令遵循能力。

具体来说,本研究的目标包括:

  1. 开发MM-IFEngine流水线:生成高质量的图像指令对,为MLLMs提供丰富的训练数据。
  2. 构建MM-IFInstruct-23k数据集:一个包含23,000个高质量多模态指令遵循训练数据的数据集,适用于监督微调(SFT)。
  3. 构建MM-IFDPO-23k数据集:一个适用于直接偏好优化(DPO)的偏好数据集,通过从MM-IFInstruct-23k中随机移除约束来生成被拒绝的样本。
  4. 引入MM-IFEval基准:一个包含400个具有挑战性问题的多模态指令遵循基准,包括组合级约束和与输入图像相关的感知级约束。
  5. 验证数据集和基准的有效性:通过SFT和DPO实验,证明在MM-IFInstruct-23k和MM-IFDPO-23k上微调MLLM可以在各种IF基准上取得显著进步。
研究方法
MM-IFEngine流水线

MM-IFEngine流水线包括三个主要步骤:图像过滤、任务生成和约束集成。

  1. 图像过滤:选择高质量的图像,移除低分辨率或语义信息有限的图像。对于未注释的纯图像数据集,优先选择自然场景图像,因为这些图像具有丰富的语义内容,有助于生成更全面和深入的QA对。

  2. 任务生成:为没有原始注释任务指令的图像设计适当的任务指令。首先开发一个针对数据项的任务指令池,然后使用强大的语言模型(如GPT-4o)为每个图像生成一个合适的任务列表。对于具有QA对的图像数据集,首先分析原始问题注释,然后过滤掉不适合指令遵循任务的问题。

  3. 约束集成:从约束池中为任务指令选择合适的约束,并生成具体的约束内容。使用语言模型来保持约束与任务指令之间的相关性,并过滤掉那些导致完全矛盾的约束。最后,通过另一个语言模型验证约束与任务指令的兼容性,并过滤掉那些未能通过验证的约束。

数据集构建
  1. MM-IFInstruct-23k:使用MM-IFEngine流水线生成,包含23,000个高质量的多模态指令遵循训练数据。这些数据通过InternVL2.5-78B-MPO模型生成响应,并经过后处理阶段以过滤掉不符合指定标准的响应。

  2. MM-IFDPO-23k:为了全面探索和充分利用高质量数据,使用MM-IFEngine构建了一个偏好数据集MM-IFDPO-23k。通过从MM-IFInstruct-23k中随机移除约束来生成被拒绝的样本,从而构建了一个包含选择样本和拒绝样本的数据集,适用于直接偏好优化。

基准测试构建

MM-IFEval:一个具有挑战性和多样性的多模态指令遵循基准,包含400个问题,分为组合级问题和感知级问题。组合级问题涉及文本约束,而感知级问题需要更高的视觉感知能力来解决。MM-IFEval采用了一种综合评估策略,结合了基于规则的评估和判断模型,以更精确地评估模型的指令遵循能力。

研究结果
数据集和基准的有效性
  1. 数据集的有效性:通过在多个IF基准(如MM-IFEval、MIA和IFEval)上进行实验,证明了MM-IFInstruct-23k和MM-IFDPO-23k数据集的有效性。微调后的模型在这些基准上取得了显著进步,表明这两个数据集能够为MLLMs提供丰富的训练信号。

  2. 基准的有效性:MM-IFEval基准具有多样性和挑战性,能够更全面地评估模型的指令遵循能力。实验结果表明,现有的先进模型在MM-IFEval上的表现仍有很大提升空间,这进一步证明了该基准的有效性和挑战性。

实验结果
  1. SFT和DPO实验:通过在MM-IFInstruct-23k和MM-IFDPO-23k上进行SFT和DPO实验,证明了微调后的模型在各种IF基准上取得了显著进步。特别是在MM-IFEval基准上,微调后的模型表现出了更高的准确性和泛化能力。

  2. 与其他基准的比较:将微调后的模型在其他VQA基准(如MMMU、MMBench、MMStar等)上的表现与原始模型进行了比较。实验结果表明,微调后的模型在IF基准上的表现显著提高,同时在其他VQA基准上的表现保持稳定或略有提升。

研究局限

尽管本研究在多模态指令遵循方面取得了显著进展,但仍存在一些局限性:

  1. 数据集的规模和质量:尽管MM-IFInstruct-23k和MM-IFDPO-23k数据集具有大规模和高质量的特点,但仍需进一步扩大数据集规模以提高模型的泛化能力。此外,数据集中的一些指令和图像可能仍存在一定的噪声和歧义性。

  2. 基准测试的挑战性:尽管MM-IFEval基准具有多样性和挑战性,但仍需进一步增加问题的复杂性和多样性以更全面地评估模型的指令遵循能力。此外,基准测试中的评估策略仍有待进一步优化以提高评估的准确性和可靠性。

  3. 模型的局限性:现有的MLLMs在指令遵循方面仍存在一定的局限性,如对于复杂指令和未见过的任务的处理能力有限。未来需要开发更先进的模型架构和训练方法以提高模型的指令遵循能力。

未来研究方向
  1. 扩大数据集规模:通过收集更多高质量的图像和指令对来进一步扩大数据集的规模,以提高模型的泛化能力和鲁棒性。

  2. 优化基准测试:进一步增加基准测试中问题的复杂性和多样性,并优化评估策略以提高评估的准确性和可靠性。同时,可以探索将基准测试扩展到其他领域和任务中。

  3. 开发更先进的模型:探索更先进的模型架构和训练方法以提高MLLMs的指令遵循能力。例如,可以结合强化学习来优化模型的推理过程或利用知识蒸馏来压缩模型的大小并提高推理速度。

  4. 多模态融合:进一步探索如何将视觉、文本和语音等多种模态的信息有效地融合在一起以提高模型的指令遵循能力。这可以通过开发更先进的多模态融合方法和训练策略来实现。

  5. 实际应用:将多模态指令遵循技术应用于实际场景中,如智能家居、自动驾驶和智能客服等领域。通过在实际场景中的应用和反馈来不断改进和优化模型和技术。

相关文章:

【AI论文】MM-IFEngine:迈向多模态指令遵循

摘要:指令遵循(IF)能力衡量多模态大语言模型(MLLM)准确理解用户告诉他们的内容以及他们是否做得正确的能力。 现有的多模态指令训练数据很少,基准测试简单,指令原子化,对于要求精确输…...

【C++初学】课后作业汇总复习(五) 单目运算符重载

本题主要考察-构造函数的定义和操作符重载、友元函数等 根据后缀和程序样例输出,完成分数类和相关函数的定义, 输入: -6 12 8 -16 输出: 1/2 1/1 -1/2 / -1/2 - -1/2 0/1 输入: 3 7 2 6 输出: 1/…...

Python基础语法速通(自用笔记)

目录 # 输出直接print就行了 # 次方,除法,取整 # 定义变量直接写就可以,不用写类型 # 基础的while不用写()和{},直接用冒号即可,缩进对齐 # 这里的for循环直接用in就可以,意思是从...中一个…...

Nginx基础讲解

Nginx基础讲解 Nginx 是一款高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、静态资源托管、SSL 终端等场景。以下是对 Nginx 的详细讲解: 1. Nginx 核心概念​ ​事件驱动架构​:基于异步非阻塞模型,高效处理高并发连接…...

K8S+Prometheus+Consul+alertWebhook实现全链路服务自动发现与监控、告警配置实战

系列文章目录 k8s服务注册到consul prometheus监控标签 文章目录 系列文章目录前言一、环境二、Prometheus部署1.下载2.部署3.验证 三、kube-prometheus添加自定义监控项1.准备yaml文件2.创建新的secret并应用到prometheus3.将yaml文件应用到集群4.重启prometheus-k8s pod5.访…...

组件安全工程化革命:从防御体系构建到安全基因重塑

文章目录 总起:数字世界的钢铁长城 分论: 一、组件生态的"七宗罪"与安全基因重组 二、百万级流量下的安全工程化实战 三、性能与安全的共生进化论 四、安全工程化全链路解决方案 总束:安全基因驱动的未来图景 五、时代思考…...

(PC+WAP)大气滚屏网站模板 电气电力设备网站源码下载

源码介绍 (PCWAP)大气滚屏网站模板 电气电力设备网站源码下载。PbootCMS内核开发的网站模板,该模板适用于滚屏网站模板、电气电力设备网站源码等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;PCWAP&#xff0c…...

发送加密信息的简单实现【Java】

(修改期) 一、代码的引用处 public static SecretKeys generateKeys() throws NoSuchAlgorithmException {: 定义一个公共静态方法,用于生成 AES 和 HMAC 密钥对。 public static String encrypt(String plaintext, SecretKey aesKey, S…...

阿里云域名解析

一、打开域名控制台 PC端浏览器打开阿里云域名控制台:域名控制台,点击"域名解析"。 二、添加解析设置 选择需要解析的域名,点击"解析设置"。 点击"添加记录"。 添加@和www即可。...

DNS域名解析服务(正向 反向 主从)

DNS 1.分散式管理: Hosts文件 一改百度就不会访问了 Ip地址 域名 121.226.246.3 www.jd.com 2.我们会搭建一台 域名解析服务器全世界得域名全靠这台服务器进行解析 中央集权制 域名是由多个部分组成的 www.baidu.com .baidu .com是域…...

ROS2---std_msgs基础消息包

std_msgs 是ROS 2(Robot Operating System 2)里的基础消息包,它定义了一系列简单却常用的消息类型,为不同节点间的通信提供了基础的数据格式。 1. 消息包概述 std_msgs 包包含了多种基础消息类型,这些类型用于表示常…...

python基础:数据类型转换、运算符(算术运算符、比较运算符、逻辑运算符、三元运算符、位运算符)

目录 一、类型转换 隐式类型转换/自动转换: 显示类型转换/强制转换: 二、运算符 算数运算符: - * / 比较运算符 逻辑/布尔运算符 赋值运算符: 三元运算符 位运算符 [二进制] 运算符优先级 一、类型转换 python变量的类…...

[特殊字符] 终端效率提升指南:zsh + tmux

在日常开发中,一个舒适、高效的终端环境能显著提升工作效率。本文将介绍如何通过配置 oh-my-zsh 和 tmux 打造一个功能强大、便捷实用的终端工具集。无论你是 Linux 新手,还是资深开发者,都能从中获得实用的提升技巧。 🌀 一、终…...

【Linux篇】深入理解文件系统:从基础概念到 ext2 文件系统的应用与解析

文件系统的魔法:让计算机理解并存储你的数据 一. 文件系统1.1 块1.2 分区1.3 inode(索引节点) 二. ext2文件系统2.1 认识文件系统2.2 Block Group (块组)2.2.1 Block Group 的基本概念2.2.2 Block Group 的作用 2.3 块组内部结构2.3.1 超级块(Super Bloc…...

MarkDown 输出表格的方法

MarkDown用来输出表格很简单,比Word手搓表格简单多了,而且方便修改。 MarkDown代码: |A|B|C|D| |:-|-:|:-:|-| |1|b|c|d| |2|b|c|d| |3|b|c|d| |4|b|c|d| |5|b|c|d|显示效果: ABCD1bcd2bcd3bcd4bcd5bcd A列强制左对齐&#xf…...

DOM解析XML:Java程序员的“乐高积木式“数据搭建

各位代码建筑师们!今天我们要玩一个把XML变成内存乐高城堡的游戏——DOM解析!和SAX那种"边看监控边破案"的刺激不同,DOM就像把整个乐高说明书一次性倒进大脑,然后慢慢拼装(内存:你不要过来啊&…...

Python 数组里找出子超集

碰见一个问题,有一个大数组,如下所示: xx [[1, 3, 4], [3, 4, 5], [1, 2, 3, 4, 5], [6], [7, 8], [6, 7, 8]]大数组里面有好多小的数组,观察发现,小的数组其实有挺多别的小数组的子集,现在问题来了&…...

上层 Makefile 控制下层 Makefile ---- 第二部分(补充一些例子与细节)

1. 递归调用子目录 Makefile 通过 $(MAKE) -C 进入子目录并执行其 Makefile,这是最常见的分层构建方法。 示例:基本递归调用 目录结构: project/ ├── Makefile # 顶层 Makefile ├── lib/ │ ├── Makefile # 子目录…...

LeetCode算法题(Go语言实现)_44

题目 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你…...

STM32 HAL库之USART示例代码

串口发送和接收以及回调函数都可在这个文件中查询:stm32f1xx_hal_uart.h 串口配置初始化代码main.c中:MX_USART1_UART_Init();,初始化 UART 高层参数(波特率、数据位、停止位、校验、模式等) void MX_USART1_UART_In…...

头歌educoder——数据库 第10-11章

第10章 1、 事务的( )特性要求事务必须被视为一个不可分割的最小工作单元 A、 原子性 B、 一致性 C、 隔离性 D、 持久性 2、 事务的( )特性要求一个事务在执行时,不会受到其他事务的影响。 A、 原子性 B、 一致性 C…...

从 Vue 到 React:深入理解 useState 的异步更新与函数式写法

目录 从 Vue 到 React:深入理解 useState 的异步更新与函数式写法1. Vue 的响应式回顾:每次赋值立即生效2. React 的状态更新是异步且批量的原因解析 3. 函数式更新:唯一的正确写法4. 对比 Vue vs React 状态更新5. React useState 的核心源码…...

如何实现元素随滚动平滑上升

#技术栈Vue3TypeScript# 相比大家没少见过这个的效果: 作为视觉效果是很不错的 同时实现也很简单,本质是封装一个Vue指令 1,创建指令文件 src / directives / vSlidenIn.ts import type { Directive } from vueconst vSlideIn: Directive …...

Nginx部署spa单页面的小bug

没部署过,都是给后端干的,自己尝试部署了一个下午终于成功了 我遇到的最大的bug是进入后只有首页正常显示 其他页面全是404,于是问问问才知道,需要这个 location / { try_files $uri $uri/ /index.html; } 让…...

关于全球化大规模混合云 Kubernetes Prometheus 监控体系标准化及 GitOps 自动化改进方案

背景 现状 某司概况: PaaS/SaaS 公司,业务面向全球,包括 东南亚/南亚/中东/欧洲/非洲/美洲/东亚…生产 k8s 集群数十套,生产非生产 >100 套(多种集群类型,各种公有云/专有云/私有云/数据中心…)疫情以来&#xff…...

力扣DAY51 | 热100 | 岛屿数量

前言 中等 √ 做得我元气大伤,超级naive方法,新开辟一个数组存岛屿编号,一个数组存岛屿上的点。 题目 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 …...

二叉树的最近公共祖先二叉搜索树的最近公共祖先

1 二叉树的最近公共祖先 学习: 代码 class Solution:def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:if root is None or root is p or root is q:return rootleft self.lowestCommonAncestor(root.left,p,q)right …...

关于 LLB 的问题

This error occurs when you’re trying to run a program or library that was compiled with GLIBC (GNU C Library) version 2.29, but your system has an older version of GLIBC installed. Solutions: 1. Upgrade your system’s GLIBC (Recommended if possible) Fo…...

kafka4.0浅尝辄止

最近工作中接触消息队列比较多,前几周又看到kafka4.0发布,故写一篇博客对消息队列做一个复盘。 目录 消息队列对比1. Apache Kafka 4.02. RabbitMQ3. RocketMQ4. ActiveMQ5. Apache Pulsar6. NSQ kafka4.0鲜明的新特性Java 版本要求升级API 更新与精简移…...

nmcli创建wpa-psk2 wifi热点

1. 创建新的WiFi连接: sudo nmcli connection add type wifi ifname wlan0 con-name WiFi名称 autoconnect yes ssid WiFi名称 2. 配置接入点模式和IP共享: sudo nmcli connection modify WiFi名称 802-11-wireless.mode ap 802-11-wireless.band …...

分布式日志治理:Log4j2自定义Appender写日志到RocketMQ

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

【STM32单片机】#8 定时器编码器接口ADC模数转换器

主要参考学习资料: B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接:https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装:STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 实验&…...

dify部署,ollama部署,拉取模型,创建ai聊天应用

dify下载安装 dify1.0.1 windos安装包百度云盘地址 通过网盘分享的文件:dify-1.0.1.zip 链接: 百度网盘 请输入提取码 提取码: 1234 dify安装包 linux安装包百度云盘地址 通过网盘分享的文件:dify-1.0.1.tar.gz 链接: 百度网盘 请输入提取码 提取码…...

213、【图论】有向图的完全联通(Python)

题目描述 原题链接:105. 有向图的完全联通 代码实现 import collectionsn, k list(map(int, input().split())) adjacency collections.defaultdict(list) for _ in range(k):head, tail list(map(int, input().split()))adjacency[head].append(tail)visited_…...

Node.js中util模块详解

Node.js 中 util 模块全部 API 详解 一、类型检查函数 const util require(util);// 1. util.types // 检查对象类型 console.log(util.types.isDate(new Date())); // true console.log(util.types.isRegExp(/abc/)); // true console.log(util.types.isArrayBuffer(new …...

BasicTS:全面基准测试与异质性分析

BasicTS:全面基准测试与异质性分析 在当今数字化时代,多元时间序列(Multivariate Time Series, MTS)分析在众多领域发挥着关键作用,从交通管理到能源系统优化,都离不开对MTS的精准预测。然而,当…...

认识python全栈框架reflex:快速打造工具类网站、模型调用web应用

以下是对reflex的简单介绍: 纯Python编写的,高性能、可自定义的 Web 应用开发框架 网页开发内置组件生态完整,灵活使用、快速接入、快速部署支持路由页面,可以开发复杂系统、企业级系统,这方面优于gradio、streamlit…...

课题申报的立项依据方位指南:使用DeepSeek提高课题立项的关键

在竞争日益激烈的学术研究和科研项目申报环境中,立项依据作为课题申报书的灵魂部分,往往决定着一项研究能否获得评审专家的青睐和资助。 然而,许多研究者尽管学术能力突出,却在立项依据的撰写上显得力不从心,导致优质…...

蓝桥杯电子赛_E2PROM(AT24C02)

目录 一 前言 二 E2PROM的相关讲解 AT24C02的地址 PCF8591的地址 三 根据提供的iic写代码 相关可能会有疑问的地方: 1 三个入口参数,都有什么用? 2 为什么在写中,要用IIC_SendByte,在读中,要用IIC_R…...

Kubernetes服务注册到consul流程实践

文章目录 前言架构图示意一、环境准备二、consul部署1.yaml示例2.consul部署验证 三、consulctl工具实现1.核心功能2.注册到consul的标签及元数据3.consulctl工具使用示例 四、通过Dockerfile构建consulctl工具镜像五、Kubernetes集成方案六、 结果验证1.注册验证2.销毁验证 总…...

供应链业务-供应链全局观(三)- 供应链三流的集成

概述 供应链的全局观的全两篇文章主要描述了供应链的基础概念和供应链的协作和集成问题。 供应链业务-供应链全局观(一)定义了什么是供应链和供应链管理。 所谓供应链就是把采购进来的东西,通过自身的生成加工,进行增值服务&am…...

Docker 提示Docker Engine stopped

做AI开发的时候,安装Docker提示Docker Engine stopped,以下是解决步骤: 一般都是成功的,不成功很可能是电脑兼容问题,通过采用4.4.4版本解决的: docker desktop 4.4.4 旧版本下载:在这里找到了4…...

对自己的优缺点评价

在面试中回答优缺点时,需要既体现自我认知的客观性,又能将优缺点与岗位需求结合,避免暴露可能影响工作的硬伤。以下是一个符合Java开发者角色的回答框架,供参考: 回答思路: 优点:选择与岗位直接…...

解决eNSP在24H2版本下AR_40启动失败问题

前言 1.网络学习中缺少不了模拟,自从Windows版本更新24H2以后,eNSP就出现各种问题,最常见的就是AR报错40【启动失败】,之前我也去网站搜了,也问了Microsoft社区,发现他们在底层逻辑上进行了修改(开启了虚拟…...

计算机组成原理-指令系统

1. 指令系统的定义与作用 指令系统(Instruction Set Architecture, ISA)是计算机硬件与软件之间的接口规范,定义了CPU能够识别和执行的所有指令的集合,是计算机体系结构的核心组成部分。 核心作用: 为程序员提供操作…...

Oracle数据库中 LEVEL start with prior connect by

在Oracle数据库中,处理层次结构数据是一项常见且重要的任务。无论是组织结构、分类目录还是其他具有层级关系的数据,Oracle都提供了强大的工具来简化和优化这些操作。其中,LEVEL伪列结合CONNECT BY和START WITH关键字,成为了处理层…...

HTTP 1.1 比 HTTP1.0 多了什么?(详尽版)

相较于HTTP 1.0,1.1 版本增加了以上特性: 1. 新增了连接管理即 keepalive,允许持久连接。 定义: Keepalive允许客户端和服务器在完成一次请求-响应后,保持连接处于打开状态,以便后续请求复用同一连接&am…...

Java学习手册:Java I/O与NIO

Java I/O(Input/Output)和NIO(New Input/Output)是Java语言中用于处理输入输出操作的重要部分。它们提供了丰富的API来处理文件和网络通信。I/O是Java早期版本中引入的,而NIO是在Java 1.4中引入的,旨在提供…...

linux下的目录文件管理和基本文件管理的基本操作

目录 1.目录创建,文件创建和文件编辑的案例 2.文件编辑进阶 --vim 3. 命令的别名 4. 查看文件内容和文件编辑(重定向)的案例 5. 重定向之追加 6. 查看目录和文件编辑的案例 7. 查看目录和文件编辑(覆盖)的案例 为了加深对linux命令的熟悉程度,这…...

magnet库Hello,world!

1.c文件 #include<iostream> #include"Control.hpp" class O1:public mag::Control{bool b; public:O1(){b1;}bool decide(){return b&&islifing();}void action(){std::cout<<"Hello,world!\n";b0;destroy();} }; int main(){O1 o1;…...