《Docker极简教程》--Docker的高级特性--Docker Compose的使用
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它允许开发人员通过简单的YAML文件来定义应用程序的服务、网络和卷等资源,并使用单个命令来启动、停止和管理整个应用程序的容器。以下是关于Docker Compose的一些关键信息和优势:
- 定义多容器应用程序:Docker Compose允许你通过一个单独的文件来定义整个应用程序的服务组件,包括Web服务器、数据库、消息队列等。这些服务可以相互通信,共同组成一个完整的应用程序。
- 简化开发环境配置:开发人员可以使用Docker Compose在本地创建与生产环境相似的开发环境。通过在Compose文件中定义应用程序的组件和配置,开发人员可以轻松地在不同的环境之间进行切换,从而加快开发和测试周期。
- 一键启动和停止:通过简单的命令,如
docker-compose up
和docker-compose down
,你可以轻松地启动和停止整个应用程序。这使得在开发、测试和部署过程中快速迭代成为可能。 - 依赖管理:Docker Compose允许你定义服务之间的依赖关系,以确保它们在启动时以正确的顺序启动。这可以确保在启动应用程序时,所有的依赖服务都已经准备就绪,从而避免了启动顺序引发的问题。
- 跨平台兼容性:Docker Compose可以在不同的操作系统上运行,包括Linux、Windows和macOS。这使得团队成员可以在不同的开发环境中协同工作,而无需担心环境差异性。
- 可扩展性和灵活性:Docker Compose提供了许多灵活的选项和配置,使得你可以根据应用程序的需求进行定制。你可以定义网络配置、卷挂载、环境变量等,以满足不同场景下的需求。
Docker Compose简化了多容器应用程序的开发、测试和部署过程,提高了开发团队的生产力,同时降低了应用程序的部署复杂度和管理成本。
一、安装和配置
1.1 安装Docker Compose
要安装Docker Compose,你可以按照以下步骤进行:
- 检查系统要求:
- 确保你的系统符合Docker Compose的最低要求。Docker Compose通常支持主流的操作系统,包括Linux、macOS和Windows。确保你的系统满足相关的要求。
- 下载Docker Compose:
- 你可以从Docker官方网站下载最新版本的Docker Compose。访问 https://docs.docker.com/compose/install/,选择适合你系统的安装方式,如Linux、macOS或Windows。
- 安装Docker Compose:
- 根据你的操作系统选择合适的安装方法。通常情况下,Linux用户可以将Docker Compose可执行文件复制到PATH目录中,macOS用户可以使用Homebrew来安装,Windows用户可以下载并运行安装程序。
- 验证安装:
- 安装完成后,打开终端或命令提示符,运行以下命令来验证Docker Compose是否成功安装:
如果安装成功,将显示安装的Docker Compose版本信息。docker-compose --version
- 安装完成后,打开终端或命令提示符,运行以下命令来验证Docker Compose是否成功安装:
- 配置完成:
- 安装完成后,你可以根据需要对Docker Compose进行进一步的配置。你可以设置环境变量、配置默认文件路径等。
通过以上步骤,你应该能够成功安装并配置Docker Compose,从而开始使用它来管理和部署多容器的Docker应用程序。
1.2 配置Docker Compose环境
配置Docker Compose环境通常包括以下几个步骤:
- 安装Docker Engine:
- Docker Compose依赖于Docker Engine,因此首先需要确保你已经安装了Docker Engine。你可以从Docker官方网站下载适合你操作系统的Docker Engine安装程序,并按照指南进行安装。
- 安装Docker Compose:
- 按照前面提到的步骤,下载并安装Docker Compose。确保你安装了最新版本的Docker Compose,并将其添加到系统的PATH中,以便能够在命令行中直接运行。
- 创建Docker Compose文件:
- 在你的项目目录中创建一个名为docker-compose.yml的文件。这个YAML文件将用于定义你的多容器应用程序的服务、网络和卷等配置。你可以在这个文件中定义你应用程序的各个组件以及它们之间的关系。
- 编写Docker Compose文件:
- 使用你喜欢的文本编辑器打开docker-compose.yml文件,并按照Docker Compose的语法规则编写服务定义。你可以定义每个服务的镜像、端口映射、依赖关系等。确保你的文件格式正确,遵循正确的缩进和语法。
- 定义环境变量(可选):
- 如果你的应用程序需要使用环境变量来配置,你可以在Docker Compose文件中定义这些变量。这可以通过
environment
关键字来实现,并在文件中为每个服务定义所需的环境变量。
- 如果你的应用程序需要使用环境变量来配置,你可以在Docker Compose文件中定义这些变量。这可以通过
- 启动应用程序:
- 在项目目录中,通过命令行进入到包含docker-compose.yml文件的目录,然后运行以下命令来启动你的应用程序:
这将根据docker-compose.yml文件中的配置启动所有定义的服务。docker-compose up
- 在项目目录中,通过命令行进入到包含docker-compose.yml文件的目录,然后运行以下命令来启动你的应用程序:
- 验证应用程序:
- 启动完成后,你可以通过访问相应的端口来验证你的应用程序是否正常工作。如果一切正常,你应该能够在浏览器中看到你的应用程序。
通过以上步骤,你应该能够成功配置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语法的简介:
- 缩进:
- YAML使用缩进来表示数据结构的层次关系,而不是使用花括号或其他符号。缩进一般是两个空格或一个制表符。子项的缩进必须严格地相对于其父项。
- 键值对:
- YAML使用键值对的形式来表示数据,格式为
key: value
。键和值之间用冒号分隔,且冒号后面必须有一个空格。
- YAML使用键值对的形式来表示数据,格式为
- 列表:
- YAML允许在方括号
[]
内列出一组项目,每个项目用逗号分隔。列表中的每个项可以是简单值、键值对、嵌套列表等。
- YAML允许在方括号
- 注释:
- YAML支持单行注释,以
#
符号开头。注释可以出现在行的任何位置,但必须独立成行。
- YAML支持单行注释,以
- 字符串:
- 字符串可以使用单引号
' '
或双引号" "
括起来。如果字符串中包含特殊字符,建议使用双引号括起来。
- 字符串可以使用单引号
- 多行字符串:
- 如果字符串跨越多行,可以使用管道符
|
来表示保留换行符,或使用折叠符>
来表示折叠换行符。这使得可以在多行字符串中保留原始的换行符和缩进。
- 如果字符串跨越多行,可以使用管道符
- 文件引用:
- 在Compose文件中,可以使用
<<
符号来引用其他文件中的内容,这可以使得Compose文件更加模块化和易于管理。
下面是一个简单的YAML示例:
- 在Compose文件中,可以使用
# This is a YAML file
services:web:image: nginx:latestports:- "8080:80"db:image: mysql:latestenvironment:MYSQL_ROOT_PASSWORD: password
在这个示例中,services
是一个键,它的值是一个字典,包含了两个服务web
和db
。每个服务都是一个键值对,其中包含了服务的配置信息,如镜像、端口映射、环境变量等。
以上是关于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
是一个包含了三个服务的字典,分别是web
、db
和redis
。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
命令的一些常见用法和选项:
- 基本用法:
这会在当前目录下寻找docker-compose up
docker-compose.yml
文件,并根据其中定义的服务启动应用程序。 - 后台启动:
使用docker-compose up -d
-d
或--detach
选项可以在后台(detached mode)启动应用程序,使得应用程序在后台运行,不会阻塞命令行。 - 重新创建容器:
使用docker-compose up --force-recreate
--force-recreate
选项可以强制重新创建所有容器,即使它们已经存在。 - 重新构建镜像:
使用docker-compose up --build
--build
选项可以在启动容器之前重新构建服务的镜像。 - 指定服务:
指定要启动的服务名称,而不是启动所有服务。可以同时指定多个服务,用空格分隔。docker-compose up service_name
- 强制重新创建容器并构建镜像:
结合使用docker-compose up --force-recreate --build
--force-recreate
和--build
选项可以在启动之前强制重新创建所有容器,并重新构建服务的镜像。 - 使用其他 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
命令的一些常见用法和选项:
- 基本用法:
这会停止并移除通过docker-compose down
docker-compose up
启动的所有容器,并移除相关的网络和卷。 - 移除容器:
使用docker-compose down --volumes
--volumes
选项可以同时移除相关的卷。这会删除所有定义在docker-compose.yml
中的volumes
字段中的卷。 - 停止容器但不移除:
使用docker-compose down --stop
--stop
选项可以停止容器,但不移除它们。这意味着容器会停止运行,但仍然保留在系统中,可以使用docker-compose up
再次启动。 - 移除指定服务:
指定要停止和移除的特定服务,而不是停止和移除所有服务。可以同时指定多个服务,用空格分隔。docker-compose down service_name
- 移除网络:
使用docker-compose down --remove-orphans
--remove-orphans
选项可以移除未在docker-compose.yml
文件中定义的服务的网络。这些服务称为 “孤儿” 服务。 - 停止并移除容器、网络和卷:
结合使用docker-compose down --volumes --remove-orphans
--volumes
和--remove-orphans
选项可以停止并移除所有容器,相关的网络和卷,以及未定义的孤儿服务的网络。 - 使用其他 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
命令的一些常见用法和选项:
- 基本用法:
这会显示通过docker-compose ps
docker-compose up
启动的所有容器的状态信息,包括容器名称、运行状态、关联端口等。 - 只显示服务名称:
使用docker-compose ps --services
--services
选项可以只显示服务的名称,而不显示完整的容器信息。 - 显示详细信息:
使用docker-compose ps --verbose
--verbose
选项可以显示更详细的容器信息,包括容器ID、端口映射、命令等。 - 只显示停止的容器:
使用docker-compose ps --filter "status=exited"
--filter
选项可以根据容器的状态进行过滤。在这个示例中,status=exited
表示只显示已停止的容器。 - 显示指定服务的容器:
指定要显示的特定服务的容器,而不是显示所有服务的容器信息。docker-compose ps service_name
- 使用其他 Compose 文件:
使用docker-compose -f docker-compose.prod.yml ps
-f
选项可以指定要使用的 Compose 文件,默认情况下是docker-compose.yml
。
4.4 其他常用命令
除了 docker-compose up
、docker-compose down
和 docker-compose ps
外,还有一些其他常用的 Docker Compose 命令,如下:
- 启动服务:
启动已定义的服务,但不会重新构建容器或镜像。docker-compose start
- 停止服务:
停止已启动的服务,但容器和网络保留。docker-compose stop
- 重启服务:
重启已启动的服务,会重新构建容器。docker-compose restart
- 重新构建服务:
根据docker-compose build
docker-compose.yml
中的配置重新构建服务的容器镜像。 - 查看服务日志:
查看服务的日志输出,可选参数可指定具体的服务名称。docker-compose logs
- 进入服务容器:
在特定的服务容器中执行命令,docker-compose exec service_name command
service_name
为服务名称,command
为要执行的命令。 - 列出所有定义的服务:
列出所有在docker-compose config --services
docker-compose.yml
文件中定义的服务名称。 - 查看Compose文件配置:
检查并验证docker-compose config
docker-compose.yml
文件的配置。 - 暂停服务:
暂停已启动的服务,暂停后容器继续存在,但不再接收流量。docker-compose pause
- 恢复服务:
docker-compose unpause
恢复被暂停的服务,使其重新接收流量。
这些命令可帮你管理和维护 Docker Compose 项目,确保的多容器应用程序在运行时能够稳定地工作。
五、实例演示
5.1 创建一个简单的Web应用
好的,我将指导你创建一个简单的Web应用,并使用Docker Compose 来管理它。
假设你的Web应用是一个简单的静态网站,你可以使用Nginx作为Web服务器。我们将创建一个Docker Compose文件来定义Nginx服务,并将静态文件挂载到容器中。让我们开始:
- 创建项目目录:
首先,创建一个新的目录,用于存放你的Web应用文件和Docker Compose文件。 - 编写Dockerfile:
在项目目录中创建一个名为Dockerfile
的文件,并添加以下内容:
这个Dockerfile使用Nginx官方镜像作为基础镜像,并将当前目录下的FROM nginx:latest COPY ./html /usr/share/nginx/html
html
文件夹中的内容复制到容器中的/usr/share/nginx/html
目录下。 - 创建静态网站文件:
在项目目录中创建一个名为html
的文件夹,并在其中添加你的静态网站文件,比如index.html
。 - 编写Docker Compose文件:
在项目目录中创建一个名为docker-compose.yml
的文件,并添加以下内容:
这个Compose文件定义了一个名为version: '3.8'services:web:build: .ports:- "8080:80"
web
的服务,它使用当前目录下的Dockerfile构建Nginx镜像,并将容器内的80端口映射到主机的8080端口。 - 构建和启动应用程序:
打开命令行,导航到项目目录,并运行以下命令来构建和启动应用程序:
这将会构建Nginx镜像并启动容器,你的Web应用程序将在docker-compose up -d
http://localhost:8080
上可用。 - 查看网站:
打开浏览器,并访问http://localhost:8080
,你应该能够看到你的静态网站。
通过这个简单的演示,你学会了如何使用Docker Compose创建一个简单的Web应用,并在本地启动它。你可以进一步扩展这个示例,添加更多的服务和功能,以满足你的实际需求。
5.2 使用Docker Compose进行部署和管理
假设你有一个使用Node.js编写的简单Web应用,需要部署到生产环境中。你可以使用Docker Compose进行部署和管理。下面是一个示例演示:
- 创建项目目录:
首先,在你的开发机器上创建一个新的目录,用于存放你的Web应用程序代码和Docker相关文件。 - 编写Dockerfile:
在项目目录中创建一个名为Dockerfile
的文件,并添加以下内容:
这个Dockerfile使用了 Node.js 官方的FROM node:14-alpineWORKDIR /appCOPY package.json . COPY package-lock.json .RUN npm installCOPY . .EXPOSE 3000CMD ["npm", "start"]
node:14-alpine
镜像作为基础镜像,并在容器中设置了工作目录、安装了依赖项、复制了应用程序代码,并且暴露了3000端口用于访问Web应用。 - 编写docker-compose.yml文件:
在项目目录中创建一个名为docker-compose.yml
的文件,并添加以下内容:
这个Compose文件定义了一个名为version: '3.8'services:web:build: .ports:- "80:3000"
web
的服务,使用当前目录下的Dockerfile构建镜像,并将容器内的3000端口映射到主机的80端口。 - 编写应用程序代码:
在项目目录中编写你的Node.js应用程序代码,比如一个简单的Express应用。 - 构建和启动应用程序:
在命令行中,导航到项目目录,并运行以下命令来构建和启动应用程序:
这将会构建镜像并启动容器,你的Node.js应用程序将在docker-compose up -d
http://localhost
上可用。 - 管理应用程序:
你可以使用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数据库服务。
- 更新docker-compose.yml文件:
修改你的docker-compose.yml
文件,添加一个名为db
的服务定义:
这个Compose文件中添加了一个名为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"
db
的服务,它使用MySQL官方镜像,并设置了一些环境变量用于配置MySQL数据库。此外,还将容器的3306端口映射到主机的3306端口。 - 更新应用程序代码:
修改你的Node.js应用程序代码,以便它可以连接到MySQL数据库。你需要确保应用程序代码中的数据库连接字符串正确指向数据库服务的主机和端口。 - 构建和启动应用程序:
在命令行中,导航到项目目录,并运行以下命令来构建和启动应用程序及数据库服务:
这将会构建镜像并启动容器,你的Node.js应用程序将在docker-compose up -d
http://localhost
上可用,并且可以与MySQL数据库进行交互。 - 验证:
打开浏览器,并访问你的应用程序。确保应用程序能够正常工作,并且能够与数据库进行交互。
通过这个扩展示例,你学会了如何使用Docker Compose同时部署Node.js应用程序和MySQL数据库服务,并将它们连接起来,以实现一个完整的应用程序环境。你可以根据需要添加其他服务,如缓存服务、消息队列服务等,以满足你的应用程序需求。
六、总结
本文它首先解释了Docker Compose的概念和优势,然后逐步介绍了安装、配置、基础概念以及常用命令。通过实例演示,展示了如何使用Docker Compose构建和管理简单的Web应用程序,并进一步扩展到与数据库服务集成。总的来说,本文全面而简洁地介绍了Docker Compose的基本概念、操作方法和实际应用,为读者提供了一个快速入门的指南。
相关文章:
《Docker极简教程》--Docker的高级特性--Docker Compose的使用
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它允许开发人员通过简单的YAML文件来定义应用程序的服务、网络和卷等资源,并使用单个命令来启动、停止和管理整个应用程序的容器。以下是关于Docker Compose的一些关键信息和优势: 定义…...
tidyverse去除表格中含有NA的行
在tidyverse中,特别是使用dplyr包,去除含有NA的行可以通过filter()函数结合is.na()和any()或all()函数来实现。dplyr是tidyverse的一部分,提供了一系列用于数据操作的函数,使数据处理变得更加简单和直观。 以下是一个简单的例子&…...

开源爬虫技术在金融行业市场分析中的应用与实战解析
一、项目介绍 在当今信息技术飞速发展的时代,数据已成为企业最宝贵的资产之一。特别是在${industry}领域,海量数据的获取和分析对于企业洞察市场趋势、优化产品和服务至关重要。在这样的背景下,爬虫技术应运而生,它能够高效地从互…...

使用SMTP javamail发送邮件
一、SMTP协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。使用javamail编写发送…...

Hello C++ (c++是什么/c++怎么学/c++推荐书籍)
引言 其实C基础语法基本上已经学完,早就想开始写C的博客了,却因为其他各种事情一直没开始。原计划是想讲Linux系统虚拟机安装的,后来考虑了一下还是算了,等Linux学到一定程度再开始相关博客的写作和发表吧。今天写博客想给C开个头…...

最新的前端开发技术(2024年)
关于作者: 还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas࿰…...
GCN 翻译 - 2
2 FAST APROXIMATE CONVOLUTIONS ON GRAPHS 在这一章节,我们为这种特殊的的图基础的神经网络模型f(X, A)提供理论上的支持。我们考虑一个多层的图卷积网络(GCN),它通过以下方式进行层间的传播: 这里,是无…...

HBase 的安装与部署
目录 1 启动 zookeeper2 启动 Hadoop3 HBase 的安装与部署4 HBase 高可用 1 启动 zookeeper [huweihadoop101 ~]$ bin/zk_cluster.sh start2 启动 Hadoop [huweihadoop101 ~]$ bin/hdp_cluster.sh start3 HBase 的安装与部署 (1)将 hbase-2.0.5-bin.tar.…...
236.二叉搜索树的公共祖先
236.二叉树的公共祖先 思路 看到题想的是找到两个点的各自路径利用stack保存,根据路径长度大小将两个stack的值对齐到同一层,之后同时出栈节点,若相同则找到祖先节点。但是效率不高 看了大佬代码,递归思想很难理解。 根据大佬…...

【论文精读】大语言模型融合知识图谱的问答系统研究
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...

LabVIEW高精度天线自动测试系统
LabVIEW高精度天线自动测试系统 系统是一个集成了LabVIEW软件的自动化天线测试平台,提高天线性能测试的精度与效率。系统通过远程控制测试仪表,实现了数据采集、方向图绘制、参数计算等功能,特别适用于对天线辐射特性的精确测量。 在天线的…...

7.3 支付模块 - 创建订单、查询订单、通知
支付模块 - 创建订单、查询订单、通知 文章目录 支付模块 - 创建订单、查询订单、通知一、生成支付二维码1.1 数据模型1.1.1 订单表1.1.2 订单明细表1.1.3 支付交易记录表 1.2 执行流程1.3 Dto1.3.1 AddOrderDto 商品订单1.3.2 PayRecordDto支付交易记录扩展字段1.3.3 雪花算法…...

灵魂指针,教给(一)
欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 一、内存和地址 1.1 内存 在介绍知识之前,先来想一个生活中的小栗子: 假如把你放在一个有100间屋子的酒店…...

Linux 开发工具 yum、git、gdb
目录 一、yum 1、软件包 2、rzsz 3、注意事项 4、查看软件包 5、安装软件 6、卸载软件 二、git操作 1、克隆三板斧 2、第一次使用会出现以下情况: 未配置用户名和邮箱: push后弹出提示 三、gdb使用 1、背景 2、使用方法 例一:…...
Markdown
这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中、居左、居右 SmartyPants 创建一个自定义列表 …...
【Oracle】oracle中sql给表新增字段并添加注释说明;mysql新增、修改字段
oracle中sql给表新增字段并添加注释说明 ALTER TABLE 表名 ADD 字段名 类型 COMMENT ON COLUMN 表面.字段名 IS ‘注释内容’ ALTER TABLE GROUP ADD T NUMBER(18) COMMENT ON COLUMN GROUP.T IS ‘ID’ mysql新增、修改字段、已有字段增加默认值 ALTER TABLE 表名 ADD COL…...
【汇总】pytest简易教程
pytest作为python技术栈里面主流、火热的技术,非常有必要好好学一下,因为工作和面试都能用上; 它不仅简单易用,还很强大灵活,重点掌握fixture、parametrize参数化、allure-pytest插件等,这些在后续自动化框…...

openssl调试记录
openssl不能直接解密16进制密文,需要把密文转化成base64格式才能解密 调试记录如下:...

3.7练习题解
一共五道题: 1. PERKET: 观察容易发现n的值很小,所以我们可以考虑使用dfs的方法进行解答,首先我们可以考虑一共有n种配料,那么我们就可以考虑到可以选择1到n种配料数目,然后基于这个思路我们再对其进行判断…...
MQ的消费模式-消息是推还是拉
文章目录 概述RocketMQ默认pushRabbitMQ默认pushKafka默认拉PullActiveMQ默认push 概述 MQ的消费模式可以大致分为两种,一种是推Push,一种是拉Pull Push是服务端主动推送消息给客户端,Pull是客户端需要主动到服务端轮询获取数据。 推优点是及…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...