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

华为DCN之:SDN和NFV

1. SDN概述

1.1 SDN的起源

SDN(Software Defined Network)即软件定义网络。是由斯坦福大学Clean Slate研究组提出的一种新型网络创新架构。其核心理念通过将网络设备控制平面与数据平面分离,从而实现了网络控制平面的集中控制,为网络应用的创新提供了良好的支撑。
SDN起源提出了三个特征, “转控分离”、“集中控制”和“开放可编程接口”。

在这里插入图片描述

SDN的本质诉求是让网络更加开放、灵活和简单。它的实现方式是。为网络构建一个集中的大脑,通过全局视图集中控制,实现或业务快速部署、或流量调优、或网络业务开放等目标
SDN的价值是:

  • 集中管理,简化网络管理与运维;
  • 屏蔽技术细节,降低网络复杂度,降低运维成本;
  • 自动化调优,提高网络利用率;
  • 快速业务部署,缩短业务上线时间;

1.2 OpenFlow

控制器与交换机之间的一种南向接口协议。它定义了三种类型的消息:

❶ Controller-to-Switch:由Controller发送。用于管理Switch和查询Switch的相关信息。

Features消息:在SSL/TCP会话建立后,Controller给Switch发送Features请求Switch的相关信息。Switch必须应答自己支持的功能,包括接口名、接口MAC地址、接口支持的速率等等基本信息。
Configuration消息:Controller可以设置或查询Switch的状态。
Modify-State消息:Controller发送该消息给Switch,来管理Switch的状态,即增加/删除、更改流表,并设置Switch的端口属性。
Read-State消息:Controller用该消息收集Switch上的统计信息。
Send-Packet消息:Controller发送该消息到Switch的特定端口。

❷ Asynchronous:由Switch发起。当Switch状态发生改变时,发送该消息告诉Controller状态变化。

Packet-in消息:当Flow Table中没有匹配的表项或者匹配“send to Controller”,Switch将给Controller发送packet-in消息。
Packet-out消息:从控制器回复的消息。
Flow-Removed消息:当给Switch增加一条表项时,会设定超时周期。当时间超时后,该条目就会被删除。这时Switch就会给Controller发送Flow-Removed消息;当流表中有条目要删除时,Switch也会给Controller发送该消息。
Port-status消息:当数据路径接口被添加、删除、修改的时候,此消息用于通知控制器。

❸ Symmetric:

Hello消息:当一个OpenFlow连接建立时,Controller和Switch都会立刻向对端发送OFPT_HELLO消息,该消息中的version域填充发送方支持的OpenFlow协议最高的版本号;接收方收到该消息后,接收方会计算协议版本号,即在发送方和接收方的版本号中选择一个较小的;如果接收方支持该版本,则继续处理连接,连接成功;否则,接收者回复一个OFPT_ERROR消息,类型域中填充ofp_error_type.OFPET_HELLO_FAILED
Echo消息: Switch和Controller任何一方都可以发起Echo request消息,但收到的一方必须回应Echo reply消息。这个消息可以来测量latency、Controller-Switch之间的连接性,即心跳消息;
Error消息:当交换机需要通知控制器发生问题或错误时,Switch给Controller 发送Error消息。

流表

OpenFlow交换机基于流表(Flow Table)转发报文。

在这里插入图片描述

流表中关于转发的关键的两个内容:

  • 匹配字段是匹配规则,支持自定义。
  • 指令是用来描述匹配后的处理方式。

和传统转发方式的对比

  1. 传统模式

在这里插入图片描述

经典的网络转发方式是网络设备通过查询路由表指导流量转发。
路由表的条目由网络设备之间运行路由协议而计算生成。
路由表是定长的。路由表通过最长匹配原则执行报文转发。一台网络设备只有一张路由表。

  1. 基于流表转发

在这里插入图片描述

运行OpenFlow的交换机通过查询流表指导流量转发。
流表一般是由OF控制器统一计算,然后下发到交换机。
流表是变长的,拥有丰富的匹配规则和转发规则。一台网络设备有多张流表。

流表的匹配原则是对于存在的“table0-table255”,优先从table0开始匹配。同一table内部按照优先级匹配,优先级高优先匹配。

1.3 SDN架构

SDN的架构如下图,不同层次之间通过开放接口连接。以控制器层为主要视角,区分面向设备层的南向接口和面向协同应用层的北向接口。

在这里插入图片描述

①协同应用层:主要完成用户意图的各种上层应用,典型的协同层应用包括OSS、OpenStack等。OSS可以负责整网的业务协同,OpenStack云平台一般用于数据中心负责网络、计算、存储的业务协同。
②控制器层:控制器层的实体就是SDN控制器,是SDN网络架构下最核心的部分。控制层是SDN系统的大脑,其核心功能是实现网络业务编排。
③设备层:网络设备接收控制器指令,执行设备转发。
④NBI北向接口:北向接口为控制器对接协同应用层的接口,主要为RESTful。
⑤SBI南向接口:南向接口为控制器与设备交互的协议,包括NETCONF、SNMP、OpenFlow、OVSDB等。

华为SDN架构

华为SDN网络架构如下:

在这里插入图片描述

❶云平台:云数据中心内资源管理平台。云平台包含对网络资源、计算资源和存储资源的管理。OpenStack是最主流的开源云平台。
❷EMS(Element Management System,网元管理系统)是管理特定类型的一个或多个电信NE(Network Element,网络单元)的系统。
❸Orchestration(容器编排):容器编排工具也可以包含网络业务编排功能。Kubernetes是主流的工具。
MTOSI/CORBA用于对接BSS/OSS。Kafka/SFTP可用于对接大数据平台。

华为SDN解决方案架构:

在这里插入图片描述

IMaster NCE

iMaster NCE,自动驾驶网络管理与控制系统,是华为集管理、控制、分析和AI智能功能于一体的网络自动化与智能化平台。集成了原华为的网管系统(eSight)、控制器(Agile Controller)、分析器(Insight)。有如下特性:
自动化+智能化——SDN自动化业务配置部署,AI智能分析预测排障
管理+控制+分析——统一数据底座,感知定位处理一气呵成
规+建+维+优——全生命周期管理,仿真校验监控优化

iMaster NCE有效连接了物理网络与商业意图。南向实现全局网络的集中管理、控制和分析。面向商业和业务意图使能资源云化、全生命周期网络自动化,以及数据分析驱动的智能闭环。北向提供开放网络API与IT快速集成。
iMaster NCE的产品线如下:

  • 数据中心——iMaster NCE-Fabric
  • 园区网——iMaster NCE-Campus
  • SD-WAN——iMaster NCE-WAN
  • 广域IP——iMaster NCE-IP
  • 广域传输——iMaster NCE-T
数据中心CloudFabric

基于iMaster NCE-Fabric,为数据中心网络提供从规划-建设-运维-调优全生命周期服务

在这里插入图片描述

➊规建一体:规划工具对接NCE,实现规划建设一体化。ZTP(Zero Touch Provisioning,零配置开局)
➋极简部署:业务意图自理解和转换部署。网络变更仿真评估,杜绝人为错误。
➌智能运维:基于知识图谱和专家规则的快速故障发现定位。基于专家规则和仿真分析的快速故障恢复。
➍实时调优:面向AI-Fabric的流量本地推理,在线模型训练调优。用户行为预测、资源调优建议。

⓵极简ZTP部署

在这里插入图片描述

ZTP部署流程:

  1. 网络管理员点击启动ZTP任务。
  2. 设备自动获取IP地址访问控制器。
  3. 控制器判断设备角色(Spine or Leaf),对上线设备下发管理IP、SNMP、NETCONF等配置,并通过管理IP纳管设备。
  4. 控制器全局下发互联配置及OSPF、BGP等配置。
  5. 设备上线成功,管理员NCE查看全网信息。

⓶网络意图自理解,业务快速部署

在这里插入图片描述

iMaster NCE-Fabric支持对接用户IT系统,为用户意图匹配意图模型,通过NETCONF下发配置到设备上实现业务快速部署。
iMaster NCE-Fabric支持对接主流云平台(OpenStack)、虚拟化平台(vCenter/SystemCenter)和容器编排平台(Kubernetes)。

⓷网络变更仿真,预判变更风险

在这里插入图片描述

建模求解:建立物理/逻辑/应用网络模型;通过形式化验证算法求解
校验结果:校验现网资源是否足够、连通性等;变更对原有业务影响分析和呈现

⓸数据中心网络AI智能运维

在这里插入图片描述

AI只能运维需要借助Insight模块。

园区CloudCampus

在这里插入图片描述

  1. 网络开通”快”,部署效率提升600%

设备即插即用:设备极简开局,场景导航,模板配置
网络极简部署:网络资源池化,一网多用,业务自动化发放

  1. 业务发放”快”,用户体验提升100%

业务随行:图形化策略配置,用户随时随地接入,漫游权限不变,体验不变
终端智能识别:终端接入防仿冒,终端智能识别准确率95+%
智能HQos:基于应用调度和整形,带宽精细化管理,保证关键用户业务体验

  1. 智能运维“快”,整网性能提升50%+

实时体验可视:基于Telemetry的每时刻、每用户、每区域的网络体验可视
精准故障分析:主动识别85%的典型网络问题并给出建议,实时数据对比分析故障预测
智能网络调优:基于历史数据的无线网络预测性调优,整网性能提升50%+(来源:Tolly认证)

➀设备即插即用

在这里插入图片描述

注册中心:华为设备注册查询中心,简称注册中心,是华为云管理网络解决方案的主要部件之一,用于设备的管理模式和注册归属查询。设备根据查询结果确定是否切换到云管理模式,需要注册到哪个云管理平台。以AP为例,对于华为支持云管理特性的设备均会预置华为设备注册中心的URL(register.naas.huawei.com)和端口号(10020)。

➁构建一网多用的虚拟化园区

在这里插入图片描述

通过引入虚拟化技术,在园区网络中,基于一张物理网络创建多张虚拟网络(VN,Virtual Network)。不同的虚拟网络应用于不同的业务,例如办公、研发或物联网等。
通过iMaster NCE实现全网设备集中管理,管理员通过图形化界面实现网络配置。
iMaster NCE将管理员的网络业务配置意图“翻译”成设备命令,通过NETCONF协议将配置下发到各台设备,实现网络的自动驾驶。

VN通常用VRF来实现

➂业务随行,基于安全组的策略管理

业务随行:不管用户身处何地,使用哪个IP地址,都保证该用户拥有相同的网络权限和一致的用户策略。

在这里插入图片描述

𝟙 引入安全组。安全组即拥有相同网络访问策略的一组用户。
𝟚 定义基于安全组的权限控制策略、用户体验策略,将策略下发到网络设备。
𝟛 用户的流量进入网络后,网络设备根据流量所述的源、目的安全组执行策略。
𝟜 用户执行准入认证后,获得授权的安全组。

➃有线与无线融合

传统独立AC和随板AC的问题:有线及无线认证点分离、策略控制分散、流量转发分离、故障排除困难、管理困难

有线无线融合(随板AC,Native AC):

在这里插入图片描述

交换机融合AC功能,无线流量转发无瓶颈,并且减少故障点,有线无线集中管理:
①有线及无线业务统一管理、融合转发
②有线及无线用户融合管理、网关融合
③有线及无线认证点融合
④有线及无线统一策略执行

➄终端智能识别,安全接入

在这里插入图片描述

智能终端识别是思科在ISE中最先推出

➅园区网络AI智能运维

利用算法提升效率,通过场景化的持续学习和专家经验,智能运维将运维人员从复杂的告警和噪声解放出来,使运维更加自动化和智能化。

TO-BE:以用户体验为中心的AI智能运维

在这里插入图片描述

体验可视化:基于Telemetry秒级数据采集,每用户每应用每时刻体验可视
分钟级潜在故障识别和根因定位:基于动态基线、大数据关联等识别潜在故障;KPI关联分析和协议回放,精准定位问题根因
网络预测性调优:通过AI 智能分析AP的负载趋势,完成无线网络的预测性调优闭环

2. NFV概述

2.1 NFV的起源

来自IT界的启示,给网络产业带来了网络架构设备架构两个层面的思考。网络架构层面引入对SDN控制器的思考,设备架构层面引入对设备部署形态的思考。
网络产业思考:能否以软件化的方式部署网络应用呢?这些思考引发了NFV(Network Functional Virtualization,网络功能虚拟化)。

虚拟化之后的网络功能被称为VNF(Virtualized Network Function)。当我们谈“VNF”时,我们指运营商IMS、CPE这些传统网元在虚拟化之后的实现。在硬件通用化后,传统的网元不再是嵌入式的软硬结合的产品,而是以纯软件的方式安装在通用硬件(即NFVI)上。


2012年10月,13家Top运营商(AT&T、Verizon、VDF、DT、T-Mobile、BT、Telefonica等)在SDN和Open Flow世界大会上发布NFV (Network Functions Virtualization)第一版白皮书,同时成立了ISG(Industry Specification Group)来推动网络虚拟化的需求定义和系统架构制定。
2013年,ETSI下NFV ISG(行业规范工作组)进行第一阶段研究,已完成相关标准制定。主要定义网络功能虚拟化的需求和架构,并梳理不同接口的标准化进程。
2015年,NFV研究进入第二阶段。其主要研究目标是建设一个可互操作的NFV生态,推动更广泛的行业参与,并且确保满足阶段一中定义的需求。同时明确NFV与SDN等相关标准、开源项目的协作关系等。NFV阶段二主要分为5个工作组:IFA(架构与接口)、 EVE(生态圈)、 REL(可靠性)、 SEC(安全)、TST(测试、执行、开源)。各工作组主要讨论交付件文档框架和交付计划。


NFV是运营商为了解决电信网络硬件繁多、部署运维复杂、业务创新困难等问题而提出的。NFV在重构电信网络的同时,给运营商带来的价值如下:

  1. 缩短业务上线时间:在NFV架构的网络中,增加新的业务节点变得异常简单。不再需要复杂的工勘、硬件安装过程。业务部署只需申请虚拟化资源,加载软件即可,网络部署变得更加简单。同时,如果需要更新业务逻辑,也只需要更新软件或加载新业务模块,完成业务编排即可,业务创新变得更加简单。
  2. 降低建网成本:首先,虚拟化后的网元能够合并到通用设备(COTS)中,获取规模经济效应。其次,提升网络资源利用率和能效,降低整网成本。NFV采用云计算技术,利用通用化硬件构建统一的资源池,根据业务的实际需要动态按需分配资源,实现资源共享,提高资源使用效率。如通过自动扩缩容解决业务潮汐效应下资源利用问题。
  3. 提升网络运维效率:自动化集中式管理提升运营效率,降低运维成本。例如数据中心的硬件单元的集中管理的自动化,基于MANO的应用生命周期管理的自动化,基于NFV/SDN协同的网络自动化。
  4. 构建开放的生态系统 :传统电信网络专有软硬件的模式,决定了它是一个封闭系统。NFV架构下的电信网络,基于标准的硬件平台和虚拟化的软件架构,更易于开放平台和开放接口,引入第三方开发者,使得运营商可以共同和第三方合作伙伴共建开放的生态系统。

2.2 NFV关键技术

  1. 虚拟化

在这里插入图片描述

在NFV的道路上,虚拟化是基础,云化是关键。
传统电信网络中,各个网元都是由专用硬件实现,成本高、运维难。虚拟化具有分区、隔离、封装和相对于硬件独立的特征,能够很好匹配NFV的需求。运营商引入此模式,将网元软件化,运行在通用基础设施上。

  1. 云化

美国国家标准与技术研究院(NIST)定义:云计算是一种模型,它可以实现随时随地,便捷地,随需应变地从可配置计算资源共享池中获取所需的资源(例如,网络、服务器、存储、应用、及服务),资源能够快速供应并释放,使管理资源的工作量和与服务提供商的交互减小到最低限度。
云计算拥有诸多好处。运营商网络中网络功能的云化更多的是利用了资源池化和快速弹性伸缩两个特征。

2.3 NFV架构

在这里插入图片描述

NFVI包含硬件层和虚拟化层,业界也有说法称作COTS和CloudOS:

  • COTS(commercial off-the-shelf,商用现货),即通用硬件,强调了易获得性和通用性。例如Huawei FusionServer系列硬件服务器。
  • CloudOS:设备云化的平台软件,可以理解为电信业的操作系统。CloudOS提供了硬件设备的虚拟化能力,将物理的计算/存储/网络资源变成虚拟资源供上层的软件使用。例如华为的云操作系统FusionSphere。

VNF:VNF可以理解为各种不同网络功能的APP,是运营商传统网元(IMS,EPC,BRAS,CPE…)的软件实现。
MANO:MANO的引入是要解决NFV多CT/IT厂家环境下的网络业务的发放问题,包括:分配物理/虚拟资源,垂直打通管理各层,快速适配对接新厂家新网元。MANO包括NFVO(Network Functions Virtualization Orchestrator,负责网络服务的生命周期的管理)、VNFM(Virtualized Network Function Manager, 负责VNF的生命周期管理)、VIM(Virtualized Infrastructure Manager,负责NFVI的资源管理)三部分。
OSS/BSS:服务提供商的管理功能,不属于NFV框架内的功能组件,但MANO和网元需要提供对 OSS/BSS 的接口支持。


MANO负责NFV管理和编排。包括VIM,VNFM及NFVO,提供对VNF及I层统一的管理和编排功能。

  1. VIM:Virtualized Infrastructure Managers, NFVI管理模块,通常运行于对应的基础设施站点中,主要功能包括:资源的发现、虚拟资源的管理分配、故障处理等。
  2. VNFM:VNF Managers ,VNF管理模块,主要对VNF的生命周期(实例化、配置、关闭等)进行控制。
  3. NFVO:NFV Orchestration,实现对整个NFV基础架构、软件资源、网络服务的编排和管理。

NFVI是NFV的基础设施,包括所需的硬件及软件。为VNF提供运行环境。

  1. Hardware:硬件层,包括提供计算、网络、存储资源能力的硬件设备。
  2. Virtualization Layer:虚拟化层,主要完成对硬件资源的抽象,形成虚拟资源,如虚拟计算资源、虚拟存储资源、虚拟网络资源。其虚拟化功能由Hypervisor[1] 实现。

ETSI定义了NFV标准架构,由NFVI、VNF以及MANO主要组件组成。NFVI包括通用的硬件设施及其虚拟化,VNF使用软件实现虚拟化网络功能,MANO实现NFV架构的管理和编排。

在这里插入图片描述

NFV架构结构:

接口类型功能描述
Vi-Ha虚拟化层与基础硬件之间的接口。虚拟化层满足基础硬件兼容性要求。
Vn-Nf虚拟机(VM)与NFVI之间的接口。它确保虚拟机可以部署在NFVI上,满足性能、可靠性和可扩展性要求。NFVI满足虚拟机操作系统兼容性要求。
Vf-Vi虚拟化层管理软件与NFVI之间的接口,提供NFVI虚拟计算、存储和网络系统管理;提供虚拟基础架构配置和连接;提供系统利用率、性能监控和故障管理。
Ve-VnfmVNFM与VNF之间的接口,实现VNF生命周期管理、VNF配置、VNF性能和故障管理。
OS-Ma实现网络服务生命周期管理,VNF生命周期管理。
Vi-Vnfm提供业务应用管理系统/业务编排系统与虚拟化层管理软件之间交互接口。
Or-Vnfm给VNFM发送配置信息,对VNFM进行配置,完成Orchestrator与VNFM的对接;分配给一个VNF的NFVI资源的交互;VNF信息的交换。
Or-ViOrchestrator需要的资源预定及资源分配的请求;虚拟硬件资源配置及状态信息的交换。
华为NFV解决方案

华为NFV架构中,虚拟化层及VIM的功能由华为云Stack NFVI平台实现。华为云Stack可以实现计算资源、存储资源和网络资源的全面虚拟化,并能够对物理硬件虚拟化资源进行统一的管理、监控和优化。
华为提供运营商无线网、承载网、传输网、接入网、核心网等全面云化的解决方案。

在这里插入图片描述

相关文章:

华为DCN之:SDN和NFV

1. SDN概述 1.1 SDN的起源 SDN(Software Defined Network)即软件定义网络。是由斯坦福大学Clean Slate研究组提出的一种新型网络创新架构。其核心理念通过将网络设备控制平面与数据平面分离,从而实现了网络控制平面的集中控制,为…...

黑马头条-数据管理平台

目录 项目准备 验证码登录 验证码登录-流程 token 的介绍 个人信息设置和 axios 请求拦截器 axios 响应拦截器和身份验证失败 优化-axios 响应结果 发布文章-富文本编辑器 项目准备 技术: • 基于 Bootstrap 搭建网站标签和样式 • 集成 wangEditor 插件…...

API Object设计模式

API测试面临的问题 API测试由于编写简单,以及较高的稳定性,许多公司都以不同工具和框架维护API自动化测试。我们基于seldom框架也积累了几千条自动化用例。 •简单的用例 import seldomclass TestRequest(seldom.TestCase):def test_post_method(self…...

Python 爬虫:多进程,多线程爬虫<提高爬取效率>

关于多进程,多线程的知识,请自行查询资料补充 ~~~~~~~~~~~ 使用多进程: 在python中,使用多进程需要先导包: from threding import Threaddef work(name):for i in range(1000):print(f"我是线程:{n…...

什么是上拉电阻器?上拉和下拉电阻的典型应用

什么是上拉电阻器? 上拉电阻是逻辑电路中使用的电阻,用于确保引脚在所有条件下具有明确定义的逻辑电平。提醒一下,数字逻辑电路有三种逻辑状态:高、低和浮动(或高阻抗)。当引脚未被拉至高或低逻辑电平&…...

centos7安装python3.10

文章目录 1. 安装依赖项2. 下载Python 3.10源码3. 解压源码并进入目录4. 配置安装选项5. 编译并安装Python6. 验证安装7.创建软连接8. 安装pip39. 换源 1. 安装依赖项 sudo yum groupinstall -y "Development Tools" sudo yum install -y openssl-devel bzip2-devel…...

QT事件处理及实例(鼠标事件、键盘事件、事件过滤)

这篇文章通过鼠标事件、键盘事件和事件过滤的三个实例介绍事件处理的实现。 鼠标事件及实例 鼠标事件包括鼠标的移动、按下、松开、单击和双击等。 创建一个MouseEvent项目,通过项目介绍如何获得和处理鼠标事件。程序效果如下图所示。 界面布局代码如下&#xff…...

职场新人必备待办工具 高效待办工作更省心

作为一名初入职场的菜鸟,我曾被繁琐的工作任务压得喘不过气。每天,邮件、会议、项目任务像潮水般涌来,我常常感到力不从心,生怕遗漏了什么重要事项。那种焦虑,就像站在人来人往的地铁站,却不知道自己该搭乘…...

【创作纪念日】我的CSDN1024创作纪念

机缘 注册CSDN是很长时间了,但是上学时因为专业是电气工程,与编程打交道比较少,一直都是寻求帮助,而非内容输出。直到考研后专业改变,成为了主要跟软件编程、计算机知识相关的研究后,才逐步开启自己的CSDN…...

在AvaotaA1全志T527开发板上使用 UART 连接开发板

连接开发板 AvaotaA1提供两种连接串口输出方式,因为AvaotaA1需要DC 12V/2A/5.5-2.1电源适配器才可以启动系统,请先确保电源已接通。 方式一: 使用配套的 TyepC-SUB 转接板 40Gbps雷电线标准TypeC数据线,就可以同步实现 USB 串口…...

【Asterinas】Asterinas 进程启动与切换

Asterinas 进程启动与切换 进程启动 进程创建&#xff1a; Rust pub fn spawn_user_process( executable_path: &str, argv: Vec, envp: Vec, ) -> Result<Arc> { // spawn user process should give an absolute path debug_assert!(executable_path.starts_with…...

CVE-2024-6387 分析

文章目录 1. 漏洞成因2. 漏洞利用前置知识2.1 相关 SSH 协议报文格式2.2 Glibc 内存分配相关规则 3. POC3.1 堆内存布局3.2 服务端解析数据时间测量3.3 条件竞争3.4 FSOP 4. 相关挑战 原文链接&#xff1a;个人博客 近几天&#xff0c;OpenSSH爆出了一个非常严重的安全漏洞&am…...

STM32 ADC精度提升方法

STM32 ADC精度提升方法 Fang XS.1452512966qq.com如果有错误&#xff0c;希望被指出&#xff0c;学习技术的路难免会磕磕绊绊量的积累引起质的变化 硬件方法 优化布局布线&#xff0c;尽量减小其他干扰增加电源、Vref去耦电容使用低通滤波器&#xff0c;或加磁珠使用DCDC时尽…...

Redis为什么设计多个数据库

​关于Redis的知识前面已经介绍过很多了,但有个点没有讲,那就是一个Redis的实例并不是只有一个数据库,一般情况下,默认是Databases 0。 一 内部结构 设计如下: Redis 的源码中定义了 redisDb 结构体来表示单个数据库。这个结构有若干重要字段,比如: dict:该字段存储了…...

零基础学习MySQL---MySQL入门

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、什么是数据库 问&#xff1a;存储数据用文件就可以了&#xff0c;为什么还要弄个数据库呢&#xff1f; 这就不得不提…...

HUAWEI MPLS 静态配置和动态LDP配置

MPLS(Multi-Protocol Label Switching&#xff0c;多协议标签交换技术)技术的出现&#xff0c;极大地推动了互联网的发展和应用。例如&#xff1a;利用MPLS技术&#xff0c;可以有效而灵活地部署VPN(Virtual Private Network&#xff0c;虚拟专用网)&#xff0c;TE(Traffic Eng…...

【Rust】——所有的模式语法

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…...

基于Python的求职招聘管理系统【附源码】

摘 要 随着互联网技术的不断发展&#xff0c;人类的生活已经逐渐离不开网络了&#xff0c;在未来的社会中&#xff0c;人类的生活与工作都离不开数字化、网络化、电子化与虚拟化的数字技术。从互联网的发展历史、当前的应用现状和发展趋势来看&#xff0c;我们完全可以肯定&…...

Python23 使用Tensorflow实现线性回归

TensorFlow 是一个开源的软件库&#xff0c;用于数值计算&#xff0c;特别适用于大规模的机器学习。它由 Google 的研究人员和工程师在 Google Brain 团队内部开发&#xff0c;并在 2015 年首次发布。TensorFlow 的核心是使用数据流图来组织计算&#xff0c;使得它可以轻松地利…...

C++:枚举类的使用案例及场景

一、使用案例 在C中&#xff0c;枚举类&#xff08;也称为枚举类型或enum class&#xff09;是C11及以后版本中引入的一种更加强大的枚举类型。与传统的枚举&#xff08;enum&#xff09;相比&#xff0c;枚举类提供了更好的类型安全性和作用域控制。下面是一个使用枚举类的案…...

中英双语介绍美国的州:明尼苏达州(Minnesota)

中文版 明尼苏达州简介 明尼苏达州位于美国中北部&#xff0c;以其万湖之州的美誉、丰富的自然资源和多样化的经济结构而著称。以下是对明尼苏达州的详细介绍&#xff0c;包括其地理位置、人口、经济、教育、文化和主要城市。 地理位置 明尼苏达州东接威斯康星州&#xff0…...

Python实现万花筒效果:创造炫目的动态图案

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义绘制万花筒图案的函数主循环 完整代码 引言 万花筒效果通过反射和旋转图案创造出美丽的对称图案。在这篇博客中&#xff0c;我们将使用Python来实现一个动态的万花筒效果。通过利用Pygame库&#xf…...

JavaScript之深入对象,详细讲讲构造函数与常见内置构造函数

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家详细讲讲构造函数与常见内置构造函数&#xff0c;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大家&#xff0c;欢迎…...

PyQt5水平布局--只需5分钟带你搞懂

PyQt5水平布局&#xff08;QHBoxLayout&#xff09;是一种在GUI应用程序中用于组织和排列控件的布局方式。它允许开发者将控件在水平方向上从左到右依次排列&#xff0c;非常适合于需要并排显示控件的场景&#xff0c;如工具栏、水平菜单等。 import sys from PyQt5.QtWidgets…...

telegram mini app和game实现登录功能

接上一篇文章&#xff0c;我们在创建好telegram机器人后&#xff0c;开始开发小游戏或者mini App&#xff0c;那就避免不了登录功能。 公开链接 bot设置教程:https://lengmo714.top/6e79860b.html 参考教程参考教程,telegram已经给我们提供非常多的api&#xff0c;我们在获取用…...

【Python】字典练习

python期考练习 目录 1. 首都名​编辑 2. 摩斯电码 3. 登录 4. 学生的姓名和年龄​编辑 5. 电商 6. 学生基本信息 7. 字母数 1. 首都名 初始字典 (可复制) : d{"China":"Beijing","America":"Washington","Norway":…...

Apache POI、EasyPoi、EasyExcel

目录 ​编辑 &#xff08;一&#xff09;Apache PoI 使用 &#xff08;二&#xff09;EasyPoi使用 &#xff08;三&#xff09;EasyExcel使用 写 读 最简单的读​ 最简单的读的excel示例​ 最简单的读的对象​ &#xff08;一&#xff09;Apache PoI 使用 &#xff08;二&…...

gcop:简化 Git 提交流程的高效助手 | 一键生成 commit message

&#x1f496; 大家好&#xff0c;我是Zeeland。Tags: 大模型创业、LangChain Top Contributor、算法工程师、Promptulate founder、Python开发者。&#x1f4e3; 个人说明书&#xff1a;Zeeland&#x1f4e3; 个人网站&#xff1a;https://me.zeeland.cn/&#x1f4da; Github…...

TS_类型

目录 1.类型注解 2.类型检查 3.类型推断 4.类型断言 ①尖括号&#xff08;<>&#xff09;语法 ②as语法 5.数据类型 ①boolean ②number ③string ④undefined 和 null ⑤数组和元组 ⑥枚举 ⑦any 和void ⑧symbol ⑨Function ⑩Object 和 object 6.高…...

Linux源码阅读笔记10-进程NICE案例分析2

set_user_nice set_user_nice函数功能&#xff1a;设置某一进程的NICE值&#xff0c;其NICE值的计算是根据进程的静态优先级&#xff08;task_struct->static_prio&#xff09;&#xff0c;直接通过set_user_nice函数更改进程的静态优先级。 内核源码 void set_user_nice…...

Elasticsearch实战教程: 如何在海量级数据中进行快速搜索

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 Elasticsearch&#xff08;简称ES&#xff09;是一个基于Apache Lucene™的开源搜索引擎&#xff0c;无论在开源还是专有领…...

Python学习笔记24:进阶篇(十三)常见标准库使用之数据压缩功能模块zlib,gzip,bz2,lzma的学习使用

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 数据压缩…...

【笔记】Android Settings 应用设置菜单的界面代码介绍

简介 Settings应用中&#xff0c;提供多类设置菜单入口&#xff0c;每个菜单内又有各模块功能的实现。 那么各个模块基于Settings 基础的界面Fragment去实现UI&#xff0c;层层按不同业务进行封装继承实现子类&#xff1a; DashboardFragmentSettingsPreferenceFragment 功…...

Symfony配置管理深度解析:构建可维护项目的秘诀

Symfony是一个高度灵活且功能丰富的PHP框架&#xff0c;它提供了一套强大的配置管理系统&#xff0c;使得开发者能够轻松定制和优化应用程序的行为。本文将深入探讨Symfony中的配置管理机制&#xff0c;包括配置的结构、来源、加载过程以及最佳实践。 一、配置管理的重要性 在…...

视频的宣传片二维码怎么做?扫码播放视频的制作教程

现在很多的宣传片会通过扫码的方式来展示&#xff0c;通过将视频生成二维码之后&#xff0c;其他人就可以扫码来查看视频内容&#xff0c;从而简化获取视频的过程&#xff0c;提升视频传播的效率及用户查看视频的便捷性。目前&#xff0c;日常生活和工作中就有视频二维码的应用…...

实用的网站

前端 精简CSS格式 Font Awesome 图标库 BootCDN 加速服务 LOGO U钙网 AI AI工具集 视频下载 B站视频解析下载...

Monorepo(单体仓库)与 MultiRepo(多仓库): Monorepo 单体仓库开发策略与实践指南

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言1. Monorepo 和 MultiRepo 简介2. 为什么选择 Monorepo&#xff1f; 二、Monorepo 和 MultiRepo 的区别1. 定义和概述2. 各自的优点和缺点3. 适用场景 三、Monorepo 的开发策略1. 版本控制2. 依赖管理3. 构建和发布…...

使用 PyTorch 创建的多步时间序列预测的 Encoder-Decoder 模型

Encoder-decoder 模型在序列到序列的自然语言处理任务&#xff08;如语言翻译等&#xff09;中提供了最先进的结果。多步时间序列预测也可以被视为一个 seq2seq 任务&#xff0c;可以使用 encoder-decoder 模型来处理。本文提供了一个用于解决 Kaggle 时间序列预测任务的 encod…...

开启IT世界的第一步:高考新生的暑期学习指南

目录 前言 了解IT领域 学习编程语言 实践项目 学习资源 阅读专业书籍 培养良好的学习习惯 结语 最后 - 投票 前言 七月的钟声敲响&#xff0c;各省的高考分数已揭晓&#xff0c;意味着一段紧张而又充满奋斗的旅程画上了句号。然而&#xff0c;高考的结束并不意味…...

软考系统架构师高效备考方法论

软考系统架构师高效备考方法论 本章总结的备考方法论也是希望能帮助更多的小伙伴高效的备考最终通过考试&#xff0c;这种考试个人感觉是尽量一次性考过&#xff0c; 要不然老拖着&#xff0c;虽然每年可以考两次&#xff0c;5月和11月&#xff0c;两次考试间隔5个月时间&#…...

【neo4j图数据库】入门实践篇

探索数据之间的奥秘&#xff1a;Neo4j图数据库引领新纪元 在数字化浪潮汹涌的今天&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;随着数据量的爆炸性增长和数据关系的日益复杂&#xff0c;传统的关系型数据库在处理诸如社交网络、推荐系统、生物信息学等高度互…...

【TS】TypeScript 原始数据类型深度解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 TypeScript 原始数据类型深度解析一、引言二、基础原始数据类型2.1 boolean2.2 …...

怎么样调整分类的阈值

调整分类模型的阈值是改变模型对正负类的预测标准的一种方法&#xff0c;常用于提高精确率、召回率或者其他性能指标。以下是如何调整分类阈值的步骤和方法&#xff1a; PS&#xff1a;阈值是针对预测概率&#xff08;表示样本属于某个特定类别的可能性&#xff09;来说的 调…...

java+mysql教师管理系统

完整源码地址 教师信息管理系统使用命令行交互的方式及数据库连接实现教师信息管理系统&#xff0c;该系统旨在实现教师信息的管理&#xff0c;并根据需要进行教师信息展示。该软件的功能有如下功能 (1)基本信息管理(教师号、姓名、性别、出生年月、职称、学历、学位、教师类型…...

PDF文档如何统计字数,统计PDF文档字数的方法有哪些?

在平时使用pdf阅读或者是处理文档的时候&#xff0c;常常需要统计文档的字数。pdf在查看文字时其实很简单。 PDF文档是一种常见的电子文档格式&#xff0c;如果需要对PDF文档中的字数进行统计&#xff0c;可以使用以下方法&#xff1a; Adobe Acrobat DC&#xff1a;Adobe Ac…...

在Python asyncio中如何识别协程是否被block了

现在asyncio在Python中的使用越来越广泛了,但是很多人对于协程(corotine)的一些使用方式还不太熟悉。在这篇文章中,我将会介绍如何识别协程是否被block了,并以常用的HTTP网络库requests/httpx为例来说明如何避免协程被block的问题。 为什么协程会被block 在Python中,可…...

Hyper-V虚拟机固定IP地址(手把手教设置)

链接虚拟机修改网络配置文件 输入指令 sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 然后 输入 按 i 键 再按回车 (enter) 进入编辑模式 修改配置(这几项)其中 IPADDR 就是你想给虚拟机固定的 IP 地址 多台的话只需要修改这个IP 就行其他不变 BOOTPROTO=static…...

以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!

大家好,我是CodeQi! 项目开发中,Loading 的展示与关闭是非常关键的用户体验设计。 当我们的应用需要发起多个异步请求时,如何有效地管理全局 Loading 状态,保证用户在等待数据加载时能有明确的反馈,这是一个值得深入探讨的问题。 本文将以 Vue 3 项目为例,详细讲解如…...

Node.js学习(一)

Node.js安装与入门案例&#xff1a; 需求&#xff1a;点击按钮&#xff0c;请求本地目录指定文件的内容&#xff0c;并显示在页面上 刚入门肯定想着直接写相对路径请求指定路径数据就行了&#xff0c;可是会发现不行。 网页运行在浏览器端&#xff0c;通常后续要发布&#xf…...

Spring Data JPA使用及实现原理总结

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 5、Spring Data JPA自定…...

mindspore打卡机器学习正则化与优化器

机器学习正则化 这段代码实现了一个深度学习实验&#xff0c;目的是使用不同的正则化技术&#xff08;包括dropout、批量归一化、L2正则化以及早期停止策略&#xff09;来训练神经网络模型&#xff0c;以拟合一个带有噪声的余弦波形数据集。代码使用MindSpore框架进行编写&…...

【Linux】TCP协议【下二】{流量控制/滑动窗口/延迟应答/捎带应答/拥塞控制}

文章目录 1.流量控制--利用“窗口大小”字段协商数据量大小1. 1第一次的时候&#xff0c;怎么保证发送数据量是合理的1.2第三次握手ack的时候&#xff0c;可以携带数据&#xff01;1.3流量控制&#xff0c;属于可靠性还是属于效率&#xff1f; 2.滑动窗口--利用滑动窗口解决批量…...

菜鸡的原地踏步史02(◐‿◑)

每日一念 改掉自己想到哪写哪的坏习惯 二叉树 二叉树的中序遍历 class Solution {/**中序遍历左 - 中 - 右*/private List<Integer> res new ArrayList<>();public List<Integer> inorderTraversal(TreeNode root) {if(root null) {return res;}tranve…...

qt 如果把像素点数据变成一个图片

1.概要 图像的本质是什么&#xff0c;就是一个个的像素点&#xff0c;对与显示器来说就是一个二维数组。无论多复杂的图片&#xff0c;对于显示器来说就是一个二维数组。 2.代码 #include "widget.h"#include <QApplication> #include <QImage> #incl…...

不改代码,实现web.config或app.config的连接字符串加密解密

目的&#xff1a;加密字符串&#xff0c;防止明文显示。 好处&#xff1a;不用修改代码&#xff0c;微软自带功能&#xff0c;自动解密。 web.config 参考相关文章&#xff1a; Walkthrough: Encrypting Configuration Information Using Protected Configuration | Microso…...

【C#】ProgressBar进度条异步编程思想

1.控件介绍 进度条通常用于显示代码的执行进程进度&#xff0c;在一些复杂功能交互体验时告知用户进程还在继续。 在属性栏中&#xff0c;有三个值常用&#xff1a; Value表示当前值&#xff0c;Minimum表示进度条范围下限&#xff0c;Maximum表示进度条范围上限。 2.简单实…...

JeepAvenger4xe,1.2T+双电机

近日,懂车之道获悉,Jeep品牌发布Avenger 4xe车型官图,据悉,新车预计今年晚些时候在欧洲上市。下面,和大家一起来看看新车的产品力如何?外观上,Avenger 4xe新车造型更为精致,封闭式七孔格栅装饰,前大灯组合,引擎上更是有多条筋线,下格栅造型硬朗,下包围采用大量黑色…...

史上最小沃尔沃!沃尔沃EX30这次玩点不合群的

如今的新能源市场竞争到了白热化阶段,传统车企与新势力车企纷纷都要加入分一杯羹。为抢夺这块肥美的“大蛋糕”,现在的大部分车型逐渐演变成以大为尊,设计苟同,疯狂堆料为潮流。这时沃尔沃带着旗下最小尺寸的新能源SUV闪亮登场,不走寻常路,选择回归本质、返璞归真,为用户…...

华为举办鸿蒙生态春季沟通会,多款产品焕新亮相

2024年4月11日,华为举办鸿蒙生态春季沟通会,带来鸿蒙智行首款智慧轿车智界S7、全新华为MateBook X Pro领衔的多项新产品、新技术,并公布鸿蒙智行生态最新成绩,展示进一步完善的华为万物互联全场景生态。鸿蒙智行,全面引领智能汽车变革全场景智慧旗舰SUV问界M9上市短短三个…...

《中国人大》2024年第9期目录

制图:李洪兴编校:宫宜希责编:张钰钗...

系统架构设计师【第3章】: 信息系统基础知识 (核心总结)

文章目录 3.1 信息系统概述3.1.1 信息系统的定义3.1.2 信息系统的发展3.1.3 信息系统的分类3.1.4 信息系统的生命周期3.1.5 信息系统建设原则3.1.6 信息系统开发方法 3.2 业务处理系统&#xff08;TPS&#xff09;3.2.1 业务处理系统的概念3.2.2 业务处理系统的功能 …...

算法学习笔记(7)-贪心算法

##什么是贪心算法 一种常见的解决优化类型的问题&#xff0c;基本的思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优解的决策&#xff0c;以期待获得全局最优解。 ##贪心算法与动态规划的区别&#xff08;二者都为解决优化…...