摩尔投票的一般性

前言

利用摩尔投票思想求解数组中出现次数在二分之一以上的元素的问题是具有特殊性的,本文将介绍更具有一般性的求解数组中出现次数在N分之一以上的元素的问题的摩尔投票思想。

三分之一

让我们从最简单的开始,如何求出数组中所有出现次数在n/3以上的元素?

参考题目:多数元素II

首先,2个大于1/3的数相加,其结果一定大于2/3,因此,这题里出现次数超过1/3的元素最多只有两种,下面进行优先进行存在两种满足条件的元素的分类讨论。

1,若存在两种元素满足条件

我们将这两种元素分别设为val1,val2,然后将数组分为三个集合,第一个是val1的集合A,第二个是val2的集合B,第三个是剩余元素的集合C。假设val1和val2都刚刚好占了1/3,那么我们从ABC中分别取出一个元素,然后将他们消除,循环往复,这个数组将被消除的干干净净。

事实是,集合A的元素数量大于1/3,集合B的元素数量也大于1/3,集合C的元素数量少于1/3,如果我们在ABC中各拿一个元素,循环消除,那么最先消除的集合一定是C。

因此,我们只需要每次在数组中拿出三个元素,保证其中一个是val1,一个是val2,另一个是集合C中的元素,然后让他们循环消除,最后剩下的元素一定就是我们要求的val1和val2。

事实是,我们并不知道集合ABC在数组中的位置,自然也不能准确地将他们拿出来,我们只能通过从前往后遍历的方式检测数组中的元素。

因此,设val1为数组的第一个元素,val2是数组从前往后数第一个和val1不同的元素,这样我们就拿到了val1和val2,只需要找出第三个元素,于是从前往后遍历,假设数组为nums,遍历使用的工具变量设为i,我们将这时的nums【i】分为三种情况:

  1. nums【i】与val1相等。
  2. nums【i】与val2相等。
  3. nums【i】与val1和val2都不相等。

如果是第一种和第二种情况,显然不满足我们之前推导的三个元素消除的条件,但是,我们也不能无视当前的nums【i】。

因此,设num1、num2,分别统计val1、val2出现的次数。这时如果出现第一种或第二种情况,就让对应的num+1,这样当对应的val被消除时,可以补上一个相同的数,同时让对应的num-1。

如果是第三种情况,让num1和num2都各自-1,一旦出现num等于0的情况,就代表当前对应的val已经被暂时消除干净了,需要马上更换一个val,同时将对应的num设为1。

这时有同学就提出一个问题,更换的val并不一定最终的答案啊?

是这样没错,我们最开始设置的val1和val2,也不一定是最终的答案,那我们为什么要这样做呢?

因为,我们需要一个集合C中的元素才能进行一次消除,而集合C中的元素数量根本连1/3都达不到,所以val1和val2被消除的次数,不会超过1/3。而集合A和B的元素数量都超过了1/3,所以当循环结束,集合A与B一定会有剩余。即使更换的val不一定是最终答案,后面“真正的”val也会将他们替换下来。

至于为什么,你可以这样理解,当并非最终答案的一个元素成为了val1,那么“真正的”val1就被归纳为集合C中的元素了,此时的集合C_plus,是原来的集合C与集合A之和,其数量绝对远远超过原来的集合C。况且,集合C中的元素并非全部相等,这个假冒的答案不一定有那么多的“同伙”来帮它撑num的数值,即使集合C元素全部相等,也依然没有真正的val1的数量多,因此,这个假冒的元素一定会被真正的元素挤下来。

这时又有同学要问了,如果在数组遍历结束的最后一刻,val从最终答案变成别的数了怎么办?

首先,如果在数组存在两种满足要求的元素,因为集合A和B的元素数量都比集合C的数量多,这种情况一定不会发生,如果发生了,那就一定是接下来要讲的,只存在一个或没有满足要求的元素的讨论。

2,若只存在一个或没有元素满足条件

我们假设val1满足条件,val2不满足条件,则上述情况的发生,是val2在遍历结束前被清楚干净了,因为它的数量并没有超过1/3,是有这种可能的,而val1因为数量超过了1/3,所以依然保留。

又或者两个val都不满足条件,都被替换成了别的数。

对于这种情况,不必太过苦恼,解决方法很简单,遍历一次就行了,统计这两个数出现的次数,此时的时间复杂度依然是O(n)。

如果题目告诉你满足条件的数一定有两个,你可以直接返回这两个数;如果题目告诉你满足条件的数只有一个,你可以比较这两个数的大小,返回较大的数即可。

代码实现

代码实现时有一个特殊情况,即数组全部元素都等于val2的初始值,val1被赋为该值,num1的长度变为数组长度,此时val1与val2相等。

这时我们要判断val1和val2是否相等,若相等,则返回其一即可。

int* majorityElement(int* nums, int numsSize, int* returnSize)
{
    int val1=0,val2=0;
    int num1=0,num2=0;
    int count1=0,count2=0;
    int i=0;
    for(i=0;i<numsSize;i++)
    {
        if(num1==0&&nums[i]!=val2)//if的顺序不能乱
        {
            val1=nums[i];
            num1=1;
        }
        else if(num2==0&&nums[i]!=val1)
        {
            val2=nums[i];
            num2=1;
        }
        else if(nums[i]==val1)
        {
            num1++;
        }
        else if(nums[i]==val2)
        {
            num2++;
        }
        else 
        {
            num1--;
            num2--;
        }
    }
    for(i=0;i<numsSize;i++)
    {
        if(nums[i]==val1)
        {
            count1++;
        }
        if(nums[i]==val2)
        {
            count2++;
        }
    }
    if(val1==val2)//是否为特殊情况
    {
        //返回其一
    }
    else
    {
        //返回count大于3/n的数
    }
}

四分之一

五分之一

六分之一

N分之一

下面我们进行一般性的讲解,三分之一的问题已经具有一定的一般性,最特殊的是二分之一问题,其差别主要在代码的实现上。

将N-1种元素设为val1、val2、val3...,每个val各不相同,分别设置对应的num存储出现次数,对每个val赋值时注意与其他val区分开,讨论特殊情况时,若遇相同,返回其一即可,详细请看代码:

int* majorityElement(int* nums, int numsSize, int* returnSize)
{
    int val1=0,val2=0;
    int num1=0,num2=0;
    int count1=0,count2=0;////这些变量要N-1个
    int i=0;
    for(i=0;i<numsSize;i++)
    {
        if(num1==0&&nums[i]!=val2)//要判断nums[i]与除val1外每个都不相同
        {
            val1=nums[i];
            num1=1;
        }
        else if(num2==0&&nums[i]!=val1)//上述同理
        {
            val2=nums[i];
            num2=1;
        }
        else if(nums[i]==val1)
        {
            num1++;
        }
        else if(nums[i]==val2)
        {
            num2++;
        }
        else 
        {
            num1--;
            num2--;
        }
    }
    for(i=0;i<numsSize;i++)
    {
        if(nums[i]==val1)
        {
            count1++;
        }
        if(nums[i]==val2)
        {
            count2++;
        }
    }
    if(val1==val2)//每有两个相同,返回其中之一
    {
        //返回满足条件的元素
    }
    else
    {
        //返回count大于n/N的数
    }
}

感谢你的阅读与耐心~

本文转载于网络 如有侵权请联系删除

相关文章

  • 用 Chezmoi 取回你的点文件

    在Linux中,点文件是隐藏的文本文件,从Bash、Git到i3或VSCode等更复杂的许多应用程序,都用它存储配置设置。这些文件大多数都放在~/.config目录中或用户主目录中。编辑这些文件使你可以自定义也许没有提供设置菜单的应用程序,并且它们可以跨设备甚至是跨其它Linux发行版移植。但是,整个Linux发烧友社区的讨论焦点是如何管理这些点文件以及如何共享它们。我们将展示一个名为Chezmoi的工具,该工具与其它工具略有不同。点文件管理的历史如果你在GitHub上搜索“dotfiles”,那么你将看到有超过10万个存储库在解决一个目标:将人们的点文件存储在可共享且可重复的领地中。但是,除了都在使用Git之外,它们存储文件的方式各有不同。虽然Git解决了代码管理问题,也将其转换为配置文件管理,但它并没有解决如何区分发行版、角色(例如家用计算机与工作计算机)、机密信息管理以及按设备配置的问题。因此,许多用户决定制定自己的解决方案,多年来,社区已经做出了许多成果。本文将简要介绍已有的一些解决方案。在孤立的环境中进行实验你想在封闭的环境中快速尝试以下解决方案吗?运行:$podmanrun

  • T族(技术研发)通道晋升答辩之完全解析

    点击上方蓝字,发现更多精彩导语晋升答辩之于职业生涯,如同吃饭之于人生,只要我们还活着就得进行下去,不管是为了前途,还是为了图钱。既然不得不做,那就应该让过程尽可能轻松愉快一点。为此,本文将结合自己与身边同学的相关经历,对通道答辩的全流程给出个人的所思所想,以供参考,若对大家有所裨益,则不胜荣幸。前言:阅读提示晋升答辩,是一个关于技术的非技术话题,本文将按照答辩活动的开展顺序,对答辩前,答辩中,答辩后的各环节展开逐层剖析,以期改善大家的阅读体验,并尽力提供一个贴近实操的行动指南(个人建议)。 主要包括:需求理解(是什么)、素材的收集(有什么)、ppt设计(讲什么)、现场把控(怎么讲)、心态调整(获得什么)、其他绝招、评语赏析(评委怎么看)、案例分析(知己知彼)等8个部分。其中ppt设计部分,则按照ppt在实际中的一般组织顺序进行逐页剖析,以便尽量能直接翻译为答辩所需材料。本文全部材料来自个人在内部分享的一张XMind脑图(原件见附件)。如果你赶着去见女朋友,请直接跳至文末取用即可;如果你是赶着去修复bug,请直接读取黑体即可;如果你是赶着去写bug,那建议你不妨细细品来;如果是前辈误点进

  • 什么是technical seo?

    我们在做谷歌seo的过程中,讨论最多的就是On-pageseo和Off-pageseo.但是谷歌seo中还有一个非常重要的方面称为technicalseo.那么什么是technicalseo呢?简单的说就是帮助谷歌更好的抓取和收录的你的网站。内容隐藏11网站速度22.移动友好33.网站架构44.结构化数据标记55.重复内容6结论7你还可能喜欢的文章:1网站速度甚至像亚马逊这样的巨头也发现,每100毫秒的页面加载时间都会导致销售额下降1%。今年早些时候,BrianDean表示,页面加载速度(在页面上完全显示内容所需的时间)是排名前十的SEO因素之一。他在他的杀手案例研究中描述了这一点,该研究分析了超过100万个谷歌搜索结果。2.移动友好移动友好是技术SEO的第二要素,它和网站速度一样重要。2015年4月,谷歌推出了被许多专家称为“Mobilegeddon”的算法更新。Mobilegeddon,源自Armageddon,对谷歌在搜索结果中排列网站的方式产生了巨大的影响。它终结了桌面时代,开启了移动搜索的新时代。3.网站架构以下技术SEO的超级重要的元素是形成一个有悟性的网站架构,也是SEO

  • Pyqt5 关于流式布局和滚动条的综合使用示例代码

    流式布局所谓流式布局指的是容器中的元素像流水一样,是可以浮动的,当元素一行或者一列占满的时候,它会自动流入到下一行或者下一列。pyqt5流式布局pyqt中采用流式布局的方法原理是,通过contentsMargins获取到子元素距离布局的上下左右宽度,然后我们将所有子元素进行遍历,如果它加上边距可以在一行放入的话,那么就放在一行内,如果不能,就放入到下一行,具体代码如下:m=self.contentsMargins() effective_rect=rect.adjusted(+m.left(),+m.top(),-m.right(),-m.bottom()) x=effective_rect.x() y=effective_rect.y() line_height=0 foriteminself._item_list: wid=item.widget() space_x=self.spacing() space_y=self.spacing() ifwidisnotNone: space_x+=wid.style().layoutSpacing( QSizePolicy.PushB

  • 如何理解python中数字列表

    数字列表和其他列表类似,但是有一些函数可以使数字列表的操作更高效。我们创建一个包含10个数字的列表,看看能做哪些工作吧。#Printoutthefirsttennumbers. numbers=[1,2,3,4,5,6,7,8,9,10] fornumberinnumbers: print(number)复制range()函数普通的列表创建方式创建10个数是可以的,但是如果想创建大量的数字,这种方法就不合适了。range()函数就是帮助我们生成大量数字的。如下所示:#printthefirsttennumber fornumberinrange(1,11): print(number)复制range()函数的参数中包含开始数字和结束数字。得到的数字列表中包含开始数字但不包含结束数字。同时你也可以添加一个step参数,告诉range()函数取数的间隔是多大。如下所示:#Printthefirsttenoddnumbers. fornumberinrange(1,21,2): print(number)复制如果你想让range()函数获得的数字转换为列表,可以使用list()函数转换。如下

  • 区块链支付系统应用技术开发解决方案

    区块链支付系统应用技术开发解决方案随着区块链技术发展,各个行业都想使用区块链技术解决行业困境。但区块链技术要求较高。区块链应用技术开发中对工程师区块链技术要求比较高,如果没有多年开发经验的工程师来做区块链系统,特别是区块链系统安全这块。常见的区块链资产交易平台,一直以来频繁有平台被攻损失惨重。不止是交易所这块,现下很多人把区块链技术投入到支付行业。使用数字货币应用支付行业,区块链支付系统的安全问题,是必须要考虑的部分,是否有强大的区块链技术团队支持,可以保证你的系统安全,区块链支付系统应用可以实现支付难题。从开始的区块链钱包到后面交易所相关应用,近年来源中瑞自主研发的区块链支付系统的整体解决方案,需要区块链支付系统?无需担心技术难题,可加ruiecjo微来了解区块链支付技术。区块链有独特的点对点传输、共识机制、点对点传输、共识机制等技术优势。源中瑞将支付行内应用系统与区块链技术整合,实现了区块链与支付业务应用的无缝衔接。突破传统支付的网络和底层技术,使用区块链智能合约实现独特的支付业务逻辑,并支持后续业务的扩展、升级。使用区块链技术,其中的分布式核算,既可降低交易成本和交易效率提升,并

  • 终端I/O---ttyS3: 3 inp

    没系统地学过终端I/O的控制,只是按照别人的要求配置了一下背景:gps插在串口3上#include<stdio.h> #include"time.h" #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #include<termios.h> intmain() {   structtermiosopt;   intfd=-1;   intnread;   charbuf[1024];   fd=open("/dev/ttyS3",O_RDONLY    |O_NONBLOCK); if(fd==-1)    {    printf("open/dev/ttyS3error\n");    }   tcgetattr(fd,&opt);             //获取终端属性到opt   tcflush(fd,TCIOFLUSH);             //同时刷新收到的数据但是

  • 全国二级C知识点总结6-结构体、链表、共用体

    本课重要知识点:1.知识点:用typedef定义类型l功能:为已有数据类型取别名l类型定义形式:typedef旧类型名新类型名;(例如:typedefdoubleD;)注意:(1)定义的新名只是原名的一个别名,并不是建立一个新的数据类型;(2)用新名和原名定义的对象具有相同的性质和效果。  例1:(2010-09-39)若有以下语句typedefstructS  {intg;charh;}T;  以下叙述中正确的是(B)A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是structS类型的变量【解析】此题中用typedef说明的新类型名T,与中间部分的结构体类型具有相同的性质和效果3.知识点:结构体变量的定义具体形式实例说明形式1struct结构体名{类型标识符成员名;类型标识符成员名;…………….};struct结构体名变量名表列;structstudent{charnum[20];charname[20];charsex;floatscore[4];};structstudentstu1,stu2;特点:先定义类型,后定义变量注意:定义变量时,必

  • MWC 2018前瞻丨全面屏已成主打,5G浪潮亦将来临

    今日,MWC2018在西班牙巴塞罗那正式开幕,MWC历来是各大科技厂商展示最新技术的舞台,今年也不例外。三星、索尼、诺基亚以及国内的华为、中兴等纷纷带来了自家的最新产品。接下来,我们看下科技巨头们都为我们带来了怎样的惊喜吧。 全面屏已成智能机主流,AR及AI将随手机崛起世界移动通信大会,各厂商最新推出的手机自然受到了最多的关注。我们先来看看智能手机们都有何亮眼之处。三星S9系列:可变光圈成最大亮点,同时加入AR功能首先,全球顶级智能手机厂商三星,为我们带来了期待已久的S9系列。据悉,S9系列摄像头采用了可变光圈的设计(F1.5~F2.4),这对于背景虚化的人像拍摄或者风景拍摄来说,都将很有帮助。其次,S9系列继续采用全视曲面屏(InfinityDisplay),并且屏占比提高到了90%左右。S9系列其余的配置,也都达到了顶尖水平。此外,值得注意的是,S9还推出了一种与苹果Animoji功能类似的3D表情功能。目前,其一共包含18种3DEmoji表情,并且能够根据人的面部表情进行实时追踪。另外,S9系列还结合了AI助手Bixby,可以利用摄像头对文字内容进行即时外文翻译、货币汇率计算、化

  • 热更新技术该如何选型

    热更新用通俗的讲就是软件不通过应用商店的软件版本更新审核,直接通过应用自行下载的软件数据更新的行为。在用户下载安装App之后,打开App时遇到的即时更新,是一种各大手游等众多App常用的更新方式。大家熟知的王者荣耀,经常就会采用热更新的方式让用户直接在App内下载数据包得到更新,避免了用户耗费时间和流量下载应用。热更新的技术价值站在App开发者角度的“热”是指在不发版的情况来实现更新,修复BUG和发布功能,让开发者得以绕开应用商店的审核机制,避免长时间的审核等待以及多次被拒造成的成本。在热更新出现之前,通过反射注解、反射调用和反射注入等方式已经可以实现类的动态加载了。热更新的实质就是替换,需要替换运行时新的类和资源文件的加载,就可以认为是热操作了。热更新的技术选型其实各家互联网巨头都有自己的热更新技术,目前比较有代表性的技术可以分为两类:类加载、底层替换。1、类加载只需要把Bug修复涉及到的类文件插入到数组的最前面去,就可以达到热修复的效果。类加载方案的时效性差,需要重新冷启动才能见效,但修复范国广,限制少。代表的有Qzone超级补丁、微信Tinker2、底层替换底层替换是一种nati

  • js中~~和^=

    直接看代码 ~~false===0 ~~true===1 ~~undefined===0 ~~!undefined===1 ~~null===0 ~~!null===1   ~~""===0 ~~!""===1 复制 ~是按位取反的意思,计算机里面处理二进制数据时候的非,~~就是再转回来,利用两个按位取反的符号,进行类型的转换,转换成数字符号。 而在计算机里面的^=是异或运算,相同取0,不同取1,两个整数交换可以如下 vara=10,b=20; a^=b;b^=a;a^=b;  复制 将a=a^=b;b=b^=a;a=a^=b;在js中类似于: vara=1,b=2; a=a+b; b=a-b; a=a-b; a//2 b//1 复制 ES6中的数组的解构赋值,很方便的进行两个变量的交换 vara=2,b=3; [a,b,]=[b,a,] a//3 b//2 复制   

  • linux

    awk 对数据分析的 sed 编辑文件的 crontab  用于设置周期性被执行的指令  nohup    在注销后使用  nohup  命令运行后台中的程序。

  • 将Python脚本打包成可执行文件——转载

    Python是一个脚本语言,被解释器解释执行。它的发布方式:      py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)      pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。      可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,...)。 FreezingYourCode 各种打包工具的对比如下(来自文章FreezingYourCode):

  • 剑指offer49 丑数

    1.正常就是数一个个遍历然后看哪个是丑数? //面试题49:丑数 //题目:我们把只包含因子2、3和5的数称作丑数(UglyNumber)。求按从小到 //大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。 //习惯上我们把1当做第一个丑数。 #include<iostream> //====================算法1的代码==================== //不用额外的内存,直接计算 boolIsUgly(intnumber)//判断是不是丑数 { while(number%2==0) number/=2; while(number%3==0) number/=3; while(number%5==0) number/=5; return(number==1)?true:false; } intGetUglyNumber_Solution1(intindex) { if(index<=0) return0; intnumber=0; intuglyFound=0; while(uglyFound<in

  • Python pyecharts绘制折线图

      一、pyecharts绘制折线图line.add()方法简介 line.add()方法简介add(name,x_axis,y_axis,is_symbol_show=True,is_smooth=false,is_stack=false,is_step=false,**kwargs)name->图例名称x_axis->listx坐标轴数据y_axis->listy坐标轴数据is_symbol_show=True是否显示标记图形默认为trueis_smooth是否平滑曲线显示默认为falseis_stack数据堆叠,同个类目轴上系列配置相同的stack值可以堆叠放置。默认为false。is_step是否为阶梯线图。可以设置为true显示成阶梯线图。默认为false。 二、绘制折线图按平滑曲线和阶梯线图显示 attr=["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"] v1=[5,20,36,10,10,100] v2=[55,60,16,20,15,80] line=Line("折线图示例") line.add("商家A",attr,v

  • 制作健康机制

    将自行车与健康进行挂钩    在爬虫阶段,对动态加载的东西无法实现爬虫效果   是多疑还是去相信 谎言背后的忠心 或许是自己太执迷 命题游戏 沿着他的脚步呼吸开始变得急促 就算看清了面目设下埋伏 真相却居无定处 IswearI'llneverbewiththedevil 用尽一生孤独没有退路的路 你看不到我 眉眼焦灼却不明下落 命运的轮轴 伺机而动来不及闪躲 沿着他的脚步呼吸开始变得急促 就算看清了面目设下埋伏 真相却居无定处 IswearI'llneverbewiththedevil 用尽一生孤独没有退路的路 你看不到我 眉眼焦灼却不明下落 命运的轮轴 伺机而动来不及闪躲 你看不到我 眉眼焦灼却不明下落 命运的轮轴 伺机而动来不及闪躲 黑夜和白昼 你争我夺真相被蛊惑 心从不退缩 这天堂荒漠留给孤独的猎手

  • 路由器配置文件记录

    中继 etcconfigwireless root@newifi:/#cat/etc/config/wireless configwifi-device'ra0' optiontype'ralink' optionmode'9' optionchannel'0' optiontxpower'100' optionht'40' optionhidessid'0' optionmacpolicy'0' optionmaclist'' configwifi-iface optiondevice'ra0' optionifname'ra0' optionnetwork'lan' optionmode'ap' optionwps'pbc' optionssid'newifi_768C' optionencryption'psk+psk2' optionkey'99999999' optioncliname'apcli0' configwds-iface'wds' optiondevice'apcli0' optiondefaultkeyid'1' optionenable'1' optio

  • CPP读取dbf文件

    prop系统导出的交收数据为dbf文件格式,linux需要能够解析该格式文件, 找到一个开源库shapelib可以实现该功能; 1、下载库源码 http://download.osgeo.org/shapelib/ 选择shapelib-1.4.0.zip这个版本; 2、解压下载的源码,编译, [fm@vm178dbf_demo]$./configure--prefix=/home/fm/dbf_demo/shapelib 此时会在源码目录生成MakeFile文件,注意修改以下地方 目的是不让编译contrib目录下面的例子代码,编译会报错; 执行make&makeinstall 源码编译安装完成; 3、编写测试例子代码: [fm@vm178dbf_demo]$g++-otesttest.cpp-I./shapelib/include/-L./shapelib/lib/-lshp test.cpp代码如下: #include<stdlib.h>#include<string.h>#include"shapefil.h"intmain(

  • docker上传自己的镜像

    https://blog.csdn.net/boonya/article/details/74906927 需要注意的就是命名规范 dockerpush注册用户名/镜像名   tag命令修改为规范的镜像:   dockertagboonya/tomcat-allow-remoteboonyadocker/tomcat-allow-remote 复制       

  • linux磁盘分区、格式化和挂载

    这篇文档主要是记录新加磁盘常用的操作。时间久了就会变得陌生。还是需要记录起来。   1.查看磁盘空间基本使用情况 [root@htl-test01~]#df-hFilesystemSizeUsedAvailUse%Mountedondevtmpfs3.7G03.7G0%/devtmpfs3.7G03.7G0%/dev/shmtmpfs3.7G504K3.7G1%/runtmpfs3.7G03.7G0%/sys/fs/cgroup/dev/vda140G2.3G36G7%/tmpfs747M0747M0%/run/user/0 2.查看磁盘挂载配置情况 [root@htl-test01~]#cat/etc/fstab ##/etc/fstab#CreatedbyanacondaonMonSep1407:14:222020##Accessiblefilesystems,byreference,aremaintainedunder'/dev/disk'#Seemanpagesfstab(5),findfs(8),mount(8)and/orblkid(8)formoreinfo#U

  • [web设计]带有方向感应的hover effect

    SeethePenbdxLQabyjeremylee(@lijie33402)onCodePen. codepen不知道怎么嵌入到cnblogs..待编辑 参考资料 参考博客

相关推荐

推荐阅读