Docker 用例:15 种最常见的 Docker 使用方法
容器化应用程序而不是将它们托管在虚拟机上是过去几年一直流行的概念,使容器管理流行起来。Docker 处于这一转变的核心,帮助组织无缝地采用容器化技术。最近,Docker 用例遍布所有行业,无论规模大小和性质如何。
什么是Docker?
Docker 是一种容器化技术,它使开发人员能够将服务及其依赖项、库和操作系统打包到容器中。通过将应用程序与基础架构分离,Docker 允许您在各种环境中无缝部署和移动应用程序。
Docker 使用以下步骤可以非常简单地创建和管理容器:
- 创建一个 Docker 文件并添加代码
- 基于 Dockerfile 构建 Docker 镜像
- 从 Docker 镜像创建一个正在运行的实例
- 按需扩展容器
什么是微服务?
传统上,软件是使用单体架构开发的,其中整个软件是使用瀑布开发方法作为单个实体开发的。这些单体架构带来了规模、复杂性和可扩展性方面的挑战。微服务或微服务架构允许开发人员将应用程序分解为更小的独立单元,这些单元使用 REST API 相互通信,从而解决了这些挑战。通常,每个功能都可以开发为独立的服务,这意味着每个服务都可以独立运行而不影响任何其他服务。因此,组织可以加快发布周期、按需扩展操作并无缝更改代码,而无需应用程序停机。从单体架构迁移到微服务是一个流行的 Docker 用例。
什么是容器?
容器是微服务架构的一个显着用例。容器是一个标准的软件单元,它通过将应用程序与所有依赖项和所需资源打包在一起,将应用程序与其底层基础设施隔离开来。与虚拟化硬件层的虚拟机不同,容器仅虚拟化操作系统级别之上的软件层。我们将讨论更多关于容器管理的内容。
Docker 的业务优势
Docker 因其可移植性和生态系统而成为容器化的代名词。AWS、GCP 和 Azure 等主要云提供商都将 Docker 纳入系统并提供支持。因此,您可以在任何环境(包括 VirtualBox、Rackspace 和 OpenStack)上无缝运行 Docker 容器。可扩展性是 Docker 的最大优势之一。通过在单个主机上部署多个容器,组织可以显着降低运营成本。此外,Docker 允许您在商品硬件上部署服务,从而消除购买昂贵服务器的成本。
Docker 的基本格言包括更少的资源和更小的工程团队。因此,组织可以使用更少的资源执行操作,从而需要更少的人员来监视和管理此类操作。这意味着成本节约和更高的投资回报率。Docker 允许您轻松地即时创建和管理容器,从而促进更快的部署。使用简单的 YAML 配置文件部署和扩展基础设施的能力使其易于使用,同时提供更快的上市时间。每个隔离容器都优先考虑安全性。
您将在下面找到最常见的 Docker 用例。
Docker 用例 1:从单体架构到微服务架构
仅使用整体方法(瀑布模型)开发软件的日子已经一去不复返了,在这种情况下,整个软件是作为一个实体开发的。尽管整体架构有助于软件的构建、测试、部署和水平扩展,但随着应用程序变得越来越大,管理可能会成为一个挑战。任何功能中的任何错误都会影响整个应用程序。此外,进行简单的更改需要重写、测试和部署整个应用程序。因此,采用新技术并不灵活。
另一方面,微服务将应用程序分解为多个独立的模块化服务,每个服务都拥有自己的数据库模式,并通过 API 相互通信。微服务架构适合支持 DevOps 的基础架构,因为它有助于持续交付。通过利用 Docker,组织可以轻松地将 DevOps 最佳实践整合到基础架构中,从而在竞争中保持领先地位。此外,Docker 允许开发人员轻松地与运营团队共享软件及其依赖项,并确保它在两端以相同的方式运行。例如,管理员可以使用开发人员使用 Dockerfile 创建的 Docker 镜像来暂存和更新生产环境。像这样,降低了构建和配置 CI/CD 管道的复杂性,从而可以更高级别地控制对基础设施所做的所有更改。负载均衡配置也变得更容易。
Docker 用例 2:提高生产力
在传统的开发环境中,复杂性通常在于使用手动工作定义、构建和配置开发环境,而不会延迟发布周期。缺乏可移植性会导致应用程序出现不一致的行为。Docker 允许您使用 Docker 映像构建容器化开发环境,并轻松设置和使用开发环境,同时在其整个生命周期内提供一致的性能。此外,它还为开发环境中使用的所有工具、框架和技术提供无缝支持。
其次,Docker 环境促进了自动化构建、自动化测试和 Webhooks。这意味着您可以轻松地将 Bitbucket 或 GitHub 存储库与开发环境集成,并从源代码创建自动构建并将它们移至 Docker 存储库。开发人员和 CI/CD 工具之间的连接工作流也意味着更快的发布。
Docker 带有一个云管理的容器注册表,无需管理您自己的注册表,当您扩展底层基础设施时,这可能会变得昂贵。此外,配置的复杂性已成为过去。实施基于角色的访问允许不同团队的人员安全地访问 Docker 镜像。此外,Slack 集成允许团队在整个产品生命周期中无缝协作和协调。
毫无疑问,Docker 提供加速开发、自动化工作流程和无缝协作,可以提高生产力。
Docker 用例 3:基础架构即代码
微服务架构使您能够将软件分解为多个服务模块,从而使您能够单独处理每个功能。虽然这带来了可扩展性和自动化,但也有一个问题:它让您有数百个服务需要监控和管理。这就是基础架构即代码(IaC) 为您提供帮助的地方,它使您能够使用代码管理基础架构。基本上,它允许您使用配置文件为基础设施定义资源配置,并将基础设施转换为软件,从而利用 CI/CD 流程、自动化、可重用性和版本控制等软件最佳实践。
Docker 将 IaC 带入 CI/CD 管道的开发阶段,因为开发人员可以使用 Docker-compose 构建使用多个服务的复合应用程序,并确保它在整个管道中一致地工作。IaC 是 Docker 用例的典型示例。
Docker用例4:多环境标准化
Docker 为管道中的所有成员提供了一个生产对等环境。考虑一个软件开发团队正在发展的例子。当一个新成员加入团队时,每个成员都必须安装/更新操作系统、数据库、节点、纱线等。光是准备好机器就需要 1-2 天的时间。此外,确保每个人都获得相同的操作系统、程序版本、数据库版本、节点版本、代码编辑器扩展和配置也是一项挑战。
例如,如果您为两个不同的程序使用两个不同版本的库,则需要安装两个版本。此外,应在执行这些程序之前指定自定义环境变量。现在,如果您在开发阶段对依赖项进行了某些最后一刻的更改而忘记在生产阶段进行这些更改怎么办?
Docker将所有需要的资源打包到一个容器中,并保证依赖之间没有冲突。此外,您可以监控破坏环境的未跟踪元素。Docker 标准化了环境,确保容器在整个 CI/CD 管道中以相似的方式工作。
Docker 用例 5:松耦合架构
传统瀑布软件开发模型的时代已经一去不复返了。如今,在云和微服务架构的支持下,开发人员正在将应用程序分解成更小的单元,并轻松地将它们构建为松散耦合的服务,这些服务通过 REST API 相互通信。Docker 帮助开发人员将每项服务连同所需的资源打包到一个容器中,从而使其易于部署、移动和更新。
电信行业正在利用 5G 技术和 Docker 对软件定义网络技术的支持来构建松耦合架构秒。新的5G技术支持网络功能虚拟化,使电信能够虚拟化网络设备硬件。因此,他们可以将每个网络功能划分并开发为服务,并将其封装到容器中。这些容器可以安装在商用硬件上,使电信公司无需昂贵的硬件基础设施,从而显着降低成本。公有云提供商最近进入电信市场已经缩减了电信运营商和 ISV 的利润。他们现在可以使用 Docker 通过现有基础设施构建具有成本效益的公共云,从而将 Docker 用例转化为新的收入流。
Docker 用例 6:用于多租户
多租户是一种云部署模型,其中单个安装的应用程序为多个客户提供服务,每个客户的数据完全隔离。软件即服务 (SaaS) 应用程序大多使用多租户方法。
多租户模型有 4 种常见方法:
- 共享数据库——独立模式:所有租户的数据都存储在一个数据库中,每个租户都有一个单独的模式。隔离度中等。
- 共享数据库 - 共享模式:所有租户的数据都存储在一个数据库中,其中每个租户的数据都由“外键”标识。隔离级别低。
- 隔离数据库——共享应用服务器:与每个租户相关的数据存储在单独的数据库中。隔离级别高。
- 基于 Docker 的独立租户:一个单独的数据库存储每个租户的数据,每个租户由一组新的容器标识。
虽然租户数据是分开的,但所有这些方法都为所有租户使用相同的应用程序服务器。也就是说,Docker 允许完全隔离,其中每个租户应用程序代码都在每个租户自己的容器内运行。
为此,组织只需将应用程序代码转换为 Docker 镜像即可运行容器,并使用 docker-compose.yaml 定义多容器和多租户应用程序的配置,从而使他们能够为每个租户运行容器。一个单独的 Postgres 数据库和一个单独的应用程序服务器将用于容器内运行的每个租户。每个租户将需要 2 个数据库服务器和 2 个应用程序服务器。您可以通过添加 NGINX 服务器容器将您的请求路由到正确的租户容器。
Docker 用例 7:加速 CI/CD 管道部署
与需要几分钟才能启动的整体应用程序不同,容器在几秒钟内启动,因为它们是轻量级的。因此,您可以使用CI/CD管道中的容器以闪电般的速度快速部署代码或快速更改代码库和库。但是,请务必注意,较长的构建时间会减慢 CI/CD 部署的速度。发生这种情况是因为 CI/CD 管道每次都必须从头开始,这意味着每次都必须拉取依赖项。幸运的是,Docker 带有一个缓存层,可以轻松解决构建问题。也就是说,它仅适用于本地机器,因此不适用于远程运行器机器。
为了解决这个问题,使用“--from-cache”命令指示Docker build从本地机器镜像中获取缓存。如果您没有本地现有的 docker 镜像,您可以简单地创建一个镜像并在执行“Docker build”命令之前拉取它。需要注意的是,此方法仅使用最新的 docker 镜像库。因此,为了获得更早的图像缓存,您应该根据每个阶段推送和拉取每个 docker 图像。
Docker 用例 8:独立的应用基础设施
Docker 的主要优势之一是其独立的应用程序基础架构。每个容器都打包了所有依赖,因此您无需担心依赖冲突。无论应用程序的操作系统、平台和版本如何,您都可以轻松地在一台或多台计算机上轻松部署和运行多个应用程序。考虑一个实例,其中两个服务器使用同一应用程序的不同版本。通过在独立容器中运行这些服务器,您可以消除依赖性问题。
Docker 还提供了一个 SSH 服务器,用于每个独立容器的自动化和调试。由于每个服务/守护进程都是隔离的,因此很容易监视在隔离容器内运行的应用程序和资源并快速识别错误。这使您可以运行不可变的基础架构,从而最大限度地减少因基础架构更改而导致的停机时间。
Docker 用例 9:可移植性——将任何应用程序运送到任何地方
可移植性是前五个 Docker 用例之一。可移植性是软件应用程序在任何环境中运行的能力,无论主机操作系统、插件或平台如何。容器提供了可移植性,因为它们打包了运行应用程序所需的所有资源,例如代码、系统库、运行时、库和配置设置。可移植性还通过应用程序移动到另一个主机环境所需的调整量来衡量。例如,Linux 容器可以在所有 Linux 发行版上运行,但有时无法在 Windows 环境中运行。Docker 提供了完整的可移植性,允许您在各种环境之间移动应用程序,而无需对其配置进行任何重大更改。Docker 为容器化创建了一个标准,因此,它的容器高度便携也就不足为奇了。此外,Docker 容器使用主机操作系统内核,无需添加操作系统。这使它们重量轻且易于在不同环境之间移动。
当开发人员想要在各种操作系统中测试应用程序并分析结果时,上述内容特别有用。代码中的任何差异只会影响单个容器,因此不会导致整个操作系统崩溃。
Docker 用例 10:混合云和多云支持
根据Channel Insider的说法,组织中采用 Docker 的三大驱动因素是混合云、VMware 成本和来自测试团队的压力。尽管混合云非常灵活并且允许您运行定制的解决方案,但在多个环境中分配负载可能是一个挑战。为了促进云之间的无缝移动,云提供商通常需要在成本或功能集上做出妥协。Docker 消除了这些互操作性问题,因为它的容器在内部部署和云部署中以相同的方式运行。您可以在测试和生产环境或使用多个云供应商产品构建的内部云之间无缝移动它们。此外,部署过程的复杂性也降低了。
多亏了 Docker,组织可以构建混合和多云环境,其中包含来自不同供应商的两个或多个公共/私有云。从 AWS 迁移到 Azure 云很容易。此外,您可以选择服务并根据安全协议和服务级别协议将它们分布在不同的云中。
Docker 用例 11:降低 IT/基础设施成本
对于虚拟机,您需要复制整个来宾操作系统。值得庆幸的是,Docker 并非如此。Docker 允许您预置更少的资源,使您能够运行更多的应用程序并促进资源的有效优化。例如,开发团队可以将资源整合到一台服务器上,从而降低存储成本。此外,Docker 具有高可扩展性,允许您在精确的时刻配置所需的资源,并按需自动扩展基础设施。您只需为实际使用的资源付费。此外,在 Docker 中运行的应用程序在整个 CI/CD 管道中提供相同级别的性能,从开发到测试、暂存和生产。因此,错误和错误被最小化。这种环境对等使组织能够以最少的人员和技术资源管理基础架构,从而大大节省维护成本。基本上,Docker 提高了生产力,这意味着您不需要像在传统软件开发环境中那样雇用那么多的开发人员。Docker 还具有最高级别的安全性,最重要的是,它是开源和免费的。
Docker 用例 12:安全实践
Docker 容器默认是安全的。当你使用 Docker 创建容器时,它会自动创建一组命名空间并将容器隔离。因此,容器无法访问或影响在另一个容器内运行的进程。同样,每个容器都有自己的网络堆栈,这意味着除非授予某些权限,否则它无法获得对其他容器的网络端口、套接字和接口的特权访问。除了资源核算和限制之外,控制组还处理内存、计算和磁盘 I/O 资源的配置。因此,由于资源耗尽的容器不会使系统崩溃,因此成功缓解了分布式拒绝服务 (DDoS) 攻击。
当容器启动时,Docker 守护进程会激活一组限制功能,通过细粒度的访问控制来增强二进制根目录。这提供了更高的安全性,因为许多以 root 身份运行的进程不需要真正的 root 权限。因此,他们可以以较小的权限进行操作。另一个重要功能是使用 dockerd 配置文件中定义的 Docker 内容信任签名验证功能运行签名图像。如果你想添加额外的安全层并强化 Docker 容器,SELinux、Apparmor 和 GRSEC 是可以帮助你这样做的著名工具。
Docker 用例 13:灾难恢复
虽然混合云和多云环境为组织带来了惊人的好处,但它们也带来了某些挑战。保持弹性是一个值得注意的问题。为了确保业务连续性,您的应用程序必须能够承受错误和故障而不会丢失数据。当组件出现故障时,您无法承受停机时间,尤其是对于关键应用程序。因此,我们建议您使用冗余组件弹性和访问路径来消除单点故障以实现高可用性。应用程序还应该具有自我修复能力。容器可以在这方面为您提供帮助。然而,对于出现意外故障的情况,您需要一个灾难恢复计划来减少人为或自然故障期间的业务影响。
Docker 容器可以轻松即时地创建或销毁。当一个容器出现故障时,它会自动被另一个容器替换,因为容器是使用 Docker 镜像构建的,并且基于 dockerfile 配置。在将图像移动到另一个环境之前,您可以将数据提交到现有平台。您还可以在发生灾难时恢复数据。
综上所述,重要的是要了解底层主机可能连接到其他组件。因此,您的灾难恢复计划还应该包括启动替换主机。此外,您还应该考虑有状态服务器、网络和 VPN 配置等问题。
Docker 用例 14:简单的基础设施扩展
Docker 增强了微服务架构,其中应用程序被分解为独立的服务并打包到容器中。组织正在利用微服务和云架构并构建分布式应用程序。Docker 使您能够立即为应用程序启动相同的容器并水平扩展基础设施。随着容器数量的增加,您将需要使用容器编排工具例如 Kubernetes 或 Docker Swarm。这些工具具有智能扩展能力,允许它们按需自动扩展基础设施。它们还可以帮助您优化成本,因为它们消除了运行不必要容器的需要。为了使编排更容易,细化组件很重要。此外,无状态和一次性组件将使您能够轻松监控和管理容器的生命周期。
Docker 用例 15:依赖管理
依赖隔离是容器最强大的特性。考虑一个实例,您有两个应用程序使用不同的第三方库。如果应用程序依赖于同一库的不同版本,那么在整个产品生命周期中密切关注版本差异可能是一项挑战。您可能需要允许容器相互通信。例如,一个应用程序需要与另一个应用程序关联的数据库对话。当您将应用程序移动到新机器时,您必须记住所有依赖项。此外,版本和包冲突可能会很痛苦。
尝试重现环境时,应注意操作系统、语言和包依赖性。如果您使用 Python 语言,则需要依赖项管理工具,例如 virtualenv、venv 和 pyenv。如果新环境没有像 git 这样的工具,你需要创建一个脚本来安装 git CLI。该脚本会针对不同的操作系统和操作系统版本不断变化,因此每个团队成员都应该了解这些工具,这并不总是那么容易。
无论是操作系统、语言还是 CLI 工具依赖,Docker 都是依赖管理的最佳工具。通过简单地在 dockerfile 中定义配置及其依赖项,您可以将应用程序无缝地移动到另一台机器或环境,而无需记住依赖项、担心包冲突或跟踪用户首选项和本地机器配置。
由 Docker 提供支持的公司
Docker 用例不受地区或行业限制。
PayPal是一家领先的美国金融科技公司,在全球范围内提供在线支付服务。该公司在三个不同的系统中每秒处理大约 200 笔付款;贝宝、Venmo 和布伦特里。因此,在不同的云和架构之间移动服务常常会延迟部署和维护任务。因此,PayPal 实施了 Docker 并在整个基础设施中标准化了其应用程序和操作。时至今日,该公司已将 700 个应用程序迁移到 Docker,并与 4000 名软件员工合作,每年管理 200,000 个容器和 8+0 亿次交易,同时实现生产力提高 50%。
Adobe还使用 Docker 进行容器化任务。例如,ColdFusion 是一种 Adobe 网络编程语言和应用程序服务器,可促进网络应用程序与后端系统之间的通信。Adobe 使用 Docker 来容器化和部署 ColdFusion 服务。它使用 Docker Hub 和 Amazon Elastic Container Registry 来托管 Docker 镜像。因此,用户可以将这些图像拉到本地机器并运行 Docker 命令。
GE是为数不多的几家在技术萌芽阶段就大胆采用该技术的公司之一,多年来已成为领导者。因此,该公司运行多个遗留应用程序,从而延迟了部署周期。GE 转而使用 Docker,并成功地大大减少了开发到部署的时间。此外,它现在能够实现比 VM 更高的应用程序密度,从而降低运营成本。
Docker 之后的下一步是什么?
一旦您了解了 Docker 如何影响不同的业务方面,接下来您要掌握的是如何充分利用 Docker 技术。随着组织运营的发展,对数以千计的容器的需求出现了。值得庆幸的是,Docker 具有高度可扩展性,您可以轻松地向上和向下扩展服务,同时定义使用规模所需的副本数量。
- $ docker 服务规模前端=50
您还可以使用 docker service scale 命令一次扩展多个服务。
集装箱管理系统
随着业务的发展,组织需要按需扩展运营。此外,随着容器集群的增加,编排它们变得具有挑战性。容器管理系统可帮助您管理容器任务,从创建和部署一直到扩展和销毁,让您可以在适用的地方使用自动化。基本上,它们简化了容器管理。除了创建和删除容器之外,这些系统还管理其他与容器相关的任务,例如编排、安全、调度、监控、存储、日志管理、负载平衡和网络管理。根据Datadog的说法,使用容器管理系统的组织平均每台主机托管 11.5 个容器,而在非编排环境管理时每台主机托管 6.5 个容器。
流行的容器管理工具
以下是您的企业中一些最受欢迎的容器管理器。
- Kubernetes: Kubernetes 是谷歌开发的最受欢迎的容器编排工具。不久之后,Kubernetes 就成为了容器管理和编排的事实标准。谷歌将该工具移交给了云原生计算基金会(CNCF),这意味着该工具现在得到了 IBM、微软、谷歌和 RedHat 等行业巨头的支持。它使您能够轻松地快速打包、测试、部署和管理大型容器集群。它还是开源的、具有成本效益的并且与云无关。
- Amazon EKS: 随着 Kubernetes 成为容器管理的标准,云提供商开始将其整合到他们的平台产品中。Amazon Elastic Kubernetes Service (EKS) 是一种托管 Kubernetes 服务,用于在 AWS 上管理 Kubernetes。使用 EKS,组织不需要安装和配置 Kubernetes 工作节点或平面,因为它会为您处理这些事情。简而言之,EKS 充当容器服务并为您管理容器编排。但是,EKS 仅适用于 AWS 云。
- Amazon ECS: Amazon Elastic Container Service (ECS) 是一种适用于 AWS 环境的完全托管的容器编排工具,可帮助组织轻松管理微服务和批处理作业。ECS 看起来与 EKS 相似,但在管理容器集群方面有所不同,与仅执行 Kubernetes 任务的 EKS 不同。ECS 是免费的,而 EKS 每小时收费 0.1 美元。也就是说,由于它是开源的,EKS 为您提供了来自社区的更多支持。另一方面,ECS 更像是一种专有工具。ECS 最适合那些没有广泛的 DevOps 资源或发现 Kubernetes 很复杂的人。
- Amazon Fargate: Amazon Fargate 是另一种容器管理,作为一种无服务器容器服务,使组织能够运行虚拟机而无需管理服务器或容器集群。它实际上是 ECS 的一部分,但它也适用于 EKS。虽然 ECS 可以更好地控制基础架构,但它具有一些管理复杂性。如果您想运行特定任务而不用担心基础设施管理,我们推荐 Fargate。
- Azure Kubernetes 服务: Azure Kubernetes 服务 (AKS) 是一种容器管理工具,是 Microsoft 为 Azure 环境提供的完全托管的 Kubernetes 服务。它是开源的,而且大部分是免费的,因为您只需为相关资源付费。AKS 与 Azure Active Directory (AD) 集成,并通过基于角色的访问控制提供更高的安全级别。它与 Microsoft 解决方案无缝集成,并且易于使用 Azure CLI 或 Azure 门户进行管理。
- Google Kubernetes Service: Google Kubernetes Engine (GKE) 是 Google 于 2015 年开发的 Kubernetes 托管服务,用于管理运行 Kubernetes 的 Google 计算引擎实例。GKE 是有史以来第一个 Kubernetes 托管的服务,其次是 AKS 和 EKS。GKE 提供比其竞争对手更多的功能和自动化。Google 对每个集群每小时收费 0.15 美元。
结论
在当今复杂的软件开发环境中,包括多种操作系统、编程语言、插件、框架、容器管理和架构,Docker 为每个成员在整个产品生命周期中创建了一个标准化的工作流环境。更重要的是,Docker 是开源的,并得到强大而充满活力的社区的支持,可以帮助您解决任何问题。未能成功利用 Docker 用例肯定会使您落后于竞争对手。
相关文章:
Docker 用例:15 种最常见的 Docker 使用方法
容器化应用程序而不是将它们托管在虚拟机上是过去几年一直流行的概念,使容器管理流行起来。Docker 处于这一转变的核心,帮助组织无缝地采用容器化技术。最近,Docker 用例遍布所有行业,无论规模大小和性质如何。 什么是Docker&…...
若依 RuoYi4.6.0 代码审计
环境布置: 到官网下载源码:https://github.com/yangzongzhuan/RuoYi 采用phpstudy集成数据库,5.7版本。JDK1.8。 IDEA打开项目,等待自动加载,修改application-druid.yml配置文件:数据库名,账…...
C语言入门-选择结构
在编程中,我们经常需要根据不同的条件执行不同的操作。C语言为此提供了几种非常实用的选择结构:条件运算符、逻辑运算、if语句和switch语句。接下来,让我们深入探讨这些重要的知识点,帮助你更好地理解和掌握C语言的选择结构。 1.…...
Legion拯救者 刃7000K-26IAB联想台式机T5 26IAB7(90SU,90SV,90SW,90SX)原厂Windows11系统镜像下载
适用机型:【90SW、90SX、90SU、90SV】 链接:https://pan.baidu.com/s/1gJ4ZwWW2orlGYoPk37M-cg?pwd4mvv 提取码:4mvv lenovo联想原装WIN系统自带所有驱动、出厂主题专用壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软…...
代码随想录算法训练营第二十四天|Day24 回溯算法
93.复原IP地址 题目链接/文章讲解:https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解:https://www.bilibili.com/video/BV1XP4y1U73i/ 思路 char** result; int resultTop; int segments[3]; int isValid(char* s…...
vue elementui table编辑表单时,弹框增加编辑明细数据
需求: 前端进行新增表单时,同时增加表单的明细数据。明细数据部分,通过弹框方式增加或者编辑。 效果图: 代码: <!-- 新增主表弹窗 Begin --><el-dialog:title"titleInfo"top"5vh"centerwidth"…...
springboot集成Redisson做分布式消息队列
这里演示Redisson做分布式消息队列。首先引入 Redisson依赖,官方github <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.17.6</version> </dependen…...
如何通过Lua语言请求接口拿到数据
文章目录 概要http客户端通过请求下载数据 概要 当某个需求是需要在模块内请求接口拿到数据,需要使用http客户端调用接口 http客户端 LuaSOC请求接口官方文档 调用:http.request(method,url,headers,body,opts,ca_file,client_ca, client_key, clien…...
Android 13 SystemUI 隐藏下拉快捷面板部分模块(wifi,bt,nfc等)入口
frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java createTileInternal(tileSpec)方法注释想隐藏的模块即可。...
自由学习记录(14)
unity操作问题 位置:子物体的位置是相对于父物体的。如果你移动父物体,子物体会保持相对于父物体的相对位置,跟着一起移动。 旋转:子物体的旋转也是相对于父物体的。旋转父物体会导致子物体围绕父物体的原点旋转。 缩放…...
疯狂Spring Boot讲义[推荐1]
《疯狂Spring Boot讲义》是2021年电子工业出版社出版的图书,作者是李刚 《疯狂Spring Boot终极讲义》不是一本介绍类似于PathVariable、MatrixVariable、RequestBody、ResponseBody这些基础注解的图书,它是真正讲解Spring Boot的图书。Spring Boot的核心…...
vue中$nextTick的作用是什么,什么时候使用
$nextTick 是 Vue 提供的一个方法,用于在下一次 DOM 更新周期之后执行回调函数。它通常用于在 Vue 完成数据更新后,需要访问更新后的 DOM 状态时,保证操作的是更新后的 DOM。 工作原理: Vue 是异步更新 DOM 的,当数据…...
Redis实现全局ID生成器
全局ID生成器 为什么要用全局ID生成器 1.当我们使用数据库自增来实现id的生成时,规律过于明显,会给用户暴露很多信息 2.当我们订单量过大时无法用数据库的一张表来存放订单,如果两张表的id都是自增的话,id就会出现重复 什么是全局ID生成器 全局ID生成器,是一种在分布式系统…...
Xshell远程连接工具详解
Xshell是一款在Windows平台上运行的远程连接工具,它支持SSH1、SSH2以及Microsoft Windows平台的TELNET协议。Xshell通过互联网实现对远程主机的安全连接,帮助用户在复杂的网络环境中享受他们的工作。本文将详细介绍Xshell的溯源、最新版本以及它的优势。…...
如何在verilog设计的磁盘阵列控制器中实现不同RAID级别(如RAID 0、RAID 1等)的切换?
以下是一种在Verilog设计的磁盘阵列控制器中实现不同RAID级别(以RAID 0和RAID 1为例)切换的方法: 添加控制信号 在磁盘阵列控制器模块中添加一个输入信号,例如raid_mode,用于选择RAID模式。假设raid_mode = 0表示RAID 0模式,raid_mode = 1表示RAID 1模式。module raid_co…...
基于元神操作系统实现NTFS文件操作(十)
1. 背景 本文补充介绍文件遍历操作的部分附加内容,譬如,过滤掉系统元文件、过滤掉重复的文件项、过滤掉隐藏文件等,并提供了基于元神操作系统的部分实现代码。 2. 方法 (1)过滤掉系统元文件 NTFS文件系统的前16个元…...
Qt的几个函数方法
void receiveInfo1() {// 假设这是从串口接收到的字符串QString receivedString "23.5C,45%,1012hPa";// 使用逗号分隔符分割字符串QStringList parts receivedString.split(,);// 检查分割后的列表是否有足够的部分if (parts.size() > 3) {QString part1 part…...
openpnp - bug - 散料飞达至少定义2个物料
文章目录 openpnp - bug - 散料飞达至少定义2个物料笔记END openpnp - bug - 散料飞达至少定义2个物料 笔记 散料飞达上定义的物料个数用完了,现在只需要一个料就可以。 用顶部相机去找编带上是否还有一个单独的料,找到了。 定义散料飞达的料为1个&…...
HDFS异常org.apache.hadoop.hdfs.protocol.NSQuotaExceededException
HDFS异常org.apache.hadoop.hdfs.protocol.NSQuotaExceededException 异常信息: Hive:org.apache.hadoop.hdfs.protocol.NSQuotaExceededException: The NameSpace quota (directories and files) of directory /xxxdir is exceeded: quota10000 file count15001N…...
数据库的构成与手写简单数据库的探索
一、引言 在当今数字化的时代,数据库扮演着至关重要的角色。无论是企业管理系统、电子商务平台还是各种移动应用,都离不开数据库的支持。数据库是存储和管理数据的核心工具,它的高效性、可靠性和安全性对于数据的处理和应用至关重要。本文将…...
基于STM32的智能晾衣架设计
引言 随着智能家居的普及,智能晾衣架成为了提升生活便利性的重要设备。智能晾衣架通过集成多个传感器,能够自动感知天气变化、湿度、光照等环境因素,实现自动升降、风干和报警功能,帮助用户更加高效地晾晒衣物。本项目基于STM32设…...
【MAUI】模糊控件(毛玻璃高斯模糊亚克力模糊)
文章目录 XAML.CSToBytes方法使用效果 常试过AcrylicView.MAUI和Sharpnado.MaterialFrame,对于二者教程很少,使用直接写控件然后调属性,没有报错但也并没有效果所幸就自己写一个 XAML <?xml version"1.0" encoding"utf-…...
深度学习:pandas篇
1. Pandas 基础 Pandas 是一个帮助你处理和分析数据的工具 安装 Pandas pip install pandas 导入 Pandas,我们用 pd 来代替 Pandas 的全称,这样以后写代码的时候更简洁 import pandas as pd 建 Series 和 DataFrame Pandas 最基本的两个数据结构是…...
Redis学习文档(Redis基本数据类型【Hash、Set】)
Hash(哈希) 介绍 Redis 中的 Hash 是一个 String 类型的 field-value(键值对) 的映射表,特别适合用于存储对象,后续操作的时候,你可以直接修改这个对象中的某些字段的值。 Hash 类似于 JDK1.…...
15分钟学Go 第9天:函数的定义与调用
第9天:函数的定义与调用 欢迎来到第9天的Go语言学习模块!今天我们将深入探讨函数的定义与调用,帮助你掌握如何编写和使用函数。学习函数不仅是Go语言的基础,也是程序设计的核心概念之一。这一节将详细介绍函数的结构、参数传递、…...
Java虚拟机:JVM介绍
1024 程序员节日快乐!愿您我的代码永远没有 bug ,人生永远没有 bug ! JVM 概述JVM 架构 概述 JVM( Java Virtual Machine ,Java 虚拟机),是 Java 语言的运行环境,是运行所有 Java 程…...
R数据科学 16.5.3练习题
(1) 编写代码以使用一种映射函数完成以下任务。 a. 计算 mtcars 数据集中每列的均值。 b. 确定 nycflights13::flights 数据集中每列的类型。 c. 计算 iris 数据集中每列唯一值的数量。 d. 分别使用 μ -10、0、10 和 100 的正态分布生成 10 个随机数。 library(purrr) # 计算…...
通过conda install -c nvidia cuda=“11.3.0“ 安装低版本的cuda,但是却安装了高版本的12.4.0
问题 直接通过 conda install -c nvidia cuda"11.3.0"安装得到的却是高版本的 不清楚原理 解决方法 不过我们可以分个安装 runtime toolkit 和 nvcc 安装指定版本的 cudatoolkit 和 nvcc conda install -c nvidia cuda-cudart"11.3.58" conda instal…...
简易CPU设计入门:验证取指令模块
项目代码下载 还是请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 下载本项目代码 准备好了项目源代码以后ÿ…...
【MySQL数据库】MySQL主从复制
文章目录 MySQL主从复制MySQL主从复制的分类MySQL主从复制原理MySQL主从复制的配置步骤MySQL主从复制的同步模式 MySQL主从复制实验环境准备关闭防火墙和 SELinux时间同步主服务器设置从服务器设置 MySQL 主从复制配置主服务器配置从服务器配置(以 Slave1 为例&…...
wordpress 文字省略/百家号关键词排名
1,php截取富文本的内容只显示一部分,去除其他所有的标签 $content_01 $data["content"];//从数据库获取富文本content $content_02 htmlspecialchars_decode($content_01)//把一些预定义的 HTML 实体转换为字符 $content_03 str_replace(&q…...
网站模板/广州百度seo 网站推广
一、方案背景: 最近由于国内煤炭价格上涨,同时叠加国家碳中和的相关政策影响全国,很多地区出现了有序限电,甚至拉闸限电等多种情况,导致加油站无法正常的运作。为此,加油站都会配备UPS电源为加油站主机及油…...
wordpress个人博客动漫主题/互联网广告行业
第一种:解决HTML中中文乱码问题方法如果你的HTML文件文件出现了乱码问题,那么你可以在head标签里面加入UTF8编码(国际化编码):UTF-8是没有国家的编码,也就是独立于任何一种语言,任何语言都可以使用的。第二种ÿ…...
公众号和网站先做哪个/适合小学生的新闻事件
创建 Student class 就只有几个简单的属性(执行下面的属性可以快速生成)ng generate class entity/student export class Student {id: number;name: string;age: number; } 创建child component ts import { Component, OnInit, Input, Output, EventEm…...
个人注册公司需要哪些资料/厦门seo排名扣费
题目 题目链接 题解 数学 高精度。 如果直接按照计算多个数连续计算最小公倍数,那么显然要经过高精度乘法、高精度除法,两个高精度过于麻烦了。 换个思路,我们将每个数都分解质因数,全部数的最小公倍数必然由分解得到的质因数…...
没有网站可以做seo吗/外国网站的浏览器
题目 很简单,给一堆6元组,可以从任意位置开始往任意方向读,问有没有两个相同的6元组 题解 hash表入门题 先把一个六元组的积 和取模作为hash值,然后查表即可 期望\(O(n)\) #include<iostream> #include<cstdio> #inc…...