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

Linux:磁盘管理

一、静态分区管理

静态的分区方法不可以动态的增加或减少分区的容量。

1、磁盘分区-fdisk

该命令是用于查看磁盘分区情况,和分区管理的命令

命令格式:fdisk [选项] 设备文件名

常用命令:

  • -h:查看分区信息

fdisk系统常用命令:

  • l:显示设备的分区表信息。
  • n:创建一个新的分区。
  • d:删除一个分区。
  • p:打印分区表的内容。
  • t:更改分区的类型。
  • u:以扇区单位显示分区信息。
  • w:将分区表写入磁盘。

同时也可以不带参数进入fdisk命令模式,退出可以使用ctrl + C,以下是fdisk的命令模式。

案例:新增一个编号为1、容量为512MB、类型为xfs的主分区。

  进入系统! 

  输入n,创建分区!(p是主分区,e是拓展分区)!

  指定卷标1和大小512M!

输入t指定分区类型(可以输入L查看分区类型,这里指定为83)!

最后存盘退出 w ,结束后可以输入fdisk -l查看 

二、动态分区管理LVM

        动态分区管理,即逻辑卷管理器LVM,则可以让用户在不破坏分区数据的前提下,随意根据需求调整分区大小。

 相关名词:

  • PV:物理卷。可以是单独磁盘,也可以是磁盘分区。
  • VG:卷组,即是物理卷的组合,可以看成单独的逻辑磁盘。
  • LV:逻辑卷,逻辑磁盘(卷组)的分区。
  • PE:物理层面上,VG的组成单元。
  • LE:逻辑层面上,LV的组成单元,大小为PE的倍数。

1、PV创建-pvcreate

命令格式:pvcreate [option] 物理磁盘/分区

常用选项:

  • -f:强制创建物理卷
  • -u:指定uuid
  • -y:所有问题都回答yes

案例:硬盘创建物理卷

pvcreate /dev/sda

2、PV显示-pvscan和pvdisplay

pvscan:是扫描物理卷

pvdisplay:是显示物理卷的详细信息 

命令格式:pvscan [option] 
命令格式:pvdisplay [option] 

3、PV删除-pvremove

命令格式:pvremove [option] 物理磁盘/分区

常用选项:

  • -f:强制删除物理卷
  • -y:所有问题都回答yes

案例:删除物理卷

pvremove /dev/sda

4、PV移动-pvmove

源PV和目标PV必须处于同一个VG中,且目标PV的大小不能小于源PV

命令格式:pvmove [option] 源PV 目标PV

常用选项:

  • -b:在后台运行守护进程。

  • -i:设置报告进度的间隔时间。

  • --abort:中止进行中的移动操作。

案例:删除物理卷

pvmove /dev/hda1 /dev/sdb1

4、VG创建-vgcreate

在VG中添加PV!

命令格式:vgcreate [option] VG名称 PV名称

常用选项:

  • -f:强制创建物理卷
  • -y:所有问题都回答yes

案例:硬盘创建物理卷

vgcreate rhel /dev/sda /dev/sdb 

5、VG显示-vgscan和vgdisplay

vgscan:是扫描物理卷

vgdisplay:是显示物理卷的详细信息 

命令格式:vgscan [option] 
命令格式:vgdisplay [option] 

6、VG删除-vgremove

删除VG

vgremove [option] VG名称

常用选项: 

  • -f:强制删除。

7、LV创建-lvcreate

命令格式:lvcreate [option] [-L <LV 容量> ] [-n <LV 名称> ] VG名称

常用选项: 

  • -L:指定逻辑分区容量。
  • -n:指定逻辑分区名称

案例:在rhel8的VG中创建一个2GB的LV,名称为lvlinux

lvcreate -L 2GB -n lvlinux rhel8

8、LV显示-lvscan和lvdisplay

vgscan:是扫描物理卷

vgdisplay:是显示物理卷的详细信息 

命令格式:lvscan
命令格式:lvdisplay

9、LV删除-lvremove

删除前需要确保LV没有装载,否则会删除失败!

命令格式:lvremove [option] LV名称

案例:删除名为/dev/rhel8/lvlinux

lvremove /dev/ehel8/lvlinux

三、磁盘阵列RAID

        这是一种把多块独立的硬盘按不同方式组合形成一个硬盘组(相当于一个逻辑硬盘),从而提供比单个磁盘更高的存储性能和提高数据冗余的的技术。 

        组成磁盘阵列的不同方式就是RAID级别,以下是常见的RAID级别以及它的特点。

        RAID0:无差错控制的带区组,需要至少2块硬盘。

        RAID1:镜像结构,需要至少2块硬盘。

        RAID2:带海明码校验,需要至少3块硬盘。

        RAID3:带奇偶校验码的并行传送,需要至少3块硬盘。

        RAID4:带奇偶校验码的独立磁盘结构,需要至少3块硬盘。

        RAID5:分布式奇偶校验的独立磁盘结构,需要至少3块硬盘。

        RAID6:带有两种分布存储的奇偶校验码的独立磁盘结构,需要至少4块硬盘。

        RAID7优化的高速数据传送磁盘结构

1、创建RAID设备-mdadm

命令格式:mdadm [option] 设备 [option] 需要加入RAID分区或硬盘

常用参数:

  • -A 激活磁盘阵列
  • -C 创建一个新的阵列
  • -D 输出一个或多个 
  • -S 停止磁盘阵列
  • -s 扫描系统中的所有RAID设备,并输出当前活动 RAID 设备的信息。
  • -V 显示细节
  • -c 设置阵列条带大小
  • -l 设置磁盘阵列的级别
  • -n 指定阵列可用的RAID 硬盘数量
  • -x 指定初始阵列的富余RAID 硬盘数量
  • -f 将设备状态设定为故障
  • -r 移除设备

 案例:创建RAID设备文件

该RAID设备使用了四个硬盘sdb,sbc,sdd,sde

mdadm -C /dev/md5 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e}

        前三部分介绍的都是分区管理的方式,分别是静态分区fdisk,动态分区LVM,RAID设备(它相当于多个硬盘合成一个逻辑硬盘,可以直接格式化使用或者分区使用

2、开机挂载RAID设备

在/etc/fstab文件内写入以下内容:

设备名称 挂载点目录 文件系统类型 选项 检查标志 检查顺序标志
/dev/md5 /mnt ext4 default 0 0

 将RAID设备信息写入/etc/mdadm.conf(这是mdadm的配置文件,需要写入RAID的相关消息,如果没有,则RAID设备无法正常工作)

mdadm -D -s >> /etc/mdadm.conf

后面会详细介绍 /etc/fstab文件内容

四、分区挂载

 1、分区挂载-mount

分区挂载,将分区入口引导到目录上,如果不进行挂载则无法访问分区

命令格式:mount [option] 目标分区 挂载目录

常用选项: 

  • -t :指定设备的文档系统类型

 案例:挂载SATA硬盘

mount /dev/sda1 /sl/sl1

 案例:通过光盘,挂载NVME硬盘

        挂载Nvme磁盘的方法和SATA盘有些不同,光盘的内核通常不能直接挂载,因为其使用了逻辑分区LVM,需要激活。查看LVM的VG名称的命令是vgdisplay,查看其激活状态的命令是lvscan,最后通过lvchange -ay VGname 进行激活,这样在/dev/nvme0n1就可以发现其下面多了两个文件root和swap。

获得VGname 

 激活lvchange -ay VGname

 挂载成功!

 2、挂载卸载-unmount

 该命令可以用来卸载分区的挂载点。

命令格式:unmount [option] 设备名称/挂载点

常用选项:

  • -v :显示详细信息 

 案例:通过设备名卸载挂载

umount -v /dev/sda1

3、永久挂载-/etc/fstab文件

        /etc/fstab文件主要用来设置在Linux启动自动挂载的设备和挂载点信息,在linux启动过程中systemd进程会自动读取/etc/fstab配置文件的内容,并挂载相应的文件系统。

        /etc/fstab每一行代表一个文件系统,每个文件系统用六个字段来表示,从左到右顺序对每个字段:

  • 设备名称,none表示与设备无关的文件系统。
  • 挂载点目录
  • 文件系统类型,如果设置auto,则按文件系统本身类型进行挂载。
  • 选项,多个选项之间必须用逗号分隔。
选项说明
auto启动时自动挂载
default使用默认值挂载,即启动时自动挂载,可读可写
gquota设定该文件系统支持组配额管理
noauto不自动挂载
ro以只读方式挂载
rw以读/写方式挂载
uquota设定该文件系统支持用户配额管理
  • 检查标志:0表示不做检查,1表示需要文件系统检查。只有ext3/ext4/xfs需要文件系统检查
  • 检查顺序标志:有0,1,2三种值,0代表不检查(检查标志为0,该值必为0)。

案例:挂载RAID设备

/dev/md5 /mnt ext4 default 0 0

 组配额和用户配额将在下面详细讲解。

五、文件系统

1、创建文件系统-mkfs

给分区进行文件系统创建的操作。

命令格式:mkfs -t 分区类型 分区设备

分区类型:它可以通过man 5 fs获得其详细介绍。 

 分区设备:它可以通过fdisk -l 来查看。

 案例:设置分区的文件系统为ext4

mkfs -t ext4 /dev/sha1

2、查看文件系统信息-df

命令格式:df [option]

 常用选项:

  • -a, --all:显示所有文件系统,包括虚拟文件系统。
  • -B, --block-size=SIZE:指定块大小,以特定单位显示磁盘空间信息(如 MB、GB)。
  • -h, --human-readable:以人类可读的格式显示输出结果。
  • -H, --si:以 1000 作为基数,以 SI 单位显示输出结果(例如,MB、GB)。
  • -i, --inodes:显示 inode 使用情况而不是块使用情况。
  • -k, --kilobytes:以 KB 作为单位显示磁盘空间信息。
  • -n, --no-sync:不执行文件系统同步操作。
  • -t, --type=TYPE:仅显示指定类型的文件系统。
  • -T, --print-type:显示文件系统的类型。
  • -x, --exclude-type=TYPE:排除指定类型的文件系统。
  • --sync:在显示文件系统信息之前执行文件系统同步操作。
  • --total:在输出的最后一行显示总计。
  • -v, --verbose:详细显示文件系统信息。
  • -l, --local:仅显示本地文件系统。

案例:显示文件系统类型

六、磁盘配额管理

         磁盘配额管理,是为了限制用户或组在某个特定文件系统中能使用的最大空间,来保证每个用户的空间的正常使用。它可以保证所有用户都拥有自己独占的文件系统空间,从而确保用户使用系统的公平性和安全性。

        磁盘配额特性不同,还分为硬配额和软配额,硬配额是用户和组可使用空间的最大值,超出界限,无法写入文件,并发出警告信息。而软配额允许一段时期内被超过,默认为7天,到期后,如果用户使用空间还超过软配额,则无法写入文件。

配额管理命令-edquota

命令格式:edquota [option] [用户名|组]

常用选项:

  • -g 设置组配额
  • -p 设置
  • -u  设置用户配额

1、用户配额配置-u

2、组配额配置-g

3、启动配额管理-quotaon

4、关闭配额管理-quotaoff

相关文章:

Linux:磁盘管理

一、静态分区管理 静态的分区方法不可以动态的增加或减少分区的容量。 1、磁盘分区-fdisk 该命令是用于查看磁盘分区情况&#xff0c;和分区管理的命令 命令格式&#xff1a;fdisk [选项] 设备文件名常用命令&#xff1a; -h&#xff1a;查看分区信息 fdisk系统常用命令&…...

FP7209: 用于紫外线消毒灯的 升压LED恒流驱动芯片

现在社会对于居家消毒也越发重视起来。而居家消毒除了75%浓度酒精及各类消毒液外&#xff0c;利用紫外线灯给衣物表面、房间消毒也是一种很好的选择。FP7209 定位于低压线性恒流驱动&#xff0c;精度高、外围电路简单、使用方便且可靠性高&#xff0c;更可广泛应用于商业照明系…...

【华为HCIP实战课程二】OSPF基础介绍和OSPF RID NBMA配置详解

一、OSPF多区域 自治系统(Autonomous System) 一个自治系统是指使用同一种路由协议交换路由信息的一组路由器 1、Area0为骨干区域 2、ABR--关乎3类LSA后续详解 ABR用来连接骨干区域Area0和非骨干区域,它与骨干区域之间既可以是物理连接,也可以是逻辑上的连接。 3、AS…...

网络编程(13)——单例模式

十三、day13 今天学习如何单例模式实现逻辑层的设计。内容包括服务器如何能捕获信号使其安全退出、单例模标类 1. 什么是单例模式&#xff1f; 单例模式&#xff08;Singleton&#xff09;&#xff0c;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点&…...

基于定制开发与2+1链动模式的商城小程序搭建策略

摘要&#xff1a;本文探讨商城小程序的搭建策略&#xff0c;对比自主组建团队和第三方开发两种方式&#xff0c;强调以第三方开发模式为主的优势。阐述在第三方开发模式下&#xff0c;结合定制开发和21链动模式&#xff0c;如何搭建一款有助于企业商业模式创新与智能商业升级的…...

银河麒麟,apt 安装软件报错640Unknown Status

今天把银行麒麟的机器恢复出厂了&#xff0c;然后apt install 安装极其不稳定&#xff0c;故障现象如下图所示&#xff1a; 错误提示里面有&#xff1a; 640 Unknown Status [IP: 106.116.184.122 80] E: 无法下载 http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/universe/f…...

python UNIT 3 选择与循环(2)

目录 1。循环的优化 经典优化分析&#xff1a; 未优化的代码&#xff1a; 细节分析&#xff1a; 优化后的代码&#xff1a; 优化的细节&#xff1a; 性能对比 优化的关键在于&#xff1a; 经典习题讲解&#xff1a;(紫色的解析请重点关注一下) 1。例三 个人代码解析…...

828华为云征文|部署在线文档应用程序 CodeX Docs

828华为云征文&#xff5c;部署在线文档应用程序 CodeX Docs 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 CodeX Docs3.1 CodeX Docs 介绍3.2 CodeX Docs 部署3.3 CodeX…...

Linux的多线程(线程的创建,退出,取消请求,取消处理例程,线程属性的设置)

进程:是系统分配资源的最小单位,系统会为每一个进程分配一块独立的虚拟内存空间 线程:是系统调度的最小单位,系统不会为线程分配新的内存空间,但是线程也参与系统调度 cpu把时间片分给每一个进程&#xff0c;进程中的时间片再切分分给每一个线程&#xff0c;所以线程也会得到…...

git 本地代码关联远程仓库并推送

初始化代码仓库 如果你的本地项目还没有使用Git管理&#xff0c;首先需要在项目根目录下初始化一个Git仓库 git init添加远程仓库地址 使用 git remote add 命令添加远程仓库 git remote add origin https://github.com/username/repository.git获取远程分支信息 使用 git…...

推荐一个可以把PDF样本册转换为翻页电子书的网站

​随着互联网的普及&#xff0c;越来越多的企业和个人开始意识到线上展览的重要性。如何将实体样本册转化为线上版本&#xff0c;让更多人了解和欣赏自己的产品与服务&#xff1f; 一、网站简介 这款PDF样本册免费上传网站名为“FLBOOK”&#xff0c;致力于为广大用户提供便捷…...

【Linux 23】线程池

文章目录 &#x1f308; 一、线程池的概念&#x1f308; 二、线程池的应用场景&#x1f308; 三、线程池的实现 &#x1f308; 一、线程池的概念 线程池 (thread pool) 是一种利用池化技术的线程使用模式。 虽然创建线程的代价比创建进程的要小很多&#xff0c;但小并不意味着…...

Rust SQLite 跨平台使用

引言 Rust因其内存安全性和高性能受到越来越多开发者的青睐。在许多项目中&#xff0c;SQLite作为一种轻量级的嵌入式数据库&#xff0c;与Rust的结合为跨平台应用程序提供了强大的支持。本文将详细探讨Rust如何实现跨平台功能&#xff0c;如何在不同平台上使用Rust库&#xf…...

docker运行arm64架构的镜像、不同平台镜像构建

背景 Docker 允许开发者将应用及其依赖打包成一个轻量级、可移植的容器&#xff0c;实现“一次构建&#xff0c;到处运行”的目标。然而&#xff0c;不同的操作系统和硬件架构对容器镜像有不同的要求。例如&#xff0c;Linux 和 Windows 系统有不同的文件系统和系统调用&#…...

vue基于Spring Boot框架的高校实验室预约管理系统

目录 毕设制作流程功能和技术介绍系统实现截图开发核心技术介绍&#xff1a;使用说明开发步骤编译运行代码执行流程核心代码部分展示可行性分析软件测试详细视频演示源码获取 毕设制作流程 &#xff08;1&#xff09;与指导老师确定系统主要功能&#xff1b; &#xff08;2&am…...

Linux中find命令详解

记录linux中find命令的详细用法。 文章目录 find命令简介基本语法常用选项-name-iname-type-size-mtime,-atime,-ctime-perm-user-group-delete-exec-printand or find --help find命令简介 find 是一个搜索目录树以查找一个文件或一组文件的程序。它遍历目录树并报告与用户规…...

无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享

你知道怎么下载无水印视频素材吗&#xff1f;今天小编就给大家推荐十个高清无水印视频素材下载的网站&#xff0c;如果你也是苦于下载高清无水印的短视频素材&#xff0c;赶紧来看看吧&#xff5e; 1. 稻虎网 首推的是稻虎网。这个网站简直就是短视频创作者的宝库。无论你需要…...

SpringBoot+Activiti7工作流入门实例

目录 文章目录 目录准备Activiti建模工具1、BPMN-js在线设计器1.1 安装1.2 使用说明1.3运行截图2、IDEA安装Activiti Designer插件2.1安装插件2.2 设置编码格式防止中文乱码2.3 截图简单工作流入门实例1. 新建Spring Boot工程2. 引入Activiti相关依赖添加版本属性指定仓库添加依…...

Azure OpenAI检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用

定制是关键&#xff01; 生成式人工智能对企业最有影响力的应用之一是创建自然语言界面&#xff0c;这些界面经过定制&#xff0c;可以使用特定领域和用例数据来提供更好、更准确的响应。这意味着回答有关特定领域的问题&#xff0c;例如银行、法律和医疗领域。 我们经常谈…...

ISP Pipeline

系列文章目录 文章目录 系列文章目录前言一、RAW域二、RGB域三、YUV域总结 前言 一、RAW域 黑电平校正&#xff08;BLC&#xff09;数字增益调整&#xff08;DGain&#xff09;自动白平衡&#xff08;AWB&#xff09;局部色调映射&#xff08;LTM&#xff09;坏点修复&#xf…...

< IDE编程环境配置>

IDE编程环境配置 LIB&#xff0c;DLL区别 我们在写项目时会链接&#xff08;调用&#xff09;第3方库&#xff0c;或者比如在vs的解决方案solution创建项目project时&#xff0c;不仅可以开发可执行程序exe&#xff08;可单独运行&#xff09;&#xff08;windows/控制台 应用…...

Golang | Leetcode Golang题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; func findDisappearedNumbers(nums []int) (ans []int) {n : len(nums)for _, v : range nums {v (v - 1) % nnums[v] n}for i, v : range nums {if v < n {ans append(ans, i1)}}return }...

【Spring Boot 入门三】Spring Boot与数据库集成 - 构建数据驱动的应用

一、引言 在之前的文章中&#xff0c;我们已经对Spring Boot有了初步的认识&#xff0c;了解了如何构建第一个Spring Boot应用&#xff0c;以及如何通过配置文件来掌控应用的设置。这些知识为我们进一步探索Spring Boot与数据库的集成奠定了坚实的基础。 数据库是现代应用的核…...

Web 服务器与动态脚本语言通信的接口协议有哪些

Web 服务器与动态脚本语言通信的接口协议主要有以下几种&#xff1a; 一、FastCGI&#xff08;Fast Common Gateway Interface&#xff09; 特点&#xff1a;使用持久进程处理请求&#xff0c;减少了进程启动和关闭的开销&#xff0c;提高了性能和可扩展性。多个请求可由同一个…...

ESXI识别服务器磁盘,虚拟机显示无效

ESXI识别服务器磁盘&#xff0c;虚拟机显示无效 系统意外断电识别不到磁盘的情况下可以管理-》硬件-》搜索磁盘名称&#xff0c;选择切换直通&#xff0c;则虚拟机正常。...

【C++】 vector 迭代器失效问题

【C】 vector 迭代器失效问题 一. 迭代器失效问题分析二. 对于vector可能会导致其迭代器失效的操作有&#xff1a;1. 会引起其底层空间改变的操作&#xff0c;都有可能是迭代器失效2. 指定位置元素的删除操作--erase3. Linux下&#xff0c;g编译器对迭代器失效的检测并不是非常…...

【Spring基础3】- Spring的入门程序

目录 3-1 Spring的下载3-2 Spring的 jar 包3-3 第一个 Spring程序第一步&#xff1a;添加spring context的依赖&#xff0c;pom.xml配置如下第二步&#xff1a;添加junit依赖第三步&#xff1a;定义bean&#xff1a;User第四步&#xff1a;编写spring的配置文件&#xff1a;bea…...

golang学习笔记22-面向对象(四):接口【重要】

本节也是GO核心部分&#xff0c;很重要。 注&#xff1a;由于导包语句已经在19讲&#xff08;笔记19&#xff1a;面向对象的引入&#xff09;展示过了&#xff0c;所以这里就不展示了。 一、定义与实现 (1)接口中可以定义一组方法&#xff0c;但不需要实现&#xff0c;不需要…...

SpringBoot技术栈:打造下一代网上租赁系统

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xf…...

Vue-Lecture1-Notes

渐进式框架 Vue 被称为“渐进式框架”&#xff0c;是因为它允许开发者根据项目的需求逐步引入和使用其功能&#xff0c;而不需要一次性使用整个框架。简单来说&#xff0c;Vue 提供了从简单到复杂的功能层次&#xff0c;可以灵活选择使用。 按需使用&#xff1a;Vue 的核心功能…...

煤矿建设工程质量监督总站网站/招代理最好的推广方式

纯属预告&#xff0c;不属广告&#xff1a;在windows server 2008这一块博客已经出了第一部“[为企业部署 Windows Server 2008 系列]”&#xff0c;总结如下&#xff1a;一、windows server 2008 部署条件&#xff1a;卍解[为企业部署Windows Server 2008系列一]二、完整安装模…...

行政机关 网站源码/google搜索关键词热度

一. windows 系统下搭建jenkins环境1.1 jenkins环境搭建和构建job流程图1.2 安装jdkJDK下载地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html选择对应系统的安装包下载&#xff1a;配置环境变量:新建JAVA_HOME系统环境…...

武汉 大型 网站建设/今日足球赛事推荐

在路由文件需要守卫的path后面加上meta {path: /home,component: home,meta:{requireAuth:true}}在main.js里面加上 //路由守卫 router.beforeEach((to, from, next) > {console.log(to);console.log(from);if (to.meta.requireAuth) { // 判断该路由是否需要登录权限if(J…...

什么网站可以做字体效果好/网络营销课程培训

注意:如需调用,客户端和服务端均需安装yar及msg可能碰到的问题:测试阶段局域网跨域解析注意ping一下域名,看看能不能ping通,一定要注意域名解析的问题注意路由器配置解析的时候域名先后的问题,特殊域名靠前,泛域名靠后1.安装及使用参照文档<>yar的安装和使用> 注:注意…...

杭州网站制作建设/百度竞价开户渠道

position: relative;是指元素 相对于未设置position:relative;状态下的位移;以content的左上角为坐标原点&#xff0c;黄色块在未position时&#xff0c;它的左上角相对于原点的坐标是(0,30) (你可以把两个色块的position:relative去掉看看);所以黄色在设置了position后&#x…...

世界杯直播视频直播/关键词优化精灵

本次课程主要解说了OA工作流相关内容&#xff0c;有些涉及到工作流的程序开发假设对工作流不熟悉也是有非常大难度&#xff0c;因此在这里进行了内容补充。1、工作流介绍转载于:https://www.cnblogs.com/yxwkf/p/5197819.html...