精华内容
下载资源
问答
  • 交换表的状态怎么写
    千次阅读
    2019-11-24 20:53:16

    Swap意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出的一个分区。Swap分区在系统的物理内存(这里应该是运行内存)不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

    查看swap的使用情况

    free 命令主要是用来査看内存和 swap 分区的使用情况的

    输入命令

    [root@VM_0_16_centos ~]# free -m
    

    返回结果

    
                  total        used        free      shared  buff/cache   available
    Mem:            991          84         600           0         306         763
    Swap:             0           0           0
    [root@VM_0_16_centos ~]# 
    
    

    参数解析

    参数说明
    total总内存
    used已使用内存
    free空闲的内存
    shared共享内存
    buff/cache是指缓冲内存数/缓存内存数,单位是KB
    available实际可用的内存

    共享内存(Shared)

    在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存

    缓冲(buffers)

    磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写入磁盘),也可以通过sync命令手动清空缓冲。

    缓存(cached)

    把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读的内容不断往后排,直至从中删除。

    缓冲和缓存的区别

    简单来讲,cached 是给读取数据时加速的,buffers 是给写入数据加速的。

    cached是指把读取出来的数据保存在内存中,当再次读取时,不用读取硬盘而直接从内存中读取,加速了数据的读取过程;

    buffers是指在写入数据时,先把分散的写入操作保存到内存中,当达到一定程度后再集中写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程。

    临时性的调整swap

    一种简单粗暴的方法是设置swap空间为0。但是swap在系统崩溃的时候提供了安全机制,并且会尝试阻止系统因为内存溢出而杀掉进程。所以有些情况可能需要开启swap。这个时候我们需要调整vm.swappiness来尝试降低内存交换的积极性

    关闭swap

    禁用swap

    sudo swapoff -a
    

    启用swap

    sudo swapon -a
    

    查看交换分区状态

    sudo free -m
    

    调整swappiness

    swappiness接受0-100的参数。swappinessswappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间。
    swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

    查询swappiness值

    swappiness的默认值根据系统以及版本不同结果不一样(本人的腾讯云为30、阿里云为0)

    [root@VM_0_16_centos ~]# cat /proc/sys/vm/swappiness
    30
    

    设置swappiness值

    用下面命令可以临时的把swappiness值修改为Elasticsearch文档要说明的1

    [root@VM_0_16_centos ~]# sysctl vm.swappiness=1
    vm.swappiness = 1
    [root@VM_0_16_centos ~]# cat /proc/sys/vm/swappiness
    1
    

    上面对swap的操作并非永久的,在服务器重启之后配置将被还原,假如需要永久性的修改其参数需要用下面的方式

    永久性的设置swap

    永久性禁用swap

    修改/etc/fstab文件

    vim /etc/fstab
    

    注释掉包含单词swap的所有行

    调整swappiness

    执行命令编辑sysctl.conf文件

    vim /etc/sysctl.conf 
    

    在此参数修改为你需要的数据

    vm.swappiness = 10
    

    注意此时查询的时候还是之前的配置

    [root@VM_0_16_centos ~]# cat /proc/sys/vm/swappiness
    1
    

    需要重启服务或者是使用下面的命令使之生效

    sysctl -p
    

    个人水平有限,上面的内容可能存在没有描述清楚或者错误的地方,假如开发同学发现了,请及时告知,我会第一时间修改相关内容。假如我的这篇内容对你有任何帮助的话,麻烦给我点一个赞。你的点赞就是我前进的动力。

    更多相关内容
  • mysql则是例外,其单更新是自左到右依次完成,即先完成a=b,然后在完成b=a(此时a=b),所以执行结果变成ab列都是b,然后多更新则又不尊从该更新法则。本文讨论如何用sql实现类似编程语言引入tmp变量从而实现变量...

      绝大多数数据库,在执行sql update语句时,update t set a = b, b=a 便可实现ab列值互换,赋值表达式右侧的值取的都是原始值。mysql则是例外,其单表更新是自左到右依次完成,即先完成a=b,然后在完成b=a(此时a=b),所以执行结果变成ab列都是b,然后多表更新则又不尊从该更新法则。本文讨论如何用sql实现类似编程语言引入tmp变量从而实现变量互换及mysql多表更新注意事项。

    1、参考手册对于update的说明

    mysql5.7参考手册,在第14章 14.2.11 UPDATE Syntax,是这样描述mysql 列更新顺序的,原文如下:
    If you access a column from the table to be updated in an expression, UPDATE uses the current value of the column. For example, the following statement sets col1 to one more than its current value:

     UPDATE t1 SET col1 = col1 + 1
    

    The second assignment in the following statement sets col2 to the current (updated) col1 value, not the original col1 value. The result is that col1 and col2 have the same value. This behavior differs from standard SQL.

    UPDATE t1 SET col1 = col1 + 1, col2 = col1;
    

    Single-table UPDATE assignments are generally evaluated from left to right. For multiple-table updates, there is no guarantee that assignments are carried out in any particular order.
    说明:
    1)单表更新赋值语句是,自左向右执行的,所以上例的col2 = col1(变化后的值,即col1 +1)
    2)多表更新,赋值语句不确保任何给定的顺序执行,可能是原值,也可能是新值

    2、mysql 两列互换sql实现

    编程语言中,实现两个变量互换很简单:引入临时变量tmp,tmp = a,a = b,b = tmp即可实现ab互换,但是sql中没有临时变量,又如何实现变量互换呢?解决方案还是使用临时变量(只不过临时变量是某数据列的值,然后后面再覆盖该数据列的值),假设有a b列,a = 100,b = 1,实现a b互换,我们可以使用通用手法:
    a = a + b, 101
    b = a - b, 100
    a = a - b, 1
    至此,a = 1, b = 100,实现ab值互换,sql如下:

    update t set a = a + b, b = a - b, a = a - b
    

    3、mysql多表更新注意事项

    两张表:pur_po_bill_detail(采购单细表),wm_sh_bill_detail(收货单细表),采购后,先根据采购单细表创建收货单,然后根据收货单入库。
    pur_po_bill_detail(采购单细表)

    CREATE TABLE `pur_po_bill_detail` (
      `sid` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `bill_id` bigint(64) DEFAULT NULL COMMENT 'po单号id',
      `bill_no` varchar(100) DEFAULT NULL COMMENT '订单号',
      `pw_count` decimal(20,4) DEFAULT NULL COMMENT '已入库数量',
      `th_count` decimal(20,4) DEFAULT NULL COMMENT '不合格数量',
      `bill_status` varchar(30) DEFAULT NULL COMMENT '状态',
      ...
      PRIMARY KEY (`sid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='采购订单细表'
    

    wm_sh_bill_detail(收货单细表)

    CREATE TABLE `wm_sh_bill_detail` (
      `sid` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `bill_id` bigint(64) DEFAULT NULL COMMENT '收货单id',
      `bill_no` varchar(30) DEFAULT NULL,
      `ref_number` varchar(30) DEFAULT NULL '采购单号',
      `ref_detail_sid` bigint(20) DEFAULT NULL '采购单行项目sid',
      `sh_count` decimal(20,4) DEFAULT NULL,
      `in_count` decimal(20,4) DEFAULT NULL,
      `left_count` decimal(20,4) DEFAULT NULL,
      ...
       PRIMARY KEY (`sid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='收货单细表'
    

    下述sql是在收货单入库时反写采购单细表入库数量、状态。
    当采购单行项目:入库数量 + 不合格退货数量 >= 订单数量,状态变成已入库

    UPDATE pur_po_bill_detail t0, wm_sh_bill_detail t1
    set t0.pw_count = coalesce(t0.pw_count,0) + t1.in_count, 
    t0.th_count = coalesce(t0.th_count,0) + coalesce(t1.left_count,0),
    t0.bill_status = case when t0.pw_count + t0.th_count >= t0.goods_count then '已入库' else t0.bill_status end
    WHERE t0.sid = t1.ref_detail_sid and t1.bill_no = 'SH20180001';
    

    sql执行结果失败,系mysql多表更新,在case判断时,t0.pw_count, t0.th_count取到的是原值。所以mysql多表更新需要注意:

    • 赋值语句、case语句尽量避免依赖引用,如本案case使用了赋值语句pw_count,th_count列,所以判断就出问题啦;
    • 可通过update语句拆分来实现多表复杂更新目标。

    上述update语句拆分,先更新数量,然后更新状态:

    UPDATE pur_po_bill_detail t0, wm_sh_bill_detail t1
    set t0.pw_count = coalesce(t0.pw_count,0) + t1.in_count, 
    t0.th_count = coalesce(t0.th_count,0) + coalesce(t1.left_count,0)
    WHERE t0.sid = t1.ref_detail_sid and t1.bill_no = 'SH20180001';
    
    UPDATE pur_po_bill_detail t0, wm_sh_bill_detail t1
    set t0.bill_status = case when t0.pw_count + t0.th_count >= t0.goods_count then '已入库' else t0.bill_status end
    WHERE t0.sid = t1.ref_detail_sid and t1.bill_no = 'SH20180001';
    
    展开全文
  • Java 交换两个变量的数值实现方法

    千次阅读 2021-03-23 11:57:49
    所以,Java方法能够实现改变对象参数状态的原因是:方法得到的是对象引用的拷贝,对象引用及方法中的其他拷贝同时引用同一个对象。 现在,总结一下Java的方法参数使用: 方法不能修改一个基本数据类型的参数; 方法...

    一、参数传递方法

    为解决标题问题,首先介绍参数传递方法。目前各类程序设计语言的参数传递方法主要有三种:

    1.按值传递

    2.按引用传递

    3.按指针传递

    其中按值传递表示方法(函数)接收的是调用者提供的变量的拷贝,不改变参数的值;按引用传递表示方法(函数)接收的调用者提供的变量地址;按指针传递表示方法(函数)接收的是调用者提供的指针的拷贝,不改变指针的值和地址,但可以改变指针所指向的地址。

    二、Java参数传递方法

    Java提供的参数传递方法,很遗憾只有一种,按值传递。也就是说,方法得到的是所有参数值的一个拷贝,方法不能修改传递给它的参数变量的内容。

    Java的方法参数类型可以分为两类:

    1.基本数据类型

    2.对象引用

    有过Java开发经验的朋友都知道,对于基本数据类型,Java方法无法改变变量内容。那对自定义类的对象引用是否也不能修改内容呢?可以通过一个简单的例子说明。代码如下:

    ?

    ?

    上面代码执行输出结果如下:

    c84ce32410054e5fc234381ab5ec4c6f.png

    从结果中可以看出,change方法能够修改对象的状态。也就是说Java方法可以改变对象的参数状态。那这是否意味着Java方法对于自定义的数据类型(自定义类)的参数采用的是引用传递?为了确认结果可以编写个简单例子,所有的自定义类仍然是上面的MyClass。代码如下:

    ?

    执行结果如下:

    915cc16dbed74543331602ab844d3c21.png

    通过上面结果可以发现,Java方法对自定义类的参数传递使用的仍然是值传递,不是引用传递。那为什么Java方法能够修改对象状态呢?

    可以考虑调用change方法的具体执行过程,从中寻找答案。

    调用change方法事,具体的执行过程是:

    myClass被初始化成实参a的copy,这是对对象的引用。

    setNum方法应用于这个对象的引用。myClass和a同时引用的那个MyClass对象的num变为了100。

    方法结束后,参数变量myClass不再使用。而a继续引用那个num变为100的MyClass对象。如下图所示。

    52079386406d9007768cb6339ba5d035.png

    所以,Java方法能够实现改变对象参数状态的原因是:方法得到的是对象引用的拷贝,对象引用及方法中的其他拷贝同时引用同一个对象。

    现在,总结一下Java的方法参数使用:

    方法不能修改一个基本数据类型的参数;

    方法可以改变对象参数的状态;

    方法不能让对象参数引用一个新的对象(原因参考调用change方法时的具体执行过程)。

    三、交换变量的数值

    既然已经知其所以然,那么知其然就不是难事了。直接贴出我的个人代码:

    ?

    执行结果如下:

    5a5eaa0dc03ce2b6562f8a99193670b1.png

    交换有效。

    参考文献:Java核心技术 卷Ⅰ。

    以上这篇Java 交换两个变量的数值实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

    展开全文
  • 路由与交换技术笔记(eNSP)

    千次阅读 多人点赞 2021-01-16 10:50:23
    本学期学习了路由与交换技术,因此将其中一些重点内容记录下来,代码部分多为伪代码,只标记了重点步骤,一些进入接口、接口类型等基本操作多已省略 一、交换机 1. 双工模式 双工模式是指接口传输数据的方向性。...

    本学期学习了路由与交换技术,因此将其中一些重点内容记录下来,代码部分多为伪代码,只标记了重点步骤,一些进入接口、接口类型等基本操作多已省略
    在学习时避免不了计算机网络的知识,此部分知识可看↓
    计算机网络详细笔记【湖科大教书匠,内含B站链接】

    一、交换机

    1. 双工模式

    双工模式是指接口传输数据的方向性。接口在全双工模式下,表示可以同时在收发两个方向上传输和处理数据,若是半双工则同一时间只能收收或发。华为交换机默认启用自动协商机制设置模式,因此若我们要强制设置的话需要执行以下语句

    undo negotiation auto        //关闭该接口的自动协商功能
    speed 10                //该接口速率为10Mbit/s
    duplex half      //设置为半双工模式,全双工则把half变为full
    

    2. MAC地址

    交换机上存储映射关系的逻辑表叫作MAC地址表【告诉交换机数据怎么走

    display max-address      //查看当前交换机的MAC地址表
    //静态配置的条目不会老化且优先级高于动态学习得来的
    //配置静态地址,意思为要去MAC地址要通过接口A,在vlan1(默认就是vlan1)下有效
    mac-address static MAC地址 接口A vlan 1
    display mac-address aging-time      //查看当前交换机的动态条目老化时间
    mac-address aging-time (秒数)     //设置老化时间,如果为0表示禁用老化功能
    

    3. VLAN

    VLANVirtual LAN虚拟局域网)的根本作用就是让交换机具备分隔广播域的能力
    数据帧类比为乘客;VLAN是公交车。VLAN技术通过为数据打上标签从而让交换机知道这是属于哪一辆公交车的乘客,即使公交车A公交车B的目的地相同,但是A的乘客也是不能搭B车的。因此划分VLAN后洪泛也只是洪泛同一个VLAN的地址

    //以下语句在系统视图下进行
    vlan 2    //在交换机创建VLAN2并进入此VLAN配置视图
    vlan batch 10 20   //创建VLAN10和VLAN20
    vlan batch 10 to 20  //创建VLAN10至20
    display vlan 数字   //查看当前交换机所有VLAN,若有数字则看对应VLAN信息
    display vlan 10 verbose  //查看VLAN10的详细信息    
    只有设置了接口类型后才能知道这个接口与哪个VLAN绑定,通过接口的允许通过的VLAN进行绑定
    

    若需要具体例子可看→VLAN原理与应用【eNSP实现】
    若需要具体例子可看→交换机Access端口,Trunk端口与Hybrid的区别与应用

    Access接口

    发送出来的数据会去除VLAN标签;进入的数据会打上VLAN标签。常用于终端设备与交换机之间
    终端接收到的数据是最终数据,不能有标签。终端没有为数据打标签的功能,因此需要帮助打标签便于在VLAN中转发

    注意:交换机与路由器连接的接口也需要使用access接口。这是因为路由器中的消息也不带VLAN标签,就像终端一样,保证路由器的数据能够进入交换机领域,数据由路由器进入交换机是会被打上默认标签,接着猜按照交换机间VLAN的规则行走。简单理解就是把路由器当作终端

    //在系统视图或以上的视图下执行
    interface e0/0/1     	 //进入e/0/1接口
    //在接口视图下执行
    port link-type access    //设置接口类型为access
    port default vlan 5    //只允许VLAN5的数据进入或发送
    

    Trunk接口

    发送出去的数据有VLAN标签(为了让对方知道数据划分);接收的数据也有VLAN标签(知道对方数据划分)。常用于交换机与交换机之间
    交换机与交换机之间会有多个VLAN流量,因此要正确转发需要打上标签进行发送

    //在接口视图下执行
    port trunk pvid vlan 4 //将Trunk的PVID改为4
    port link-type trunk    //设置接口类型为trunk
    port trunk allow-pass vlan 5    //只允许VLAN5的数据或者不带VID的数据进入或发送
    

    Hybrid接口

    既有Access端口的特点,也有Trunk端口的特点
    根据需要对某些接口设置带标签(需要Trunk的地方),对某些设置不用带标签(需要Access的地方)

    //在接口视图下执行
    port link-type hybrid     //将接口类型设置为Hybrid
    //接口接送Vlan10和Vlan20的数据时带上各自标签,其中vlan也可以用to语句或者valn all等
    port hybrid tagged vlan 10 20  
    //接口接送所有VLAN数据时都不带标签
    port hybrid untagged vlan all  
    //当用了untagged后意味着去标签,但是终端设备发送数据时又没有打标签的功能,因此需要设置端口的pvid,即当设置了去标签时,从这个端口出去的数据都会打上设置好的pvid标签
    port hybrid pvid vlan 5  //设置此端口的默认VLAN为Vlan5
    

    GVRP

    全称为通用属性注册协议。管理员手动配置的VLAN为"静态VLAN",通过GVRP自动学习到的VLAN为"动态VLAN"
    GVRP不仅需要在端口(必须是Trunk)上进行配置,也需要在交换机全局上进行配置。
    GVRP是单向协议,只有进入的方向才会动态学习,如下图

    若需要具体例子可看→GVRP基础配置【eNSP实现】

    //在系统视图下执行
    gvrp     
    //保证所有使用GVRP的接口都是trunk接口
    //在接口视图下执行,每个需要通告消息的接口都需要配置
    gvrp    
    
    image-20201217215247443

    配置完所有接口后并启动GVRP协议后
    LSW1创建一个VLAN10,则LSW2G1会动态学习到VLAN10G2不会学习到;LSW3G1会学习到。
    此时若想要G2学习到VLAN,可以在LSW3上创建VLAN10,则箭头方向会反过来,G2就可以学习到了。

    4. 生成树协议STP

    由于通信只靠一条线路很容易出现故障(一条路不通就没得走了)。因此在实际线路中会有很多环路,但是环路一多很容易产生广播风暴(交换机互相转发造成死锁,MAC地址表不断更新),为了解决这个问题,出现了生成树协议。
    其原理是在拥有冗余链路的交换环境中,既保证每个节点可达,又能打破网络中的逻辑环路。
    其中一个有效的方法是通过判断当前端口是否适合转发数据(会不会环路),若不合适则阻塞

    若需要具体例子可看→生成树协议STP的原理与应用【eNSP实现】

    若需要具体例子可看→STP计时器的理解与应用【eNSP实现】

    功能

    • 消除环路STP可以通过阻塞冗余端口,保证交换网络无环且连通
    • 链路备份:当正在转发数据的链路因故障而断开时,STP会马上检测到这一情况,并根据需要自动开启某些处于阻塞状态的冗余端口,以迅速恢复交换网络的连通性

    具体实现

    执行选举、赢得选举的端口成为转发端口,剩下的端口自然成为阻塞端口

    • 根网桥(根交换机):这是交换网络中的一台交换机,它将成为STP树的树根
    • 根端口:这是交换网络中的一些端口,负责转发数据
    • 指定端口:这是交换网络中的一些端口,负责转发数据
    • 预备端口:这是交换网络中的一些端口,处于阻塞状态,不能转发数据。预备端口并不是选举出来的,而是在所有选举中全部落选的端口
    选举角色参选者选举范围
    根网桥交换机整个交换网络
    根端口端口每台交换机
    指定端口端口每个网段
    • 整个交换网络:一整个二层广播域
    • 每台交换机:以自身为单位,在多个端口中选举
    • 每个网段:指以两个或两个以上的网卡为边界的一段物理链路
    image-20201218111205756
    1. 选举根网桥:每个STP网络中都有且只有一台根网桥,作为根网桥的这台交换机就是STP所构建的生成树的根
    2. 选举根端口:非根交换机会在自己的所有端口之间,选出距离根网桥最近的端口作为根端口
    3. 选举指定端口:在直连的两个端口之间选择出一个距离根网桥最近的端口为指定端口
    4. 阻塞剩余端口:选出根端口和指定端口后,STP会把那些既不是根端口,也不是指定端口的其他所有端口置于阻塞状态

    桥协议数据单元BPDU

    • 配置BPDU:在初始形成STP树的过程中,各STP交换机都会周期性地(默认为2秒)主动产生并发送Configuration BPDU配置BPDU)。在STP树形成后的稳定期,只有根网桥才会周期性地产生并发送Configuration BPDU;相应地,非根交换机会从自己的根端口周期性地接收到Configuration BPDU,并立即被触发而产生自己的Configuration BPDU,且从自己的指定端口发送出去。
    • 拓扑变化通知BPDU:是非根交换机通过根端口向根网桥方向发送的。当非根交换机检测到拓扑变化后就会发送出去。

    根网桥如何选举?

    选举范围是每台交换机
    交换机之间相互对比的参数是"桥ID"
    桥ID是由16比特优先级加上48比特的MAC地址构成的,其中桥ID最小的当选
    MAC地址是自带的,优先级可由管理员设置,16比特即0~65535,默认优先级为32768

    1. 在交换机刚连接到网络中时,每台交换机都会以自己为根网桥,从所有启动的端口向外发送BPDU
    2. 接着收到BPDU的交换机则会用对方BPDU中的根网桥ID与自己的根网桥ID进行对比,如果对端BPDU中的根网桥ID数值小,交换机就会按照对方的根网桥ID修改自己BPDU中的根网桥ID,这也就表示这台交换机承认了选出来的根网桥。

    根端口(Root Port或RP)如何选举?

    选举范围是每台非根交换机,从自己所有启动的端口中选举一个根端口

    1. 选择路径开销(Root Path Cost,RPC)最低(路径权值最低)的端口【到根网桥最近】
    2. 若多个端口RPC相等,选择对端桥ID最低的端口(对端交换机BID最小的端口)
    3. 若有多个端口对端桥ID相等,选择对端端口ID(PID,优先级【0~240,华为默认128,16的倍数】和端口号【g0/0/1,小的当选】)最低的端口

    指定端口(Designated Port)如何选举?

    参选者是同处于这个网段中的所有端口【不包括已经被选举为根端口的端口】

    1. 选择路径开销(Root Path Cost,RPC)最低(路径权值最低)的端口
    2. 若多个端口RPC相等,选择桥ID最低的端口(直连交换机BID最小的端口)
    3. 若有多个端口对端桥ID相等,选择端口ID(PID,优先级【0~240,华为默认128,16的倍数】和端口号【g0/0/1,小的当选】)最低的端口

    阻塞剩余端口

    在物理环路网络STP域中,当一个端口既不是根端口也不是指定端口时称为预备端口
    预备端口会处于逻辑的阻塞状态,这类端口不会接收或发送任何数据,但它会监听BPDU。在网络因为一些端口出现故障时,STP会让==预备端口(Alternate Port)==开始转发数据,以恢复网络正常通信

    端口状态

    • 阻塞状态(Discarding):这是一种稳定状态,阻塞状态表示如果这个端口进入转发状态的话,STP域中就会出现交换环路。这时端口接收并处理BPDU,不发送BPDU,不学习MAC地址表,不转发数据
    • 侦听状态(Listening):这是一种过渡状态,这时端口接收并处理BPDU,参与STP计算,不学习MAC地址表,不转发数据
    • 学习状态(Learning):这是一种过渡状态,这时端口接收并处理BPDU,参与STP计算,学习MAC地址表,不转发数据
    • 转发状态(Forwarding):这是一种稳定状态,也是根端口和指定端口的最终状态。这时接收并处理BPDU,参与STP计算,学习MAC地址表,转发数据
    • 未启用(Disabled):端口未启用,什么也干不了

    配置

    //以下在系统视图下执行
    stp enable         //在交换机上启动stp服务(实际上默认就是启动的)
    stp mode stp     //华为交换机默认STP模式是MSTP,因此需要进行模式修改
    stp priority 4096   //设置STP优先级,范围0~61440,且为4096倍数
    display stp      //查看STP状态,如果根网桥BID与本地交换机BID相同说明本地交换机就是根网桥
    display stp brief   //查看交换机上的STP端口角色
    stp timer forward-delay 200  //转发延迟设置,单位为厘秒(0.01s)
    stp timer hello 1000   //修改hello计时器时间(发送配置BPDU时间),默认为2秒
    stp timer max-age 2000  //修改保存BPDU时间,默认为20秒。当STP环境中发生故障时,若处于阻塞状态的端口(预备端口)无法从对端的指定端口收到BPDU,那么在MaxAge计时器超时候,交换机会重新计算STP
        
    //三个计时器值的设置需要满足以下条件
    2*(	转发延迟-1)>=MaxAge>=2*(Hello时间+1)
    //在系统视图下执行    
    stp bridge-diameter 直径  //指定STP网络直径,让STP根据直径自动计算出适合这个网络的计时器数值
    

    5. 快速生成树协议RSTP

    一个处于阻塞状态的端口所在的交换机由于网络故障,没有再接收到任何BPDU而触发交换机重新计算STP,到STP重新计算后,相应端口进入转发状态,需要花费50秒时间,随着网络规模增大,全网新执行STP收敛的时间会变得更长,这是不能接受的。
    STP过慢是RSTP着意希望解决的问题

    对于传统STP中的非根非指定端口,RSTP将其分为了两种情况:预备端口(AP)和备份端口(BP)

    • 如果这个端口接收到的更优BPDU由其他网桥转发过来的,代表其为预备端口,这类端口可以在根端口及其链路出现故障时,接任根端口的角色,为交换机和根网桥之间提供另一条转发通道
    • 如果这个端口接收到的更优BPDU是由本网桥转发过来的,代表其为备份端口,这类端口可以在根端口及其链路出现故障时,接任指定端口的角色,为根网桥与那个物理网段之间提供另一条转发通道

    如果一台交换机根端口进入丢弃状态,且这台交换机上有预备端口,那么这个根端口的所有预备端口中,优先级最高的会立刻接任根端口的角色。若对端设备处于转发状态的话,则预备端口会立刻进入转发状态,不需要等待任何计时器和过渡;备份端口转变为指定端口同理,不过可能有过渡状态

    为什么可以不需要计时器?

    RSTP将端口定义为两种类型:点到点类型和共享类型。边缘端口属于点到点端口中的一种特殊类型
    对于非边缘的点到点类型,RSTP针对点到点链路的指定端口引入了一种P/A(Proposal/Agreement)机制用来提高收敛效率(无需计时器)

    当故障链路恢复后,传统的STP需要30秒才能重新收敛更新状态,而P/A机制通过发送Proposal消息告诉对方字要立刻进入转发状态,对方收到Proposal消息后,先确认消息来源是不是根端口,确认完毕后为避免环路而阻塞自己所有非边缘指定端口,这个过程叫P/A同步。完成同步后,返回Agreement消息同意消息来源切换到转发状态。当消息来源收到Agreement后就可以进入转发状态

    如果一台交换机通过自己的指定端口发送了Proposal,但没有接收到对方【比如终端设备】相应的Agreement,或者这台交换机的指定端口类型是共享型,那么这个端口就会回归传统STP状态转换的方式,也就是30秒后进入转发状态

    特殊类型的端口-----边缘端口

    如果交换机的端口连接的是终端设备而不是其他交换机的端口,那么这类端口进入转发状态不可能造成环路。因此,让连接终端设备的端口直接过渡到转发状态只会提高网络的效率,并不会引入任何风险
    当然交换机并不知道自己的哪些端口连接的是终端设备。所以,如果希望这些边缘端口实现快速收敛,需要管理员通过手动配置来为交换机指定边缘端口。在将端口配置为边缘端口之后,RSTP会认为这些端口不会再下游产生环路,因此在计算拓扑时就不会考虑这些端口

    若需要具体例子可看→RSTP协议的原理与应用【eNSP实现】

    配置

    //以下在系统模式下执行
    stp mode rstp    //设置华为交换机STP模式为RSTP
    stp root primary   //设置当前交换机为根网桥,优先级被固定为0
    stp root secondary  //将当前交换机设置为次根网桥,优先级被固定为4096
    stp edged-port default  //(系统视图)将交换机所有端口默认设置为边缘端口
    //以下在接口模式下执行    
    stp edged-port enable   //将交换机上指定端口设置为边缘端口
    stp bpdu-protection    //让边缘端口在接收到BPDU消息时被交换机直接禁用,而不会参与STP计算
    

    6. 多生成树协议MSTP

    STPRSTP无法解决划分了VLAN环境中的路由环路问题,因此有了MSTP
    VLAN为单位进行计算,管理员可以根据自己需求将一个或者多个VLAN划分到一个多生成树实例(MST Instance,MSTI)中。此后交换机可以以MSTI为单位进行收敛,为每个MSTI收敛出一个独立的生成树。
    如:Instance1:VLAN1、VLAN2 Instance2:VLAN3
    注意:一个Instance中可以包含多个VLAN,但一个VLAN只能属于某一个Instance

    一个交换机可以拥有多个VLAN,因此交换机也就会多个实例(Instance)--VLAN映射关系。MSTP将相同实例—VLAN映射关系的交换机划分到同一个MST域

    • 在域内,域内各台交换机的MSTP以每个实例为单位,计算出实例在域内的生成树
    • 在全网,所有交换机的MSTP都会以交换机为单位,计算出一个全网的总生成树,这个生成树被称为公共和内部生成树CISTCIST的根网桥为整个网络中优先级最高的交换机,称为总根
    • 在域间,所有交换机上的MSTP以每个域为单位,计算出一个域生成树。这个生成树被称为公共生成树CSTCST的根就是总根所在的域

    MSTP根据不同的数据对不同的端口进行阻塞,并没有哪条链路会被完全阻塞,每一条链路都是有条件的阻塞,链路利用率会得到提高且交换机的转发工作负载也得到了分担

    若需要具体例子可看→MSTP原理与应用【eNSP实现】

    配置

    //在系统视图下执行
    stp region-configuration    //进入MST域视图
    //在MST域视图下执行
    check region-configuration   //在MST视图下的操作,查看当前域配置
    region-name 名字   //指定这个MST域使用的名称
    instance 10 vlan 10   //建立实例10和VLAN10的映射关系
    active region-configuration    //激活MST域中配置的参数
    //一下在系统视图下执行    
    stp instance 10 root primary  //为实例10指定根网桥
    stp instance 10 root secondary  //为实例10指定次根网桥
    display stp brief   //查看stp各接口在不同实例中的信息
    

    7. 二层交换机链路聚合

    所谓链路聚合就是多条线路拥有共同的功能,实现更大带宽。而在交换机中提供了类似机制。聚合链路必须在两端交换机上同时都做,且物理链路必须在同一组中才能发挥作用

    若需要具体例子可看→Eth-Trunk链路聚合理解与应用【eNSP实现】

    //在系统视图下进行
    interface Eth-Trunk 1 //创建并进入聚合链路组1,一台设备可创建多个聚合组,聚合组编号本地有效
    display interface Eth-Trunk   //查看交换机链路聚合情况
    //在链路组视图下进行    
    mode manual load-balance //设置本聚合组模式为手工负载分担模式,创建的聚合组默认为此模式
    //在接口视图下执行"Eth-Trunk 编号"也可以把端口划入Eth-Trunk组
    //在链路组视图下执行
    trunkport GigabitEthernet 0/0/1 0/0/2 //将物理接口GigabitEthernet 0/0/1 0/0/2划入此聚合组
    least active-linknumber 1      //设置此聚合组链路最少活动成员的数量位1,低于此数量此聚合链路将自动关闭(默认阈值为1,最大阈值数为8,两端可以不一样,不一样时以下限阈值最大的为标准)
    
    //此处是更加具体的负载均衡配置,新手不好理解
    [SW-1-Eth-Trunk1]load-balance ?
      dst-ip       //本Eth-Trunk接口的对数据的负载分担方式为基于目的IP地址的负载
      dst-mac      //基于目的mac的负载
      src-dst-ip   //基于源目的ip的负载 
      src-dst-mac  //基于源目的MAC的负载 
      src-ip       //基于源ip的负载
      src-mac      //基于源mac的负载
    

    关于各种负载均衡的区别可看→Eth-Trunk链路详情

    8. 三层交换技术

    二层交换机内部无法对不同的VLAN之间进行通信,但是这项功能又是特别必要的,因此出现了三层交换机,它可以实现将终端设备隔离在不同VLAN中,同时为这些终端提供VLAN间路由功能(跨VLAN通信)
    在三层交换机上,通过VLANIF虚拟接口实现VLAN间路由

    若需要具体例子可看→三层交换机【Vlanif详解】开启OSPF与路由器互通【eNSP实现】

    interface vlanif 10  //为VLAN10创建一个VLANIF接口并进入
    //VLANIF编号必须与VLAN ID一一对应,逻辑接口与物理接口的"桥"就是VLAN标签
    //交换机接口类型依然需要配置,三层交换机实际上是交换机承担了路由器部分功能
    //如果数据从g0/0/1接口进去时携带VLAN 10标签,那么g0/0/1此时就等同于Vlanif 10逻辑接口    
    
    //在Vlanif接口视图下执行,为此逻辑接口分配IP地址与掩码
    ip address IP地址 掩码
    //在系统视图下执行    
    display ip routing-table   //三层交换机可查看路由表
    

    二、路由器

    MAC地址好比人的相貌,与生俱来;而IP地址可以看作是家庭住址
    假设有人在教室里掉了身份证被你捡到,则你归还的方法就是比对相貌寻找并归还;而如果是在路上掉了身份证被捡,比对相貌显然是不合理的,一个好的方法是根据身份证上的地址邮政过去,收件人再进行相貌比对。
    上述例子即MAC地址与IP地址对应关系,MAC地址适用于小范围,IP地址适用于大范围。交换机是二层设备无法使用IP地址【三层交换机可以实现,但是功能远少于路由器】,而路由器时网络层设备可以使用IP地址,这就是路由器的作用。

    //在系统视图下执行
    display ip routing-table   		//查看路由表信息
    ip address IP地址 掩码   		//在接口上配置IP地址,一般与终端设备相连的接口是网关
    display ip interface brief  //查看路由器接口的IP地址和状态
    

    1. 直连路由

    同一个路由器连接的路由会叫直连路由,其条目不需要学习,会自动出现在路由表中,路由表中对应的关键字为Direct

    image-20201219103051232

    2. 静态路由

    静态路由是管理员通过命令手动添加到路由表里的路由,告诉路由器数据该往哪里走
    注意:配置静态路由时要双向配置,因为数据发送出去后还要接收响应才算完成

    //在系统视图下执行
    //下一跳地址表示下一次到哪里,是对端的位置,填写接口号或IP地址都行
    ip route-static 最终目的IP 掩码 下一跳位置   //配置静态路由
    //路由匹配是根据最大掩码依次向下匹配,因此当掩码为0时优先级最低
    //掩码为0表示任何网络号都可以接受,即默认路由表示任何地址
    ip route-static 0.0.0.0 0 下一跳位置  //配置默认路由,当不知道目的地址时候就转发到指定下一跳
    

    若需要具体例子可看→静态路由与默认路由原理与应用【eNSP实现】

    有类编制方案

    • 0.0.0.0~127.255.255.255之间的地址为A类地址。前8位为网络号,后24位为主机号
    • 128.0.0.0~191.255.255.255之间的地址为B类地址。前16位为网络号,后16位为主机号
    • 192.0.0.0~223.255.255.255之间的地址为C类地址。前24位为网络号,后8位为主机号

    静态路由汇总

    无类编制方案

    这种技术称为无类域间路由CIDRCIDR支持使用任意长度的前缀地址来分配地址,以及对数据包进行路由

    假设当前有3个网段,

    10.8.80.0/2410.8.81.0/24 10.8.82.0/24
    我们通过二进制转换从左向右匹配,将其中的相同的部分提取出来,其二进制为为掩码长度,不同的部分用0填充,即10.8.80.0/22。这就是三个网段汇总后的网段。具体应用如下图,本质是提取同类项

    ip route-static 10.8.80.0 22 192.168.25.2 //如果想去汇总的三个网段,走192.168.25.2
    

    image-20201219132814536

    如果汇总之后的网络,包含了被汇总网络之外的网络,这样的汇总网络有一定风险

    浮动静态路由

    静态路由的一大缺陷是缺乏适应性。如果管理员为路由器配置的静态路由已经无法用来转发去往那个网络的数据包【即静态路由失效】,那么即使这台路由器还有其他路径可以去往那个网络,路由器还是无法自动利用新的路径对这些数据包进行转发【静态路由优先级高】,因此有了浮动静态路由。

    当一台路由器上有两条以不同路径去往同一个网络的等优先级静态路由时,路由器就会同时利用这两条链路来转发流量

    配置

    //没有特殊语句,仅仅通过控制优先级实现浮动路由,静态路由优先级默认为60
    ip route-static 10.8.84.0 24 192.168.25.2 preference 优先级
    display ip routing-table protocol static  //查看路由器静态路由条目
    

    当优先级不同时,若路径发送故障,则路径选择会按照优先级进行顺延

    浮动静态路由与负载均衡原理与应用【eNSP实现】

    3. 动态路由

    网络规模很大,使用静态部署路由就显得不现实,因此需要动态部署
    路由器通过其他路由器分享的路由信息来获取远端网络路由条目的方式称为动态学习,为实现路由器相互分享路由信息而定义的标准称为动态路由协议

    路由学习

    路由表由三部分组成:子网,度量(权),下一跳地址
    直连路由拥有最高优先级,度量值为0。用以下例子说明具体学习过程

    image-20201219165030776
    • 初始状态每个路由器都拥有自己的直连路由,度量值为0
    • R1R2学习得到了30.1.1.0/24网段,将其记录在路由表内。由于R1是从R2学习到的,因此在R2相关条目的度量值上+1,也就是1
    • R2同时也向R1R3的路由表学习得到新网段10.1.1.0/2440.1.1.0/24,度量值分别为1
    • R1R2学习到40.1.1.0/24网段,这一条目的度量值+1=2更新到R1路由表中
    • 同理R3,R1R2学习到10.1.1.0/24网段,这一条目的度量值+1=2更新到R3路由表中

    环路隐患

    如上图,若是10.1.1.0/24网段出现故障会出现什么情况?

    由于此网段是直连路由,R1路由器当下会在路由表中对故障路由进行删除。因此通过动态学习,R1又从R2那儿学来了这条网段路由,度量值为2,下一跳为R2。假设R3收到发往这个网段的数据包时,R3查询路由表将其发送给R2R2发给R1R1又发给R2,如此循环……

    RIP原理

    RIP是一种距离矢量路由协议
    路由器以RIP更新计时器设置的参数作为周期,每周期向外通过一次路由更新信息

    每当一台路由器针对某些路由的更新计时器到期时。它就会封装一个RIP响应消息对外发送。如果收到消息的路由器针对这条路由的老化计时器还没有过期,那么老化计时器就会重置;如果已经进入了垃圾收集计时器,那么这条路由会被重新激活并关闭

    通过老化计时器将一段时间没有启用的路由标记为不可达(度量值16),默认180
    通过垃圾收集计时器记录的是老化后,需要多久彻底删除的时间,默认120

    如果启动了垃圾计时器,那么路由器就会在网络中发送关于这条路由不可达的更新消息,让其他路由器也更新关于这条路由已经不可达的信息,计时器超时后会将这条路由从RIP数据库中彻底删除

    度量值X表示到达目的地址还需要经过X个路由器

    水平分割

    禁止路由器将从一个接口学习到的路由,再从同一个接口通告出去(RIP2自带水平分割)
    我从你这里学到的已经是最好的,既然是最好的,你就不可能再从我这学到同一条更好的路由,因此我禁止告诉你错误消息,避免环路

    毒性反转

    当路由器从一个接口学习到一条去往某个网络时,它就会通过这个接口通告一条该网络不可达的路由(路由毒化)
    你已经告诉过我一次,可以不用再告诉我了,避免环路

    若需要具体例子可看→RIP原理、毒性反转原理与应用【eNSP实现】

    配置

    //在系统视图下执行
    rip        	//在交换机上启动RIP协议
    //在RIP视图下执行    
    version 2     //切换成RIPv2版本
    network 10.0.0.0   //当前路由器接口地址属于10.0.0.0子网的都开启RIP服务,A类地址(1~126)取8位,B类(128~191)16位,C类(192~223)24位
    timers rip 更新计时器时间 老化计时器时间 垃圾收集计时器时间 //在RIP视图下设置计时器时间
    preference 优先级  //在RIP视图下设置RIP学习到的路由优先级(1~255)   
    silent-interface  //在RIP视图下使用,令所有接口或指定接口不向外发送广播或组播RIP更新    
        
    //在系统视图下执行    
    display rip    //查看RIP情况   
    display rip 1 route    //查看RIP路由,1位进程号,默认为1  
    display rip 1 interface g0/0/0 verbose //查看路由器g0/0/0接口的RIP详情
    display current-configuration configuration rip //查看路由器上的RIP配置
    display ip routing-table protocol rip //查看通过RIP学到的路由
    display rip 1 neighbor   //查看邻居情况
        
    //由于RIP需要发送和接收响应,因此只有设置了RIP的路由器才会相互学习
    //在接口视图上执行
    undo rip split-horizon  //接口上禁用水平分割
    rip poison-reverse   //毒性反转,是在接口上的操作,优先级高于水平分割
    default-route originate //此语句使用于添加了默认路由后,进入RIP状态下动态发布默认路由    
    
    //RIPv2默认禁用水平分割后才会启动自动汇总
    rip summary-address 10.0.0.0 255.255.128.0 //将当前路由器下属于10.0.0.0/17子网的网络都汇总为10.0.0.0/17向外发送响应,其中掩码必须使用点分十进制位表示
    
    //RIPV2支持明文认证和MD5认证
    //其认证需要配置在接口上,以链路为单位,只要直连设备之间使用相同密码,就可以使他们通过认证并建立邻居关系,有相同密码的相邻路由器才互相学习
    rip authentication-mode simple zyl //将接口明文密码设置为zyl
    display this //在系统视图下查看端口配置信息,明文密码会被查到,因此明文配置不安全
    undo rip output  //接口上使用,令此接口不向外发送RIP更新
    undo rip input  //接口上使用,令此接口不再接收RIP更新    
    //采用md5加密,数据包可选择nonstandard(IETF)或usual(华为格式)加密,cipher可以把设置的密码在本地进行加密,最后的数字1是MD5认证的密钥ID
    rip authentication-mode md5 nonstandard/usual cipher 密码 1  
    

    OSPF

    OSPF是一个链路状态型路由协议,具有收敛快,路由无环,扩展性好等优点,被快速广泛接受

    OSPF支持区域划分,区域是从逻辑上讲路由器划分为不同的组,每个组用区域号【Area ID】来标识。一个网段只能属于一个区域,或者说每个运行OSPF的接口必须指明属于哪一个区域。区域0位于骨干区域,骨干区域负责在非骨干区域之间发布区域间的路由信息。在一个OSPF区域中有且只有一个骨干区域。

    //在系统视图下执行
    ospf	//在路由器上启用OSPF协议并进入OSPF视图
    //在OSPF视图下执行    
    area 区域号		//将此路由器划分进指定区域,区域0位骨干区域,OSPF报文必须经由区域0
    //在区域视图下执行    
    network 192.168.1.0 0.0.0.255//将192.168.1.0/24网段通告给同区域的其他路由器,掩码用反码形式
    authentication-mode md5 1 cipher 密码	//拥有相同密码与验证模式的OSPF设备才会相互交流
    

    若需要具体例子可看→OSPF单区域配置【eNSP实现】

    若需要具体例子可看→OSPF多区域配置【eNSP实现】

    若需要具体例子可看→配置OSPF认证【eNSP实现】

    若需要具体例子可看→OSPF被动接口配置【eNSP实现】

    若需要具体例子可看→理解OSPF Router-ID【eNSP实现】

    若需要具体例子可看→OSPF的DR和BDR【eNSP实现】

    若需要具体例子可看→OSPF开销值、协议优先级及计时器的修改【eNSP实现】

    若需要具体例子可看→连接RIP与OSPF网络【eNSP实现】

    若需要具体例子可看→使用RIP、OSPF发布默认路由【eNSP实现】

    4. 路由优先级

    路由类型路由表中标识优先级(越小越先)
    直连路由Direct0
    OSPF路由OSPF10
    静态路由Static60
    RIP路由RIP100

    5. 单臂路由

    将一个路由器接口逻辑化成多个接口的技术,使用上的原理与三层交换机的Vlanif类似

    若需要具体例子可看→单臂路由原理与应用【eNSP实现】

    配置

    interface g0/0/0.10    //进入g0/0/0的10端口
    //配置后,在接收数据时,路由器会剥除数据中对应的VLAN标签并三层转发,之后是否带VLAN标签由出站接口决定
    //接口视图配置    
    dot1q termination vid 10//配置802.1Q封装(与对端交换机保持一致),指定端口接收PVID(VLAN值)
    ip address xxx xx   //正常为接口配置ip地址和掩码
    arp broadcast enable  //使接口能够处理广播帧(单臂路由独有语句)
    

    6. DHCP

    一种利用路由器自动分配IP地址的技术

    //在系统视图下执行,在DHCP服务器上配置
    dhcp enable   //打开DHCP服务
    ip pool for-net10  //创建地址池for-net10并进入视图
    network 10.10.10.0 mask 24  //for-net10地址池分配范围为10.10.10.0/24
    gateway-list 10.10.10.254  //该地址池对应的网关为10.10.10.254 
    dns-list 8.8.8.8   //指定DNS服务器IP地址为8.8.8.8
    excluded-ip-address 10.10.10.253  //地址池中10.10.10.253不要划分出去
    lease day 1     //这些地址租期为1天    
    //在要放出地址的DHCP服务器接口视图下执行
    dhcp select global  //开启此接口的DHCP全局地址池分配功能
        
    //在能接收到DHCP报文并有三层转发功能的设备接口上配置
    dhcp select relay
    dhcp relay server-ip DHCP服务器IP地址  //分配地址池的端口都要配置DHCP中继服务
    

    需要具体例子可看↓
    DHCP两种地址池与中继的理解与应用【eNSP实现】

    展开全文
  • 视觉SLAM笔记(49) 后端状态估计

    万次阅读 2019-11-12 08:36:51
    误差累积、状态估计的概率解释、所关心的问题、最大似然估计
  • C 交换游戏

    万次阅读 2020-02-23 13:34:33
    接下来n行,每行12个字符,代表孔的状态。 输出描述: 对于每行输入在一行中输出一个数字代表答案。 示例1 输入 复制 5 ---oo------- -o--o-oo---- -o----ooo--- oooooooooooo oooooooooo-o 输出 复制 1 2 3 12 1 ...
  • ACPI 中定义了 G、D、S、C、P 这 5 个大的电力状态。 G 状态 Global system state G 状态表示的是用户看到的整个系统的电力状态。 G0 运行模式。向硬件提供电源,软件可以运行的状态。 G1 停止模式。所谓的待机或...
  • linux swap 内存交换分区 详细介绍

    千次阅读 2020-10-06 20:00:39
    假设让我们设计一个内存回收机制,要去考虑将一部分内存到swap分区上,将一部分file-backed的内存写回并清空,剩余部分内存出来,我们将怎么设计? 我想应该主要考虑这样几个问题: 如果回收内存可以有两种途径...
  • 用python实现九九乘法输出-两种方法 2019-08-05 思考过程:九九乘法需要两层循环,暂且称之为内循环和外循环,因此需要双层循环来实现. 循环有for和while两种方式. for循环的实现 for i in range(1,1 ... 使用...
  • BGP状态机及其总结

    千次阅读 多人点赞 2020-06-18 13:03:56
    成功是留给有准备的人。 文章目录 一、拓扑 二、基础配置 三、BGP状态停留测试 四、总结 4.1 BGP5种报文类型 4.2 BGP状态机 4.3 BGP邻居的建立 4.4 BGP邻居关系建立 4.5 BGP路由属性及所属类型
  • 如何在Ubuntu上增加swap交换空间

    千次阅读 2022-04-01 17:31:54
    1.检查计算机的挂载状态,终端根目录下输入 df -h 查看/目录下可用的空间,比如100G。选择自己想要定义的交换空间,比如8G 2.创建一个8G的交换空间,这个文件的大小就是交换空间的大小 cd / 进入根目录 ls ...
  • 但是进程之间的信息交换又是必须实现的(例如:在QQ里看到一张有趣的表情包想要分享给微信好友)。为了保证进程间的安全通信,操作系统提供了一些方法: 共享存储 消息传递 管道通信 一、共享存储 操作系统为两个...
  • 拓朴图 ...如图所示:PC1 想要传输数据帧到 PC2,交换机从 E0/0/1 口接收到数据帧,查看其源MAC地址并将与其对应的E0/0/1口记录进MAC地址。 ② 泛洪(Flooding):交换机收到需转发的数...
  • CCNP知识点总结——交换部分

    千次阅读 多人点赞 2018-03-30 23:59:03
    CCNP交换部分学习笔记。
  • ps命令输出进程状态S+的含义解析

    千次阅读 2021-05-10 01:29:53
    例如下面这个ps命令输出说明:D 不可中断 Uninterruptible sleep (usually IO)R 正在运行,或在队列中的进程S 处于休眠状态T 停止或被追踪Z 僵尸进程W 进入内存交换(从内核2.6开始无效)X 死掉的进程< 高优先级N ...
  • 如果我们使用 Alice 与 Bob 互相交换信息这一常见例子,这两个场景可以被描述为: 如果 Bob 提交过时的状态该怎么办? 合约必须能够实现 超时阶段 (timeout period),这样 Alice 就可以提交比 Bob 提交...
  • CDH大数据平台内存交换,警告问题

    千次阅读 2020-07-30 18:21:56
    CDH长时间运行,Cloudera Manager管理页面在运行Spark任务时候经常会出现内存交换警告,前期博主直接忽略,毕竟不是什么大问题,后期发现如果长时间黄色警告不处理,会误导页面查看集群状态,并且交换空间所占用磁盘...
  • 此版本重点实现:密钥交换加解密、增强Bean转换能力、JDBC新增Elasticsearch-SQL、达梦、PostgreSQL方言。 新特性 【base】ParamUtils提示优化,添加错误原因 【base】添加JSONListConverter类型转换器从而支持L.
  • 用MPI实现并行排序算法——奇偶交换排序(C++)

    千次阅读 多人点赞 2020-12-08 18:19:56
    编号较大的进程应当保留较大的数据 从两个有序中找到前一半的较小数据是简单的,因为我们不需要对两个列表重新排序,一旦统计了了n/p个数据,就可以退出了,如果是要取较大的一半数据,我们只需要简单的反转合并的...
  • Flink中task之间的数据交换机制

    万次阅读 2016-04-24 20:31:08
    Flink中的数据交换构建在如下两条设计原则之上: 数据交换的控制流(例如,为实例化交换而进行的消息传输)是接收端初始化的,这非常像最初的MapReduce。 数据交换的数据流(例如,在网络上最终传输的数据)被抽象成...
  • 2.5 部分控制和状态寄存器介绍 2.5.1 W25Q64的指令 指令名称 字节 1 (代码) 字节 2 字节 3 字节 4 字节 5 字节 6 使能 06h write_enabled 禁止 04h 读状态寄存器 1 05h (S7-S0)(2) 读状态寄存器 2 35h ...
  • 实现支持网络传输交换拓扑结构设计,使得各个处理器或设备网络互联互通。 2.2 基本特性 1、 BCM5396是一个16port的以太网交换机,集成了16个1.25G的SerDes/SGMII port接口,用于连接外部的PHY物理接口或光纤接口。 2...
  • 为了解决共享式局域网的碰撞问题,采用了交换机构成的交换式局域网,它可以识别数据帧中的封装的MAC地址,并根据地址信息将数据交换到特定端口,这样的工作方式使交换机不同端口之间不会碰撞,即分割碰撞域。...
  • 利用卷积可以求解系统的零状态响应..ppt注意 ? 用微积分性质 直接 例2-7-2 图(a)系统由三个子系统构成,已知各子系统的冲激响应 如图(b)所示。求复合系统的冲激响应 ,并画出它的波形。 (a) (b) 解: 如图(c)所示 X...
  • 《面向对象的用电信息数据交换协议》-698协议的理解 在前面 DL/T 698.45是面对对象的通信协议,适用于主站和采集终端、采集终端和电能、主站和电能之间。DL/T 645是面向过程的通信协议适用于采集终端和电能...
  • Marvell交换芯片88E6390驱动开发

    千次阅读 2020-02-22 11:28:17
    参考 Marvell交换芯片88E6321/88E6320驱动总结-...Marvell 交换芯片DSA(分布式交换架构)功能介绍 以太网交换芯片及PHY处理相关 二层交换机和三层交换机的区别 介绍 Marvell 88E6390是一款11端口全千兆以太网二层交...
  • 交换两个整型变量(不借助临时变量)这是多年前我做Java时面试碰到的题目,其实不难。特意下这篇博客,是因为我发现有不止一种方法可以实现,原谅我无聊的双手。图1先简单说说普通的方法吧,如上图:int i = 5;int p...
  • https详解+密钥交换算法+公钥与私钥

    千次阅读 2019-07-26 09:55:57
    它使用安全套接字层(SSL)进行信息交换,在http下加入SSL层,https的安全基础是SSL,因此加密的详细内容就需要SSL,它的目的主要是安全的数据传送。实际上应用了安全套接层(SSL)作为http应用层的子层。 https的作用...
  • 琢磨了好长时间的异步发电机和同步电动机是怎么运行的,终于琢磨出来了,出来帮我记记。 1、异步电动机与同步发电机原理 这个两个也是最常见的情况,原理不难理解。 异步电动机以鼠笼式的为例:定子通入三相对...
  • 一、三层交换技术 1、作用 使用三层交换技术实现VLAN间通信 三层交换=二层交换+三层转发 2、基于CEF 的快速转发 主要包含两个转发用的信息: 1)转发信息库(FIB):FIB类似于路由表,包含路由表中转发信息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 269,950
精华内容 107,980
热门标签
关键字:

交换表的状态怎么写