OpenShift 介绍

OpenShift

    • 1. OpenShift 简介
      • 1.1 OpenShift 核心功能
      • 1.2 OpenShift 特性
      • 1.3 OCP和OKD介绍
    • 2. OpenShift 架构
      • 2.1 OpenShift 架构概述
      • 2.2 Master和Nodes
    • 3. 管理 OpenShift
      • 3.1 OpenShift 项目及应用
      • 3.2 使用Source-to-image构建映像
      • 3.3 管理OpenShift资源
    • 4. OpenShift 网络/持久化/高可用
      • 4.1 OpenShift 网络概述
      • 4.2 OpenShift持久性存储
      • 4.3 OpenShift 高可用概述
      • 4.4 Image Streams
    • 5. OpenShift 和 K8s 的关系

在这里插入图片描述
官网 https://www.redhat.com/en/technologies/cloud-computing/openshift

1. OpenShift 简介

Red Hat OpenShift Container Platform (OpenShift)是一个容器应用程序平台,它为开发人员和IT组织提供了一个云应用程序平台(PaaS),用于在安全的、可伸缩的资源上部署新应用程序,而配置和管理开销最小。

OpenShift构建于Red Hat Enterprise Linux、Docker和Kubernetes之上,为当今的企业级应用程序提供了一个安全且可伸缩的多租户操作系统,同时还提供了集成的应用程序运行时和库。

OpenShift带来了健壮、灵活和可伸缩的特性。容器平台到客户数据中心,使组织能够实现满足安全性、隐私性、遵从性和治理需求的平台。不愿意管理自己的OpenShift集群的客户可以使用Red Hat提供的公共云平台OpenShift Online。

1.1 OpenShift 核心功能

OpenShift提供了丰富的容器化管理功能,其核心功能包括以下内容:

  • 容器化部署:OpenShift使用Kubernetes作为底层平台,支持容器化部署和管理应用程序。开发者可以使用Docker等工具创建和打包容器镜像,然后使用OpenShift进行部署和管理。
  • 多租户支持:OpenShift支持多租户部署,可以在同一平台上为多个团队或项目提供服务,实现资源隔离和管理。
  • 自动扩展:OpenShift支持自动扩展应用程序,可以根据负载和流量变化自动扩容和缩容应用实例。
  • CI/CD管道:OpenShift提供了一组工具和服务,可以构建完整的CI/CD管道,实现自动化构建、测试、部署和发布。
  • 内置监控和日志记录:OpenShift提供了内置监控和日志记录功能,可以实时监控应用程序的性能和状态,帮助开发者快速定位和解决问题。
  • 容器安全性:OpenShift提供了多种安全功能和机制,包括容器映像签名、安全上下文、网络策略等,确保应用程序在容器环境中运行时的安全性。
  • 服务网格:OpenShift支持服务网格,可以管理和控制分布式应用程序中的服务之间的通信,提供更好的服务质量和可靠性。

1.2 OpenShift 特性

OpenShift容器平台和OpenShift Online都是基于OpenShift Origin开源软件项目的,该项目本身使用了许多其他开源项目,如Docker和Kubernetes。

应用程序作为容器运行,容器是单个操作系统内的隔离分区。容器提供了许多与虚拟机相同的好处,比如安全性、存储和网络隔离,同时需要的硬件资源要少得多,启动和终止也更快。OpenShift使用容器有助于提高平台本身及其承载的应用程序的效率、灵活性和可移植性。

OpenShift的主要特性如下:

  • 自助服务平台:OpenShift允许开发人员使用Source-to-Image(S21)从模板或自己的源代码管理存储库创建应用程序。系统管理员可以为用户和项目定义资源配额和限制,以控制系统资源的使用。
  • 多语言支持:OpenShift支持Java、Node.js、PHP、Perl以及直接来自Red Hat的Ruby。同时也包括来自合作伙伴和更大的Docker社区的许多其他代码。MySQL、PostgreSQL和MongoDB数据库。Red Hat还支持在OpenShift上本地运行的中间件产品,如Apache httpd、Apache Tomcat、JBoss EAP、ActiveMQ和Fuse。
  • 自动化:OpenShift提供应用程序生命周期管理功能,当上游源或容器映像发生更改时,可以自动重新构建和重新部署容器。根据调度和策略扩展或故障转移应用程序。
  • 用户界面:OpenShift提供用于部署和监视应用程序的web UI,以及用于远程管理应用程序和资源的CLi。它支持Eclipse IDE和JBoss Developer Studio插件,以便开发人员可以继续使用熟悉的工具,并支持REST APl与第三方或内部工具集成。
  • 协作:OpenShift允许在组织内或与更大的社区共享项目。
  • 可伸缩性和高可用性:OpenShift提供了容器多租户和一个分布式应用程序平台,其中包括弹性,以处理随需增加的流量。它提供了高可用性,以便应用程序能够在物理机器宕机等事件中存活下来。OpenShift提供了对容器健康状况的自动发现和自动重新部署。
  • 容器可移植性:在OpenShift中,应用程序和服务使用标准容器映像进行打包,组合应用程序使用Kubernetes进行管理。这些映像可以部署到基于这些基础技术的其他平台上。
  • 开源:没有厂商锁定。
  • 安全性:OpenShift使用SELinux提供多层安全性、基于角色的访问控制以及与外部身份验证系统(如LDAP和OAuth)集成的能力。
  • 动态存储管理:OpenShift使用Kubernetes持久卷和持久卷声明的方式为容器数据提供静态和动态存储管理
  • 基于云(或不基于云):可以在裸机服务器、或来自多个供应商的hypervisor和大多数IaaS云提供商上部署OpenShift容器平台。
  • 企业级:Red Hat支持OpenShift、选定的容器映像和应用程序运行时。可信的第三方容器映像、运行时和应用程序由Red Hat认证。可以在OpenShift提供的高可用性的强化安全环境中运行内部或第三方应用程序。
  • 日志聚合和metrics:可以在中心节点收集、聚合和分析部署在OpenShift上的应用程序的日志信息。OpenShift能够实时收集关于应用程序的度量和运行时信息,并帮助不断优化性能。
  • 其他特性:OpenShift支持微服务体系结构,OpenShift的本地特性足以支持DevOps流程,很容易与标准和定制的持续集成/持续部署工具集成。

1.3 OCP和OKD介绍

OpenShift 有两个版本:开源版本和企业版本。

  • 开源版本是由 Red Hat 开发和维护的,被称为 OKD(Origin Community Distribution of Kubernetes),可以理解为它是一个完全开源的 Kubernetes 发行版。它包含了 Kubernetes、OpenShift 构建器、OpenShift 路由、OpenShift Registry 等核心组件,还支持应用程序部署、管理、扩展、监控等功能。但是,它不包含 Red Hat 对 OpenShift 的一些专有功能和支持,也不包含 Red Hat 的企业级支持、安全性和稳定性。
  • 企业版本是由 Red Hat 开发和维护的,被称为 OCP(Red Hat OpenShift Container Platform),它基于 OKD 构建,同时包含了一些专有功能和支持,如集成 CI/CD 工具、内置的安全性、高可用性、可扩展性等。此外,OCP 还提供了 Red Hat 的企业级支持和服务,如技术支持、安全修补程序和更新等。

总的来说,企业版本相对于开源版本提供了更加全面和强大的功能和支持,更适合于大规模的企业级应用场景。但是,开源版本更加灵活和自由,也更适合于小型和中型企业以及个人开发者。

2. OpenShift 架构

2.1 OpenShift 架构概述

OpenShift容器平台是一组构建在Red Hat Enterprise Linux、Docker和Kubernetes之上的模块化组件和服务。OpenShift增加了远程管理、多租户、增强的安全性、应用程序生命周期管理和面向开发人员的自服务接口。
在这里插入图片描述

  • RHEL:基本操作系统是Red Hat Enterprise Linux;
  • Docker:提供基本的容器管理API和容器image文件格式;
  • Kubernetes:管理运行容器的主机集群(物理或虚拟主机)。它处理描述由多个资源组成的多容器应用程序的资源,以及它们如何互连;
  • Etcd:一个分布式键值存储,Kubernetes使用它来存储OpenShift集群中容器和其他资源的配置和状态信息。

OpenShift在Docker + Kubernetes基础设施之上添加了提供容器应用程序平台所需的更富丰的功能:

  • OpenShift Kubernetes extensions:其它资源类型存储在Etcd中,由Kubernetes管理。这些额外的资源类型形成OpenShift内部状态和配置,以及由标准 Kubernetes管理的应用程序资源;
  • Containerized services:完成许多基础设施功能,如网络和授权。其中一些一直运行,另一些则按需启动。OpenShift使用Docker和Kubernetes来实现大多数内部功能。即大多数OpenShift内部服务作为由Kubernetes管理的容器;
  • Runtimes and xPaaS:供开发人员使用的 base image,每个image都预配置了特定的runtime或db。xPaaS提供了一组用于JBoss中间件产品(如JBoss EAP和ActiveMQ)的 base image;
  • DevOps tools and user experience:OpenShift提供了Web UI和CLI管理工具,从而实现配置和监视应用程序、OpenShift服务和资源。Web和CLI工具都是由相同的REST api构建的,可供IDE和CI平台等外部工具使用。OpenShift 还可以访问外部SCM存储库和容器registry,并将它们的构件引入OpenShift Cloud。

OpenShift不会向开发人员和系统管理员屏蔽Docker和Kubernetes的核心基础设施。相反,它将它们用于内部服务,并允许将Docker和Kubernetes资源导入OpenShift集群,同时原始Docker和资源可以从OpenShift集群导出,并导入到其他基于docker的基础设施中。

OpenShift添加到Docker + Kubernetes的主要价值是自动化开发工作流,因此应用程序的构建和部署在OpenShift集群中按照标准流程进行。开发者不需要知道底层Docker的细节。OpenShift接受应用程序,打包它,并将其作为容器启动。

2.2 Master和Nodes

OpenShift集群是一组节点服务器,它们运行容器,并由一组主服务器集中管理。服务器可以同时充当master和node,但是为了增加稳定性,这些角色通常是分开的。

OpenShift工作原理和交互视图:
在这里插入图片描述

  • Master节点运行OpenShift核心服务,如身份验证,并未管理员提供API入口。scheduler和management/replication是Kubernetes主服务,而Data Store是Etcd守护进程。
  • Nodes节点运行包含应用程序的容器,容器又被分组成pod。
  • Operator:OpenShift平台的自定义控制器,负责管理应用的生命周期,包括创建、更新、扩展和删除应用,同时也负责监控应用状态和进行自动化修复。
  • API对象:OpenShift扩展了Kubernetes的API对象模型,引入了更多的自定义资源类型,如Build、DeploymentConfig、ImageStream等,以支持应用构建、部署、镜像管理和路由等功能。
  • Web Console:OpenShift提供了Web UI界面,帮助用户完成应用管理和操作,包括创建应用、构建镜像、部署应用、监控应用状态和访问应用服务等。
  • CLI:OpenShift提供了命令行工具oc,方便用户进行集群管理和应用操作,支持与Kubernetes API Server进行交互,提供了丰富的子命令和参数选项。

OpenShift master运行Kubernetes master服务和Etcd守护进程;node运行Kubernetes kubelet和kube-proxy守护进程。虽然在描述中通常没有声明,但实际上master本身也是node。

Kubernetes的调度单元是pod,它是一组共享虚拟网络设备、内部IP地址、TCP/UDP端口和持久存储的容器。pod可以是任何东西,从完整的企业应用程序(包括作为不同容器的每一层)到单个容器中的单个微服务。例如,一个pod:一个容器在Apache下运行PHP,另一个容器运行MySQL。Kubernetes管理replicas来缩放pods。副本是一组共享相同定义的pod。

3. 管理 OpenShift

3.1 OpenShift 项目及应用

除了Kubernetes的资源(如pods和services)之外,OpenShift还管理projects和users。一个projects对Kubernetes资源进行分组,以便用户可以使用访问权限。还可以为projects分配配额,从而限制了已定义的pod、volumes、services和其他资源。

OpenShift中没有application的概念,OpenShift client提供了一个new-app命令。此命令在projects中创建资源,但它们都不是应用程序资源。这个命令是为标准开发人员工作流配置带有公共资源的proiect的快捷方式。

OpenShift使用lables(标签)对集群中的资源进行分类。默认情况下,OpenShift使用app标签将相关资源分组到应用程序中。

3.2 使用Source-to-image构建映像

OpenShift允许开发人员使用标准源代码管理仓库(SCM)和集成开发环境(ide)来发布应用。

OpenShift中的source -to-lmage (S2I)流程从SCM仓库中提取代码,自动判断所需的runtime,基于runtime启动一个pod,在pod中编译应用。

当编译成功时,将在runtime image中添加层并形成新的image,推送进入OpenShift internal registry仓库,接着基于这个image将创建新的pod,运行应用程序。

S2I可被视为已经内置到OpenShift中的完整的CI/CD管道。

CI/CD有不同的形式,根据具体场景表现不同。例如,可以使用外部CI工具(如Jenkins)启动构建并运行测试,然后将新构建的映像标记为成功或失败,将其推送到QA或生产。

3.3 管理OpenShift资源

OpenShift资源定义,如image、container、pod、service、builder、template等,都存储在Etcd中,可以由OpenShift CLI, web控制台或REST API进行管理。

OpenShift的资源可通过JSON或YAML文件查看,并且在类似Git或版本控制的SCM中共享。OpenShift甚至可以直接从外部SCM检索这些资源定义。

大多数OpenShift操作不需要实时响应,OpenShift命令和APIs通常创建或修改存储在Etcd中的资源描述。Etcd然后通知OpenShift控制器,OpenShift控制器会就更改警告这些资源。

这些控制器采取行动,以便使得资源的最终态反应达到更改效果。例如,如果创建了一个新的pod资源,Kubernetes将在node上调度并启动该pod,使用pod资源确定要使用哪个映像、要公开哪个端口,等等。或者一个模板被更改,从而指定应该有更多的pod来处理负载,OpenShift会安排额外的pod(副本)来满足更新后的模板定义。

注意:虽然Docker和Kubernetes是OpenShift的底层,但是必须主要使用OpenShift CLi和OpenShift APls来管理应用程序和基础设施。OpenShift增加了额外的安全和自动化功能,当直接使用Docker或Kubernetes命令和APls时,这些功能必须手动配置,或者根本不可用。因此强烈建议不要使用docker或Kubernetes的命令直接管理应用。

4. OpenShift 网络/持久化/高可用

4.1 OpenShift 网络概述

Docker网络相对简单,Docker创建一个虚拟内核桥接器(docker0网卡),并将每个容器网络接口连接到它。

Docker本身没有提供允许一个主机上的pod连接到另一个主机上的pod的方法。Docker也没有提供向应用程序分配公共固定IP地址的方法,以便外部用户可以访问它。

但Kubernetes提供service和route资源来管理pods之间的网络,以及从外部到pods的路由流量。service在不同pods之间提供负载均衡用于接收网络请求,同时为service的所有客户机(通常是其他pods)提供一个内部IP地址。

container和pods不需要知道其他pods在哪里,它们只连接到service。route为service提供一个固定的惟一DNS名称,使其对OpenShift集群之外的客户端可见。

Kubernetes service和route资源需要外部(功能)插件支持。service需要软件定义的网络(SDN),它将在不同主机上的pod之间提供通信,route需要转发或重定向来自外部客户端的包到服务内部IP。

OpenShift提供了一个基于Open vSwitch的SDN,路由由分布式HAProxy farm提供

4.2 OpenShift持久性存储

pod可以在一个节点上停止,并随时在另一个节点上重新启动。同时pod的默认存储是临时存储,通过对于类似数据库需要永久保存数据的应用不适合。

Kubernetes为管理容器的外部持久存储提供了一个框架。Kubernetes提供了PersistentVolume资源,它可以在本地或网络中定义存储。pod资源可以使用PersistentVolumeClaim资源来访问对应的持久存储卷。

Kubernetes还指定了一个PersistentVolume资源是否可以在pod之间共享,或者每个pod是否需要具有独占访问权的自己PersistentVolume。当pod移动到另一个节点时,它将保持与相同的PersistentVolumeClaim和PersistentVolumne资源的关联。这意味着pod的持久存储数据跟随它,而不管它将在哪个节点上运行。

OpenShift向Kubernetes提供了多种VolumeProvider,如NFS、iSCSI、FC、Gluster或OpenStack Cinder。

OpenShift还通过StorageClass资源为应用程序提供动态存储。使用动态存储,可以选择不同类型的后端存储。后面存储根据应用程序的需要划分为不同的“tiers”。例如,可以定义一个名为“fast”的存储类和另一个名为“slow”的存储类,前者使用更高速的后端存储,后者提供普通的存储。当请求存储时,最终用户可以指定一个Persistentvolumeclaim,并使用一个注释指定他们所需的StorageClass。

4.3 OpenShift 高可用概述

OpenShift平台集群的高可用性(HA)有两个不同的方面:

  • OpenShift基础设施本身的HA(即主机);
  • 在OpenShift集群中运行的应用程序的HA。

默认情况下,OpenShift为master提供了完全支持的本机HA机制。

对于应用程序或“pods”,如果pod因任何原因丢失,Kubernetes将调度另一个副本,将其连接到服务层和持久存储。如果整个节点丢失,Kubernetes会为它所有的pod安排替换节点,最终所有的应用程序都会重新可用。pod中的应用程序负责它们自己的状态,因此它们需要自己维护应用程序状态(如HTTP会话复制或数据库复制)。

4.4 Image Streams

要在OpenShift中创建一个新的应用程序,除了应用程序源代码之外,还需要一个base image(S2I builder image)。如果源代码或image任何一个更新,就会生成一个新的image,并且基于此新image创建新的pod,同时替换旧的pod。

即当应用程序代码发生更改时,容器映像需要更新,但如果构建器映像发生更改,则部署的pod也需要更新。

Image Streams包括由tag标识的大量的image。应用程序是针对Image Streams构建的。Image Streams可用于在创建新image时自动执行操作。构建和部署可以监视Image Streams,以便在添加新image时接收通知,并分别执行构建或部署。

OpenShift默认情况下提供了几个Image Streams,包括许多流行的runtime和frameworks。

Image Streams tag是指向Image Streams中的image的别名。通常缩写为istag。它包含一个image历史记录,表示为tag曾经指向的所有images的堆栈。

每当使用特定的istag标记一个新的或现有的image时,它都会被放在历史堆栈的第一个位置(标记为latest)。之前tag再次指向旧的image。同时允许简单的回滚,使标签再次指向旧的image。

5. OpenShift 和 K8s 的关系

OpenShift 是一个基于 Kubernetes 的容器应用平台,它在 Kubernetes 的基础上添加了一些额外的功能和工具,以帮助用户更轻松地构建、部署和管理容器化应用。

  • 架构层对比
    在这里插入图片描述

  • 从 vendor support 对比
    在这里插入图片描述

  • OpenShift 和 Kubernetes 之间的一些区别

    • Web 控制台:OpenShift 提供了一个基于 Web 的控制台,使得用户可以更轻松地创建、部署和管理应用程序。Kubernetes 也提供了一个 Web 控制台,但它的功能不如 OpenShift 的控制台丰富。
    • 内置 CI/CD:OpenShift 集成了一个内置的 CI/CD 工具,使得用户可以更轻松地实现持续集成和持续部署。而 Kubernetes 则需要用户自己构建和管理 CI/CD 工具链。
    • 容器镜像管理:OpenShift 提供了一个内置的容器镜像管理工具,使得用户可以更轻松地管理容器镜像的构建、存储和分发。Kubernetes 并没有提供类似的功能,用户需要自己管理容器镜像。
    • 安全性:OpenShift 提供了一些额外的安全功能,如基于角色的访问控制(RBAC)、镜像签名验证、安全上下文等,以帮助用户更好地保护容器化应用的安全。Kubernetes 也提供了一些安全功能,但 OpenShift 的安全功能更加完善。

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

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

相关文章

mac有必要用清理软件吗?有哪些免费的清理工具

当我们谈到Mac电脑时,很多人都会觉得它比Windows系统更加稳定和高效,也更不容易积累垃圾文件。但实际上,任何长时间使用的操作系统都会逐渐积累不必要的文件和缓存。那么,对于Mac用户来说,有必要使用专门的清理软件吗&…

Nature Communications | 张阳实验室:端到端深度学习实现高精度RNA结构预测

RNA分子是基因转录的主要执行者,也是细胞运作的隐形功臣。它们在基因表达调控、支架构建以及催化活性等多个生命过程中都扮演着关键角色。虽然RNA如此重要,但由于实验数据的缺乏,准确预测RNA 的三维空间结构仍然是目前计算生物学面临的重大挑…

货物寄到英国选择什么物流比较划算?

随着全球化的发展,越来越多的企业开始将产品销售到海外市场,其中英国作为一个重要的贸易伙伴,吸引了大量的中国企业的关注。然而,如何将货物安全、快速地运送到英国,成为了众多企业面临的一个问题。那么,货…

XML文件反序列化读取

原始XML文件 <?xml version"1.0" encoding"utf-8" ?> <School headmaster"王校长"><Grade grade"12" teacher"张老师"><Student name"小米" age"18"/><Student name&quo…

C++简单实现红黑树

目录 一、概念 二、红黑树的性质 三、红黑树的定义 四、红黑树的插入操作 情况一&#xff08;叔叔节点存在且为红色&#xff09;——变色向上调整&#xff1a; 情况二&#xff08;叔叔节点不存在或为黑色&#xff09;——旋转变色&#xff1a; 2.1叔叔节点不存在 2.2叔叔…

智能网联驾驶测试与评价工业和信息化部重点实验室“车载智能计算基础平台参考架构2.0专家研讨会”圆满结束

近日&#xff0c;智能网联驾驶测试与评价工业和信息化部重点实验室在北京市召开“车载智能计算基础平台参考架构2.0专家研讨会”&#xff0c;本次会议由智能网联驾驶测试与评价工业和信息化部重点实验室、中国软件评测中心&#xff08;工业和信息化部软件与集成电路促进中心&am…

ChatGPT 在机器学习中的应用

办公室里一个机器人坐在人类旁边&#xff0c;Artstation 上的流行趋势&#xff0c;美丽的色彩&#xff0c;4k&#xff0c;充满活力&#xff0c;蓝色和黄色&#xff0c; DreamStudio出品 一、介绍 大家都知道ChatGPT。它在解释机器学习和深度学习概念方面也非常高效&#xff0c;…

SpringCloud Alibaba - Sentinel

接上文SpringCloud Alibaba - Nacos 1.Sentinel 流量防卫兵 1.1 安装与部署 和Nacos一样&#xff0c;它是独立安装和部署的&#xff0c;下载地址https://github.com/alibaba/Sentinel/releases 下载后的jar放到目录 然后配置 启动并访问,用户名密码都是 sentinel 此时就…

祝贺莱佛士学生在ASDA2023设计大赛中获得最高奖项

莱佛士一直主张学生们积极参与各种国际知名的设计大赛&#xff0c;也会竭尽所能为学生们的参赛提供途径与指导&#xff0c;本次的American Standard Design Award&#xff08;ASDA&#xff09;2023设计大赛也不例外。 ASDA2023设计大赛&#xff0c;推广以用户为中心的设计理念…

为什么要选择Spring cloud Sentinel

为什么要选择Spring cloud Sentinel &#x1f34e;对比Hystrix&#x1f342;雪崩问题及解决方案&#x1f342;雪崩问题&#x1f342;.超时处理&#x1f342;仓壁模式&#x1f342;断路器&#x1f342;限流&#x1f342;总结 &#x1f34e;对比Hystrix 在SpringCloud当中支持多…

CSS滚动条详解(::-webkit-scrollbar )

滚动条出现的事件&#xff1a; 当设置定宽或者定高的元素添加overflow:scroll属性&#xff0c;会出现滚动条&#xff0c;但是原生样式的会比较丑影响美观。 <div class"content"><div class"contain"></div> </div>.content {wid…

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 A: 子 2023

[蓝桥杯 2023 国 B] 子 2023 试题 A: 子 2023 【问题描述】 小蓝在黑板上连续写下从 1 1 1 到 2023 2023 2023 之间所有的整数&#xff0c;得到了一个数字序列&#xff1a; S 12345678910111213 ⋯ 20222023 S 12345678910111213\cdots 20222023 S12345678910111213⋯2…

IntelliJ IDEA学习总结(3)—— IntelliJ IDEA 常用快捷键(带动图演示)

一、构建/编译 Ctrl + F9:构建项目 该快捷键,等同于菜单【Build】—>【Build Project】 执行该命令后,IntelliJ IDEA 会编译项目中所有类,并将编译结果输出到out目录中。IntelliJ IDEA 支持增量构建,会在上次构建的基础上,仅编译修改的类。 Ctrl + Shift + F9:重新编…

【论文阅读 09】融合门控自注意力机制的生成对抗网络视频异常检测

2021年 中国图象图形学报 摘 要 背景&#xff1a; 视频异常行为检测是智能监控技术的研究重点&#xff0c;广泛应用于社会安防领域。当前的挑战之一是如何提高异常检测的准确性&#xff0c;这需要有效地建模视频数据的空间维度和时间维度信息。生成对抗网络&#xff08;GANs&…

【2251. 花期内花的数目】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个下标从 0 开始的二维整数数组 flowers &#xff0c;其中 flowers[i] [starti, endi] 表示第 i 朵花的 花期 从 starti 到 endi &#xff08;都 包含&#xff09;。同时给你一个下标从 0 开始…

数据结构和算法(8):搜索树(二叉搜索树和AVL树)

查找 所谓的查找或搜索&#xff0c;指从一组数据对象中找出符合特定条件者&#xff0c;这是构建算法的一种基本而重要的操作。其中的数据对象&#xff0c;统一地表示和实现为 词条&#xff08;entry&#xff09; 的形式&#xff1b;不同词条之间&#xff0c;依照各自的 关键码…

Caddy Web服务器深度解析与对比:Caddy vs. Nginx vs. Apache

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

canvas手写签名组件

效果图&#x1f447; 代码不多直接粘在这里 <template><div class"border"><canvasref"canvas"width"800"height"500"class"border-success"tabindex"0"mousedown"onMouseDown"/>&…

二叉树题目:二叉树剪枝

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树剪枝 出处&#xff1a;814. 二叉树剪枝 难度 4 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root&#xff0c;返回移除了所有…

如何用思维导图做学习计划?

在我们不断追求个人和职业发展的过程中&#xff0c;学习计划起着至关重要的作用。然而&#xff0c;很多人在制定学习计划时常常感到困惑&#xff0c;不知道如何才能制定一份周全且可行的计划。本文将介绍一种结构化思维的方法&#xff0c;以帮助你制定一份高效的学习计划。 首先…