《Docker极简教程》--Docker的高级特性--Docker Compose的使用

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它允许开发人员通过简单的YAML文件来定义应用程序的服务、网络和卷等资源,并使用单个命令来启动、停止和管理整个应用程序的容器。以下是关于Docker Compose的一些关键信息和优势:

  1. 定义多容器应用程序:Docker Compose允许你通过一个单独的文件来定义整个应用程序的服务组件,包括Web服务器、数据库、消息队列等。这些服务可以相互通信,共同组成一个完整的应用程序。
  2. 简化开发环境配置:开发人员可以使用Docker Compose在本地创建与生产环境相似的开发环境。通过在Compose文件中定义应用程序的组件和配置,开发人员可以轻松地在不同的环境之间进行切换,从而加快开发和测试周期。
  3. 一键启动和停止:通过简单的命令,如docker-compose updocker-compose down,你可以轻松地启动和停止整个应用程序。这使得在开发、测试和部署过程中快速迭代成为可能。
  4. 依赖管理:Docker Compose允许你定义服务之间的依赖关系,以确保它们在启动时以正确的顺序启动。这可以确保在启动应用程序时,所有的依赖服务都已经准备就绪,从而避免了启动顺序引发的问题。
  5. 跨平台兼容性:Docker Compose可以在不同的操作系统上运行,包括Linux、Windows和macOS。这使得团队成员可以在不同的开发环境中协同工作,而无需担心环境差异性。
  6. 可扩展性和灵活性:Docker Compose提供了许多灵活的选项和配置,使得你可以根据应用程序的需求进行定制。你可以定义网络配置、卷挂载、环境变量等,以满足不同场景下的需求。

Docker Compose简化了多容器应用程序的开发、测试和部署过程,提高了开发团队的生产力,同时降低了应用程序的部署复杂度和管理成本。

一、安装和配置

1.1 安装Docker Compose

要安装Docker Compose,你可以按照以下步骤进行:

  1. 检查系统要求
    • 确保你的系统符合Docker Compose的最低要求。Docker Compose通常支持主流的操作系统,包括Linux、macOS和Windows。确保你的系统满足相关的要求。
  2. 下载Docker Compose
    • 你可以从Docker官方网站下载最新版本的Docker Compose。访问 https://docs.docker.com/compose/install/,选择适合你系统的安装方式,如Linux、macOS或Windows。
  3. 安装Docker Compose
    • 根据你的操作系统选择合适的安装方法。通常情况下,Linux用户可以将Docker Compose可执行文件复制到PATH目录中,macOS用户可以使用Homebrew来安装,Windows用户可以下载并运行安装程序。
  4. 验证安装
    • 安装完成后,打开终端或命令提示符,运行以下命令来验证Docker Compose是否成功安装:
      docker-compose --version
      
      如果安装成功,将显示安装的Docker Compose版本信息。
  5. 配置完成
    • 安装完成后,你可以根据需要对Docker Compose进行进一步的配置。你可以设置环境变量、配置默认文件路径等。

通过以上步骤,你应该能够成功安装并配置Docker Compose,从而开始使用它来管理和部署多容器的Docker应用程序。

1.2 配置Docker Compose环境

配置Docker Compose环境通常包括以下几个步骤:

  1. 安装Docker Engine
    • Docker Compose依赖于Docker Engine,因此首先需要确保你已经安装了Docker Engine。你可以从Docker官方网站下载适合你操作系统的Docker Engine安装程序,并按照指南进行安装。
  2. 安装Docker Compose
    • 按照前面提到的步骤,下载并安装Docker Compose。确保你安装了最新版本的Docker Compose,并将其添加到系统的PATH中,以便能够在命令行中直接运行。
  3. 创建Docker Compose文件
    • 在你的项目目录中创建一个名为docker-compose.yml的文件。这个YAML文件将用于定义你的多容器应用程序的服务、网络和卷等配置。你可以在这个文件中定义你应用程序的各个组件以及它们之间的关系。
  4. 编写Docker Compose文件
    • 使用你喜欢的文本编辑器打开docker-compose.yml文件,并按照Docker Compose的语法规则编写服务定义。你可以定义每个服务的镜像、端口映射、依赖关系等。确保你的文件格式正确,遵循正确的缩进和语法。
  5. 定义环境变量(可选)
    • 如果你的应用程序需要使用环境变量来配置,你可以在Docker Compose文件中定义这些变量。这可以通过environment关键字来实现,并在文件中为每个服务定义所需的环境变量。
  6. 启动应用程序
    • 在项目目录中,通过命令行进入到包含docker-compose.yml文件的目录,然后运行以下命令来启动你的应用程序:
      docker-compose up
      
      这将根据docker-compose.yml文件中的配置启动所有定义的服务。
  7. 验证应用程序
    • 启动完成后,你可以通过访问相应的端口来验证你的应用程序是否正常工作。如果一切正常,你应该能够在浏览器中看到你的应用程序。

通过以上步骤,你应该能够成功配置Docker Compose环境,并使用它来管理和部署你的多容器应用程序。

二、Docker Compose基础概念

2.1 服务(Services)

在Docker Compose中,"服务"是指一个定义了容器运行方式的配置。一个服务可以包括一个或多个容器,通常用于运行一个特定的应用程序或服务组件。

2.2 容器(Containers)

在Docker Compose中,"容器"是指通过Docker镜像启动的运行实例。每个容器都是一个独立的、轻量级的虚拟环境,其中包含了一个完整的应用程序以及其运行所需的所有依赖项。

2.3 网络(Networks)

在Docker Compose中,“网络”(Networks)是指用于连接多个容器的虚拟网络。通过网络,容器可以相互通信,实现数据交换和服务之间的连接。

2.4 卷(Volumes)

在Docker Compose中,“卷”(Volumes)是一种用于持久化存储数据的机制,它允许容器之间或容器与主机之间共享数据,并且数据会在容器被删除时保持不变。

三、编写Docker Compose文件

3.1 YAML语法简介

YAML(YAML Ain’t Markup Language)是一种人类友好的数据序列化格式,常用于配置文件和数据交换。在Docker Compose中,使用YAML语法来编写Compose文件来定义多容器应用程序的服务、网络、卷等配置。以下是关于YAML语法的简介:

  1. 缩进
    • YAML使用缩进来表示数据结构的层次关系,而不是使用花括号或其他符号。缩进一般是两个空格或一个制表符。子项的缩进必须严格地相对于其父项。
  2. 键值对
    • YAML使用键值对的形式来表示数据,格式为key: value。键和值之间用冒号分隔,且冒号后面必须有一个空格。
  3. 列表
    • YAML允许在方括号[]内列出一组项目,每个项目用逗号分隔。列表中的每个项可以是简单值、键值对、嵌套列表等。
  4. 注释
    • YAML支持单行注释,以#符号开头。注释可以出现在行的任何位置,但必须独立成行。
  5. 字符串
    • 字符串可以使用单引号' '或双引号" "括起来。如果字符串中包含特殊字符,建议使用双引号括起来。
  6. 多行字符串
    • 如果字符串跨越多行,可以使用管道符|来表示保留换行符,或使用折叠符>来表示折叠换行符。这使得可以在多行字符串中保留原始的换行符和缩进。
  7. 文件引用
    • 在Compose文件中,可以使用<<符号来引用其他文件中的内容,这可以使得Compose文件更加模块化和易于管理。
      下面是一个简单的YAML示例:
# This is a YAML file
services:web:image: nginx:latestports:- "8080:80"db:image: mysql:latestenvironment:MYSQL_ROOT_PASSWORD: password

在这个示例中,services是一个键,它的值是一个字典,包含了两个服务webdb。每个服务都是一个键值对,其中包含了服务的配置信息,如镜像、端口映射、环境变量等。

以上是关于YAML语法的简介,你可以使用这些语法规则来编写Docker Compose文件,定义你的多容器应用程序的配置。

3.2 编写基本的Docker Compose文件

下面是一个简单的示例Docker Compose文件,用于定义一个包含Web服务和数据库服务的多容器应用程序:

version: '3.8'services:web:image: nginx:latestports:- "8080:80"db:image: mysql:latestenvironment:MYSQL_ROOT_PASSWORD: password

在这个Compose文件中:

  • version: '3.8' 指定了Compose文件的版本。
  • services 是一个包含了两个服务的字典。
  • web 是一个服务定义,它使用nginx:latest镜像,并将容器内部的80端口映射到主机的8080端口。
  • db 是另一个服务定义,它使用mysql:latest镜像,并通过环境变量设置了MySQL的root密码为password

你可以将这个Compose文件保存为docker-compose.yml,然后在包含该文件的目录中使用docker-compose up命令启动这个多容器应用程序。这将会启动nginx服务和MySQL服务,并将它们连接到默认的网络中,使得它们可以相互通信。

3.3 多容器应用的配置

下面是一个示例的Docker Compose文件,用于配置一个包含多个容器的应用程序,其中包括Web服务、数据库服务和消息队列服务:

version: '3.8'services:web:image: nginx:latestports:- "8080:80"depends_on:- dbdb:image: mysql:latestenvironment:MYSQL_ROOT_PASSWORD: passwordvolumes:- db_data:/var/lib/mysqlredis:image: redis:latestvolumes:db_data:

在这个Compose文件中:

  • version: '3.8' 指定了Compose文件的版本。
  • services 是一个包含了三个服务的字典,分别是webdbredis
  • web 是一个服务定义,它使用nginx:latest镜像,并将容器内部的80端口映射到主机的8080端口。它还通过depends_on字段指定了依赖于db服务,表示web服务依赖于db服务的启动。
  • db 是一个服务定义,它使用mysql:latest镜像,并通过环境变量设置了MySQL的root密码为password。此外,通过volumes字段将数据库的数据持久化到名为db_data的卷中。
  • redis 是另一个服务定义,它使用redis:latest镜像。

除了服务定义之外,还定义了一个名为db_data的卷,用于持久化存储MySQL数据库的数据。

你可以将这个Compose文件保存为docker-compose.yml,然后在包含该文件的目录中使用docker-compose up命令启动整个应用程序。这将会启动nginx、MySQL和Redis服务,并将它们连接到默认的网络中,从而使得它们可以相互通信。

四、Docker Compose的常用命令

4.1 docker-compose up

docker-compose up 是 Docker Compose 中最常用的命令之一,用于启动整个应用程序。它会根据 docker-compose.yml 文件中定义的服务来创建和启动容器,并将它们连接到默认的网络中。以下是关于 docker-compose up 命令的一些常见用法和选项:

  1. 基本用法
    docker-compose up
    
    这会在当前目录下寻找 docker-compose.yml 文件,并根据其中定义的服务启动应用程序。
  2. 后台启动
    docker-compose up -d
    
    使用 -d--detach 选项可以在后台(detached mode)启动应用程序,使得应用程序在后台运行,不会阻塞命令行。
  3. 重新创建容器
    docker-compose up --force-recreate
    
    使用 --force-recreate 选项可以强制重新创建所有容器,即使它们已经存在。
  4. 重新构建镜像
    docker-compose up --build
    
    使用 --build 选项可以在启动容器之前重新构建服务的镜像。
  5. 指定服务
    docker-compose up service_name
    
    指定要启动的服务名称,而不是启动所有服务。可以同时指定多个服务,用空格分隔。
  6. 强制重新创建容器并构建镜像
    docker-compose up --force-recreate --build
    
    结合使用 --force-recreate--build 选项可以在启动之前强制重新创建所有容器,并重新构建服务的镜像。
  7. 使用其他 Compose 文件
    docker-compose -f docker-compose.prod.yml up
    
    使用 -f 选项可以指定要使用的 Compose 文件,默认情况下是 docker-compose.yml
4.2 docker-compose down

docker-compose down 是 Docker Compose 中常用的命令之一,用于停止并移除通过 docker-compose up 启动的容器和网络。以下是关于 docker-compose down 命令的一些常见用法和选项:

  1. 基本用法
    docker-compose down
    
    这会停止并移除通过 docker-compose up 启动的所有容器,并移除相关的网络和卷。
  2. 移除容器
    docker-compose down --volumes
    
    使用 --volumes 选项可以同时移除相关的卷。这会删除所有定义在 docker-compose.yml 中的 volumes 字段中的卷。
  3. 停止容器但不移除
    docker-compose down --stop
    
    使用 --stop 选项可以停止容器,但不移除它们。这意味着容器会停止运行,但仍然保留在系统中,可以使用 docker-compose up 再次启动。
  4. 移除指定服务
    docker-compose down service_name
    
    指定要停止和移除的特定服务,而不是停止和移除所有服务。可以同时指定多个服务,用空格分隔。
  5. 移除网络
    docker-compose down --remove-orphans
    
    使用 --remove-orphans 选项可以移除未在 docker-compose.yml 文件中定义的服务的网络。这些服务称为 “孤儿” 服务。
  6. 停止并移除容器、网络和卷
    docker-compose down --volumes --remove-orphans
    
    结合使用 --volumes--remove-orphans 选项可以停止并移除所有容器,相关的网络和卷,以及未定义的孤儿服务的网络。
  7. 使用其他 Compose 文件
    docker-compose -f docker-compose.prod.yml down
    
    使用 -f 选项可以指定要使用的 Compose 文件,默认情况下是 docker-compose.yml
4.3 docker-compose ps

docker-compose ps 是 Docker Compose 中常用的命令之一,用于显示通过 docker-compose up 启动的所有容器的状态信息。以下是关于 docker-compose ps 命令的一些常见用法和选项:

  1. 基本用法
    docker-compose ps
    
    这会显示通过 docker-compose up 启动的所有容器的状态信息,包括容器名称、运行状态、关联端口等。
  2. 只显示服务名称
    docker-compose ps --services
    
    使用 --services 选项可以只显示服务的名称,而不显示完整的容器信息。
  3. 显示详细信息
    docker-compose ps --verbose
    
    使用 --verbose 选项可以显示更详细的容器信息,包括容器ID、端口映射、命令等。
  4. 只显示停止的容器
    docker-compose ps --filter "status=exited"
    
    使用 --filter 选项可以根据容器的状态进行过滤。在这个示例中,status=exited 表示只显示已停止的容器。
  5. 显示指定服务的容器
    docker-compose ps service_name
    
    指定要显示的特定服务的容器,而不是显示所有服务的容器信息。
  6. 使用其他 Compose 文件
    docker-compose -f docker-compose.prod.yml ps
    
    使用 -f 选项可以指定要使用的 Compose 文件,默认情况下是 docker-compose.yml
4.4 其他常用命令

除了 docker-compose updocker-compose downdocker-compose ps 外,还有一些其他常用的 Docker Compose 命令,如下:

  1. 启动服务
    docker-compose start
    
    启动已定义的服务,但不会重新构建容器或镜像。
  2. 停止服务
    docker-compose stop
    
    停止已启动的服务,但容器和网络保留。
  3. 重启服务
    docker-compose restart
    
    重启已启动的服务,会重新构建容器。
  4. 重新构建服务
    docker-compose build
    
    根据 docker-compose.yml 中的配置重新构建服务的容器镜像。
  5. 查看服务日志
    docker-compose logs
    
    查看服务的日志输出,可选参数可指定具体的服务名称。
  6. 进入服务容器
    docker-compose exec service_name command
    
    在特定的服务容器中执行命令,service_name 为服务名称,command 为要执行的命令。
  7. 列出所有定义的服务
    docker-compose config --services
    
    列出所有在 docker-compose.yml 文件中定义的服务名称。
  8. 查看Compose文件配置
    docker-compose config
    
    检查并验证 docker-compose.yml 文件的配置。
  9. 暂停服务
    docker-compose pause
    
    暂停已启动的服务,暂停后容器继续存在,但不再接收流量。
  10. 恢复服务
docker-compose unpause

恢复被暂停的服务,使其重新接收流量。

这些命令可帮你管理和维护 Docker Compose 项目,确保的多容器应用程序在运行时能够稳定地工作。

五、实例演示

5.1 创建一个简单的Web应用

好的,我将指导你创建一个简单的Web应用,并使用Docker Compose 来管理它。
假设你的Web应用是一个简单的静态网站,你可以使用Nginx作为Web服务器。我们将创建一个Docker Compose文件来定义Nginx服务,并将静态文件挂载到容器中。让我们开始:

  1. 创建项目目录
    首先,创建一个新的目录,用于存放你的Web应用文件和Docker Compose文件。
  2. 编写Dockerfile
    在项目目录中创建一个名为 Dockerfile 的文件,并添加以下内容:
    FROM nginx:latest
    COPY ./html /usr/share/nginx/html
    
    这个Dockerfile使用Nginx官方镜像作为基础镜像,并将当前目录下的 html 文件夹中的内容复制到容器中的 /usr/share/nginx/html 目录下。
  3. 创建静态网站文件
    在项目目录中创建一个名为 html 的文件夹,并在其中添加你的静态网站文件,比如 index.html
  4. 编写Docker Compose文件
    在项目目录中创建一个名为 docker-compose.yml 的文件,并添加以下内容:
    version: '3.8'services:web:build: .ports:- "8080:80"
    
    这个Compose文件定义了一个名为 web 的服务,它使用当前目录下的Dockerfile构建Nginx镜像,并将容器内的80端口映射到主机的8080端口。
  5. 构建和启动应用程序
    打开命令行,导航到项目目录,并运行以下命令来构建和启动应用程序:
    docker-compose up -d
    
    这将会构建Nginx镜像并启动容器,你的Web应用程序将在 http://localhost:8080 上可用。
  6. 查看网站
    打开浏览器,并访问 http://localhost:8080,你应该能够看到你的静态网站。

通过这个简单的演示,你学会了如何使用Docker Compose创建一个简单的Web应用,并在本地启动它。你可以进一步扩展这个示例,添加更多的服务和功能,以满足你的实际需求。

5.2 使用Docker Compose进行部署和管理

假设你有一个使用Node.js编写的简单Web应用,需要部署到生产环境中。你可以使用Docker Compose进行部署和管理。下面是一个示例演示:

  1. 创建项目目录
    首先,在你的开发机器上创建一个新的目录,用于存放你的Web应用程序代码和Docker相关文件。
  2. 编写Dockerfile
    在项目目录中创建一个名为 Dockerfile 的文件,并添加以下内容:
    FROM node:14-alpineWORKDIR /appCOPY package.json .
    COPY package-lock.json .RUN npm installCOPY . .EXPOSE 3000CMD ["npm", "start"]
    
    这个Dockerfile使用了 Node.js 官方的 node:14-alpine 镜像作为基础镜像,并在容器中设置了工作目录、安装了依赖项、复制了应用程序代码,并且暴露了3000端口用于访问Web应用。
  3. 编写docker-compose.yml文件
    在项目目录中创建一个名为 docker-compose.yml 的文件,并添加以下内容:
    version: '3.8'services:web:build: .ports:- "80:3000"
    
    这个Compose文件定义了一个名为 web 的服务,使用当前目录下的Dockerfile构建镜像,并将容器内的3000端口映射到主机的80端口。
  4. 编写应用程序代码
    在项目目录中编写你的Node.js应用程序代码,比如一个简单的Express应用。
  5. 构建和启动应用程序
    在命令行中,导航到项目目录,并运行以下命令来构建和启动应用程序:
    docker-compose up -d
    
    这将会构建镜像并启动容器,你的Node.js应用程序将在 http://localhost 上可用。
  6. 管理应用程序
    你可以使用 docker-compose ps 命令查看容器的状态,使用 docker-compose logs 命令查看容器的日志,使用 docker-compose stop 命令停止容器,使用 docker-compose start 命令启动已停止的容器等。

通过这个简单的演示,你学会了如何使用Docker Compose部署和管理一个Node.js Web应用程序。你可以根据需要修改Dockerfile和docker-compose.yml文件来适应你的实际情况。

5.3 扩展示例:添加数据库服务

当你的Web应用需要与数据库进行交互时,你可以通过Docker Compose轻松地将数据库服务集成到你的应用中。以下是一个扩展示例,演示如何使用Docker Compose同时部署Node.js应用程序和MySQL数据库服务。

  1. 更新docker-compose.yml文件
    修改你的 docker-compose.yml 文件,添加一个名为 db 的服务定义:
    version: '3.8'services:web:build: .ports:- "80:3000"depends_on:- dbdb:image: mysql:latestrestart: alwaysenvironment:MYSQL_DATABASE: 'my_database'MYSQL_USER: 'my_user'MYSQL_PASSWORD: 'my_password'MYSQL_ROOT_PASSWORD: 'root_password'ports:- "3306:3306"
    
    这个Compose文件中添加了一个名为 db 的服务,它使用MySQL官方镜像,并设置了一些环境变量用于配置MySQL数据库。此外,还将容器的3306端口映射到主机的3306端口。
  2. 更新应用程序代码
    修改你的Node.js应用程序代码,以便它可以连接到MySQL数据库。你需要确保应用程序代码中的数据库连接字符串正确指向数据库服务的主机和端口。
  3. 构建和启动应用程序
    在命令行中,导航到项目目录,并运行以下命令来构建和启动应用程序及数据库服务:
    docker-compose up -d
    
    这将会构建镜像并启动容器,你的Node.js应用程序将在 http://localhost 上可用,并且可以与MySQL数据库进行交互。
  4. 验证
    打开浏览器,并访问你的应用程序。确保应用程序能够正常工作,并且能够与数据库进行交互。

通过这个扩展示例,你学会了如何使用Docker Compose同时部署Node.js应用程序和MySQL数据库服务,并将它们连接起来,以实现一个完整的应用程序环境。你可以根据需要添加其他服务,如缓存服务、消息队列服务等,以满足你的应用程序需求。

六、总结

本文它首先解释了Docker Compose的概念和优势,然后逐步介绍了安装、配置、基础概念以及常用命令。通过实例演示,展示了如何使用Docker Compose构建和管理简单的Web应用程序,并进一步扩展到与数据库服务集成。总的来说,本文全面而简洁地介绍了Docker Compose的基本概念、操作方法和实际应用,为读者提供了一个快速入门的指南。

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

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

相关文章

B082-SpringCloud-Eureka

目录 微服务架构与springcloud架构演变为什么使用微服务微服务的通讯方式架构的选择springcloud概述场景模拟之基础架构的搭建模拟微服务之间的服务调用目前远程调用的问题 eureka注册中心的作用注册中心的实现服务提供者注册到注册中心 springcloud基于springboot 微服务架构与…

10 计算机结构

冯诺依曼体系结构 冯诺依曼体系结构&#xff0c;也被称为普林斯顿结构&#xff0c;是一种计算机架构&#xff0c;其核心特点包括将程序指令存储和数据存储合并在一起的存储器结构&#xff0c;程序指令和数据的宽度相同&#xff0c;通常都是16位或32位 我们常见的计算机,笔记本…

在Centos7中用Docker部署gitlab-ce

一、介绍 GitLab Community Edition (GitLab CE) 是一个开源的版本控制系统和协作平台&#xff0c;用于管理和追踪软件开发项目。它提供了一套完整的工具和功能&#xff0c;包括代码托管、版本控制、问题跟踪、持续集成、持续交付和协作功能&#xff0c;使团队能够更加高效地进…

动态规划|【路径问题】|931.下降路径最小和

目录 题目 题目解析 思路 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 代码 题目 931. 下降路径最小和 给你一个 n x n 的 方形 整数数组 matrix &#xff0c;请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开…

【Vue3】Props的使用详解

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

概率基础——多元正态分布

概率基础——多元正态分布 介绍 多元正态分布是统计学中一种重要的多维概率分布&#xff0c;描述了多个随机变量的联合分布。在多元正态分布中&#xff0c;每个随机变量都服从正态分布&#xff0c;且不同随机变量之间可能存在相关性。本文将以二元标准正态分布为例&#xff0…

多线程JUC 第2季 中断线程

一 中断线程 1.1 中断概念 1.在java中&#xff0c;没有提供一种立即停止一条线程。但却给了停止线程的协商机制-中断。 中断是一种协商机制。中断的过程完全需要程序员自己实现。也即&#xff0c;如果要中断一个线程&#xff0c;你需要手动调用该线程的interrupt()方法&…

录制用户操作实现自动化任务

先上视频&#xff01;&#xff01; 流程自动化工具-录制操作绘制流程 这个想法之前就有了&#xff0c;趁着周末时间给它撸出来。 实现思路 从之前的文章自动化桌面未来展望中已经验证了录制绘制流程图的可行性。基于DOM录制页面操作轨迹的思路监听页面点击、输入事件即可&…

无人机镜头稳定的原理和相关算法

无人机的镜头稳定主要基于两个关键技术&#xff1a;镜头平衡技术和实时电子稳像。无人机镜头稳定的原理和相关算法主要是通过镜头平衡技术和实时电子稳像技术来保持摄像镜头的稳定性&#xff0c;从而拍摄出清晰、稳定的画面。无人机镜头稳定的原理主要是通过传感器和算法来实现…

Ocr之PaddleOcr模型训练

目录 一、系统环境 1 镜像拉取ppocr 进行部署 2 安装paddlepaddle 二、训练前的准备 1 下载源码 2 预模型下载 3 修改模型训练文件yml 4 编排训练集 5 执行脚本进行训练 6 需要修改文件夹名称 三、开始训练 1 执行训练命令 2 对第一次评估进行解释 3 引言 五、总…

NestJS使用模板引擎ejs

模板引擎​ 模板引擎是一种用于生成动态内容的工具&#xff0c;它通过将预定义的模板与特定数据结合&#xff0c;来生成最终的输出。​ 在NodeJS开发中&#xff0c;我们会使用模板引擎来渲染一些常用的页面&#xff0c;比如渲染代表404的Not Found 页面&#xff0c;502的Bad …

异常值检测-值域法 头歌代码解释

这关做得不是很明白&#xff0c;如果有清楚的同志可以在评论区里面讨论 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.neighbors import LocalOutlierFactor # 导入数据 abc pd.read_csv(deaths.csv) ## 只分析其中的Population和L…

C语言对类型的转换

C语言对类型的转换 文章目录 C语言对类型的转换整形提升和截断整形提升整形提升规则整形提升的意义 截断截断规则 算数转换 我们都知道&#xff0c;C语言中内置了多种整形类型&#xff0c;占用空间从大到小&#xff0c;基本满足各类使用场景&#xff08;比如超长数字的运算就不…

【【C语言简单小题学习-1】】

实现九九乘法表 // 输出乘法口诀表 int main() {int i 0;int j 0;for (i 1; i < 9; i){for (j 1; j < i;j)printf("%d*%d%d ", i , j, i*j);printf("\n"); }return 0; }猜数字的游戏设计 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdi…

源码视角,vue3为什么推荐用ref,而不是reactive

ref 和 reactive 是 Vue3 中实现响应式数据的核心 API。ref 用于包装基本数据类型&#xff0c;而 reactive 用于处理对象和数组。尽管 reactive 似乎更适合处理对象&#xff0c;但 Vue3 官方文档更推荐使用 ref。 我的想法&#xff0c;ref就是比reactive好用&#xff0c;官方也…

Java 中对包含关系的判断

本文将为您详细讲解 Java 中对包含关系的判断&#xff0c;包括数组、字符串等&#xff0c;并提供相应的代码例子。 1. 数组包含关系判断 在 Java 中&#xff0c;数组包含关系判断通常使用循环来实现。以下是几种常见的判断方法&#xff1a; 示例 1&#xff1a;使用 for…

Unity曲柄滑块四杆机构运动计算

一、运动效果 二、机构的介绍 曲柄长度&#xff1a;a&#xff0c;线段AB长度 连杆长度&#xff1a;b&#xff0c;线段BC长度 偏心距离&#xff1a;e&#xff0c;滑块轨迹与曲柄中心点A的垂直距离 三、已知点A点B和e的值&#xff0c;计算C点的位置 1、计算s的值 var h math.…

通过多进程并发方式(fork)实现服务器(注意要回收子进程)

以下内容为视频学习记录。 1、父进程accept后返回的文件描述符为cfd以及用于创建连接的lfd; 调用fork()创建子进程后&#xff0c;子进程继承cfd,lfd&#xff0c;通过该cfd与连接过来的客户端通信,lfd对子进程来说没用&#xff0c;可以直接close(lfd); 对于父进程来说&#x…

双非二本找实习前的准备day4

学习目标&#xff1a; 每天2-3到简单sql&#xff08;刷完即止&#xff09;&#xff0c;每天复习代码随想录上的题目3道算法&#xff08;时间充足可以继续&#xff09;&#xff0c;背诵的八股的问题也在这里记录了 今日碎碎念&#xff1a; 1&#xff09;偶尔还是贪玩游戏&…

Vue中的计算属性和方法有什么区别?

Vue.js是一款流行的JavaScript前端框架&#xff0c;提供了丰富的功能和便捷的开发方式。在Vue中&#xff0c;计算属性和方法是常用的两种方式来处理数据和逻辑。但它们之间存在一些区别&#xff0c;本文将详细介绍Vue中计算属性和方法的区别&#xff0c;并通过示例代码加深理解…