【hcie-cloud】【19】云原生详细介绍、华为云Stack中云原生服务简介

文章目录

  • 前言
  • 云原生简介
    • 云计算和云原生
    • 云原生的特征
    • 云原生技术架构
    • 云原生的定义
    • 云原生关键技术 - 容器&不可变基础设施
      • 1、 容器
      • 2、微服务
      • 3、服务网格
      • 4、DevOps
      • 5、 不可变基础设施
      • 6、 声明式API
    • 云原生关键技术 - 申明式API
  • 华为云Stack中云原生服务简介
    • 构建以应用为中心的云原生基础设施
    • 四大解决方案加速企业落地云原生
    • 以Kubernetes为基座
    • 华为云Stack云原生产品与解决方案全景
    • 申明式API对比命令式API有哪些优势?
  • 缩略语

前言

随着技术的发展和需求的不断变更,云计算也随之发展,云原生在云计算范畴中变得越来越重要,因此,本章将简单描述云计算和云原生的关系,并对华为云计算产品中的云原生服务进行介绍。

  • 学完本课程后,您将能够:
    • 了解云计算和云原生的关系
    • 了解华为云原生产品

云原生简介

云计算和云原生

在这里插入图片描述

  • 云原生
    • 云原生是上云的最佳路径
    • 云原生应用可以充分发挥云的特性
    • 云原生应用、云原生平台和云原生系统都属于云原生的范畴
  • 云原生的发展历史可参考:https://blog.csdn.net/u012516914/article/details/107218750

云原生的特征

云计算特征云原生技术和平台云原生应用非云原生系统
弹性伸缩基于容器进行弹性伸缩无状态、轻量级难实现弹性伸缩
容错基于容器进行自动故障恢复优雅关闭基于基础设施容错
自动化云原生运维提供拨测API-
自助服务声明式API--
可观察平台采集无侵入埋点、无侵入
不可变基础设施容器镜像可容器化雪花服务器
敏捷业务实现基于容器、服务网格和DevOps生态微服务通过虚拟机实现单体应用
简化使用及简化应用开发基于申明式API和服务网格-命令式API
尽量使用云服务,代码仅关注逻辑云原生、服务网格及生态-代码或框架
中间件有状态应用维护Operator自动化运维-手工运维或脚本自动化运维

云原生技术架构

在这里插入图片描述

云原生的定义

  • 云原生技术有利于各个组织在公有云、私有云或者混合云等环境中,构建和运行可弹性伸缩的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施及申明式API

  • 云原生计算基金会(CNCF)致力于培养和维护一个厂商中立的开源生态系统,来推广云原生技术

  • 云原生(Cloud Native)是一个组合词,“云”表示应用程序运行于分布式云环境中,“原生”表示应用程序在设计之初就充分考虑到了云平台的弹性和分布式特性,就是为云设计的。

  • 可见,云原生并不是简单地使用云平台运行现有的应用程序,它是一种能充分利用云计算优势对应用程序进行设计、实现、部署、交付和操作的应用架构方法。

  • 云原生技术一直在不断地变化和发展,关于云原生的定义也在不断地迭代和更新,不同的社区组织或公司对云原生也有自己的理解和定义。

  • Pivotal 公司是云原生应用架构的先驱者和探路者,云原生的定义最早也是由 Pivotal 公司的 Matt Stine 于 2013 年提出的。Matt Stine 在 2015 年出版的 Migrating to Cloud-Native Application Architectures 一书中提出,云原生应用架构应该具备以下几个主要特征,如下表所示。

  • 云原生应用的 12 因素

因 素描 述
基准代码一份基准代码,多份部署
依赖显示声明依赖关系
配置应用配置存储在环境中,与代码分离
后端服务将通过网络调用的其他后端服务当作应用的附加资源
构建、发布、运行严格分离构建、发布和运行
进程以一个或多个无状态进程运行应用
端口绑定通过端口绑定提供服务
并发通过进程模型进行扩展
易处理快速启动和优雅终止的进程可以最大化应用的健壮性
开发环境和线上环境一致性尽可能保证开发环境、预发环境和线上环境的一致性
日志把日志当作事件流的汇总
管理进程把后台管理任务当作一次性进程运行

云原生关键技术 - 容器&不可变基础设施

  • 容器能够将一个包含应用及运行依赖的镜像按照指定资源诉求在物理机或虚机上启动成为一个或一组隔离的OS进程,天然具备敏捷、弹性、可移植的特点
  • 容器镜像和容器实例一旦创建成功便不能修改,只能替换
  • 容器是微服务和持续集成的最佳载体

1、 容器

  • 容器技术是一种相对于虚拟机来说更加轻量的虚拟化技术,能为我们提供一种可移植、可重用的方式来打包、分发和运行应用程序。容器提供的方式是标准化的,可以将不同应用程序的不同组件组装在一起,又可以将它们彼此隔离。

  • 容器的基本思想就是将需要执行的所有软件打包到一个可执行程序包中,比如将一个 Java 虚拟机、Tomcat 服务器以及应用程序本身打包进一个容器镜像。用户可以在基础设施环境中使用这个容器镜像启动容器并运行应用程序,还可以将容器化运行的应用程序与基础设施环境隔离。

  • 容器具有高度的可移植性,用户可以轻松地在开发测试、预发布或生产环境中运行相同的容器。如果应用程序被设计为支持水平扩缩容,就可以根据当前业务的负载情况启动或停止容器的多个实例。

  • Docker 项目是当前最受欢迎的容器实现,以至于很多人通常都将 Docker 和容器互换使用,但请记住,Docker 项目只是容器技术的一种实现,将来有可能会被替换。

  • 因为具备轻量级的隔离属性,容器技术已然成为云原生时代应用程序开发、部署和运维的标准基础设置。使用容器技术开发和部署应用程序的好处如下:

    • 应用程序的创建和部署过程更加敏捷:与虚拟机镜像相比,使用应用程序的容器镜像更简便和高效。
    • 可持续开发、集成和部署:借助容器镜像的不可变性,可以快速更新或回滚容器镜像版本,进行可靠且频繁的容器镜像构建和部署。
    • 提供环境一致性:标准化的容器镜像可以保证跨开发、测试和生产环境的一致性,不必为不同环境的细微差别而苦恼。
    • 提供应用程序的可移植性:标准化的容器镜像可以保证应用程序运行于Ubuntu、CentOS等各种操作系统或云环境下。
    • 为应用程序的松耦合架构提供基础设置:应用程序可以被分解成更小的独立组件,可以很方便地进行组合和分发。
    • 资源利用率更高。
    • 实现了资源隔离:容器应用程序和主机之间的隔离、容器应用程序之间的隔离可以为运行应用程序提供一定的安全保证。
    • 容器技术大大简化了云原生应用程序的分发和部署,可以说容器技术是云原生应用发展的基石。

2、微服务

  • 微服务是一种软件架构方式,我们使用微服务架构可以将一个大型应用程序按照功能模块拆分成多个独立自治的微服务,每个微服务仅实现一种功能,具有明确的边界。

  • 为了让应用程序的各个微服务之间协同工作,通常需要互相调用 REST 等形式的标准接口进行通信和数据交换,这是一种松耦合的交互形式。

  • 微服务基于分布式计算架构,其主要特点可以概括为如下两点:

    • 单一职责:微服务架构中的每一个服务,都应是符合高内聚、低耦合以及单一职责原则的业务逻辑单元,不同的微服务通过 REST 等形式的标准接口互相调用,进行灵活的通信和组合,从而构建出庞大的系统。
    • 独立自治性:每个微服务都应该是一个独立的组件,它可以被独立部署、测试、升级和发布,应用程序中的某个或某几个微服务被替换时,其他的微服务都不应该被影响。
  • 基于分布式计算、可弹性扩展和组件自治的微服务,与云原生技术相辅相成,为应用程序的设计、开发和部署提供了极大便利:

    • 简化复杂应用:微服务的单一职责原则要求一个微服务只负责一项明确的业务,相对于构建一个可以完成所有任务的大型应用程序,实现和理解只提供一个功能的小型应用程序要容易得多。每个微服务单独开发,可以加快开发速度,使服务更容易适应变化和新的需求。
    • 简化应用部署:在单体的大型应用程序中,即使只修改某个模块的一行代码,也需要对整个系统进行重新构建、部署、测试和交付。而微服务则可以单独对某一个指定的组件进行构建、部署、测试和交付。
    • 灵活组合:在微服务架构中,可以重用一些已有的微服务组合新的应用程序,降低应用开发成本。
    • 可扩展性:根据应用程序中不同的微服务负载情况,可以为负载高的微服务横向扩展多个副本。
    • 技术异构性:通常在一个大型应用程序中,不同的模块具有不同的功能特点,可能需要不同的团队使用不同的技术栈进行开发。我们可以使用任意新技术对某个微服务进行技术架构升级,只要对外提供的接口保持不变,其他微服务就不会受到影响。
    • 高可靠性、高容错性:微服务独立部署和自治,当某个微服务出现故障时,其他微服务不受影响。
  • 微服务具备灵活部署、可扩展、技术异构等优点,但需要一定的技术成本,而且数量众多的微服务也增加了运维的复杂度,是否采用微服务架构需要根据应用程序的特点、企业的组织架构和团队能力等多个方面来综合评估。

3、服务网格

  • 随着微服务逐渐增多,应用程序最终可能会变为成百上千个互相调用的服务组成的大型应用程序,服务与服务之间通过内部或者外部网络进行通信。如何管理这些服务的连接关系以及保持通信通道无故障、安全、高可用和健壮,就成了一个非常大的挑战。

  • 服务网格(Service Mesh)可以作为服务间通信的基础设施层,解决上述问题。

  • 服务网格是轻量级的网络代理,能解耦应用程序的重试/超时、监控、追踪和服务发现,并且能做到应用程序无感知。服务网格可以使服务与服务之间的通信更加流畅、可靠、安全,它的实现通常是提供一个代理实例,和对应的服务一起部署在环境中,这种模式我们称为 Sidecar 模式,Sidecar 模式可处理服务之间通信的任何功能,比如负载均衡、服务发现等。

  • 服务网格的基础设施层主要分为两个部分,控制平面与数据平面,如图 1 所示。控制平面主要负责协调 Sidecar 的行为,提供 API 便于运维人员操控和测量整个网络。数据平面主要负责截获不同服务之间的调用请求并对其进行处理。

  • 服务网格典型架构
    在这里插入图片描述

  • 与微服务架构相比,服务网格具有 3 个方面的优势:

    • 可观测性:所有服务间通信都需要经过服务网格,所以在此处可以捕获所有调用相关的指标数据,如来源、目的地、协议、URL、状态码等,并通过 API 供运维人员观测。
    • 流量控制:服务网格可以为服务提供智能路由、超时重试、熔断、故障注入和流量镜像等控制能力。
    • 安全性:服务网格提供认证服务、加密服务间通信以及强制执行安全策略的能力。

4、DevOps

  • DevOps(Development & Operations,开发和运维)是软件开发人员和 IT 人员之间的合作过程,是一种工作环境、文化和实践的集合,目标是高效地自动执行软件交付和基础架构更改流程。开发和运维人员通过持续不断的沟通和协作,可以以一种标准化和自动化的方式快速、频繁且可靠地交付应用。

  • 开发人员通常以持续集成和持续交付(CI/CD)的方式,快速交付高质量的应用程序。

  • 持续集成是指开发人员频繁地将开发分支代码合并到主干分支,这些开发分支在真正合并到主干分支之前,都需要持续编译、构建和测试,以提前检查和验证其存在的缺陷。持续集成的本质是确保开发人员新增的代码与主干分支正确集成。

  • 持续交付是指软件产品可以稳定、持续地保持随时可发布的状态,它的目标是促进产品迭代更频繁,持续为用户创造价值。

  • 与持续集成关注代码构建和集成相比,持续交付关注的是可交付的产物。持续集成只是对新代码与原有代码的集成做了检查和测试,在可交付的产物真正交付至生产环境之前,我们一般还需要将其部署至测试环境和预发布环境,进行充分的集成测试和验证,最后才会交付至生产环境,保证新增代码在生产环境中稳定可用。

  • 使用持续集成和持续交付的优势如下:

    • 避免重复性劳动,减少人工操作的错误:自动化部署可以将开发运维人员从应用程序集成、测试和部署等重复性劳动环节中解放出来,而且人工操作容易犯错,机器犯错的概率则非常小。
    • 提前发现问题和缺陷:持续集成和持续交付能让开发和运维人员更早地获取应用程序的变更情况,更早地进入测试和验证阶段,也就能更早地发现和解决问题。
    • 更频繁的迭代:持续集成和持续交付缩短了从开发、集成、测试、部署到交付各个环节的时间,中间有任何问题都可以快速“回炉”改造和更新,整个过程敏捷且可持续,大大提高了应用程序的迭代频率和效率。
    • 更高的产品质量:持续集成可以结合代码预览、代码质量检查等功能,对不规范的代码进行标识和通知;持续交付可以在产品上线前充分验证应用可能存在的缺陷,最终提供给用户一款高质量的产品。
  • 云原生应用通常包含多个子功能组件,DevOps 可以大大简化云原生应用从开发到交付的过程,实现真正的价值交付。

5、 不可变基础设施

  • 在应用开发测试到上线的过程中,应用通常需要被频繁部署到开发环境、测试环境和生产环境中,在传统的可变架构时代,通常需要系统管理员保证所有环境的一致性,而随着时间的推移,这种靠人工维护的环境一致性很难维持,环境的不一致又会导致应用越来越容易出错。这种由人工维护、经常被更改的环境就是我们常说的“可变基础设施”。

  • 与可变基础设施相对应的是不可变基础设施,是指一个基础设施环境被创建以后不接受任何方式的更新和修改。这个基础设施也可以作为模板来扩展更多的基础设施。如果需要对基础设施做更新迭代,那么应该先修改这些基础设施的公共配置部分,构建新的基础设施,将旧的替换下线。简而言之,不可变基础设施架构是通过整体替换而不是部分修改来创建和变更的。

  • 不可变基础设施的优势在于能保持多套基础设施的一致性和可靠性,而且基础设施的创建和部署过程也是可预测的。在云原生结构中,借助 Kubernetes 和容器技术,云原生不可变基础设施提供了一个全新的方式来实现应用交付。

  • 云原生不可变基础设施具有以下优势:

    • 能提升应用交付效率:基于不可变基础设施的应用交付,可以由代码或编排模板来设定,这样就可以使用 Git 等控制工具来管理应用和维护环境。基础设施环境一致性能保证应用在开发测试环境、预发布环境和线上生产环境的运行表现一致,不会频繁出现开发测试时运行正常、发布后出现故障的情况。
    • 能快速、可靠地水平扩展:基于不可变基础设施的配置模板,我们可以快速创建与已有基础设施环境一致的新基础设施环境。
    • 能保证基础设施的快速更新和回滚:基于同一套基础设施模板,若某一环境被修改,则可以快速进行回滚和恢复,若需对所有环境进行更新升级,则只需更新基础设施模板并创建新环境,将旧环境一一替换。

6、 声明式API

  • 声明式设计是一种软件设计理念:我们负责描述一个事物想要达到的目标状态并将其提交给工具,由工具内部去处理如何实现目标状态。

  • 与声明式设计相对应的是过程式设计。在过程式设计中,我们需要描述为了让事物达到目标状态的一系列操作,这一系列的操作只有都被正确执行,才会达到我们期望的最终状态。

  • 在声明式 API 中,我们需要向系统声明我们期望的状态,系统会不断地向该状态驱动。在 Kubernetes 中,声明式 API 指的就是集群期望的运行状态,如果有任何与期望状态不一致的情况,Kubernetes 就会根据声明做出对应的合适的操作。

  • 使用声明式 API 的好处可以总结为以下两点:

    • 声明式 API 能够使系统更加健壮,当系统中的组件出现故障时,组件只需要查看API服务器中存储的声明状态,就可以确定接下来需要执行的操作。
    • 声明式 API 能够减少开发和运维人员的工作量,极大地提升工作效率。

云原生关键技术 - 申明式API

  • 申明式API可以解放人力,只需要在脚本中“声明”需求,具体实施由平台和云服务运行时解决
  • 申明式API使系统更加健壮,当某个组件出现故障时,不需要人力介入,能够让系统自动往用户期望的状态演进

华为云Stack中云原生服务简介

构建以应用为中心的云原生基础设施

在这里插入图片描述

四大解决方案加速企业落地云原生

在这里插入图片描述

以Kubernetes为基座

在这里插入图片描述

华为云Stack云原生产品与解决方案全景

在这里插入图片描述

申明式API对比命令式API有哪些优势?

  • 申明式API比命令式API更加智能化,同时更加节省人力成本

缩略语

缩略语英文全称解释
APIApplication Programming Interface应用编程接口,指的是应用程序之间为了保证互相通讯所提供的一系列特殊规则和要求
CNCFCloud Native Computing Foundation原生云计算基金会
OSOperation System操作系统
IoTInternet of Things物联网是互联网、传统电信网等信息承载体,让所有能行使独立功能的普通物体实现互联互通的网络
CRDCustom Resource Definition自定义资源定义
CRIContainer Runtime Interface容器运行时接口
CNIContainer Network Interface容器网络接口
CSIContainer Storage Interface容器存储接口
CCECloud Container Engine华为云容器引擎
HCSHUAWEI CLOUD Stack华为云解决方案名称

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day1Qt

1、实现登录窗口界面 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QIcon>//图标 #include <QLabel>//标签类 #include <QMovie>//动态类 #include <QLineEdit>//行编辑类 #include <QPushButton>…

龙芯+RT-Thread+LVGL实战笔记(29)——电子琴弹奏

【写在前面】临近期末,笔者工作繁忙,因此本系列教程的更新频率有所放缓,还望订阅本专栏的朋友理解,请勿催更。笔者在此也简要声明几点: 有些硬件模块笔者并没有,如LED点阵、压力传感模块、RFID模块等,因此这些模块的相关任务暂时无法给出经过验证的代码。其实,教程进行…

一文带你全面了解什么是自动化测试?

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;软件测试面试题分享&#xff1a; 1000道软件测试面试题及答案&#x1f4e2;软件测试实战项目分享&#xff1a; 纯接口项目-完…

打造专属个人或企业知识付费平台,核心功能设计

在当今信息爆炸的时代&#xff0c;知识管理已经成为了每个人必须面对的问题。然而&#xff0c;市面上的知识付费平台大多数都是通用的&#xff0c;无法满足个性化需求。 因此&#xff0c;明理信息科技提供了一款专属定制的适合个人的知识付费平台。核心产品能力如下&#xff1…

js逆向第14例:猿人学第7题动态字体,随风漂移

任务7:采集这5页中胜点列的数据,找出胜点最高的召唤师,将召唤师姓名填入答案中 此题采集的是胜点列表的数据如下 通过控制台审查元素查看,可以看到是乱码,记得几年前的快手,小红书,抖音也采用了此类反爬措施,html页面显示的是乱码,浏览器能正常显示数据,大概率就是…

基于ssm的双减后初小教育课外学习生活活动平台的设计与实现论文

双减后初小教育课外学习生活活动平台的设计与实现 摘 要 当下&#xff0c;正处于信息化的时代&#xff0c;许多行业顺应时代的变化&#xff0c;结合使用计算机技术向数字化、信息化建设迈进。以前学校对于课外学习活动信息的管理和控制&#xff0c;采用人工登记的方式保存相关…

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码

基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海洋捕食者算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于海洋捕食者优化的Elman网络5.测试结果6.参考文献7.Matlab代码…

在Spring Cloud Config Github配置中心

关于Spring Cloud系列我们其实讲解了很多&#xff0c;但是这里我们介绍一下Spring Cloud Config&#xff0c;它是一个解决分布式系统的配置管理方案&#xff0c;他包含了Client 和 Server 两个部分&#xff0c;server提供配置文件的存储&#xff0c;以接口的方式将配置文件内容…

一天一个设计模式---工厂方法

概念 工厂模式是一种创建型设计模式&#xff0c;其主要目标是提供一个统一的接口来创建对象&#xff0c;而不必指定其具体类。工厂模式将对象的实例化过程抽象出来&#xff0c;使得客户端代码不需要知道实际创建的具体类&#xff0c;只需通过工厂接口或方法来获取所需的对象。…

《矩阵分析》笔记

来源&#xff1a;【《矩阵分析》期末速成 主讲人&#xff1a;苑长&#xff08;5小时冲上90&#xff09;】https://www.bilibili.com/video/BV1A24y1p76q?vd_sourcec4e1c57e5b6ca4824f87e74170ffa64d 这学期考矩阵论&#xff0c;使用教材是《矩阵论简明教程》&#xff0c;因为没…

全球企业绿色供应链数据(含CITI指数和CATI指数,2014-2023年)

数据简介&#xff1a;发文趋势与主题分布 数据来源&#xff1a;公众环境研究中心&#xff08;IPE&#xff09; 时间跨度 CITI指数&#xff1a;2014-2023年&#xff1b; CATI指数&#xff1a;2021-2023年 数据范围&#xff1a;品牌型企业&#xff0c;温室气体重点排放行业的上…

某市公共资源交易网

目标网站首页&#xff1a;aHR0cDovL2dnenkuendmd2IudGouZ292LmNu/ 分析页面&#xff1a;aHR0cDovL2dnenkuendmd2IudGouZ292LmNuL3h3engvaW5kZXhfMi5qaHRtbA 点击前URL http://ggzy.zwfwb.tj.gov.cn:80/zwyw/1030977.jhtml 点击后URL http://ggzy.zwfwb.tj.gov.cn/zwyw/PtP89W…

Kettle Local引擎使用记录(二):问题记录及解决方法

Kettle Local &#x1f4da; 前言⁉️问题记录❓问题一&#xff1a;Database type not found!…database type with plugin id [Oracle] couldnt be found!❕原因&#xff1a;没有初始化Kettle环境❗解决&#xff1a;添加监听器&#xff0c;进行Kettle环境初始化 ❓问题二&…

Spring 见解 7 基于注解的AOP控制事务

8.基于注解的AOP控制事务 8.1.拷贝上一章代码 8.2.applicationContext.xml <!-- 开启spring对注解事务的支持 --> <tx:annotation-driven transaction-manager"transactionManager"/> 8.3.service Service Transactional(readOnlytrue,propagation Pr…

需求跟踪矩阵(RTM)是什么

什么是可追溯性矩阵&#xff1f; 可追溯性矩阵是一个文档&#xff0c;它与需要多对多关系以检查关系的完整性的任何两个基线文档相关联。它用于跟踪需求并检查是否满足当前项目需求。 什么是需求追踪矩阵&#xff1f; 需求可追溯性矩阵&#xff08;RTM&#xff09;是一个文档…

自动化软件测试流程的七个步骤和内容

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;软件测试面试题分享&#xff1a; 1000道软件测试面试题及答案&#x1f4e2;软件测试实战项目分享&#xff1a; 纯接口项目-完…

java 创建一个可执行的jar包小程序

第1步&#xff1a;写好代码 public class Main {public static void main(String[] args) {String str "hahah";if (StringUtils.isBlank(str)) {System.out.println(str);}System.out.println("Hello world!");} }第2步&#xff1a;设置 Artifact 选择入…

【netstat】

netstat netstat Proto是协议&#xff0c;TCP、UDP Recv-Q表示网络接收队列 Send-Q表示网络发送队列&#xff0c;没有ack的数据 Local Address本地ip地址和端口 Foreign Address服务器的ip和端口 State连接状态 State的种类&#xff1a; Established-活跃的连接 Listen-等待连…

软件测试|Python中的变量与关键字详解

简介 在Python编程中&#xff0c;变量和关键字是非常重要的概念。它们是构建和控制程序的基本要素。本文将深入介绍Python中的变量和关键字&#xff0c;包括它们的定义、使用方法以及一些常见注意事项。 变量 变量的定义 变量是用于存储数据值的名称。在Python中&#xff0…

听GPT 讲Rust源代码--compiler(12)

File: rust/compiler/rustc_data_structures/src/graph/dominators/mod.rs 文件mod.rs位于Rust编译器源代码中的rustc_data_structures/src/graph/dominators目录下。这个文件的作用是实现支配树&#xff08;dominator tree&#xff09;的计算算法。 在编译器优化中&#xff0c…