Centos双网卡冗余绑定
1. 前言
关于双网卡绑定,前前后后踩过不少的坑,虽然这是 RHCE 中的一道题,但是在实践中碰到问题也够喝一壶的。
在实践中,虚拟机、物理机都做过,但是不尽相同,大部分的坑也集中在这里,本文长期更新关于网卡绑定中遇到的问题及处理方法。
现在的服务器默认都配备 4 张 千兆网卡,在生产环境中,无论遇到多大的困难,都必须做到双网卡绑定(至少要实现主备模式),最基本的主备这是基本原则。因此在前期的规划,网络设备(交换机)是必须要考虑到的。
2. 概念
概念性的东西的最容易遗忘的,这里得反复强调:
链路聚合最常见的三种模式:
- mode0(平衡负载模式):两张网卡同时均衡工作,且自动备援,但是需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。
- mode1(自动备援模式):1张网卡工作,在工作网卡故障时,第二张网卡替换故障网卡,单纯的主备模式。
- mode6(平衡负载模式):两张网卡均衡工作,且自动备援,无需交换机设备提供辅助支持。
以上三种模式,最推荐的当然是 mode6 技能负载均衡又能主备切换,最最重要的是不用浪费时间去联系网络工程师。记住上面三种常见模式就够用了。
3. 实践#
3.1 虚拟机网卡绑定
环境介绍:
虚拟化软件:VMware Workstation 15 Pro
虚拟机操作系统:CentOS Linux release 7.7.1908 (Core)

在 Centos 7 中有两种技术来实现网卡绑定:teaming 和 bonding ,下面通过三种方式来实现网卡绑定:
3.1.1 手动配置,使用 bond 技术#
查看物理网卡及连接状态
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@192.168.118.11 ~]#nmcli devDEVICE TYPE STATE CONNECTION eth0 ethernet connected System eth0 eth1 ethernet connected Wired connection 1eth2 ethernet connected Wired connection 2lo loopback unmanaged -- [root@192.168.118.11 ~]#nmcli conNAME UUID TYPE DEVICESystem eth0 078df8ff-b848-4c23-b212-3213a74bc5d5 ethernet eth0 Wired connection 1 24d053c5-d908-3e0d-9e61-4d92efcd6f3b ethernet eth1 Wired connection 2 b4cea59c-59ea-3b6c-a343-e2578ede5034 ethernet eth2 |
通过上面的命令得知:该主机有3张网卡,1张本地回环lo 且 三张物理网卡都处于连接中,查看网卡配置文件:
|
1
2
3
|
[root@192.168.118.11 ~]#ll /etc/sysconfig/network-scripts/ifcfg-*-rw-r--r-- 1 root root 259 Mar 30 19:21 /etc/sysconfig/network-scripts/ifcfg-eth0-rw-r--r--. 1 root root 254 Mar 29 2019 /etc/sysconfig/network-scripts/ifcfg-lo |
查看配置网卡配置文件却只有 eth0 的, eth1 和 eth2 没有。这里可以通过新建连接来生成配置文件,比自己手动编写方便太多了,建议使用。
首先通过连接名 ‘Wired connection 1’ ‘Wired connection 2’ 删除连接
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@192.168.118.11 ~]#nmcli conNAME UUID TYPE DEVICESystem eth0 078df8ff-b848-4c23-b212-3213a74bc5d5 ethernet eth0 Wired connection 1 24d053c5-d908-3e0d-9e61-4d92efcd6f3b ethernet eth1 Wired connection 2 b4cea59c-59ea-3b6c-a343-e2578ede5034 ethernet eth2 [root@192.168.118.11 ~]#nmcli con del 'Wired connection 1' 'Wired connection 2'Connection 'Wired connection 1' (24d053c5-d908-3e0d-9e61-4d92efcd6f3b) successfully deleted.Connection 'Wired connection 2' (b4cea59c-59ea-3b6c-a343-e2578ede5034) successfully deleted.[root@192.168.118.11 ~]#nmcli conNAME UUID TYPE DEVICESystem eth0 078df8ff-b848-4c23-b212-3213a74bc5d5 ethernet eth0 |
然后在通过物理网卡 eth1 和 eth2 重建连接
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@192.168.118.11 ~]#nmcli conNAME UUID TYPE DEVICESystem eth0 078df8ff-b848-4c23-b212-3213a74bc5d5 ethernet eth0 [root@192.168.118.11 ~]#nmcli con add type ethernet ifname eth1 con-name eth1Connection 'eth1' (8c47d2f2-1373-425e-b6e2-fa5e6b9eb8f6) successfully added.[root@192.168.118.11 ~]#nmcli con add type ethernet ifname eth2 con-name eth2Connection 'eth2' (5d8dc9b0-3b4f-4c6d-919b-a7754d86b1f8) successfully added.[root@192.168.118.11 ~]#nmcli conNAME UUID TYPE DEVICESystem eth0 078df8ff-b848-4c23-b212-3213a74bc5d5 ethernet eth0 eth1 8c47d2f2-1373-425e-b6e2-fa5e6b9eb8f6 ethernet eth1 eth2 5d8dc9b0-3b4f-4c6d-919b-a7754d86b1f8 ethernet eth2 [root@192.168.118.11 ~]#ll /etc/sysconfig/network-scripts/ifcfg-*-rw-r--r-- 1 root root 259 Mar 30 19:21 /etc/sysconfig/network-scripts/ifcfg-eth0-rw-r--r-- 1 root root 278 May 21 22:58 /etc/sysconfig/network-scripts/ifcfg-eth1-rw-r--r-- 1 root root 278 May 21 22:58 /etc/sysconfig/network-scripts/ifcfg-eth2-rw-r--r--. 1 root root 254 Mar 29 2019 /etc/sysconfig/network-scripts/ifcfg-lo |
新建网卡连接命令:
|
1
|
nmcli con add type ethernet ifname eth2 con-name eth2 |
ifname : 物理网卡名,通过 nmcli dev 查看
con-name:网卡配置文件名,逻辑网卡名
通过上面的配置已得到三张网卡的配置文件,接下来进行配置文件的修改实现网卡绑定
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
----------------------eth1----------------------[root@192.168.118.11 /etc/sysconfig/network-scripts]#vim ifcfg-eth1TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noNAME=eth1UUID=8c47d2f2-1373-425e-b6e2-fa5e6b9eb8f6DEVICE=eth1ONBOOT=yesMASTER=bond6SLAVE=yes----------------------eth2----------------------[root@192.168.118.11 /etc/sysconfig/network-scripts]#vim ifcfg-eth2TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneDEFROUTE=yesIPV4_FAILURE_FATAL=noNAME=eth2UUID=5d8dc9b0-3b4f-4c6d-919b-a7754d86b1f8DEVICE=eth2ONBOOT=yesMASTER=bond6SLAVE=yes |
修改及添加的部分用黄(和谐)色标注,新增 ifcfg-bond6 配置文件如下:
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@192.168.118.11 /etc/sysconfig/network-scripts]#vim ifcfg-bond6TYPE=BondBOOTPROTO=noneDEVICE=bond6ONBOOT=yesIPADDR=192.168.1.100NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=114.114.114.114BONDING_OPTS='miimon=100 mode=6 fail_over_mac=1' |
这里需要特别注意的地方:BONDING_OPTS='miimon=100 mode=6 fail_over_mac=1'
,如果是虚拟机,fail_over_mac=1 是必须要带上的,否则vmware会出现告警信息,配置起来能正常用,但是在进行准备切换时,是无法进行的。切记!

vmware 出现这样的提示基本可以确定 fail_over_mac 没有生效,所配置的网卡也无法做到故障切换。
注意:在vmware 虚拟机环境中,常用的三种方式(mode-0 mode-1 mode-6) 只有 mode 1 实现了故障切换。
mode 1 - ifcfg-bond6 配置如下:
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@192.168.118.11 /etc/sysconfig/network-scripts]#vim ifcfg-bond6TYPE=BondBOOTPROTO=noneDEVICE=bond6ONBOOT=yesIPADDR=192.168.1.100NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=114.114.114.114BONDING_OPTS="miimon=100 mode=1 fail_over_mac=1" |
bond 配置文件中可以通过 mode = 模式号 来进行切换,这里修改为 mode-1 模式,查看配置信息:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[root@192.168.118.11 /etc/sysconfig/network-scripts]#cat /proc/net/bonding/bond6Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)Primary Slave: NoneCurrently Active Slave: eth1MII Status: upMII Polling Interval (ms): 100Up Delay (ms): 0Down Delay (ms): 0Slave Interface: eth1MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: 00:0c:29:f4:f4:0fSlave queue ID: 0Slave Interface: eth2MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: 00:0c:29:f4:f4:19Slave queue ID: 0 |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@192.168.118.11 /etc/sysconfig/network-scripts]#ethtool bond6Settings for bond6: Supported ports: [ ] Supported link modes: Not reported Supported pause frame use: No Supports auto-negotiation: No Supported FEC modes: Not reported Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 1000Mb/s Duplex: Full Port: Other PHYAD: 0 Transceiver: internal Auto-negotiation: off Link detected: yes |
可以看到橙色部分:
|
1
|
Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active) 说明这里 fail_over_mac 生效了。 |
|
1
|
Currently Active Slave: eth1 当前活动的网卡是第一张网卡,也就是当第一张网卡 down,就会切换到 eth2 |
进行网卡故障切换,虚拟机可以通过 ifdown / ifup 来实现

3.1.2 通过 nmcli 命令实现网卡绑定,使用技术:bonding
网卡信息及连接状态如下:
|
1
2
3
4
5
6
7
8
9
|
[root@192.168.118.11 ~]#nmcli devDEVICE TYPE STATE CONNECTION eth0 ethernet connected System eth0eth1 ethernet disconnected -- eth2 ethernet disconnected -- lo loopback unmanaged -- [root@192.168.118.11 ~]#nmcli conNAME UUID TYPE DEVICESystem eth0 078df8ff-b848-4c23-b212-3213a74bc5d5 ethernet eth0 |
目前只有 eth0 网卡连接网络
通过nmcli 创建 bond1
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[root@192.168.118.11 ~]#nmcliConnection 'bond1' (f922008c-75b1-4f5e-a27d-d3e054acde0d) successfully added.[root@192.168.118.11 ~]#nmcli con add type bond-slave ifname eth1 con-name bond1-port1 master bond1Connection 'bond1-port1' (06489850-82d7-4827-bb16-13d5abb84c58) successfully added.[root@192.168.118.11 ~]#nmcli con add type bond-slave ifname eth2 con-name bond1-port2 master bond1Connection 'bond1-port2' (80f43a85-32cc-4302-b0f1-8cb87e9e3e17) successfully added.[root@192.168.118.11 ~]#ll /etc/sysconfig/network-scripts/ifcfg-*-rw-r--r-- 1 root root 399 May 21 23:50 /etc/sysconfig/network-scripts/ifcfg-bond1-rw-r--r-- 1 root root 119 May 21 23:50 /etc/sysconfig/network-scripts/ifcfg-bond1-port1-rw-r--r-- 1 root root 119 May 21 23:50 /etc/sysconfig/network-scripts/ifcfg-bond1-port2-rw-r--r-- 1 root root 259 Mar 30 19:21 /etc/sysconfig/network-scripts/ifcfg-eth0-rw-r--r--. 1 root root 254 Mar 29 2019 /etc/sysconfig/network-scripts/ifcfg-lo[root@192.168.118.11 ~]#nmcli conNAME UUID TYPE DEVICESystem eth0 078df8ff-b848-4c23-b212-3213a74bc5d5 ethernet eth0 bond1 f922008c-75b1-4f5e-a27d-d3e054acde0d bond bond1 bond1-port2 80f43a85-32cc-4302-b0f1-8cb87e9e3e17 ethernet eth2 bond1-port1 06489850-82d7-4827-bb16-13d5abb84c58 ethernet -- |
创建 bond1 并将 两张物理网卡添加到 bond1 , 查看配置文件已经生成。
注意:在虚拟机环境中一定要加上 fail_over_mac = 1
|
1
2
|
sed -i '/BONDING_OPTS/d' ifcfg-bond1echo 'BONDING_OPTS="miimon=100 mode=1 fail_over_mac=1"' >> ifcfg-bond1 |
重启网络
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
[root@192.168.118.11 /etc/sysconfig/network-scripts]#systemctl restart network[root@192.168.118.11 /etc/sysconfig/network-scripts]#cat /proc/net/bonding/bond1Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)Primary Slave: NoneCurrently Active Slave: eth1MII Status: upMII Polling Interval (ms): 100Up Delay (ms): 0Down Delay (ms): 0Slave Interface: eth1MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: 00:0c:29:f4:f4:0fSlave queue ID: 0Slave Interface: eth2MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 0Permanent HW addr: 00:0c:29:f4:f4:19Slave queue ID: 0 |
成功实现了虚拟机装网卡绑定,测试和前一种方式一样。
3.1.3 通过 nmcli 命令实现网卡绑定,使用技术:team [ 在Centos 7 之后的版本推荐使用这种方式 ]
网卡信息及连接状态如下:
|
1
2
3
4
5
6
7
8
9
|
[root@192.168.118.11 ~]#nmcli devDEVICE TYPE STATE CONNECTION eth0 ethernet connected System eth0eth1 ethernet disconnected -- eth2 ethernet disconnected -- lo loopback unmanaged -- [root@192.168.118.11 ~]#nmcli conNAME UUID TYPE DEVICESystem eth0 078df8ff-b848-4c23-b212-3213a74bc5d5 ethernet eth0 |
目前只有eth0 建立连接,通过nmcli 添加 team1
|
1
2
3
4
5
6
|
[root@192.168.118.11 ~]#nmcliConnection 'team1' (25434d73-0224-47e1-80f4-bbb3faae53fe) successfully added.[root@192.168.118.11 ~]#nmcli con add type team-slave ifname eth1 con-name team1-port1 master team1Connection 'team1-port1' (c9e216c2-7668-487b-b6cd-e67631b8a3f9) successfully added.[root@192.168.118.11 ~]#nmcli con add type team-slave ifname eth2 con-name team1-port2 master team1Connection 'team1-port2' (cf8d3150-b3e0-433c-8c4e-ba4feaa4bd6d) successfully added. |
配置完毕,在虚拟机环境中一定要注意:"hwaddr_policy":"by_active" 这个参数意义和 fail_over_mac =1 是一致的,在虚拟机环境中必须添加上,否则网卡高可用失败。
查看网卡连接状态和绑定状态:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[root@192.168.118.11 ~]#nmcli conNAME UUID TYPE DEVICESystem eth0 078df8ff-b848-4c23-b212-3213a74bc5d5 ethernet eth0 team1 25434d73-0224-47e1-80f4-bbb3faae53fe team team1 team1-port1 c9e216c2-7668-487b-b6cd-e67631b8a3f9 ethernet eth1 team1-port2 cf8d3150-b3e0-433c-8c4e-ba4feaa4bd6d ethernet eth2 [root@192.168.118.11 ~]#teamdctl team1 stsetup: runner: activebackupports: eth1 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 eth2 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0runner: active port: eth1 |
本次创建, 网卡直接建立了连接如果没有建立连接,也就是 nmcli con 查看 DEVICE 项没有物理网卡连接,则执行如下:
|
1
2
3
4
5
6
|
[root@192.168.118.11 ~]#nmcli con up team1-port1Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/74)[root@192.168.118.11 ~]#nmcli con up team1-port2Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/75)[root@192.168.118.11 ~]#nmcli con up team1Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/76) |
做完了如上配置,建议直接重启网卡查看是否有报错,或者无法连接的情况:

测试

直接通过 ifdown 掉正在使用的 eth1 网络仅仅延迟了不到1ms的时间就恢复了正常,现在查看网络绑定状态:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@192.168.118.11 ~]#teamdctl team1 stsetup: runner: activebackupports: eth2 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0runner: active port: eth2 |
活动网卡已经切换到 eth2 ,重启 eth1
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[root@192.168.118.11 ~]#ifup eth1Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/87)[root@192.168.118.11 ~]#teamdctl team1 stsetup: runner: activebackupports: eth1 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 eth2 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0runner: active port: eth2 |
启动 eth1 以后,活动网卡依然是 eth2 ,而 eth1 则成为备用网卡。
3.1.4 总结
三种方式:
- 手动配置 - bonding
- nmcli 配置 - bonding
- nmcli 配置 - team
在 Centos 7 以后的版本建议使用 nmcli - team 的方式,简便,更易管理和查看。
在虚拟机的环境中,使用 bond 和 team 都只能实现 mode-1模式的故障切换。
- bond 虚拟机中必要参数: fail_over_mac=1
- team 虚拟机中必要参数:"hwaddr_policy":"by_active"
Centos双网卡冗余绑定的更多相关文章
- CentOS工作内容(六)双网卡带宽绑定bind teaming
CentOS工作内容(六)双网卡带宽绑定bind teaming Teaming功能是什么功能http://zhidao.baidu.com/link?url=cpcwl9LH4FSHJBaTW-e ...
- Virtual Box中 CentOS双网卡设置
Virtual Box中 CentOS双网卡设置: 在Virtual Box中安装CentOS x86-64 6.4(final),配置了双网卡,eth0 为桥接模式 , eth1为内网模式 ...
- CentOS双网卡双IP设置
CentOS双网卡双IP设置 系统环境:CentOS Linux 网络环境: 两个IP地址,192.168.0.10和10.10.30.2,掩码是255.255.255.0,这两个子网的网关地址分别是 ...
- centos双网卡配置
centos双网卡问题,一个网卡配置局域网,一个网卡配置公网,如果内网访问自动走eth1,如果外网访问自动走eth2. 需要配置路由吗? 1. 首先查看机器是否是双网卡,命令如下: lspci | g ...
- Centos双网卡配置默认路由
Centos6.5 双网卡,我们只需要一个默认路由,如果两个都有或都没有会有一系列的问题 [root@centos]# vi /etc/sysconfig/network修改以下内容NETWORKIN ...
- CentOS 双网卡绑定实现平衡负载
绑定两块网卡主要为了解决网卡故障.负载均衡等问题. 1.在vm加一块网卡,登录后检查网卡是否识别. 分别用ip addr和nmcli查看网卡的情况 [root@bigdata-senior01 ~]# ...
- CentOS双网卡绑定bond0
a)拷⻉并配置vim /etc/sysconfig/network-scripts/ifcfg-bond0配置⽂件(会自动创建文件) DEVICE=bond0 TYPE=Ethernet ONBOOT ...
- linux下双网卡的绑定
如果服务器上有两快网卡就可以把它绑定为一块虚拟的网卡,如果一块网卡坏了另一块还可以继续工作,增加了冗余度和负载,具体做法如下: 新建一个虚拟的网卡,命令如下: iv /etc/sysconfig/ne ...
- CentOS 6.X 双网卡绑定配置
相关环境 主机:Dell PowerEdge R720服务器(背板有4个GE网口) 操作系统:CentOS(RHEL)6.X 网线连接 使用6类网线 将Dell R720 GE网口 0,与交换机A相连 ...
- linux中配置双网卡的目的?如何实现双网卡绑定,以实现负载均衡?
配置双网卡的目的:========================== 1.你想做路由器,网关 2.实现冗余 3.负载均衡 linux 主机安装双网卡,共享一个IP地址,对外提供访问,实际 同 ...
随机推荐
- 即时通讯技术文集(第9期):Java NIO和Netty入门系列 [共19篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第9 期. [-1-] 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别 [链接] http ...
- TypeScript学习(一) - 一些基本的数据类型
1. 数据类型 1.1 原始数据类型 boolean number string null undefiend Array Map Tuple 1.2 特殊类型 任意值类型(any) 联合类型 1. ...
- JedisPool和Jedis推荐的生命周期
在开发 Web 项目时,使用 Jedis 客户端与 Redis 进行交互时,通常建议将 JedisPool 设置为单例或静态的,而 Jedis 实例则不应该是单例的.以下是详细的解释和最佳实践: 1. ...
- AQS源码深度剖析,大厂面试必看!
AQS(AbstractQueuedSynchronizer)是Java众多锁以及并发工具的基础类,底层采用乐观锁,大量采用CAS操作保证其原子性,并且在并发冲突时,采用自旋方法重试.实现了轻量高效的 ...
- CPU 性能优化总结
在Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU.内存.网络.IO 性能.本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU 性能优化的方法. 1. 分析手 ...
- nginx详细参数配置(史上最全)
Nginx (engine x) 是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用 代理服务器 (TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人Igor Sysoev编写 ...
- 项目PMP之九项目资源管理
项目PMP之九--项目资源管理 一.定义:实物资源管理,有效和高效的方式进行实物资源进行分配管理 核心理念:贡献专业技能和增强对项目的责任感:提高保持团队满意度和积极性,培养团队技能和能力:实物管 ...
- Jacko pg walkthrough Intermediate window
nmap nmap -p- -A -sS 192.168.219.66 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-19 00:08 U ...
- UTS Open '21 P7 - April Fools
传送门 前言 本题是笔者keysky与同学yangbaich讨论+推式子一整个晚上以及讨论前ybc的一整个下午做出来的,综合起来是 \(34\) 个转移方程,对于整道题来说,贡献大抵为我 \(2\) ...
- 一篇关于c语言的大补帖
一晃今年又开始了,作为一个失意的中年技术男,现在的心境真的是五味杂陈.赶紧写一篇吧,我怕过了这个点,今年就在没有那个心情去写了. 因为是基础嘛,从事软件开发以来c或者c++相关的东西断断续续 也刷了差 ...