HCIA-11.以太网链路聚合与交换机堆叠、集群
链路聚合背景
拓扑组网时为了高可用,需要网络的冗余备份。但增加冗余容易后会出现环路,所以我们部署了STP协议来破除环路。
但是,根据实际业务的需要,为网络不停的增加冗余是现实需要的一部分。
那么,为了让网络冗余符合用户增长的流量,需要增加带宽时怎么办?
现实中,一条1000M的带宽和10000M的带宽的建设成本,差异是巨大的。为了节省网络组建的成本,我们通过添加链路来增加带宽是最优方案:
A1、添加链路相当于增加了链路冗余,会被STP的防环机制阻塞掉。
学习目标
- 学完本课程后,您将能够:
- 了解链路聚合的作用
- 了解链路聚合的分类
- 理解LACP模式的链路聚合协商过程
- 了解iStack和CSS的优点与原理
- 了解链路聚合与堆叠技术常见应用与组网
1、网络的可靠性需求
1.1、网络的可靠性
网络的可靠性指当设备或者链路出现单点或者多点故障时保证网络服务不间断的能力。
网络的可靠性可以从单板、设备、链路多个层面实现。
随着网络的快速普及和应用的日益深入,各种增值业务得到了广泛部署,网络中断可能导致大量业务异常、造成重大经济损失。因此,作为承载业务主体的基础网络,其可靠性成为备受关注的焦点。
1.2、单板可靠性
- 框式交换机由机框、电源模块、风扇模块、主控板、交换网板(SFU)、线路板(LPU)构成。
- 机框:为各种板卡、模块提供插槽,实现板卡间的通信。
- 电源模块:设备的供电系统
- 风扇模块:设备的散热系统
- 主控板(MPU,Main Processing Unit):负责整个系统的控制平面和管理平面。
- 交换网板(SFU,Switch Fabric Unit):负责整个系统的数据平面。数据平面提供高速无阻塞数据通道,实现各个业务模块之间的业务交换功能。
- 线路板(LPU,Line Processing Unit):线路处理单元是物理设备上用于提供数据转发功能的模块,提供不同速率的光口、电口。
- 以S12700E-8为例,设备提供8个线路板槽位、4个交换网板槽位、2个主控板槽位、6个电源模块槽位、4个风扇模块槽位。
- 框式交换机配置多个主控板、交换网板可保证设备自身的可靠性,单个槽位的交换网板、主控板损坏不影响设备的正常运行。
- 框式交换机的线路板损坏后,该板卡上的接口无法正常转发数据。
1.3、设备可靠性
设备无冗余设计的网络中,下游交换机采用单上行接入,上行交换机的接口故障或设备故障会导致下游网络全部中断。
设备冗余设计的网络中,下游交换机双上行接入,采用链路一主一备的方式,主链路上行接口、设备故障可以切换到备份链路,通过备份设备转发。
1.4、链路可靠性
为保证设备间链路可靠性,在设备间部署多条物理线路,为防止环路STP只保留一条链路转发流量,其余链路成为备份链路。
2、链路聚合技术原理与配置
2.1、基本原理
链路聚合:Eth-trunk,通过虚拟化(多虚一)将多条物理链路逻辑上整合为一条链路。
逻辑上的链路是STP计算的链路(即STP不会再计算物理链路)。
Eth-trunk设计了相应的机制防止多条物理链路出现环路:在一个链路捆绑组中的物理接口1收到的数据,不会再从链路捆绑组中的其它物理接口转发。
2.1.1、提升链路带宽
设备之间存在多条链路时,由于STP的存在,实际只会有一条链路转发流量,设备间链路带宽无法得到提升。
2.1.2、以太网链路聚合
以太网链路聚合Eth-Trunk:简称链路聚合,通过将多个物理接口捆绑成为一个逻辑接口,可以在不进行硬件升级的条件下,达到增加链路带宽的目的。
2.1.3、链路聚合基本术语/概念
A1、聚合组(Link Aggregation Group,LAG):若干条链路捆绑在一起所形成的的逻辑链路。每个聚合组唯一对应着一个逻辑接口,这个逻辑接口又被称为链路聚合接口或Eth-Trunk接口。
A2、成员接口和成员链路:组成Eth-Trunk接口的各个物理接口称为成员接口。成员接口对应的链路称为成员链路。
A2.1、活动接口和活动链路:活动接口又叫选中(Selected)接口,是参与数据转发的成员接口。活动接口对应的链路被称为活动链路(Active link)
A2.2、非活动接口和非活动链路:又叫非选中(Unselected)接口,是不参与转发数据的成员接口。非活动接口对应的链路被称为非活动链路(Inactive link)。
A3、聚合模式 :根据是否开启LACP(Link Aggregation Control Protocol,链路聚合控制协议),链路聚合可以分为手工模式和LACP模式。
A4、其他概念:活动接口上限阈值和活动接口下限阈值。
2.2、手工模式
设备老旧、低端,不支持LACP协议,我们就采用手工模式。
手工模式由缺点,是 单通 的。
[S1]interface Eth-Trunk 1 #创建一个聚合组
[S1-Eth-Trunk1]mode manual load-balance #设置工作模式为手工静态(默认的模式)
[S1-Eth-Trunk1]trunkport GigabitEthernet 0/0/1 0/0/2 #将物理接口添加进聚合组
[S1]int gi 0/0/3
[S1-GigabitEthernet0/0/3]eth-trunk 1 #将物理接口添加进聚合组
2.2.1、手工模式的Eth-Trunk的问题:
A1、链路两端不能相互检测,容易造成单通问题:
A1.1、没有报文检测机制;
A1.2、只要接口是UP状态,就认为对方可达。
情景1、没有报文检测机制:
S1交换机是Eth-Trunk端口,与S2相连且为RP口。
S2交换机有3个端口与S1的Eth-Trunk连接,且都为DP口。
现在,两端没有AP阻塞口,一定会:
形成小的环路;
S2不知该通过哪个接口与S1通信?
情景2、只要接口是UP状态,就认为对方可达:
在S1 GE02口与S2断开的情况下,S1交换机的Eth-Trunk三个口都是正常连接的:
而S2与S1连接的GE 02口已断开。
因为Eth-Trunk手工聚合通信发送报文接口是随机的,所以当S2向S1发送的报文通过S1的GE 02口发出时,就会出现单通。
2.3、LACP模式
2.3.1、特点
1、通过交互LACPDU检测链路两端的接口状态;
2、可以设置备份链路。
例:用户需要"2千兆"带宽,且需要存在备份链路,当主链路失效,备份链路转发数据。
[S1]interface Eth-Trunk 1
[S1-Eth-Trunk1]mode lacp-static #设置链路聚合模式为LACP
[S1-Eth-Trunk1]trunkport GigabitEthernet 0/0/1 0/0/2 0/0/3
[S2]执行与S1相同的Eth-Trunk配置。
[S2-Eth-Trunk1]max active-linknumber 2 #设置最大活跃链路为2(默认为8)
2.3.2、链路聚合两端的带宽
链路聚合的“一端”要求是同速率,同带宽。
链路聚合的“两端”不是同速率、同带宽的链路的情况,则向下兼容(一端为百兆链路、一端为千兆链路,则取百兆链路为最大带宽)。
链路聚合的两端,聚合组号没有一致性要求。
2.3.3、在聚合组中确定某接口为备份接口
每一个接口都有对应的LACP接口优先级,优先级值越小越高;
优先级值相等,则比较接口编号,越小越高。
[S2-GigabitEthernet0/0/1]lacp priority #设置接口的LACP优先级,只在备份接口未选举前生效
如下,即时变更了0/0/1口的优先级,0/0/3口依然是备份口,只有等到下一次主备选举,才能生效。
在聚合链路的两端,需要选举一个主动端设备来确定备份接口的选择,被动端则使用主动端选举的结果。
2.3.4、如何选举主动端
每一个运行了LACP的交换机都会存在LACP系统优先级:
优先级值越小越高;
优先级值相同,则比较MAC地址,越小越高。
[S1]lacp priority ? #修改LACP全局优先级
INTEGER<0-65535> Priority value, the default value is 32768
2.3.5、负载分担
2.3.5.1、基于包
在使用Eth-Trunk转发数据时,由于聚合组两端设备之间有多条物理链路,如果每个数据帧在不同的链路上转发,则有可能导致数据帧到达对端时间不一致,从而引起数据乱序。
2.3.5.2、基于流(华为设备默认基于流转发)
Eth-Trunk推荐采用逐流负载分担的方式,即一条相同的流负载到一条链路,这样既保证了同一数据流的数据帧在同一条物理链路转发,又实现了流量在聚合组内各物理链路上的负载分担。
常见的模式有:源IP、源MAC、目的IP、目的MAC、源目IP、源目MAC。
[S2-Eth-Trunk1]load-balance ?
dst-ip According to destination IP hash arithmetic
dst-mac According to destination MAC hash arithmetic
src-dst-ip According to source/destination IP hash arithmetic
src-dst-mac According to source/destination MAC hash arithmetic
src-ip According to source IP hash arithmetic
src-mac According to source MAC hash arithmetic
2.3.x、扩展
链路聚合的成员接口都会发送LACPDU(不管是活跃链路还是非活跃链路);
在多个活跃的成员接口中,会随机选择一个接口发送STP报文。
3、堆叠/集群概述
3.1、什么是堆叠、集群
堆叠(iStack):多台支持堆叠特性的交换机通过堆叠线缆连接在一起,从逻辑上变成一台交换设备,作为一个整体参与数据转发。主要针对盒式设备,最大支持16台设备融合组网。
集群(Cluster Switch System,CSS ):将两台支持集群特性的交换机设备组合在一起,从逻辑上组合成一台交换设备。
主要针对框式设备,最大支持2台设备融合组网,一般做核心。
3.2、堆叠、集群的优势
↓↓↓ CSS、iStack网络的逻辑形态 ↓↓↓
交换机多虚一:堆叠交换机对外表现为一台逻辑交换机,控制平面合一,统一管理。
转发平面合一:堆叠内物理设备转发平面合一,转发信息共享并实时同步。
跨设备链路聚合:跨物理设备的链路被聚合成一个Eth-Trunk端口,和下游设备实现互联。
指令集
指令 | 功能 |
interface Eth-Trunk ? | <0-63> Eth-Trunk interface number |
[Eth-Trunk1]mode ? | 动态:lacp-static Static working mode 静态:manual Manual working mode |
[Eth-Trunk1]mode manual ? | 手工静态模式 load-balance Load balance working mode |
[S1-GigabitEthernet0/0/3]eth-trunk 1 | 将GE 0/0/3接口添加进聚合组1 |
trunkport GigabitEthernet 0/0/1 0/0/2 | 将GE 0/0/1和GE 0/0/2接口添加进组合组1 |
dis interface Eth-Trunk ? | 显示Eth-Trunk聚合组状态 |
mode lacp-static | 设置链路聚合的模式为LACP lacp-static Static working mode manual Manual working mode |
max active-linknumber ? | 设置最大活跃链路为2(默认为8) INTEGER<1-8> Value of max active linknumber |
lacp priority | INTEGER<0-65535> Priority value, the default value is 32768 |
]load-balance ? | 设置负载分担的方式 dst-ip According to destination IP hash arithmetic dst-mac According to destination MAC hash arithmetic src-dst-ip According to source/destination IP hash arithmetic src-dst-mac According to source/destination MAC hash arithmetic src-ip According to source IP hash arithmetic src-mac According to source MAC hash arithmetic |
相关文章:
HCIA-11.以太网链路聚合与交换机堆叠、集群
链路聚合背景 拓扑组网时为了高可用,需要网络的冗余备份。但增加冗余容易后会出现环路,所以我们部署了STP协议来破除环路。 但是,根据实际业务的需要,为网络不停的增加冗余是现实需要的一部分。 那么,为了让网络冗余…...
网络安全之数据加密(DES、AES、RSA、MD5)
刚到公司时,我的工作就是为app端提供相应的接口。之前app使用的是PHP接口,对数据加密方面做得比较少。到使用java接口时,老大开始让我们使用DES加密,进行数据传输,但是后来觉得DES是对称加密,密钥存在客户端…...
Vim忍者速成秘卷:让你的键盘冒出残影の奥义
🎯 核心原理 通过 超低延迟配置 + 肌肉记忆优化 + 视觉欺骗技术,达成行云流水的操作体验。就像《火影忍者》结印般流畅! ⚡ 残影生成术(基础篇) " 🛩️ 贴地飞行模式(.vimrc 极速配置) set timeoutlen=300 " 快捷键响应时间压缩至300ms(武士刀级响应)…...
致远互联FE协作办公平台 存在SQL注入漏洞(DVB-2025-8942)
免责声明 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x01…...
通俗易懂动态表单自定义字段解决方案
动态表单自定义字段解决方案 1. 背景: 有些项目可能会有要求,客户可以自定义设计字段,并且字段还需要在后台设置可展示、可搜索。 2. 场景: 比如说报名场景,我们并不知道客户想让用户填哪些东西。下面我就举个例子&…...
CentOS7离线部署安装Dify
离线部署安装Dify 在安装 Dify 之前,请确保您的机器满足以下最低系统要求: CPU > 2 核 内存 > 4 GiB 1.安装docker和docker compose 启动 Dify 服务器最简单的方式是通过docker compose。因此现在服务器上安装好docker和docker compose…...
Dify后端结构与二次开发指南(一)
Dify 的后端基于 Python 编写,使用 Flask 作为 Web 框架,SQLAlchemy 作为 ORM(对象关系映射),Celery 作为任务队列,Flask-Login 处理用户认证和授权。以下是对 Dify 后端结构的详细介绍,以及如何…...
vscode arm拓展 keil acm5 到acm6迁移
目录 1. Arm Keil Studio Visual Studio 代码扩展用户指南(only support acm6 project)(能不迁移还是别迁移了,工程量太大啦,会出很多问题的) 1. Arm Keil Studio Visual Studio 代码扩展用户指南ÿ…...
软件工程概述、软件过程模型、逆向工程(高软45)
系列文章目录 软件工程概述、软件过程模型、逆向工程。 文章目录 系列文章目录前言一、软件工程概述二、能力成熟度模型1.能力成熟度模型CMM2.能力成熟度模型集成CMMI 三、软件过程模型1.瀑布模型SDLC2.原型化模型3.螺旋模型4.增量模型5.喷泉模型6.敏捷模型7.统一过程模型RUP 四…...
医药制造行业现状 医药制造行业内检实验室LIMS
在医药制造行业中,质量控制是确保产品安全性和有效性的关键环节。随着科技的进步和监管要求的日益严格,传统的实验室信息管理系统(LIMS)已经难以满足现代医药制造企业对高效、精准管理的需求。面对这一挑战,白码内检实…...
FX-std::list
std::list 是 C 标准库中的一个双向链表容器,定义在 <list> 头文件中。它支持在任意位置高效地插入和删除元素,但不支持随机访问。以下是 std::list 的基本用法和一些常见操作: 1. 包含头文件 #include <list> 2. 定义和初始化…...
配置安全网站
配置网站 确定是Debian系统 更新索引:apt update 安装包:apt upgrade -y 查看nginx状态:systemctl status nginx 安装:nginx:apt install nginx 启动:systemctl start nginx 在/var/www/里面创建一个…...
C/C++中对字符处理的常用函数
C语言中的 ctype.h 头文件提供了一系列字符分类和转换函数,用于高效处理字符相关操作。这些函数通过接受 int 类型参数(需为 unsigned char 或 EOF (-1)值),返回非零值表示条件正确,返回0表示错…...
深度学习分词器char-level实战详解
一、三种分词器基本介绍 word-level:将文本按照空格或者标点分割成单词,但是词典大小太大 subword-level:词根分词(主流) char-level:将文本按照字母级别分割成token 二、charlevel代码 导包࿱…...
根据开始和结束日期,获取每一天和每个月的开始和结束日期的list
获取开始日期与结束日期之间每天的list /*** 根据传入的开始时间和结束时间,筛选出所有的天的list;** param startTime* param endTime*/public Map<String, List<String>> fetchDayListBetweenStartAndEnd(String startTime, String endTime) {// 创建mapMap<…...
实时采集到的语音进行语音识别
要在.NET Framework 4.8中使用C#实现离线实时语音识别,可以使用开源库Vosk(支持离线ASR)配合音频处理库NAudio。 步骤 1:安装依赖库 1.1. 安装NuGet包: - Install-Package NAudio(处理音频输入)…...
《苍穹外卖》SpringBoot后端开发项目核心知识点与常见问题整理(DAY1 to DAY3)
目录 一、在本地部署并启动Nginx服务1. 解压Nginx压缩包2. 启动Nginx服务3. 验证Nginx是否启动成功: 二、导入接口文档1. 黑马程序员提供的YApi平台2. YApi Pro平台3. 推荐工具:Apifox 三、Swagger1. 常用注解1.1 Api与ApiModel1.2 ApiModelProperty与Ap…...
【从零开始学习计算机科学】数据库系统(十一)云数据库、NoSQL 与 NewSQL
【从零开始学习计算机科学】数据库系统(十一)云数据库、NoSQL 与 NewSQL 云数据库云服务器的服务云数据库和传统的分布式数据库的异同NoSQLNoSQL数据库的特点CAP定理NoSQL的特性NoSQL数据库的分类NoSQL的适用场景Nosql数据库实例-RedisRedis的优势MongoDBMongoDB的特点NewSQL…...
Linux入门 全面整理终端 Bash、Vim 基础命令速记
Linux入门 2025 超详细全面整理 Bash、Vim 基础命令速记 刚面对高级感满满的 终端窗口是不是有点懵?于是乎,这份手册就是为你准备的高效学习指南!我把那些让人头大的系统设置、记不住的命令都整理成了对你更友好的格式,让你快速学…...
LInux基础--apache部署网站
httpd的安装 yum -y install httpdhttpd的使用 启动httpd systemctl enable --now httpd使用enable --now 进行系统设置时,会将该服务设置为开机自启并且同时开启服务 访问httpd 创建虚拟主机 基于域名 在一台主机上配置两个服务server1和server2,其…...
重生之我在学Vue--第12天 Vue 3 性能优化实战指南
重生之我在学Vue–第12天 Vue 3 TypeScript 类型系统深度整合 文章目录 重生之我在学Vue--第12天 Vue 3 TypeScript 类型系统深度整合前言一、TypeScript与Vue3的集成1.1 项目初始化配置1.2 类型配置文件解析 二、类型声明实战2.1 Props类型约束2.2 Emit事件类型2.3 组合式AP…...
Go 语言封装 HTTP 请求的 Curl 工具包
文章目录 Go 语言封装 HTTP 请求的 Curl 工具包🏗️ 工具包结构简介核心结构体定义初始化函数 🌟 功能实现1. 设置请求头2. 构建请求3. 发送请求4. 发送 GET 请求5. 发送 POST 请求6. 发送 PUT 请求7. 发送 DELETE 请求8. 读取响应体 💡 实现…...
【Go】Go MongoDB 快速入门
1. MongoDB 简介 1.1 MongoDB 介绍 由于我们时常需要存储一些大文本数据(比如文章内容),存储到一些关系型数据库可能不是最好的选择,这个时候就需要引入一些 NoSQL(Not Only SQL),比如 MongoD…...
Java --- 根据身份证号计算年龄
介绍 根据身份证号计算年龄 Java代码 /*** 根据身份证号计算年龄* param birthDateStr* return*/public static int calculateAge(String birthDateStr) {try {birthDateStrbirthDateStr.substring(6,68);// 定义日期格式SimpleDateFormat sdf new SimpleDateFormat("…...
[LeetCode热门100题]|137,260,268,面试17.19
1、137 只出现一次数字|| 1、题目描述 137 只出现一次数字||https://leetcode.cn/problems/single-number-ii/description/ 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你…...
WPF未来展望:紧跟技术发展趋势,探索新的可能性
WPF未来展望:紧跟技术发展趋势,探索新的可能性 一、前言二、WPF 与.NET 技术的融合发展2.1 拥抱.NET Core2.2 利用.NET 5 及后续版本的新特性 三、WPF 在新兴技术领域的应用拓展3.1 与云计算的结合3.2 融入物联网生态 四、WPF 在用户体验和设计方面的创新…...
maxwell
一、maxwell简介 它是一款轻量级工具,主要用于实现 MySQL 到 Kafka 的数据实时同步,尤其适合对实时性要求较高的场景。 1.核心功能 借助解析 MySQL 的 Binlog,能够实时捕获数据变更,并将这些变更数据发送至 Kafka。 2.缺点 仅…...
Qt 6.6.1 中 QPixmap::grabWindow() 的用法与替代方案
一、Qt 6 中的 API 变化 弃用 QPixmap::grabWindow() 在 Qt 6 中,QPixmap::grabWindow() 已被迁移至 QScreen 类,需通过 QScreen::grabWindow() 实现窗口截取。 原因: Qt 6 重构了图形模块,QPixmap 的截屏功能被整合到 QSc…...
【软件】免费的PDF全文翻译软件,能保留公式图表的样式
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 很多PDF全文翻译软件都是收费的,而划线翻译看着又很累。这个开源的PDF全文翻译软件非常好用,并且能够保留公式、图表、目录和注…...
LeetCode 112. 路径总和 II java题解
https://leetcode.cn/problems/path-sum/description/ class Solution {boolean resfalse;//记录结果public boolean hasPathSum(TreeNode root, int targetSum) {if(rootnull) return res;int sum0;find(root,sum,targetSum);return res;}public void find(TreeNode root,int…...
如何快速定位导致服务器卡顿的进程
在 Linux 系统中,可以通过多种方式快速定位导致服务器卡顿的进程。以下是一些常用的方法: 1. 使用 top 和 htop 命令: 使用 top 或 htop 命令可以实时监视系统资源利用情况,包括 CPU 和内存占用情况,以及运行的进程列…...
【计算机网络】第八版和第七版的主要区别,附PDF
「《计算机网络》(... 谢希仁」,https://pan.quark.cn/s/7c2147cb48f7 1. 新增内容 - 软件定义网络(SDN):第八版在网络层章节中新增了对SDN的简介(第4章),介绍了其基本原理和应用。 - Wi-Fi代…...
ubuntu20.04_vscode_snap安装方式
停止 Snap 服务 运行以下命令: sudo systemctl stop snapd 彻底停止 Snap 服务 停止 snapd.service 和 snapd.socket: sudo systemctl stop snapd.socket sudo systemctl stop snapd.service 禁用 Snap 服务的自动启动(可选)&…...
基于SpringBoot实现旅游酒店平台功能十一
一、前言介绍: 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高,旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求,旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上࿰…...
coze ai assistant Task 2
创建一个智能体:夸夸机器人 https://www.coze.cn/store/agent/7480939060010713138?bot_idtrue 改为豆包系列-豆包角色扮演 添加bingWebSearch搜索 添加前: 添加后: 改为工具调用: 添加知识库 使用长期记忆 结合自己的需求&…...
Qt/C++音视频开发82-系统音量值获取和设置/音量大小/静音
一、前言 在音视频开发中,音量的控制分两块,一个是控制播放器本身的音量,绝大部分场景都是需要控制这个,这个不会影响系统音量的设置。还有一种场景是需要控制系统的音量,因为播放器本身的音量是在系统音量的基础上控…...
C盘清理终极方案——基于Windows软连接的目录迁移实战
C盘清理终极方案——基于Windows软连接的目录迁移实战 (案例实现:.cache、.conda、AppData\docker等目录移动至D盘) 核心 # 创建目录软连接 mklink /J "C:\Users\<用户名>\AppData\Local\Docker" "D:\SoftwareCa…...
医疗AI测试实战:如何确保人工智能安全赋能医疗行业?
一、医疗AI测试的重要性 人工智能(AI)正广泛应用于医疗行业,如疾病诊断、医学影像分析、药物研发、手术机器人和智能健康管理等领域。医疗AI技术的应用不仅提高了诊断效率,还能降低误诊率,改善患者治疗效果。然而&…...
在资源有限中逆势突围:从抗战智谋到寒门高考的破局智慧
目录 引言 一、历史中的非对称作战:从李牧到八路军的智谋传承 李牧戍边:古代军事博弈中的资源重构 八路军的游击战:现代战争中的智慧延续 二、创业界的逆袭之道:小米与拼多多的资源重构 从MVP到杠杆解 社交裂变与资源错配 …...
在使用element-ui时表单的表头在切换页面时第一次进入页面容易是白色字体解决方法
在里面添加:header-cell-style"{ color: black }" <el-table :data"tableData" style"width: 100%" height"250" :header-cell-style"{ color: black }" ></el-table> 正确代码是 <templat…...
与指定数字相同的数的个数(信息学奥赛一本通-1102)
【题目描述】 输出一个整数序列中与指定数字相同的数的个数。 【输入】 输入包含三行: 第一行为n,表示整数序列的长度(n≤100); 第二行为n个整数,整数之间以一个空格分开; 第三行包含一个整数,为指定的数字…...
13. Pandas :使用 to_excel 方法写入 Excel文件
一 to_excel 方法的相关参数 用它来指定要将 DataFrame 写入哪些工作表的哪些单元格,以及是否需要包含列标题和 DataFrame 索引。如何处理特殊值(如 np.nan 和 np.inf)。 1.指定工作表和单元格 sheet_name:指定将 DataFrame 写入的…...
python画图文字显示不全+VScode新建jupyter文件
之前有两个jupyter文件,一个显示正确一个显示错误。已经尝试过的方法包括: 1、更改下载好的SimHei字体,或者其他支持中文的字体 2、重新创建虚拟环境 3、清楚matplotlib缓存目录 4、从anaconda的jupyter换至vscode 目前部分中文不能正常…...
C#中继承的核心定义
1. 继承的核心定义 继承 是面向对象编程(OOP)的核心特性之一,允许一个类(称为子类/派生类)基于另一个类(称为父类/基类)构建,自动获得父类的成员(字段、属…...
MOEFeedForward 模块
代码 class FeedForward(nn.Module):def __init__(self, config: LMConfig):super().__init__()if config.hidden_dim is None:hidden_dim 4 * config.dimhidden_dim int(2 * hidden_dim / 3)config.hidden_dim config.multiple_of * ((hidden_dim config.multiple_of - 1…...
TypeScript变量声明详解:与JavaScript的对比与工程化价值
TypeScript的变量声明机制在保留JavaScript灵活性的同时,通过类型注解和作用域强化显著提升了代码可靠性。本文将深入解析TypeScript的变量声明特性,并与JavaScript/ES标准进行对比,揭示其工程实践价值。 一、变量声明方式对比 1. 基础声明语…...
在 Axios 中设置代理
在 Axios 中设置代理 Axios 与代理 Axios 是 JavaScript 生态中最广泛使用的 HTTP 客户端之一。它基于 Promise,提供了易用、直观的 API,用于执行 HTTP 请求并处理自定义请求头、配置和 Cookie 等。 通过为 Axios 请求设置代理,您可以隐藏自…...
WebSocket 使用教程
WebSocket 使用教程 WebSocket 是一种在现代网络应用中广泛使用的网络通信协议,旨在实现服务器与客户端之间高效、实时的双向通信。与传统的 HTTP 协议相比,WebSocket 提供了更低的延迟和更高的互动性,使其成为构建实时应用的理想选择。无论…...
【RabbitMQ】rabbitmq在spring boot中的使用
rabbitmq官网地址:https://www.rabbitmq.com/tutorials 下面介绍rabbitmq官网中七种使用方式在spring boot中如何使用 下面是基于 Spring Boot 使用 RabbitMQ 实现这七种模式的示例代码。假设已经引入了以下依赖: Maven 依赖 <dependency><g…...
独立开发记录:使用Trae和Cloudflare快速搭建了自己的个人博客
前段时间我计划搭建个人博客,用于记录自己写的文章、录制的课程和开发的项目,于是结合 Trae AI IDE 与 Cloudflare 快速搭建并上线了人生第一个网站,在这个过程中,我整合了两种工具的优势(AI辅助开发 免费托管加速&a…...