当前位置: 首页 > news >正文

华为配置OSPF与BFD联动示例

配置OSPF与BFD联动示例

组网图形

图1 配置OSPF与BFD联动组网图
 

  • OSPF与BFD联动简介
  • 配置注意事项
  • 组网需求
  • 配置思路
  • 操作步骤
  • 配置文件

OSPF与BFD联动简介

双向转发检测BFD(Bidirectional Forwarding Detection)是一种用于检测转发引擎之间通信故障的检测机制。BFD对两个系统间的、同一路径上的同一种数据协议的连通性进行检测,这条路径可以是物理链路或逻辑链路。OSPF与BFD联动就是将BFD和OSPF协议关联起来,将BFD对链路故障的快速感应通知OSPF协议,从而加快OSPF协议对于网络拓扑变化的响应。

网络上的链路故障或拓扑变化都会导致设备重新进行路由计算,如果仅依靠OSPF协议本身的检测机制,那么路由的重新计算时间就是协议本身收敛的时间,这种情况下协议感知到故障所需时间为秒级。然而对于高速数据传输,例如吉比特速率级,超过1秒的检测时间将导致大量数据丢失;对于时延敏感的业务,例如语音业务,超过1秒的延迟是不能接受的。当OSPF网络对可靠性要求较高,或者所承载的业务对时延比较敏感时,可以考虑配置OSPF与BFD联动,这样一旦邻居之间的链路出现故障,BFD的快速性能够加快OSPF的收敛速度,达到毫秒级的故障检测。

配置注意事项
  • BFD报文双向检测,需要建立OSPF邻居的两端设备均进行BFD配置。
  • 创建BFD会话的通信双方必须处于同一个OSPF区域的同一网段。
  • ospf bfd enable命令和ospf bfd block命令是两条互斥命令,不能同时使能。
  • 本举例适用的产品包括:
    • S3700-EI、S3700-HI
    • S5700-EI、S5700-HI、S5710-EI、S5710-HI、S5720-SI、S5720S-SI、S5720I-SI、S5720-EI、S5720-HI、S5730-HI、S5730-SI、S5730S-EI、S5731-H、S5731-S、S5731S-S、S5731S-H、S5731-H-K、S5732-H、S5732-H-K、S5735-S、S5735S-S、S5735-S-I、S5735S-H、S5736-S
    • S6700-EI、S6720-SI、S6720S-SI、S6720-EI、S6720S-EI、S6720-HI、S6730-H、S6730-S、S6730S-S、S6730S-H、S6730-H-K
    • S7703、S7706、S7712、S7710、S7703 PoE、S7706 PoE、S7905、S7908
    • S9703、S9706、S9712
  • 本举例中产品的默认适用版本请参见“案例适用的产品和版本说明”中的表1。

如需了解交换机软件配套详细信息,请点击Info-Finder,在选择产品系列或产品型号后,在“硬件中心”进行查询。

S5731-L和S5731S-L属于远端模块,不支持Web管理、YANG和命令行,仅支持通过中心交换机对其下发配置,相关操作请参见《S300, S500, S2700, S5700, S6700 V200R022C00 配置指南-设备管理》中的“智能极简园区网络配置(小行星方案)”。

组网需求

如图1所示,SwitchA、SwitchB和SwitchC之间运行OSPF,SwitchA和SwitchB之间的交换机仅作透传功能。现在需要SwitchA和SwitchB能快速感应它们之间的链路状态,当链路SwitchA-SwitchB发生故障时,业务能快速切换到备份链路SwitchA-SwitchC-SwitchB上。

请确保该场景下互联接口的STP处于未使能状态。因为在使能STP的环形网络中,如果用交换机的VLANIF接口构建三层网络,会导致某个端口被阻塞,从而导致三层业务不能正常运行。

配置思路

采用如下思路配置OSPF与BFD联动:

  1. 在SwitchA、SwitchB和SwitchC上配置OSPF基本功能,实现整个OSPF网络的互通。

  2. 在SwitchA、SwitchB和SwitchC上配置OSPF与BFD联动功能,实现当SwitchA和SwitchB之间的链路出现故障时快速的切换到备份链路。

操作步骤
  1. 配置各接口所属的VLAN

    # 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。<HUAWEI> system-view
    [HUAWEI] sysname SwitchA
    [SwitchA] vlan batch 10 30
    [SwitchA] interface gigabitethernet 1/0/1
    [SwitchA-GigabitEthernet1/0/1] port link-type trunk
    [SwitchA-GigabitEthernet1/0/1] port trunk allow-pass vlan 10
    [SwitchA-GigabitEthernet1/0/1] quit
    [SwitchA] interface gigabitethernet 1/0/2
    [SwitchA-GigabitEthernet1/0/2] port link-type trunk
    [SwitchA-GigabitEthernet1/0/2] port trunk allow-pass vlan 30
    [SwitchA-GigabitEthernet1/0/2] quit

  2. 配置各VLANIF接口的IP地址

    # 配置SwitchA。SwitchB和SwitchC的配置与SwitchA类似。[SwitchA] interface vlanif 10
    [SwitchA-Vlanif10] ip address 10.1.1.1 24
    [SwitchA-Vlanif10] quit
    [SwitchA] interface vlanif 30
    [SwitchA-Vlanif30] ip address 10.3.3.1 24
    [SwitchA-Vlanif30] quit

  3. 配置OSPF基本功能

    # 配置SwitchA。[SwitchA] ospf 1 router-id 10.10.10.1
    [SwitchA-ospf-1] area 0
    [SwitchA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
    [SwitchA-ospf-1-area-0.0.0.0] network 10.3.3.0 0.0.0.255
    [SwitchA-ospf-1-area-0.0.0.0] quit
    [SwitchA-ospf-1] quit
    # 配置SwitchB。[SwitchB] ospf 1 router-id 10.10.10.2
    [SwitchB-ospf-1] area 0
    [SwitchB-ospf-1-area-0.0.0.0] network 10.2.2.0 0.0.0.255
    [SwitchB-ospf-1-area-0.0.0.0] network 10.3.3.0 0.0.0.255
    [SwitchB-ospf-1-area-0.0.0.0] network 172.16.1.0 0.0.0.255
    [SwitchB-ospf-1-area-0.0.0.0] quit
    [SwitchB-ospf-1] quit
    # 配置SwitchC。[SwitchC] ospf 1 router-id 10.10.10.3
    [SwitchC-ospf-1] area 0
    [SwitchC-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
    [SwitchC-ospf-1-area-0.0.0.0] network 10.2.2.0 0.0.0.255
    [SwitchC-ospf-1-area-0.0.0.0] quit
    [SwitchC-ospf-1] quit

    # 配置完成后,执行命令display ospf peer,可以看到SwitchA,SwitchB和SwitchC之间互相建立了邻接关系。以SwitchA的显示结果为例。

    [SwitchA] display ospf peerOSPF Process 1 with Router ID 10.10.10.1NeighborsArea 0.0.0.0 interface 10.1.1.1(Vlanif10)'s neighborsRouter ID: 10.10.10.3       Address: 10.1.1.2          State: Full  Mode:Nbr is  Master  Priority: 1DR: 10.1.1.2  BDR: 10.1.1.1  MTU: 0Dead timer due in 38  secRetrans timer interval: 5Neighbor is up for 00:00:15Authentication Sequence: [ 0 ]NeighborsArea 0.0.0.0 interface 10.3.3.1(Vlanif30)'s neighborsRouter ID: 10.10.10.2       Address: 10.3.3.2State: Full  Mode:Nbr is   Master  Priority: 1DR: 10.3.3.2  BDR: 10.3.3.1  MTU: 0Dead timer due in 25  secRetrans timer interval: 5Neighbor is up for 00:00:59Authentication Sequence: [ 0 ]

    # 查看SwitchA的OSPF路由表的信息,可以看到去往SwitchB和SwitchC的路由表项。而去往目的网段172.16.1.0/24的路由下一跳地址为10.3.3.2,说明流量在链路SwitchA→SwitchB上传输。

    [SwitchA] display ospf routingOSPF Process 1 with Router ID 10.10.10.1Routing TablesRouting for NetworkDestination        Cost  Type       NextHop         AdvRouter       Area10.1.1.0/24        1     Transit    10.1.1.1        10.10.10.1      0.0.0.010.3.3.0/24        1     Transit    10.3.3.1        10.10.10.1      0.0.0.010.2.2.0/24        2     Transit    10.1.1.2        10.10.10.3      0.0.0.010.2.2.0/24        2     Transit    10.3.3.2        10.10.10.3      0.0.0.0172.16.1.0/24      2     Stub       10.3.3.2        10.10.10.2      0.0.0.0Total Nets: 5Intra Area: 5  Inter Area: 0  ASE: 0  NSSA: 0

  4. 配置OSPF与BFD联动

    # 在SwitchA上配置OSPF与BFD联动功能。[SwitchA] bfd   //全局使能BFD功能
    [SwitchA-bfd] quit
    [SwitchA] ospf 1
    [SwitchA-ospf-1] bfd all-interfaces enable   //在OSPF进程下使能BFD特性
    [SwitchA-ospf-1] quit
    # 在SwitchB上配置OSPF与BFD联动功能。[SwitchB] bfd   //全局使能BFD功能
    [SwitchB-bfd] quit
    [SwitchB] ospf 1
    [SwitchB-ospf-1] bfd all-interfaces enable   //在OSPF进程下使能BFD特性
    [SwitchB-ospf-1] quit
    # 在SwitchC上配置OSPF与BFD联动功能。[SwitchC] bfd   //全局使能BFD功能
    [SwitchC-bfd] quit
    [SwitchC] ospf 1
    [SwitchC-ospf-1] bfd all-interfaces enable   //在OSPF进程下使能BFD特性
    [SwitchC-ospf-1] quit
    # 配置完成后,在SwitchA或SwitchB、SwitchC上执行display ospf bfd session all命令,可以看到BFD会话的状态为Up。以SwitchA的显示为例。[SwitchA] display ospf bfd session allOSPF Process 1 with Router ID 10.10.10.1Area 0.0.0.0 interface 10.1.1.1(Vlanif10)'s BFD SessionsNeighborId:10.10.10.3       AreaId:0.0.0.0          Interface:Vlanif10BFDState:up                 rx    :1000             tx       :1000Multiplier:3                BFD Local Dis:8195      LocalIpAdd:10.1.1.1RemoteIpAdd:10.1.1.2        Diagnostic Info:No diagnostic informationArea 0.0.0.0 interface 10.3.3.1(Vlanif30)'s BFD SessionsNeighborId:10.10.10.2       AreaId:0.0.0.0          Interface:Vlanif30BFDState:up                 rx    :1000             tx       :1000Multiplier:3                BFD Local Dis:8194      LocalIpAdd:10.3.3.1RemoteIpAdd:10.3.3.2         Diagnostic Info:No diagnostic information

  5. 检查配置结果

    # 对SwitchB的GE1/0/1接口执行shutdown命令,模拟链路故障。[SwitchB] interface gigabitethernet 1/0/1
    [SwitchB-GigabitEthernet1/0/1] shutdown
    # 在SwitchA上查看OSPF路由表。[SwitchA] display ospf routingOSPF Process 1 with Router ID 10.10.10.1Routing TablesRouting for NetworkDestination        Cost  Type       NextHop         AdvRouter       Area10.1.1.0/24        1     Transit    10.1.1.1        10.10.10.1      0.0.0.010.2.2.0/24        2     Transit    10.1.1.2        10.10.10.3      0.0.0.0172.16.1.0/24      3     Stub       10.1.1.2        10.10.10.2      0.0.0.0Total Nets: 3Intra Area: 3  Inter Area: 0  ASE: 0  NSSA: 0
    可以看出在链路SwitchA-SwitchB出现故障后,备份链路SwitchA-SwitchC-SwitchB开始生效,即去往目的网段172.16.1.0/24的路由下一跳地址变成了10.1.1.2。

配置文件
SwitchA的配置文件#
sysname SwitchA
#
vlan batch 10 30
#
bfd
#
interface Vlanif10ip address 10.1.1.1 255.255.255.0
#
interface Vlanif30ip address 10.3.3.1 255.255.255.0
#
interface GigabitEthernet1/0/1port link-type trunkport trunk allow-pass vlan 10
#
interface GigabitEthernet1/0/2port link-type trunkport trunk allow-pass vlan 30
#
ospf 1 router-id 10.10.10.1bfd all-interfaces enablearea 0.0.0.0network 10.1.1.0 0.0.0.255network 10.3.3.0 0.0.0.255
#
return
SwitchB的配置文件#
sysname SwitchB
#
vlan batch 20 30 40
#
bfd
#
interface Vlanif20ip address 10.2.2.2 255.255.255.0
#
interface Vlanif30ip address 10.3.3.2 255.255.255.0
#
interface Vlanif40ip address 172.16.1.1 255.255.255.0
#
interface GigabitEthernet1/0/1port link-type trunkport trunk allow-pass vlan 30
#
interface GigabitEthernet1/0/2port link-type trunkport trunk allow-pass vlan 20
#
interface GigabitEthernet1/0/3port link-type trunkport trunk allow-pass vlan 40
#
ospf 1 router-id 10.10.10.2bfd all-interfaces enablearea 0.0.0.0network 10.2.2.0 0.0.0.255network 10.3.3.0 0.0.0.255network 172.16.1.0 0.0.0.255
#
return
SwitchC的配置文件#
sysname SwitchC
#
vlan batch 10 20
#
bfd
#
interface Vlanif10ip address 10.1.1.2 255.255.255.0
#
interface Vlanif20ip address 10.2.2.1 255.255.255.0
#
interface GigabitEthernet1/0/1port link-type trunkport trunk allow-pass vlan 10
#
interface GigabitEthernet1/0/2port link-type trunkport trunk allow-pass vlan 20
#
ospf 1 router-id 10.10.10.3bfd all-interfaces enablearea 0.0.0.0network 10.1.1.0 0.0.0.255network 10.2.2.0 0.0.0.255
#
return

相关文章:

华为配置OSPF与BFD联动示例

配置OSPF与BFD联动示例 组网图形 图1 配置OSPF与BFD联动组网图 OSPF与BFD联动简介配置注意事项组网需求配置思路操作步骤配置文件 OSPF与BFD联动简介 双向转发检测BFD&#xff08;Bidirectional Forwarding Detection&#xff09;是一种用于检测转发引擎之间通信故障的检测…...

Git 常用命令详解及如何在IDEA中操作

文章目录 前言发现宝藏一、初识Git1.Git概述2. Git的功能3. Git运行图示 二、Git下载安装三、Git 代码托管服务1.常用的 Git 代码托管服务2.使用码云代码托管服务 四、Git 常用命令1.Git 全局设置2.获取Git 仓库3.工作区、暂存区、版本库 概念4.Git 工作区中文件的两种状态5.本…...

linux+rv1126/imx6ull:opencv静态库交叉编译(手把手百分百成功)

目录 1.下载 2.准备工作 2.1安装依赖环境 2.2安装Cmake 2.3 解压opencv 3.Cmake设置...

Python使用回调函数或async/await关键字、协程实现异步编程

异步编程是一种编程模式,它允许程序在执行某个任务时,能够同时执行其他任务而不需要等待当前任务完成。在传统的同步编程中,程序执行一个任务后必须等待该任务完成后才能继续执行下一个任务。而在异步编程中,程序可以发起一个任务后立即执行其他任务,当原先的任务完成后,…...

异地办公必不可缺的远程控制软件,原理到底是什么?

目录 引言远程桌面连接软件的作用与重要性 基本概念与架构客户端-服务器模型网络通信协议 核心技术组件图形界面捕获与传输输入转发会话管理 性能优化策略带宽优化延迟优化 引言 远程桌面连接软件的作用与重要性 在当今这个高度数字化和网络化的时代&#xff0c;远程桌面连接软…...

docker更换镜像源

添加的镜像源 {"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com", "https://reg-mirror.qiniu.com/", "https://docker.mirrors.ustc.edu.cn"] }docker更换镜像源之后一定要重启守卫 systemctl daemon-reloaddock…...

SaaS 电商设计 (八) 直接就能用的一套商品池完整的设计方案(建议收藏)

目录 一.前言1.1 在哪些业务场景里使用1.2 一些名词搞懂他1.3 结合业务思考一下-业务or产品的意图 二.方案设计2.1 业务主流程2.2 一步步带你分析B端如何配置2.3 数据流2.3.1 ES 数据表建设2.3.2 核心商品池流程2.3.2.1 商品池B端维护流程2.3.2.2 商品池版本更新逻辑 2.4 核心代…...

【Spring连载】使用Spring Data访问Redis(八)----发布/订阅消息

【Spring连载】使用Spring Data访问Redis&#xff08;八&#xff09;----发布/订阅消息Pub/Sub Messaging 一、发布消息Publishing (Sending Messages)二、订阅消息Subscribing (Receiving Messages)2.1 消息监听容器Message Listener Containers2.2 消息监听适配器The Message…...

list基本使用

list基本使用 构造迭代器容量访问修改 list容器底层是带头双向链表结构&#xff0c;可以在常数范围内在任意位置进行输入和删除&#xff0c;但不支持任意位置的随机访问&#xff08;如不支持[ ]下标访问&#xff09;&#xff0c;下面介绍list容器的基本使用接口。 template <…...

网络原理TCP/IP(5)

文章目录 IP协议IP协议报头地址管理网段划分特殊的IP地址路由选择以太网认识MAC地址对比理解MAC地址和IP地址DNS&#xff08;域名服务器&#xff09; IP协议 IP协议主要完成的工作是两方面&#xff1a; 地址管理&#xff0c;使用一套地址体系&#xff0c;来描述互联网上每个设…...

前端JavaScript篇之JavaScript为什么要进行变量提升,它导致了什么问题?什么是尾调用,使用尾调用有什么好处?

目录 JavaScript为什么要进行变量提升&#xff0c;它导致了什么问题&#xff1f;总结 什么是尾调用&#xff0c;使用尾调用有什么好处&#xff1f;总结 JavaScript为什么要进行变量提升&#xff0c;它导致了什么问题&#xff1f; 变量提升是JavaScript在代码执行之前对变量和函…...

React和Vue实现路由懒加载

React实现路由懒加载&#xff1a; React官方提供了React.lazy()函数来实现路由的懒加载。使用React.lazy()函数需要配合React的Suspense组件来使用。 首先&#xff0c;使用React.lazy()函数动态导入组件&#xff0c;例如&#xff1a; const Home React.lazy(() > import(…...

ReactNative实现的横向滑动条

OK&#xff0c;我们先看下效果图 注意使用到了两个库 1.react-native-linear-gradient 2.react-native-gesture-handler ok&#xff0c;我们看下面的代码 import {Image, TouchableWithoutFeedback, StyleSheet, View} from react-native; import LinearGradient from reac…...

华为自动驾驶干不过特斯拉?

文 | AUTO芯球 作者 | 李诞 什么&#xff1f; 华为的智能驾驶方案干不过蔚小理&#xff1f; 特斯拉的智能驾驶[FSD]要甩中国车企几条街&#xff1f; 这华为问界阿维塔刚刚推送“全国都能开”的城区“无图 NCA” 就有黑子来喷了 这是跪久了站不起来了吧 作为玩车14年&…...

docker容器stop流程

从API route开始看StopContainer接口的调用过程。 // NewRouter initializes a new container router func NewRouter(b Backend, decoder httputils.ContainerDecoder) router.Router {r : &containerRouter{backend: b,decoder: decoder,}r.initRoutes()return r } ... …...

生产环境_Spark接收传入的sql并替换sql中的表名与解析_非常NB

背景 开发时遇到一个较为复杂的周期需求&#xff0c;为了适配读取各种数据库中的数据并将数据库数据转换为DataFrame并进行后续的开发分析工作&#xff0c;做了如下代码。 在爷们开发这段生产中的代码&#xff0c;可适配mysql,hive,hbase&#xff0c;gbase等等…...

【issue-YOLO】自定义数据集训练YOLO-v7 Segmentation

1. 拉取代码创建环境 执行nvidia-smi验证cuda环境是否可用&#xff1b;拉取官方代码&#xff1b; clone官方代码仓库 git clone https://github.com/WongKinYiu/yolov7&#xff1b;从main分支切换到u7分支 cd yolov7 && git checkout 44f30af0daccb1a3baecc5d80eae229…...

【八大排序】选择排序 | 堆排序 + 图文详解!!

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 一、选择排序1.1 基本思想1.2 算法步骤 动图演示1.3 代码实现1.4 选择排序特性总结 二…...

C语言贪吃蛇详解

个人简介&#xff1a;双非大二学生 个人博客&#xff1a;Monodye 今日鸡汤&#xff1a;人生就像一盒巧克力&#xff0c;你永远不知道下一块是什么味的 C语言基础刷题&#xff1a;牛客网在线编程_语法篇_基础语法 (nowcoder.com) 一.贪吃蛇游戏背景 贪吃蛇是久负盛名的游戏&…...

go使用gopprof分析内存泄露

假设我们使用的是比如beego这样的网络框架,我们可以这样加代码来使用gopprof来进行内存泄露分析: beego框架加gopprof分析代码: 1.先在router.go里添加路由信息: beego.Router("/debug/pprof", &controllers.ProfController{}) beego.Router("/debug…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...