一、Linux Bridge网桥管理

网络虚拟化是虚拟化技术中最复杂的部分,也是非常重要的资源。

VM2 的虚拟网卡 vnet1 也连接到了 br0 上。 现在 VM1 和 VM2 之间可以通信,同时 VM1 和 VM2 也都可以与外网通信。

查看网络状态:

brct的一些常用命令:

  1. [root@localhost network-scripts]# brctl --help
  2. Usage: brctl [commands]
  3. commands:
  4. addbr <bridge> #增加网桥
  5. delbr <bridge> #删除网桥
  6. addif <bridge> <device> #连接网口与网桥
  7. delif <bridge> <device> 删除网口与网桥的链接
  8. show [ <bridge> ]
  9. [root@localhost network-scripts]#

二、Vlan介绍

   LAN 表示 Local Area Network,本地局域网,通常使用 Hub 和 Switch 来连接 LAN 中的计算机。一般来说,两台计算机连入同一个 Hub 或者 Switch 时,它们就在同一个 LAN 中。

  一个 LAN 表示一个广播域。 其含义是:LAN 中的所有成员都会收到任意一个成员发出的广播包。

  VLAN 表示 Virtual LAN。一个带有 VLAN 功能的switch 能够将自己的端口划分出多个 LAN。计算机发出的广播包可以被同一个 LAN 中其他计算机收到,但位于其他 LAN 的计算机则无法收到。 简单地说,VLAN 将一个交换机分成了多个交换机,限制了广播的范围,在二层将计算机隔离到不同的 VLAN 中。

  比方说,有两组机器,Group
A 和 B,我们想配置成 Group A 中的机器可以相互访问,Group B 中的机器也可以相互访问,但是 A 和 B
中的机器无法互相访问。 一种方法是使用两个交换机,A 和 B 分别接到一个交换机。 另一种方法是使用一个带 VLAN 功能的交换机,将 A 和 B
的机器分别放到不同的 VLAN 中。

  VLAN 的隔离是二层上的隔离,A 和 B 无法相互访问指的是二层广播包(比如 arp)无法跨越 VLAN 的边界。但在三层上(比如IP)是可以通过路由器让 A 和 B 互通的。

现在的交换机几乎都是支持 VLAN 的。

  通常交换机的端口有两种配置模式: Access 和 Trunk。如下图

  Access 口(封装在一个vlan口
  这些端口被打上了 VLAN 的标签,表明该端口属于哪个
VLAN。 不同 VLAN 用 VLAN ID 来区分,VLAN ID 的 范围是 1-4096。 Access
口都是直接与计算机网卡相连的,这样从该网卡出来的数据包流入 Access 口后就被打上了所在 VLAN 的标签。 Access 口只能属于一个 VLAN

  Trunk 口(任何vlan口都可以通过
  假设有两个交换机 A 和 B。 A 上有 VLAN1(红)、VLAN2(黄)、VLAN3(蓝);B 上也有 VLAN1、2、3,那如何让 AB 上相同 VLAN 之间能够通信呢?

  办法是将 A 和 B 连起来,而且连接 A 和 B 的端口要允许 VLAN1、2、3 三个 VLAN 的数据都能够通过。这样的端口就是Trunk口了。 VLAN1, 2, 3 的数据包在通过 Trunk 口到达对方交换机的过程中始终带着自己的 VLAN 标签。

三、Linux Bridge实现Vlan原理

KVM 虚拟化环境下实现 VLAN 架构,如下图

eth0 是宿主机上的物理网卡,有一个命名为 eth0.10 的子设备与之相连。 eth0.10 就是 VLAN 设备了,其 VLAN
ID 就是 VLAN 10。 eth0.10 挂在命名为 brvlan10 的 Linux Bridge 上,虚机 VM1 的虚拟网卡
vent0 也挂在 brvlan10 上。

这样的配置其效果就是: 宿主机用软件实现了一个交换机(当然是虚拟的),上面定义了一个 VLAN10。 eth0.10,brvlan10 和
vnet0 都分别接到 VLAN10 的 Access口上。而 eth0 就是一个 Trunk 口。VM1 通过 vnet0
发出来的数据包会被打上 VLAN10 的标签。

eth0.10 的作用是:定义了 VLAN10
brvlan10 的作用是:Bridge 上的其他网络设备自动加入到 VLAN10 中

如图ens37充当交换机的角色,添加两个网口ens37.10和ens37.20 ,再网口上分别添加上brvlan-10和brvlan-20的网桥,然后分别连接上电脑。

可以发现在不同vlan口的两台电脑无法ping通,就实现了在同一局域网内限制互相通信的功能,这在企业中有着很实际的应用。

如果有需求连接外网的话可以另外添加网卡。

四、Linux Bridge实现Vlan

(1)查看核心是否提供VLAN 功能,执行

  1. # dmesg | grep -i 802      

或者检查/proc/net/vlan目录是否存在
如果沒有提供VLAN 功能,/proc/net/vlan目录是不存在的。

  1. [root@localhost network-scripts]# cd /proc/net/vlan
  2. [root@localhost vlan]# ls
  3. br1.10 br1.20 config        #此目录下保存在创建的网桥等内容

如果8021q模块没有载入系统,则可以通过使用modprobe模组命令载入802.1q模组,

並且利用lsmod命令确认模组是否已经载入到核心内。

  1. # modprobe 8021q          #加载

[root@localhost ~]# lsmod | grep 8021q  
8021q 33208 0
garp 14384 1 8021q
mrp 18542 1 8021q    

设置开机载入8021q模块(可选)

在/etc/sysconfig/modules下增加一个8021q.modules文件,文件内容为modprobe 8021q
 vim /etc/sysconfig/modules/8021q.modules
modprobe 8021q

(2)安装查看用于查看Vlan配置的工具————vconfig
提前上传好vconfig-1.9-16.el7.x86_64.rpm

  1. [root@localhost ~]# yum -y localinstall vconfig

(3)创建vlan接口
创建vlan接口前,在设备上添加一块网卡ens37.

1.执行:  nmtui ,进入编辑网卡界面

2.我添加了四块网卡,这里选择有线连接1默认为添加的第一个网卡。

3.更改配置名称为ens37,然后确认就添加成功了

当然也可以直接创建ifcfg-ens37的文件进行编辑配置。

4.对已经添加的ifcfg-ens37文件稍作更改

ip获取方式改为static,其他不动

4)在ens37网卡的基础之上建立ens37.10和ens37.20网口

vconfig  add  网卡 vid

  1. [root@localhost network-scripts]# vconfig add ens37 10
  2. Added VLAN with VID == 10 to IF -:ens37:-
  3. [root@localhost network-scripts]# vconfig add ens37 20
  4. Added VLAN with VID == 20 to IF -:ens37:-

5)配置ens37.10和ens37.20的文件

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens37 ifcfg-ens37.10

vim ifcfg-ens37.10    #注意ifcfg-的前缀

  1. VLAN=yes
  2. TYPE=vlan
  3. PHYSDEV=ens37
  4. VLAN_ID=10
  5. NAME=ens37.10
  6. ONBOOT=yes
  7. ZONE=trusted
  8. DEVICE=ens37.10
  9. BRIDGE=brvlan-10

vim ifcfg-ens37.20

  1. VLAN=yes
  2. TYPE=vlan
  3. PHYSDEV=ens37
  4. VLAN_ID=20
  5. NAME=ens37.20
  6. ONBOOT=yes
  7. ZONE=trusted
  8. DEVICE=ens37.20
  9. BRIDGE=brvlan-20

6)建立brvlan-10和brvlan-20的网桥

brctl  addbr  bridge名

  1. [root@localhost network-scripts]# brctl addbr brvlan-10
  2. [root@localhost network-scripts]# brctl addbr brvlan-20

7)配置添加网桥的配置文件

  1. 编辑网桥brvlan-10配置文件:
  2. #vim ifcfg-brvlan-10
  3. TYPE=bridge
  4. BOOTPROTO=static
  5. NAME=brvlan-10
  6. DEVICE=brvlan-10
  7. ONBOOT=yes
  8.  
  9. 编辑网桥brvlan-20配置文件:
  10. #vim ifcfg-brvlan-20
  11. TYPE=bridge
  12. BOOTPROTO=static
  13. NAME=brvlan-20
  14. DEVICE=brvlan-20
  15. ONBOOT=yes

然后查看网桥连接状态

brctl show

  1. [root@localhost network-scripts]# brctl show
  2. bridge name bridge id STP enabled interfaces
  3. br0 8000.000c29e7d62c no ens33
  4. brvlan-10 8000.000000000000 no
  5. brvlan-20 8000.000000000000 no
  6. virbr0 8000.5254001b9b1c yes virbr0-nic

8) 将网桥brvlan-10接到ens37.10口brvlan-20接到ens37.20上

  1. [root@localhost network-scripts]# brctl addif brvlan-10 ens37.10
  2. [root@localhost network-scripts]# brctl addif brvlan-20 ens37.20

9)再次查看

  1. [root@localhost network-scripts]# brctl show
  2. bridge name bridge id STP enabled interfaces
  3. br0 8000.000c29e7d62c no ens33
  4. brvlan-10 8000.000c29e7d636 no ens37.10
  5. brvlan-20 8000.000c29e7d636 no ens37.20
  6. virbr0 8000.5254001b9b1c yes virbr0-nic

10)重启网卡,查看网卡状态

如下图:

可以看到配置的网卡和网桥都成功显示并且是up状态

有时候状态为down而不是up

可以尝试重启或者进入nmtui界面激活。

  1. [root@localhost network-scripts]# ifconfig
  2. br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  3. inet 192.168.253.165 netmask 255.255.255.0 broadcast 192.168.253.255
  4. inet6 fe80::20c:29ff:fee7:d62c prefixlen 64 scopeid 0x20<link>
  5. ether 00:0c:29:e7:d6:2c txqueuelen 1000 (Ethernet)
  6. RX packets 56 bytes 3902 (3.8 KiB)
  7. RX errors 0 dropped 0 overruns 0 frame 0
  8. TX packets 82 bytes 13996 (13.6 KiB)
  9. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  10.  
  11. brvlan-10: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  12. inet6 fe80::3c:ecff:fe3f:388a prefixlen 64 scopeid 0x20<link>
  13. ether 02:3c:ec:3f:38:8a txqueuelen 1000 (Ethernet)
  14. RX packets 0 bytes 0 (0.0 B)
  15. RX errors 0 dropped 0 overruns 0 frame 0
  16. TX packets 8 bytes 656 (656.0 B)
  17. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  18.  
  19. brvlan-20: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  20. inet6 fe80::9087:b7ff:fe9b:28c8 prefixlen 64 scopeid 0x20<link>
  21. ether 92:87:b7:9b:28:c8 txqueuelen 1000 (Ethernet)
  22. RX packets 0 bytes 0 (0.0 B)
  23. RX errors 0 dropped 0 overruns 0 frame 0
  24. TX packets 8 bytes 656 (656.0 B)
  25. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  26.  
  27. ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  28. ether 00:0c:29:e7:d6:2c txqueuelen 1000 (Ethernet)
  29. RX packets 106948 bytes 147633162 (140.7 MiB)
  30. RX errors 0 dropped 0 overruns 0 frame 0
  31. TX packets 30428 bytes 2175888 (2.0 MiB)
  32. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  33.  
  34. ens37.10: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  35. inet6 fe80::20c:29ff:fee7:d636 prefixlen 64 scopeid 0x20<link>
  36. ether 00:0c:29:e7:d6:36 txqueuelen 1000(Ethernet)
  37. RX packets 0 bytes 0(0.0 B)
  38. RX errors 0 dropped 0 overruns 0 frame 0
  39. TX packets 16 bytes 1312(1.2KiB)
  40. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  41.  
  42. ens37.20: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  43. inet6 fe80::20c:29ff:fee7:d636 prefixlen 64 scopeid 0x20<link>
  44. ether 00:0c:29:e7:d6:36 txqueuelen 1000(Ethernet)
  45. RX packets 0 bytes 0(0.0 B)
  46. RX errors 0 dropped 0 overruns 0 frame 0
  47. TX packets 16 bytes 1312(1.2KiB)
  48. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  49.  
  50. virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
  51. inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
  52. ether 52:54:00:1b:9b:1c txqueuelen 1000(Ethernet)
  53. RX packets 0 bytes 0(0.0 B)
  54. RX errors 0 dropped 0 overruns 0 frame 0
  55. TX packets 0 bytes 0(0.0 B)
  56. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  57.  
  58. vnet1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  59. inet6 fe80::fc54:ff:fef8:ca47 prefixlen 64 scopeid 0x20<link>
  60. ether fe:54:00:f8:ca:47 txqueuelen 1000(Ethernet)
  61. RX packets 638 bytes 50738(49.5KiB)
  62. RX errors 0 dropped 0 overruns 0 frame 0
  63. TX packets 1641 bytes 128613(125.5KiB)
  64. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

11)来到图形化界面

启动两个虚拟机vm1和vm2

vm1选择网桥brvlan-10和ens37.10口,启动

vm2选择网桥brvlan-20和ens37.20接口,启动

12)进入虚拟机后配置一个ip地址,与另一台相同网段

2.ipv4选择手动配置,然后激活。

3、重新启动网卡,vm2同理。

4、在vm1上执行:

ping 192.168.75.5

可以看到无法连通,说明vlan实验成功!!

13)如果有需要让两台虚拟机通信的话可以改为同一个网桥网口。

如果有连通外网的需求的话可以添加一个网卡ens33,网桥为br0

六、网卡配置bond(绑定)

(1)网卡bond(绑定),也称作网卡捆绑。就是将两个或者更多的物理网卡绑定成一个虚拟网卡。网卡是通过把多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在应用部署中是一种常用的技术。

多网卡绑定实际上需要提供一个额外的软件的bond驱动程序实现。通过驱动程序可以将多块网卡屏蔽。对TCP/IP协议层只存在一个Bond网卡,在Bond程序中实现网络流量的负载均衡,即将一个网络请求重定位到不同的网卡上,来提高总体网络的可用性。

(2)网卡绑定的目的
   1.提高网卡的吞吐量。
   2.增强网络的高可用,同时也能实现负载均衡。

(3)网卡配置bond(绑定)bond模式:

1、Mode=0(balance-rr) 表示负载分担round-robin,平衡轮询策略,具有负载平衡和容错功能
bond的网卡MAC为当前活动的网卡的MAC地址,需要交换机设置聚合模式,将多个网卡绑定为一条链路。

2、Mode=1(active-backup) 表示主备模式具有容错功能,只有一块网卡是active,另外一块是备的standby,这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。
    
3、Mode=2(balance-xor) 表示XOR Hash负载分担(异或平衡策略),具有负载平衡和容错功能
每个slave接口传输每个数据包和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)。

4、Mode=3(broadcast)  表示所有包从所有interface发出,广播策略,具有容错能力,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合

5、Mode=4(802.3ad) 表示支持802.3ad协议(IEEE802.3ad 动态链接聚合) 和交换机的聚合LACP方式配合(需要xmit_hash_policy)。

6、Mode=5(balance-tlb) 适配器传输负载均衡,并行发送,无法并行接收,解决了数据发送的瓶颈。 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave。

7、Mode=6(balance-alb) 在5的tlb基础上增加了rlb。适配器负载均衡模式并行发送,并行接收数据包

5和6不需要交换机端的设置,网卡能自动聚合。4需要支持802.3ad。0,2和3理论上需要静态聚合方式,但实测中0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。

常用的有三种:

mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。

mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。

 

bond驱动程序实现vlan

1.删除上文配置的ens37.10和20网口以及创建的网桥brvlan-10和20

  1. 删除网桥与网口的链接
    brctl delif brvlan-10 ens37.10
  2. brctl delif brvlan-20 ens37.20
  3. 删除网桥
  4. brctl delbr brvlan-10
  5. brctl delbr brvlan-10
  6. 删除网口
  7. vconfig rem ens37.10
  8. vconfig rem ens37.20

2.brctl  show 查看连接是否被删除

ip a  查看网卡是否还显示

3.如果没有删除成功,执行 nmtui:

4.查看配置文件信息,网口和网桥文件被删除成功了。

  1. [root@localhost network-scripts]# ls
  2. ifcfg-br0 ifdown-isdn ifup-bnep ifup-routes
  3. ifcfg-ens33 ifdown-post ifup-eth ifup-sit
  4. ifcfg-ens37 ifdown-ppp ifup-ib ifup-Team
  5. ifcfg-lo ifdown-routes ifup-ippp ifup-TeamPort

5.接下来编辑bond配置文件(绑定4块网卡)

  1. [root@localhost network-scripts]# vim ifcfg-ens37
  2. [root@localhost network-scripts]# cp ifcfg-ens37 ifcfg-ens38
  3. [root@localhost network-scripts]# cp ifcfg-ens37 ifcfg-ens39
  4. [root@localhost network-scripts]# cp ifcfg-ens37 ifcfg-ens40
  5. [root@localhost network-scripts]# cat ifcfg-ens37
  6. TYPE=Ethernet
  7. BOOTPROTO=none
  8. DEVICE=ens37
  9. ONBOOT=yes
  10. MASTER=bond0
  11. SLAVE=yes

6.然后导入模块

  1. [root@localhost network-scripts]# modprobe bonding

7.配置bond0,设置连接网桥为br1

  1. DEVICE=bond0
  2. TYPE=Bond
  3. NAME=bond0
  4. BONDING_MASTER=yes
  5. BOOTPROTO=static
  6. USERCTL=no
  7. ONBOOT=yes
  8. BONDING_OPTS="mode=6 miimon=100"
  9. BRIDGE=br1

8.创建网口

  1. vconfig add br1 10
  2.  
  3. vconfig add br1 20

9.将网桥与虚拟vlan网口连接

  1. brctl addif brvlan-10 br1.10
  2. brctl addif brvlan-20 br1.20

10)查看网卡连接状态

  1. [root@localhost network-scripts]# brctl show
  2. bridge name bridge id STP enabled interfaces
  3. br0 8000.000c29e7d62c no ens33
  4. br1 8000.26adea6b6ef7 no bond0
  5. brvlan-10 8000.000c29e7d636 no br1.10
  6. brvlan-20 8000.000c29e7d636 no br1.20
  7. virbr0 8000.5254001b9b1c yes virbr0-nic

和网卡状态

  1. 17: brvlan-10: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
  2. link/ether 00:0c:29:e7:d6:36 brd ff:ff:ff:ff:ff:ff
  3. inet6 fe80::20c:29ff:fee7:d636/64 scope link
  4. valid_lft forever preferred_lft forever
  5. 18: brvlan-20: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
  6. link/ether 00:0c:29:e7:d6:36 brd ff:ff:ff:ff:ff:ff
  7. inet6 fe80::20c:29ff:fee7:d636/64 scope link
  8. valid_lft forever preferred_lft forever
  9. 22: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br1 state UP qlen 1000
  10. link/ether 26:ad:ea:6b:6e:f7 brd ff:ff:ff:ff:ff:ff
  11. 27: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
  12. link/ether 26:ad:ea:6b:6e:f7 brd ff:ff:ff:ff:ff:ff
  13. inet 192.168.20.1/24 brd 192.168.20.255 scope global br1
  14. valid_lft forever preferred_lft forever
  15. inet 192.168.30.1/24 brd 192.168.30.255 scope global br1
  16. valid_lft forever preferred_lft forever
  17. inet 192.168.40.1/24 brd 192.168.40.255 scope global br1
  18. valid_lft forever preferred_lft forever
  19. inet 192.168.50.1/24 brd 192.168.50.255 scope global br1
  20. valid_lft forever preferred_lft forever

11)在图形化界面中选择虚拟网络接口

首先两台虚拟机都选择bond0接口

发现可以互相通信

12)如果需要无法通信的话

一台选择br1.10 网桥brvlan-10

另一台选择br1.20  网桥brvlan-20

kvm网络虚拟化(vlan,bond,vlan+bond)(3)的更多相关文章

  1. kvm网络虚拟化管理

    1. Linux Bridge网桥管理 一个网桥上添加多个虚拟机,虚拟机之间是可以相互通信的的,同时虚拟机也都可以通外网. kvm的网桥管理可以通过brctl命令 [root@localhost ~] ...

  2. KVM 网络虚拟化基础 - 每天5分钟玩转 OpenStack(9)

    网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大. 但因为网络是虚拟化中非常重要的资源,所以再硬的骨头也必须要把它啃下来. 为了让大家对虚拟化网络的复杂程度有一个直观的认识,请看下图 这是 Open ...

  3. kvm网络虚拟化

    网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大. 但因为网络是虚拟化中非常重要的资源,所以再硬的骨头也必须要把它啃下来. 为了让大家对虚拟化网络的复杂程度有一个直观的认识,请看下图 这是 Open ...

  4. KVM 网络虚拟化基础

    网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大. 但因为网络是虚拟化中非常重要的资源,所以再硬的骨头也必须要把它啃下来. 为了让大家对虚拟化网络的复杂程度有一个直观的认识,请看下图 这是 Open ...

  5. O009、KVM 网络虚拟化基础

    参考https://www.cnblogs.com/CloudMan6/p/5289590.html   网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大.   但因为网络是虚拟化中非常重要的资源, ...

  6. 收藏 —— KVM网络虚拟化

    http://www.cnblogs.com/CloudMan6/p/5240770.html http://www.cnblogs.com/CloudMan6/p/5289590.html

  7. 基于RYU restful api实现的VLAN网络虚拟化

    基于RYU restful api实现的VLAN网络虚拟化 前言 本次实验是基于OVS的VLAN虚拟化简易实践方案的进一步的实验,采用RYU restful api进行配置.本质上和上次实验没什么差, ...

  8. KVM + LinuxBridge 的网络虚拟化解决方案实践

    目录 文章目录 目录 前言 Linux bridge 的基本操作 创建 Bridge 将 veth pair 连上 Bridge 为 Bridge 配置 IP 地址 将物理网卡接口设备挂靠 Bridg ...

  9. 【网络】trunk和vlan配置

    篇一 : trunk配置和vlan配置 trunk配置 Switch>enable ? ? ?//进入特权模式 Switch#conf t ? ? ?//进入配置模式 Switch(config ...

随机推荐

  1. cubase 音频的淡入淡出

  2. java线程基础巩固---通过实验分析This锁和Class锁的存在

    This锁: 关于什么是This锁下面用实现来说明一下它: 那下面用两个线程分别调用这两个方法,如下: 看结果: 可见两个方法是同时输出的,因为m2()方法并未上锁,所以就不存在争锁的问题,那这时给m ...

  3. 浅入深出Vue:文章列表

    终于到我们小项目的最后一个功能了,那就是列表页展示! 新建组件 先来新建组件 List.vue: <template> <div></div> </templ ...

  4. solr 数据库关联,表数据添加不进solr,一直indexing

    id没有映射,数据库表字段没有id,要把其中一字段映射为id

  5. linux 命令格式和帮助

    命令的格式: command [options] [arguments] command:命令 options:  --单词全称   或   -单字简称 如: ls --all 等于     ls - ...

  6. 自制centos6开机界面

    1.先准备好一张640x480大小的图片并上传至主机(可在画图工具中调整图片大小) 注意如没有rz命令,可以先安装: yum install lrzsz 2.制作背景图 制作需要用到convert命令 ...

  7. npoi 导出

    npoi 导出 public void Output(DataTable table, string SheetName, string reportName) { string result = s ...

  8. Vue(js框架)

    单页技术应用:页面不会跳转,只是局部刷新,利用的是锚点原理. Vue特点:1)组件化  2)数据驱动 Vue的开始使用: 1)先引入Vue文件,引入方式和jquery类似,可以直接引入 <scr ...

  9. join on 和group

                       左边的表是article文章表,右边的是comment文章回复表. 今天mysql查询的时候,遇到了有趣的事,任务是查询数据库需要得到以下格式的文章标题列表,并按 ...

  10. 51 Nod 1116 K进制下的大数

    1116 K进制下的大数  基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 有一个字符串S,记录了一个大数,但不知这个大数是多少进制的,只知道这个数 ...