20.云原生之GitLab集成Runner

news2024/10/5 21:09:23

云原生专栏大纲

文章目录

  • GitLab Runner
    • GitLab Runner 介绍
    • GitLab Runner分类
    • GitLab Runner工作流程
  • Gitlab集成Gitlab Runner
    • GitLab Runner 版本选择
    • Runner在CitLab中位置
      • 专用Runner在gitlab中位置
      • 群组Runner在gitlab中位置
      • 共享Runner在gitlab中位置
    • GitLab部署
    • Gitlab Runner部署
      • docker-compose方式安装
      • kubesphere中可视化方式安装
      • helm方式安装
      • Gitlab agent方式安装
    • 注册gitlab-runner
      • 交互式注册
      • 非交互式注册
      • Runner常用命令
      • 执行器功能对比
      • GitLab Runer工具集成

GitLab Runner

GitLab Runner 介绍

GitLab Runner 是一个开源的持续集成/持续交付(CI/CD)工具,用于在 GitLab CI/CD 环境中执行自动化构建、测试和部署任务。它是 GitLab CI/CD 的一部分,负责管理和执行 CI/CD 作业。
以下是 GitLab Runner 的一些关键特点和功能:

  1. 多平台支持:GitLab Runner 可以在多种操作系统上运行,包括 Linux、macOS 和 Windows。这使得它非常灵活,可以适应不同的开发环境。
  2. 并行执行:GitLab Runner 支持并行执行作业,可以同时运行多个作业,提高构建和测试的效率。
  3. 多种执行器:GitLab Runner 提供了不同类型的执行器,包括 Shell、SSH、Docker、Kubernetes 等。这些执行器可以根据需要选择,以便在不同的环境中执行作业。
  4. 可扩展性:GitLab Runner 可以通过添加自定义执行器来扩展其功能。这使得它可以与各种不同的工具和服务集成,以满足特定的需求。
  5. 安全性:GitLab Runner 提供了各种安全功能,包括作业隔离、安全沙盒和访问控制。这些功能可以确保作业的安全性和可靠性。
  6. 配置灵活:GitLab Runner 的配置非常灵活,可以通过配置文件或命令行参数进行配置。你可以根据需要自定义执行器的行为和设置。

使用 GitLab Runner,你可以轻松地将 CI/CD 流程集成到 GitLab 中,实现自动化构建、测试和部署。它提供了强大的功能和灵活的配置选项,使得开发团队能够更高效地交付软件。无论是小型项目还是大型企业级项目,GitLab Runner 都是一个强大而可靠的 CI/CD 工具。

GitLab Runner分类

下面是专用Runner、群组Runner和共享Runner之间的对比介绍:

特性专用Runner群组Runner共享Runner
运行环境为特定项目或组织专门配置的Runner为一组项目或组织共享的Runner为整个GitLab实例共享的Runner
配置和管理需要单独配置和管理每个项目的Runner可以集中配置和管理一组项目的Runner集中配置和管理整个GitLab实例的Runner
资源隔离提供独立的资源,不与其他项目共享提供一定程度的资源隔离共享资源,可能会受到其他项目的影响
安全性提供更高的安全性,仅用于特定项目提供一定程度的安全性可能存在安全隐患,需要谨慎使用
可扩展性随着项目数量增加,需要增加专用Runner可以共享一组Runner,减少资源需求可以共享一组Runner,减少资源需求
灵活性可以根据项目的特定需求进行定制可以根据一组项目的共同需求进行定制适用于整个GitLab实例,定制性较低
使用场景适用于有严格隔离需求的敏感项目适用于一组项目共享资源的情况适用于整个GitLab实例的通用场景
部署和维护成本需要为每个项目单独部署和维护Runner部署和维护一组Runner部署和维护整个GitLab实例的Runner

请注意,上述表格中的特性和使用场景只是一般情况下的概括,并不适用于所有情况。根据具体的项目要求和资源约束,您可以选择适合的Runner类型来满足您的需求。

GitLab Runner工作流程

GitLab Runner 的工作流程如下:

  1. 注册 Runner:首先,你需要在 GitLab 中注册一个 Runner。这可以通过在 GitLab 项目设置中创建一个新的 Runner 配置来完成。在注册过程中,你将为 Runner 分配一个唯一的 token,用于与 GitLab 服务器进行身份验证。
  2. 安装和配置 Runner:在你的执行环境中安装 GitLab Runner,并使用注册时获得的 token 进行身份验证。安装过程可能因操作系统而异,请按照官方文档提供的说明进行安装。安装完成后,你需要通过配置文件或命令行参数对 Runner 进行配置,包括指定 Runner 的名称、token、执行器类型等信息。
  3. 运行和监听:启动 GitLab Runner 后,它会连接到 GitLab 服务器,并开始监听作业的出现。Runner 会定期向 GitLab 服务器发送心跳信号,以保持连接。当有新的作业出现时,GitLab 服务器会将作业分配给可用的 Runner。
  4. 下载代码:当 Runner 接收到作业时,它会从 GitLab 服务器上获取项目的代码。这通常是通过克隆 Git 存储库或者拉取最新的代码变更来完成的。
  5. 执行作业:一旦代码下载完成,Runner 将根据作业的定义执行相应的操作。这可以是构建项目、运行测试、生成文档、打包应用程序等等。Runner 可以使用预定义的执行器(如 Shell、Docker、Kubernetes)来运行作业。
  6. 提交结果:当作业执行完成后,Runner 将结果提交回 GitLab 服务器。这包括构建日志、测试报告、生成的文件等。这些结果可以在 GitLab 的界面中查看和分析。
  7. 清理和释放资源:完成作业后,Runner 将清理执行环境,并释放使用的资源。这可以包括删除临时文件、停止容器、释放服务器资源等。

整个过程是自动化的,GitLab Runner 负责管理作业的执行和结果的提交。它可以与 GitLab CI/CD 配合使用,为开发团队提供一个强大的持续集成和持续交付平台。通过配置不同的执行器和作业定义,你可以根据项目的需求和特定的环境设置来灵活地定义和执行作业。

Gitlab集成Gitlab Runner

GitLab CI GitLab Runner配置 - 初级篇_gitlab ci aluter-CSDN博客
image.png

GitLab Runner 版本选择

https://docs.gitlab.com/runner/
出于兼容性原因,GitLab Runner major.minor 版本 应与 GitLab 主要和次要版本保持同步。年长的跑步者可能仍然可以工作 使用较新的 GitLab 版本,反之亦然。但是,功能可能不可用或无法正常工作 如果存在版本差异。
次要版本更新之间保证向后兼容性。然而,有时轻微 GitLab 的版本更新可以引入需要 GitLab Runner 在同一个次要版本上的新功能 版本。
GitLab Runner 15.0 对 注册 API 请求格式。它可以防止 GitLab Runner 与低于 14.8 的 GitLab 版本进行通信。 您必须使用适合 GitLab 版本的 Runner 版本,或者升级 GitLab 应用程序。

查看gitlab版本

gitlab-rake gitlab:env:info

image.png
https://hub.docker.com/r/gitlab/gitlab-runner/tags查找跟gitlab版本对应的runner版本
image.png
lpine Linux 和 Ubuntu 是两种常见的 Linux 发行版,它们在一些方面有所不同。

  1. 大小和资源消耗:Alpine Linux 是一个轻量级的发行版,以小巧和高效而闻名。它的基本安装映像非常小,通常只有几十兆字节,因此占用的磁盘空间和内存消耗相对较少。这使得它在容器化环境中非常受欢迎,因为它可以快速启动和部署。相比之下,Ubuntu 是一个功能更全面的发行版,提供了更多的软件包和功能。它的基本安装映像较大,通常几个几百兆字节,占用的磁盘空间和内存消耗也更高一些。
  2. 软件包管理:Alpine Linux 使用 apk 包管理器来管理软件包。它的软件包库相对较小,但它专注于提供核心软件包和常用工具,以满足大多数基本需求。Ubuntu 使用 apt 包管理器来管理软件包。它的软件包库非常庞大,包含了广泛的软件选择,包括开发工具、服务器应用、桌面环境等。
  3. 默认配置和用户友好性:Ubuntu 在默认配置和用户友好性方面更加注重。它提供了易于使用的图形界面和友好的安装程序,适合桌面和服务器使用。Alpine Linux 更加精简,更注重定制和自定义。它的默认配置较为简单,适合专注于特定用途的部署,如容器化环境或嵌入式系统。

选择使用 Alpine Linux 还是 Ubuntu 取决于你的具体需求。如果你需要一个轻量级、高效的发行版,适用于容器化环境或资源受限的系统,那么 Alpine Linux 是一个不错的选择。如果你需要更广泛的软件选择、更丰富的功能和更友好的用户体验,那么 Ubuntu 可能更适合你。

Runner在CitLab中位置

专用Runner在gitlab中位置

进入项目->设置->CICD->runner
image.png

群组Runner在gitlab中位置

  1. 新建群组

image.png

  1. 进入群组:设置->CICD->runner

image.png

共享Runner在gitlab中位置

image.png

GitLab部署

# 添加仓库
helm repo add gitlab https://charts.gitlab.io

# 安装
helm upgrade --install gitlab gitlab/gitlab \
  --namespace=gitlab \
  --create-namespace \
  --timeout 600s \
  --set global.edition=ce \
  --set gitlab-runner.install=false \
  --set global.hosts.domain=example.com \
  --set certmanager-issuer.email=me@example.com

# 对应gitlab-runner镜像
registry.gitlab.com/gitlab-org/gitlab-runner:alpine-v16.7.0

kubesphere仓库安装:
image.png
该方式部署会按模块分布式部署:
image.png
在GitLab中,KAS(Kubernetes Agent Service)、Registry和Web Service是三个不同的功能模块。

  1. KAS(Kubernetes Agent Service):KAS是GitLab的一个功能,用于与Kubernetes集群进行集成。它充当了一个代理服务,负责与Kubernetes集群通信,并允许你在GitLab CI/CD配置文件(如.gitlab-ci.yml)中定义和管理Kubernetes资源,例如部署、服务、Ingress等。通过KAS,你可以在GitLab中实现基于Kubernetes的持续集成和持续部署(CI/CD)流程。
  2. Registry:Registry是GitLab的一个模块,用于管理和存储Docker镜像。它提供了一个私有的Docker镜像仓库,用于存储和分享容器镜像。你可以使用Registry来构建、推送和拉取Docker镜像,以便在CI/CD流程中使用。Registry还提供了访问控制和权限管理功能,可以对镜像进行安全管理。
  3. Web Service:在GitLab中,Web Service指的是你的应用程序或服务,可以使用GitLab CI/CD来自动化构建、测试和部署。通过GitLab CI/CD,你可以在.gitlab-ci.yml配置文件中定义构建、测试和部署的步骤,GitLab会根据配置文件中的定义自动化执行这些步骤。你可以将你的Web服务与GitLab的KAS和Registry结合使用,实现容器化的持续集成和持续部署。

综上所述,KAS用于与Kubernetes集群集成,Registry用于管理和存储Docker镜像,而Web Service则是你的应用程序或服务,可以通过GitLab CI/CD来自动化构建、测试和部署。这三个功能模块共同为GitLab提供了容器化和持续集成部署的能力。

Gitlab Runner部署

Gitlab gitlab-ce-zh:11.1.4 持续集成-CSDN博客
Gitlab Runner安装官网文档

docker-compose方式安装

version: '3.8'
services:
  gitlab-runner:
    image: gitlab/gitlab-runner:alpine-v11.11.4
    container_name: gitlab-runner
    restart: always
    volumes:
      - ./config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock  # 这一行是固定写法 不要随便改

kubesphere中可视化方式安装

  1. 创建PVC

image.png

  1. 配置镜像地址

image.png

  1. 挂载配置

image.png
注意:/var/run/docker.sock挂载使用HostPath卷
image.png

helm方式安装

https://www.jianshu.com/p/2eb12252e4ee
部署 GitLab Runner | k8s 折腾笔记
注意:helm仓库中维护的版本都大于11,若想使用helm部署请升级gitlab

  1. 添加仓库
# 添加 chart 存储库
$ helm repo add gitlab https://charts.gitlab.io

# 查看存储库
$ helm repo list
NAME        URL
gitlab      https://charts.gitlab.io
  1. 在kubesphere应用仓库中部署

image.png

  1. 修改values.yaml 文件
#以下两个在gitlab页面获取
gitlabUrl: http://gitlab.base.svc.cluster.local # 使用k8s内部gitlab svc地址
runnerRegistrationToken: "gitlab-runner-tocken" #gitlab-runner注册用到的tocken

concurrent: 10 #最大作业并发数
checkInterval: 30 #新作业检查间隔
tags: "k8s-runner" #runner的标签
#rbac权限打开
rbac:
  create: true

  ## Define specific rbac permissions.
  ## DEPRECATED: see .Values.rbac.rules
  resources: ["pods", "pods/exec", "secrets","configmaps"]
  verbs: ["get", "list", "watch", "create", "patch", "delete","update"]

Gitlab agent方式安装

  1. 登录Gitlab,设置->CICD->Runner->点击在Kubernetes上安装Runer

image.png

  1. 添加k8s集群信息

image.png 要获取 Kubernetes(K8s)集群的名称、API 地址、CA 证书和令牌,你可以按照以下步骤进行操作:

# 运行以下命令来获取当前连接的集群的名称:输出结果@后为集群名
kubectl config current-context
# 下述命令也能获取集群名
kubectl config get-contexts


# 运行以下命令来获取当前连接的集群的 API 地址:
kubectl cluster-info | grep 'Kubernetes master'

# 运行以下命令来获取当前连接的集群的 CA 证书:
kubectl config view --minify --flatten -o jsonpath='{.clusters[].cluster.certificate-authority-data}' | base64 --decode

# 运行以下命令来获取当前连接的集群的访问令牌(Token):
kubectl config view --minify --flatten -o jsonpath='{.users[].user.token}' | base64 --decode
# 登录kubesphere,查找保密字典中的coredns-token能查看

注册gitlab-runner

注册-gitlab-runner官网参考,gitlab-runner register命令会修改/etc/gitlab-runner/config.toml配置,配置文件更改时不需要重启服务,每隔三秒GitLab Runner 会检查配置修改,并重新加载。config.toml配置官网 ,有的历史版本在线文档没有维护,需自行拉取,GitLab Docs历史版本

docker run -it --rm -p 4000:4000 registry.gitlab.com/gitlab-org/gitlab-docs:11.1

交互式注册

进入gitlab-runner pod终端执行下述命令:

/ # gitlab-runner register
Runtime platform                                    arch=amd64 os=linux pid=33 revision=e828d3bc version=11.11.4
Running in system-mode.
# gitlab地址
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://xxx.xxx.shop:99/
# 项目token
Please enter the gitlab-ci token for this runner:
cp6KwLn3KDTLWN8SD3ax
# 描述也是runner名称
Please enter the gitlab-ci description for this runner:
[gitlab-runner-8575578f55-d8bfh]: ci
# 标签,建议跟gitlab-ci.yml中的阶段一致
Please enter the gitlab-ci tags for this runner (comma separated):
ci
Registering runner... succeeded                     runner=cp6KwLn3
# 选择执行器,从给出列表选择
Please enter the executor: parallels, shell, kubernetes, docker, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine:
[ci]: shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

如果选择 Docker 作为执行程序,系统将要求你输入默认值 图像用于未在 :.gitlab-ci.yml

Please enter the Docker image (eg. ruby:2.1):
alpine:latest

非交互式注册

  1. 进入gitlab-runner pod终端执行下述命令:
gitlab-runner register  \
--non-interactive \
--run-untagged="true" \
--locked="false" \
--executor "shell" \
--url "http://gitlab.base.svc.cluster.local" \
--registration-token "hFwboXgWNwBGgy4omYi2" \
--description "share-runner" \
--tag-list "share" \
#11.1版本一下不支持该参数,自行删除
--request-concurrency 1 \
--limit 2 \   
--access-level="not_protected" \ 

gitlab-runner register比较常用参数介绍:

  • –url:GitLab 实例的 URL 地址。
  • –registration-token:用于注册 Runner 的访问令牌。可以在 GitLab 项目的设置中找到。
  • –executor:指定 Runner 的执行器类型。常见的执行器类型包括parallels, shell, kubernetes, docker, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine
  • –name:指定 Runner 的名称,用于在 GitLab 中标识 Runner。
  • –tag-list:为 Runner 添加标签,用于在 GitLab CI/CD 配置中选择特定的 Runner。
  • –run-untagged:指定 Runner 是否允许运行没有标签的作业。
  • –locked:指定 Runner 是否被锁定,锁定的 Runner 只能由项目管理员解锁。
  • –access-level:指定 Runner 的访问级别。可选值为 not_protected、ref_protected、full_protected。
    1. not_protected:这是最低的访问级别,表示 Runner 可以运行任何作业,无论作业所在的分支或标签是否受保护。Runner 在任何情况下都可以被使用,包括未受保护的分支和标签。
    2. ref_protected:这个级别表示 Runner 只能运行受保护的分支和标签上的作业。受保护的分支和标签是在 GitLab 项目设置中配置的,通常用于限制对特定分支或标签的更改和部署。Runner 将只能在受保护的分支和标签上执行作业。
    3. full_protected:这是最高的访问级别,表示 Runner 只能运行受完全保护的分支和标签上的作业。完全保护的分支和标签要求作业必须通过一个合并请求(Merge Request)进行审查和合并,以确保代码的质量和安全性。Runner 将只能在受完全保护的分支和标签上执行作业。
  • –limit:指定 Runner 可以同时运行的作业数量上限。
  • –request-concurrency:指定 Runner 处理作业请求的并发数。
  1. 验证Runner注册是否生效

image.png
或者在gitlab-runner容器中执行:

gitlab-runner verify

image.png

Runner常用命令

命令描述
gitlab-runner register注册一个新的 Runner
gitlab-runner start启动 Runner
gitlab-runner stop停止 Runner
gitlab-runner restart重启 Runner
gitlab-runner status查看 Runner 状态
gitlab-runner list列出已注册的 Runner
gitlab-runner unregister --id 删除已注册的 Runner
gitlab-runner unregister --all-runners注销所有Runner
gitlab-runner update更新 Runner 的二进制文件
gitlab-runner verify检查注册的runner是否可以连接,但不验证GitLab服务是否正在使用runner

执行器功能对比

image.png

GitLab Runer工具集成

  1. 以springbo项目为例,在CICD过程中,会使用maven打包项目,使用docker+dockerfile构建镜像,上传到harbor
  2. 以vue项目为例,在CICD过程中,会使用npm打包项目,使用docker+dockerfile构建镜像,上传到harbor

这些工具需要集成到Runer中,才能实现CI过程,这而介绍两种集成方式:

  1. 在部署GitLab Runer的机器上安装这些组件(不推荐,麻烦)
  2. 在gitlab-ci.yaml中通过image定义环境

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

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

相关文章

Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据

Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据 引言正文 引言 之前在 《pandas向已经拥有数据的Excel文件中添加新数据》 一文中我们介绍了如何通过 pandas 向 Excel 文件中写入数据。那么对于含有多表头的数据,我们该如何将它们…

Linux管道学习(无名管道)

目录 1、概述 2、管道的创建 3、管道读写行为 3.1、管道读 3.2、管道写 4、管道用于兄弟进程之间的通讯 在linux中管道有两种,一是无名管道(匿名管道),第二种是有名管道;无名管道主要用于有血缘关系的父子进程间…

八、Kotlin 反射

1. 什么是反射 反射是允许在运行时期访问 程序结构 的一类特性(程序结构包括:类、接口、方法、属性等)。 2. 反射的依赖库 Kotlin 中不仅自己实现了一套 Kotlin 反射的 API,还可以使用 Java 反射的 API。 Kotlin 反射的 API 是…

day33WEB 攻防-通用漏洞文件上传中间件解析漏洞编辑器安全

目录 一,中间件文件解析漏洞-IIS&Apache&Nginx -IIS 6 7 文件名 目录名 -Apache 换行解析 配置不当 1、换行解析-CVE-2017-15715 2、配置不当-.htaccess 配置不当 -Nginx 文件名逻辑 解析漏洞 1、文件名逻辑-CVE-2013-4547 2、解析漏洞-nginx.conf …

ECharts 中 Legend自定义可以使用svg标签

效果图: legend图例加载svg标签 在ECharts中,图例(legend)组件的formatter属性允许你自定义图例文本的格式。但是,formatter属性不支持直接加载SVG标签或Html。它接受一个字符串或者一个函数作为输入,并不能解析或渲染SVG。 如果…

探索 DevOps 中的自动化技术

DevOps 是一种强调开发与 IT 运营之间合作的软件开发范式,主要依靠自动化来优化流程、提高生产力并确保及时、可靠的软件交付。以下是对 DevOps 不可或缺的关键自动化技术的探索: 1.持续集成/持续部署(CI/CD) 在 DevOps 领域&…

WebSocket服务端数据推送及心跳机制(Spring Boot + VUE):

文章目录 一、WebSocket简介:二、WebSocket通信原理及机制:三、WebSocket特点和优点:四、WebSocket心跳机制:五、在后端Spring Boot 和前端VUE中如何建立通信:【1】在Spring Boot 中 pom.xml中添加 websocket依赖【2】…

Java程序设计(猜拳、猜数字、猜硬币)

前言 Java实现简单的程序设计,包含猜拳、猜数字和猜硬币,实现玩家和电脑之间的互动,电脑每次出的结果实现随机,玩家选择需要玩的游戏(猜拳、猜数字、猜硬币),选择需要进行的局数。 界面设计 程…

pcl+vtk(十四)vtkCamera相机简单介绍

一、vtkCamera相机 人眼相当于三维场景下的相机, VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面,如屏幕、图像等。 相机位置:即相机所在的位置,用方法vtkCamera::SetPosition()设置。 相…

k8s的安全机制

k8s是分布式集群管理工具,k8s作用是容器编排 1、安全机制核心:API server。API server作为整个集群内部通信的中介,也是外部控制的入口,所有的安全机制都是围绕api sserver来进行设计的。请求api server资源要满足3个条件&#x…

数据结构篇-02:最小栈

对于这道题,除了 getMin 外的功能,传统的 栈 结构中都有,所以重点在于如何实现 getMin 方法。 有两类方法:使用辅助栈/不使用辅助栈 使用辅助栈的解法一 定义一个 栈 来实现常规功能,另外定义一个栈(最小…

如何配置点击抖音直播小风车跳转到微信公众号?

随着抖音直播间的普及,越来越多的品牌选择通过直播进行宣传推广。然而,直播间主播的氛围营造是一项极具挑战性的任务。如果观众的热情无法被调动起来,直播间很容易陷入沉寂,难以吸引流量。 为了最大化利用流量,许多品牌…

智能充电桩,机器人 wifi蓝牙 解决方案

新联鑫威低功耗高性价比sdio wifi/蓝牙combo的模块单频2.4g的CYWL6208,双频2.4g/5g CYWL6312可以应用到一些低延时 高性能 低功耗 联网需求的交流直流充电桩,扭力扳手,agv机器人,目前支持主流的stm32F4/GD32F4 瑞萨 psoc的主控&am…

道合顺:一站式电子元器件采购商城

欢迎来到道合顺,您专属的电子元器件采购商城。我们为您提供广泛的元器件选择,包括各类芯片、传感器、电容电阻、连接器等,以满足您项目的需求。 最新价格实时查询 通过道合顺电子网,您可以随时随地查询各类电子元器件的最新价格…

外汇天眼:QoinTech误信假老师话术投资外汇,惨遭黑平台滑点爆仓拒出金

去年11月与12月,外汇天眼先后发布了「钓鱼广告诱加投资群组,限制出金逼迫缴分成费」与「假投顾诱导投资黄金获利,黑平台操作爆仓狠诈700万」这2篇文章,曝光黑平台QoinTech的诈骗手法,呼吁投资人不要上当,没…

你对 TypeScript 中枚举类型的理解?应用场景?

文章目录 一、是什么二、使用数字枚举字符串枚举异构枚举本质 三、应用场景参考文献 一、是什么 枚举是一个被命名的整型常数的集合,用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型 通俗来说,枚举就是一个对象的所有可能…

LeetCode 热题 100 | 普通数组

目录 1 53. 最大子数组和 2 56. 合并区间 3 189. 轮转数组 4 238. 除自身以外数组的乘积 5 41. 缺失的第一个正数 菜鸟做题第二周,语言是 C 1 53. 最大子数组和 题眼:“子数组是数组中的一个连续部分。” 遍历数组,问每一个元素…

EIGRP实验

实验大纲 一、基本配置 1.构建网络拓扑结构图 2.路由器基本配置 3.配置PC 4.测试连通性 5.保存配置文件 二、配置EIGRP 1.查看路由表 2.配置EIGRP动态路由 3.查看路由器路由表 4.测试网络连通性 5.查看所有路由器的路由协议 6.保存配置文件 三、配置OSPF 1.配置…

【基于电商履约场景的 DDD 实战】DDD领域驱动设计的优势分析以及与MVC架构对比

🌈🌈🌈🌈🌈🌈🌈🌈 欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术的推送! 在我后台回复…

LeetCode.2859. 计算 K 置位下标对应元素的和

题目 题目链接 分析 这道题的题意很明确。就是求每一个下标的二进制中1的个数为k的下标所对应的元素值之和。 Java 中有 库函数 Integer.bitCount(num),这个函数的返回值就是 num 中 1 的个数。 代码 class Solution {public int sumIndicesWithKSetBits(List…