当前位置: 首页 > news >正文

【Docker基础】Compose 使用手册:场景、文件与命令详解

文章目录

  • 一、什么是 Docker Compose
  • 二、为什么需要 Docker Compose
  • 三、Docker Compose 使用步骤 / 核心功能
    • 步骤
    • 核心功能:
  • 四、Docker Compose 的使用场景
  • 五、Docker Compose 文件(docker-compose.yml)
    • 文件语法版本
    • 文件基本结构及常见指令
      • 常见字段格式语法
    • 示例:使用 `healthcheck` 配置容器健康检查
  • 六、Dockers Compose 命令清单
    • 常见 Docker Compose 命令 与 官方文档
      • 官方文档
    • 命令格式
    • 常见选项 / 命令
      • Docker Compose 常见命令及选项说明
    • 操作案例
  • 七、常见问题

一、什么是 Docker Compose

Docker Compose 是 Docker 官方的开源项目,使用 Python 编写,调用 Docker 服务的 API 来管理和编排容器。官方定义为:定义和运行多个 Docker 容器的应用。

在 Docker Compose 中,有两个重要概念:

  • 服务(Service):一个应用的容器,通常包括多个运行相同镜像的容器实例。
  • 项目(Project):由一组相关的应用容器组成的完整业务单元,在 docker-compose.yml 文件中定义。整个 docker-compose.yml 文件定义了一个项目。

Compose 的默认管理对象是 项目,通过子命令对项目中的一组容器进行简化的生命周期管理。

通过 compose 可以方便的管理多个服务。

在这里插入图片描述


二、为什么需要 Docker Compose

Docker 是一个轻量化的应用程序,官方推荐每个 Docker 容器只运行一个进程。

  • 如果一个应用需要 MySQL、Nginx 等环境,那么我们需要为应用、数据库和 Nginx 分别创建独立的 Docker 容器,并逐一启动它们。
  • 设想一下,构建好 Docker 后,每次启动应用都需要执行至少三次 docker run,或者编写脚本来实现,这会显得非常繁琐。
  • 此外,这些容器是分散独立的,不方便管理和维护镜像。既然这些容器都是为了同一个应用提供服务,那么将它们放在一起管理显得更为合理。这时,Docker Compose 就能帮助解决这类问题。

三、Docker Compose 使用步骤 / 核心功能

步骤

  1. 安装 Docker 和 Docker Compose
    确保已经安装了 Docker 和 Docker Compose。

  2. 创建 docker-compose.yml 文件
    在项目根目录下创建一个 docker-compose.yml 文件,定义服务、网络和卷等配置。

  3. 定义服务
    docker-compose.yml 中定义每个服务(容器),包括镜像、环境变量、端口映射等。

  4. 启动服务
    使用命令 docker-compose up 启动所有服务,-d 参数可以让容器在后台运行。

  5. 停止服务
    使用命令 docker-compose down 停止并删除所有容器。

  6. 查看日志
    使用 docker-compose logs 查看容器的日志输出。

核心功能:

  1. 多容器管理:可以轻松定义和管理多个服务(容器)。
  2. 一键启动与停止:通过命令启动或停止所有容器,简化操作。
  3. 服务依赖:自动处理服务之间的启动顺序。
  4. 配置管理:通过环境变量和 .env 文件管理配置。
  5. 数据持久化:支持使用卷(Volumes)持久化数据。
  6. 扩展服务:可以轻松扩展服务实例数量,处理负载。

四、Docker Compose 的使用场景

  1. 开发环境
    在开发过程中,Docker Compose 可以用来快速搭建多容器的开发环境,例如将数据库、缓存服务器、Web 应用等服务组合在一起,开发者可以通过一条命令启动或停止整个环境。

  2. 测试环境
    用于构建和管理临时的测试环境,确保不同服务之间的协作和集成测试在统一的环境中进行。可以确保每次测试时环境的一致性。

  3. 本地开发与调试
    在本地开发中,Docker Compose 允许开发者同时运行多个依赖服务(如数据库、消息队列等),无需手动启动每个容器,便于开发和调试。

  4. 微服务架构
    在微服务架构中,Docker Compose 可以用来管理多个微服务及其依赖服务(如数据库、API 网关等),通过 Compose 配置文件统一管理和部署。

  5. 多环境部署
    Docker Compose 支持为不同的环境(如开发、测试、生产)配置不同的服务和设置,帮助实现环境间的一致性和迁移。

  6. CI/CD 流水线
    在持续集成/持续部署(CI/CD)过程中,Docker Compose 可用于自动化构建、测试和部署多容器应用,简化流程,保证环境一致性。

  7. 本地模拟生产环境
    在本地机器上使用 Docker Compose 模拟生产环境中的复杂服务拓扑,帮助开发者在开发阶段提前发现潜在问题。


五、Docker Compose 文件(docker-compose.yml)

文件语法版本

目前,官方支持三大版本:Version 1、Version 2 和 Version 3,其中 Version 1 已被废弃。当前最新版本为 3.8,要求 Docker Engine 版本至少为 19.03.0。本课程将基于 3.8 版本的 Compose 文件语法进行讲解,其他版本的详细内容可以参考官方文档。

文件基本结构及常见指令

YAML 示例:

version: "3.8"  # 定义当前使用的 Docker Compose 语法版本
services:  # 服务定义,支持多个服务servicename:  # 服务名称,内部 bridge 网络中使用的 DNS 名称。非集群模式下相当于 Docker run 命令中的名称。image:  # 必选项,指定容器镜像command:  # 可选项,覆盖镜像的默认启动命令environment:  # 可选项,等同于 docker run 中的 --env 参数,用于设置环境变量volumes:  # 可选项,等同于 docker run 中的 -v 参数,用于数据卷挂载networks:  # 可选项,等同于 docker run 中的 --network 参数,指定容器网络ports:  # 可选项,等同于 docker run 中的 -p 参数,指定端口映射expose:  # 可选项,指定容器暴露的端口build:  # 可选项,指定构建镜像的路径depends_on:  # 可选项,定义服务间的依赖关系env_file:  # 可选项,定义外部环境变量文件

常见字段格式语法

  • image: 指定容器运行的镜像。支持多种格式:

    image: redis
    image: redis:5
    image: redis@sha256:0ed5d5928d4737458944eb604cc8509e245c3e19d02ad83935398bc4b991aac7
    image: library/redis
    image: my_private.registry:5000/redis
    
  • command: 覆盖容器启动时的默认命令:

    command: ["bundle", "exec", "thin", "-p", "3000"]
    command: bundle exec thin -p 3000
    
  • entrypoint: 覆盖容器的默认 entrypoint:

    entrypoint: /code/entrypoint.sh
    entrypoint:- php- -d- zend_extension=/usr/local/lib/php/extensions/no-debug-nonzts-20100525/xdebug.so- -d- memory_limit=-1- vendor/bin/phpunit
    
  • environment: 设置环境变量,可以使用数组或字典格式:

    environment:RACK_ENV: developmentSHOW: "true"
    

    或者数组格式:

    environment:- RACK_ENV=development- SHOW=true
    
  • networks: 配置容器使用的网络:

    services:frontend:image: awesome/webappnetworks:- front-tier- back-tiermonitoring:image: awesome/monitoringnetworks:- adminbackend:image: awesome/backendnetworks:back-tier:aliases:- database
    
  • volumes: 将主机的数据卷或文件挂载到容器中:

    services:db:image: postgres:latestvolumes:- "/localhost/postgres.sock:/var/run/postgres/postgres.sock"- "/localhost/data:/var/lib/postgresql/data"
    
  • ports: 配置端口映射:

    ports:- target: 80published: 8080host_ip: 127.0.0.1protocol: tcpmode: host
    
  • expose: 暴露容器内部端口,但不进行端口映射:

    expose:- "3000"- "8000"
    
  • build: 指定构建镜像的上下文路径:

    version: "3.7"
    services:webapp:build: ./dir
    
  • depends_on: 设置服务依赖关系,确保服务按顺序启动:

    services:web:build: .depends_on:- db- redisredis:image: redisdb:image: postgres
    

    可以根据服务健康状态设置条件:

    services:web:build: .depends_on:db:condition: service_healthyredis:condition: service_started
    
  • env_file: 从文件中加载环境变量,可以是多个文件:

    env_file:- .env- ./common.env- ./apps/web.env- /opt/secrets.env
    

示例:使用 healthcheck 配置容器健康检查

version: "3.8"
services:web:image: nginx:1.24.0environment:TEST: 1depends_on:mysql:condition: service_healthymysql:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: "bit@123"volumes:- /data/maxhou/mysqldata/varlib/:/var/lib/mysqlhealthcheck:test: mysql --user=root --password='bit@123' -e "SELECT 1;"interval: 10stimeout: 5sretries: 10

六、Dockers Compose 命令清单

常见 Docker Compose 命令 与 官方文档

  1. 启动和管理服务

    • docker-compose up:构建、(重新)创建、启动和附加到容器。
    • docker-compose down:停止并移除容器、网络和卷。
    • docker-compose start:启动已创建的容器。
    • docker-compose stop:停止容器。
    • docker-compose restart:重新启动服务容器。
  2. 构建和镜像管理

    • docker-compose build:构建或重新构建服务的镜像。
    • docker-compose push:将构建的镜像推送到 Docker 注册表。
  3. 容器状态和日志

    • docker-compose ps:列出服务的容器状态。
    • docker-compose logs:查看容器的输出日志。
    • docker-compose exec:在运行中的容器内执行命令。
    • docker-compose run:启动一个新容器并运行一次命令。
  4. 容器的其他操作

    • docker-compose exec:在运行中的容器中执行命令。
    • docker-compose run:运行一个一次性的容器实例。
    • docker-compose config:验证并查看 Compose 文件的配置。
    • docker-compose top:列出正在运行的容器的进程信息。
  5. 资源管理

    • docker-compose scale:设置服务的容器数量(只适用于 Version 2 格式)。

官方文档

Docker Compose 的官方文档包含完整的命令清单、配置项说明以及示例,可以通过以下链接访问:

  • Docker Compose 命令文档:https://docs.docker.com/compose/reference/

该页面提供了所有 docker-compose 命令的详细说明,包括常用命令、选项和用法示例。

命令格式

对于 Docker Compose,大多数命令可以作用于整个项目,也可以针对项目中的特定服务或容器。如果没有特别说明,命令默认会影响整个项目,即项目中的所有服务。

docker compose 命令的基本格式为:

docker compose [OPTIONS] COMMAND [ARGS...]

常见选项说明:

  • -f, --file:指定 Compose 模板文件,默认为 docker-compose.yml,可使用多个文件。
  • -p, --project-name:指定项目名称,默认使用当前目录名称作为项目名。

常见选项 / 命令

常见选项

  • -f --file 指定使用的Compose模板文件,默认为 docker-compose.yml,可以多次指定
  • -p, --project-name 指定项目名称,默认使用“所在目录的名称”作为项目名

常见命令

Docker Compose 常见命令及选项说明

1. up
该命令会自动完成包括构建镜像、(重新)创建服务、启动服务并关联相关容器等操作,通常用于启动一个项目。

基本命令格式

docker compose up [OPTIONS] [SERVICE...]

常见选项

  • -d:在后台运行服务容器,推荐在生产环境中使用该选项。
  • --force-recreate:强制重新创建容器,不能与 --no-recreate 同时使用。
  • --no-recreate:如果容器已存在,则不重新创建,不能与 --force-recreate 同时使用。

2. down
停止所有容器,并删除容器和网络。

基本命令格式

docker compose down [OPTIONS] [SERVICE...]

常见选项

  • -v, --volumes:删除容器的同时删除与容器关联的卷(目录映射)。

3. run
在指定服务容器上执行相关命令。此命令用于启动服务容器并在其中执行命令。

基本命令格式

docker compose run [OPTIONS] SERVICE [COMMAND] [ARGS...]

常见选项

  • -d:后台运行容器。
  • --name NAME:为容器指定一个名称。
  • --entrypoint CMD:覆盖容器的默认启动命令。
  • -e KEY=VAL:设置环境变量,支持多次使用来设置多个环境变量。
  • -u, --user="":指定运行容器的用户名或 UID。
  • --rm:运行命令后自动删除容器。
  • -p, --publish=[]:映射容器端口到本地主机。

示例

# 启动 ubuntu 服务容器,并执行 ping docker.com 命令
docker compose run ubuntu ping docker.com

下面是一个基本的 Docker Compose 操作案例,假设你的操作环境是 Ubuntu。

操作案例

下面演示如何创建一个包含 NginxMySQL 的多容器应用,并通过 docker-compose.yml 文件管理它们。我们可以根据需要扩展服务、配置网络和卷等。

1. 安装 Docker 和 Docker Compose

首先确保你的 Ubuntu 系统已经安装了 Docker 和 Docker Compose。你可以使用以下命令进行安装。

  1. 更新你的包列表并安装依赖:

    sudo apt update
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    
  2. 安装 Docker:

    curl -fsSL https://get.docker.com -o get-docker.sh
    sudo sh get-docker.sh
    
  3. 安装 Docker Compose:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
  4. 验证安装:

    docker --version
    docker-compose --version
    
  5. 创建 Docker Compose 项目文件

假设我们要创建一个简单的项目,包含一个 Nginx 服务和一个 MySQL 数据库服务。

  1. 创建一个新目录

    mkdir myproject
    cd myproject
    
  2. 创建 docker-compose.yml 文件
    使用编辑器创建 docker-compose.yml 文件,该文件描述了我们的服务和配置。

    version: '3'services:web:image: nginx:latestcontainer_name: nginx-containerports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmlnetworks:- mynetworkdb:image: mysql:5.7container_name: mysql-containerenvironment:MYSQL_ROOT_PASSWORD: examplepasswordMYSQL_DATABASE: exampledbvolumes:- mysql-data:/var/lib/mysqlnetworks:- mynetworknetworks:mynetwork:volumes:mysql-data:
    

解释:

  • web 服务:使用 Nginx 镜像,映射本地的 8080 端口到容器的 80 端口。
  • db 服务:使用 MySQL 5.7 镜像,设置了数据库根密码 examplepassword 和数据库名 exampledb
  • 我们创建了一个网络 mynetwork 来让容器间通信,并为 MySQL 创建了一个数据卷 mysql-data 来持久化数据库数据。
  1. 创建 HTML 文件(可选)
    如果你希望在浏览器中访问你的 Nginx 服务并显示内容,可以创建一个简单的 HTML 文件:
    mkdir html
    echo "<h1>Hello from Docker Compose!</h1>" > html/index.html
    

3. 启动服务

在项目目录中,使用 docker compose up 命令来启动所有定义的服务。

docker compose up

如果你希望在后台运行容器,可以加上 -d 参数:

docker compose up -d

这个命令会:

  • 下载 nginxmysql 镜像(如果尚未下载)。
  • 创建并启动容器。
  • 自动创建网络 mynetwork 和卷 mysql-data

你可以用 docker ps 查看正在运行的容器:

docker ps

4. 访问 Nginx 服务

如果一切正常,你可以在浏览器中访问 Nginx 服务,打开 http://localhost:8080,你应该能够看到 “Hello from Docker Compose!” 的 HTML 内容。

  1. 查看容器日志

如果你想查看容器的日志,使用 docker compose logs 命令:

docker compose logs web

这将显示 Nginx 容器的日志。如果你想查看 MySQL 容器的日志,可以使用:

docker compose logs db
  1. 停止并删除服务

要停止并删除所有运行中的服务和容器,可以使用 docker compose down 命令:

docker compose down

如果你希望同时删除卷(例如 MySQL 的数据卷),可以使用 -v 选项:

docker compose down -v

七、常见问题

  1. uprunstart 之间的区别

    • docker-compose up:用于启动或重新启动通过 docker-compose.yml 文件定义的所有服务。在默认模式下,会显示所有容器的日志。在“分离模式”(-d)下,容器会在后台启动,Compose 命令会退出,但容器继续运行。

    • docker-compose run:用于运行“一次性”或“临时”任务,只会启动指定服务及其依赖的服务。常用于执行测试或管理任务,如从数据卷容器中删除或添加数据。run 命令类似于 docker run -ti,启动容器并进入交互式终端,执行完后根据进程的退出状态返回退出代码。

    • docker-compose start:用于重新启动已存在但停止的容器。不会创建新容器,只会启动已存在的、被停止的服务容器。

  2. 如何在同一主机上运行 Compose 文件的多个副本

    Compose 使用项目名称为项目中的所有容器和资源创建唯一标识符。要运行项目的多个副本,可以通过以下方式设置自定义项目名称:

    • 使用 -p 命令行选项来指定项目名称。
    • 使用 COMPOSE_PROJECT_NAME 环境变量来设置项目名称。

    这样可以在同一主机上启动多个独立的 Compose 项目实例。

  3. 可以控制服务启动顺序吗?

    可以通过在 docker-compose.yml 文件中使用 depends_on 来指定服务的启动顺序。可以结合 healthcheck 功能来确保服务在健康检查成功后再启动,从而实现更精确的启动控制。

相关文章:

【Docker基础】Compose 使用手册:场景、文件与命令详解

文章目录 一、什么是 Docker Compose二、为什么需要 Docker Compose三、Docker Compose 使用步骤 / 核心功能步骤核心功能&#xff1a; 四、Docker Compose 的使用场景五、Docker Compose 文件&#xff08;docker-compose.yml&#xff09;文件语法版本文件基本结构及常见指令常…...

RT-2论文深度解读:视觉-语言-动作统一模型的机器人泛化革命

1. 核心问题与挑战 传统机器人学习存在两大瓶颈&#xff1a; 数据效率低下&#xff1a;依赖特定场景的机器人操作数据&#xff08;如抓取、推压&#xff09;&#xff0c;收集成本高泛化能力局限&#xff1a;模型仅能完成训练中出现过的任务&#xff0c;无法应对长尾场景 RT-…...

git 提交标签

Git 提交标签 提交消息格式&#xff1a; <type>: <description> &#xff08;示例&#xff1a;git commit -m "feat: add user login API"&#xff09; 标签适用场景feat新增功能&#xff08;Feature&#xff09;。fix修复 Bug&#xff08;Bug fix&…...

学习率(Learning Rate)

学习率&#xff08;Learning Rate&#xff09;是深度学习中最关键的超参数之一&#xff0c;它控制模型在每次参数更新时的“步长大小”。简单来说&#xff1a;它决定了模型从错误中学习的“速度”。 直观比喻 想象你在山顶蒙眼下山&#xff08;找最低点&#xff09;&#xff1…...

李宏毅NLP-3-语音识别part2-LAS

语音识别part2——LAS Listen Listen主要功能是提取内容信息&#xff0c;去除说话人差异和噪声 。编码器&#xff08;Encoder&#xff09;结构&#xff0c;输入是声学特征&#xff0c;经过 Encoder 处理后&#xff0c;输出为高级表示&#xff0c;这些高级表示可用于后续语音识别…...

游戏引擎学习第222天

回顾昨天的过场动画工作 我们正在制作一个游戏&#xff0c;目标是通过直播的方式完成整个游戏的开发。在昨天的工作中&#xff0c;我享受了制作过场动画的过程&#xff0c;所以今天我决定继续制作多个层次的过场动画。 昨天我们已经开始了多层次过场动画的基本制作&#xff0…...

双系统win11 + ubuntu,如何完全卸载ubuntu系统?

双系统win11 ubuntu&#xff0c;如何完全卸载ubuntu? 注意事项 操作前确保有 Windows 安装介质&#xff08;USB&#xff09;&#xff0c;以防需要修复对 EFI 分区的操作要格外小心如果使用 BitLocker&#xff0c;可能需要先暂停保护如果遇到问题&#xff0c;可以使用 Windows…...

【T2I】Region-Aware Text-to-Image Generation via Hard Binding and Soft Refinement

code&#xff1a; https://github.com/NJU-PCALab/RAG-Diffusion Abstract 区域提示&#xff0c;或组成生成&#xff0c;能够实现细粒度的空间控制&#xff0c;在实际应用中越来越受到关注。然而&#xff0c;以前的方法要么引入了额外的可训练模块&#xff0c;因此只适用于特定…...

HarmonyOS:Map Kit简介

一、概述 Map Kit&#xff08;地图服务&#xff09; 为开发者提供强大而便捷的地图能力&#xff0c;助力全球开发者实现个性化显示地图、位置搜索和路径规划等功能&#xff0c;轻松完成地图构建工作。您可以轻松地在HarmonyOS应用/元服务中集成地图相关的功能&#xff0c;全方位…...

【从零实现高并发内存池】- 项目介绍、原理 及 内存池详解

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

CSS margin(外边距)学习笔记

CSS 中的 margin 属性用于定义元素周围的空白区域&#xff0c;它是一个非常重要的布局工具&#xff0c;可以帮助我们控制元素之间的间距&#xff0c;从而实现更美观和易用的页面布局。以下是对 margin 属性的详细学习笔记。 一、margin 的基本概念 margin 是元素周围的透明区…...

【数据集】中国各省低空经济及无人机相关数据集(1996-2025年2月)

低空经济泛指3000米高空以下的飞行经济活动&#xff0c;以民用客运飞行器和无人驾驶航空器为主。低空经济产业是先进飞行器出行&#xff08;AAM&#xff09;在城市低空运行的一种变革性和颠覆性的复合新产业&#xff0c;主要以垂直起降型飞机&#xff08;VTOL&#xff09;与无人…...

C++动态分配内存知识点!

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 大家好呀&#xff0c;又是分享干货的时间&#xff0c;今天我们来学习一下动态分配内存。 文章目录 1.动态分配内存的思想 2.动态分配内存的概念 2.1内存分配函数 2.2动态内存的申请和释放 2.3内存碎片问…...

哈喽打车 小程序 分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向过程 这一次遇到这种风控感觉挺有…...

泛型的二三事

泛型&#xff08;Generics&#xff09;是Java语言的一个重要特性&#xff0c;它允许在定义类、接口和方法时使用类型参数&#xff08;Type Parameters&#xff09;&#xff0c;从而实现类型安全的代码重用。泛型在Java 5中被引入&#xff0c;极大地增强了代码的灵活性和安全性。…...

云计算:数字浪潮中的第三次文明跃迁——从虚拟化到智能协同的范式革命

一、浪潮的序曲&#xff1a;从机械革命到数字原子的觉醒 20世纪中叶&#xff0c;当晶体管的发明点燃信息革命的火种时&#xff0c;人类社会的第三次浪潮已悄然萌芽。托夫勒预言的“信息将成为新的权力核心”&#xff0c;在21世纪初以云计算的形态具象化。这场浪潮的起点&#…...

redis哨兵机制 和集群有什么区别:

主从&#xff1a; 包括一个master节点 和多个slave节点&#xff1a; master节点负责数据的读写&#xff0c;slave节点负责数据的读取&#xff0c;master节点收到数据变更&#xff0c;会同步到slave节点 去实现数据的同步。通过这样一个架构可以去实现redis的一个读写分离。提升…...

java基础2

构造器&#xff1a; 构造器与类同名&#xff1b; 每个类可以有一个以上的构造器&#xff1b; 构造器可以有0个&#xff0c;1个或多个参数&#xff1b; 构造器没有返回值&#xff1b; 构造器总是伴着new一起调用 方法重载&#xff1a; 方法名字一样&#xff0c;参数不一样…...

《算法笔记》3.6小节——入门模拟->字符串处理

1009 说反话 #include <cstdio>int main() {char sen[80][80];int num0;while(scanf("%s",sen[num])!EOF){num;}for (int i num-1; i > 0; --i) {printf("%s ",sen[i]);}printf("%s\n",sen[0]);return 0; }字符串连接 #include <io…...

JavaScript:BOM编程

今天我要介绍的是JS中有关于BOM编程的知识点内容&#xff1a;BOM编程&#xff1b; 介绍&#xff1a;BOM全名&#xff08;Browser Object Model&#xff08;浏览器对象模型&#xff09;&#xff09;。 是浏览器提供的与浏览器窗口交互的接口&#xff0c;其核心对象是 window。与…...

用户自定义函数(UDF)开发与应用(二)

五、UDF 在不同平台的应用 5.1 数据库中的 UDF 应用&#xff08;如 MySQL、PostgreSQL&#xff09; 在数据库领域&#xff0c;UDF 为开发者提供了强大的扩展能力&#xff0c;使得数据库可以完成一些原本内置函数无法实现的复杂操作。 以 MySQL 为例&#xff0c;假设我们有一…...

C++——继承、权限对继承的影响

目录 继承基本概念 编程示例 1.基类&#xff08;父类&#xff09;Person 代码特点说明 权限对类的影响 ​编辑 编程示例 1. 公有继承 (public inheritance) 2. 保护继承 (protected inheritance) 3. 私有继承 (private inheritance) 重要规则 实际应用 继承基本概…...

Tkinter样式与主题定制

在创建图形用户界面&#xff08;GUI&#xff09;应用时&#xff0c;除了功能的实现外&#xff0c;界面的外观和用户体验也非常重要。Tkinter提供了多种方式来定制控件的样式&#xff0c;使应用程序界面更加美观和易用。在这一章中&#xff0c;我们将介绍如何使用Tkinter的样式和…...

CSS 背景属性学习笔记

CSS 背景属性用于定义 HTML 元素的背景效果&#xff0c;包括背景颜色、背景图像、图像平铺方式、图像定位以及图像是否固定等。以下是关于 CSS 背景属性的详细学习笔记。 一、背景颜色&#xff08;background-color&#xff09; background-color 属性用于定义元素的背景颜色…...

信息安全管理与评估2023广东省样题答案截图视频

2023年广东省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书 一、 赛项时间 9:00-13:30&#xff0c;共计4小时30分&#xff0c;含赛题发放、收卷时间。 二、 赛项内容 本次大赛&#xff0c;各位选手需要完成三个阶段的任务&#xff0c;其中第一个阶段需要…...

ubuntu学习day1

linux常用命令 1. 用户相关 1.1 切换用户 su root #切换到root用户 su user #切换到普通用户sudo能赋予普通用户管理者权限&#xff0c;一般不要直接使用root用户进行操作。 1.2 添加用户 useradd 用户名 useradd user1 #添加了用户名为user1的用户但在ubuntu中想要创建普…...

ubuntu22.04-VMware Workstation移动后无法连接网络

1.VMware 中查看NAT模式 2.查看宿主机VMnet8的IP地址 虚拟机里设置成192.168.20.160 &#xff0c; 255.255.255.0, 192.168.20.2 在ubuntu系统中设置如下&#xff1a; 至此可以连上了。...

如何评估大模型的性能?有哪些常用的评估指标?

评估大模型(如大语言模型 LLM)的性能是一个多维度的问题,常常需要结合多个指标从不同角度来考察模型的能力。以下是常见的评估方法和指标: 一、通用评估维度 任务性能(Task Performance) 衡量模型在特定任务上的表现,如问答、翻译、总结等。 语言能力(Linguistic Capa…...

Linux驱动开发-网络设备驱动

Linux驱动开发-网络设备驱动 一&#xff0c;网络设备总体结构1.1 总体架构1.2 NAPI数据处理机制 二&#xff0c;RMII和MDIO2.1 RMII接口2.2 MDIO接口 三&#xff0c;MAC和PHY模块3.1 MAC模块3.2 PHY模块 四&#xff0c;网络模型4.1 网络的OSI和TCP/IP分层模型4.1.1 传输层&…...

CTF web入门之文件包含

web78: include函数执行file引入的文件&#xff0c;如果执行不成功&#xff0c;就高亮显示当前页面的源码。 方法一&#xff1a;filter伪协议 file关键字的get参数传递&#xff0c;php://是一种协议名称&#xff0c;php://filter/是一种访问本地文件的协议&#xff0c;/readc…...

error: failed to run custom build command for `yeslogic-fontconfig-sys v6.0.0`

rust使用plotters时遇到编译错误。 一、错误 error: failed to run custom build command for yeslogic-fontconfig-sys v6.0.0 二、解决方法 我用的是opensuse&#xff0c;使用下面命令可以解决问题。 sudo zypper in fontconfig-devel...

低资源需求的大模型训练项目---调研0.5B大语言模型

一、主流0.5B大语言模型及性能对比 1. Qwen系列&#xff08;阿里&#xff09; • Qwen2.5-0.5B&#xff1a;阿里2024年9月开源的通义千问系列最小尺寸模型&#xff0c;支持32K上下文长度和8K生成长度。在中文场景下表现优异&#xff0c;指令跟踪、JSON结构化输出能力突出&…...

信息安全管理与评估广东省2023省赛正式赛题

任务1&#xff1a;网络平台搭建(60分) 题号 网络需求 1 根据网络拓扑图所示&#xff0c;按照IP地址参数表&#xff0c;对DCFW的名称、各接口IP地址进行配置。&#xff08;10分&#xff09; 2 根据网络拓扑图所示&#xff0c;按照IP地址参数表&#xff0c;对DCRS的名称进…...

LeetCode.225. 用队列实现栈

用队列实现栈 题目解题思路1. push2. pop3. empty CodeQueue.hQueue.cStack.c 题目 225. 用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现…...

CTF--bp

一、原题&#xff1a; &#xff08;1&#xff09;提示&#xff1a;弱密码top1000&#xff1f;z????? &#xff08;2&#xff09;原网页&#xff1a; 二、步骤&#xff1a; 1.先打开BP&#xff0c;随便输入一个密码&#xff1a; 2.打开BP&#xff0c;发现password&#…...

01_背包问题

package org.josh; import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner new Scanner(System.in); int n scanner.nextInt(); // 物品数量 long w scanner.nextLong(); // 背包容量&#xff0c;使用long防止溢出 int[] v …...

ps 人像学习

视频&#xff1a; 一ps快捷键 1.1 创建图层 ctrlj 1.2 放大缩小图片的大小 按住alt 滚轮 1.3 移动图片 空格 左键 1.4 撤回 ctrlz 二 精修的第一步是去除斑点&#xff0c;瑕疵&#xff0c; 2.1 污点修复画笔工具 新建一个图层&#xff0c;点击污点修复工具进行修复…...

【AI论文】MM-IFEngine:迈向多模态指令遵循

摘要&#xff1a;指令遵循&#xff08;IF&#xff09;能力衡量多模态大语言模型&#xff08;MLLM&#xff09;准确理解用户告诉他们的内容以及他们是否做得正确的能力。 现有的多模态指令训练数据很少&#xff0c;基准测试简单&#xff0c;指令原子化&#xff0c;对于要求精确输…...

【C++初学】课后作业汇总复习(五) 单目运算符重载

本题主要考察-构造函数的定义和操作符重载、友元函数等 根据后缀和程序样例输出&#xff0c;完成分数类和相关函数的定义&#xff0c; 输入&#xff1a; -6 12 8 -16 输出&#xff1a; 1/2 1/1 -1/2 / -1/2 - -1/2 0/1 输入&#xff1a; 3 7 2 6 输出&#xff1a; 1/…...

Python基础语法速通(自用笔记)

目录 # 输出直接print就行了 # 次方&#xff0c;除法&#xff0c;取整 # 定义变量直接写就可以&#xff0c;不用写类型 # 基础的while不用写&#xff08;&#xff09;和{}&#xff0c;直接用冒号即可&#xff0c;缩进对齐 # 这里的for循环直接用in就可以,意思是从...中一个…...

Nginx基础讲解

Nginx基础讲解 Nginx 是一款高性能的 HTTP 服务器和反向代理服务器&#xff0c;广泛用于负载均衡、静态资源托管、SSL 终端等场景。以下是对 Nginx 的详细讲解&#xff1a; 1. Nginx 核心概念​ ​事件驱动架构​&#xff1a;基于异步非阻塞模型&#xff0c;高效处理高并发连接…...

K8S+Prometheus+Consul+alertWebhook实现全链路服务自动发现与监控、告警配置实战

系列文章目录 k8s服务注册到consul prometheus监控标签 文章目录 系列文章目录前言一、环境二、Prometheus部署1.下载2.部署3.验证 三、kube-prometheus添加自定义监控项1.准备yaml文件2.创建新的secret并应用到prometheus3.将yaml文件应用到集群4.重启prometheus-k8s pod5.访…...

组件安全工程化革命:从防御体系构建到安全基因重塑

文章目录 总起&#xff1a;数字世界的钢铁长城 分论&#xff1a; 一、组件生态的"七宗罪"与安全基因重组 二、百万级流量下的安全工程化实战 三、性能与安全的共生进化论 四、安全工程化全链路解决方案 总束&#xff1a;安全基因驱动的未来图景 五、时代思考…...

(PC+WAP)大气滚屏网站模板 电气电力设备网站源码下载

源码介绍 (PCWAP)大气滚屏网站模板 电气电力设备网站源码下载。PbootCMS内核开发的网站模板&#xff0c;该模板适用于滚屏网站模板、电气电力设备网站源码等企业&#xff0c;当然其他行业也可以做&#xff0c;只需要把文字图片换成其他行业的即可&#xff1b;PCWAP&#xff0c…...

发送加密信息的简单实现【Java】

&#xff08;修改期&#xff09; 一、代码的引用处 public static SecretKeys generateKeys() throws NoSuchAlgorithmException {: 定义一个公共静态方法&#xff0c;用于生成 AES 和 HMAC 密钥对。 public static String encrypt(String plaintext, SecretKey aesKey, S…...

阿里云域名解析

一、打开域名控制台 PC端浏览器打开阿里云域名控制台:域名控制台,点击"域名解析"。 二、添加解析设置 选择需要解析的域名,点击"解析设置"。 点击"添加记录"。 添加@和www即可。...

DNS域名解析服务(正向 反向 主从)

DNS 1.分散式管理&#xff1a; Hosts文件 一改百度就不会访问了 Ip地址 域名 121&#xff0e;226.246.3 www.jd.com 2.我们会搭建一台 域名解析服务器全世界得域名全靠这台服务器进行解析 中央集权制 域名是由多个部分组成的 www.baidu.com .baidu .com是域…...

ROS2---std_msgs基础消息包

std_msgs 是ROS 2&#xff08;Robot Operating System 2&#xff09;里的基础消息包&#xff0c;它定义了一系列简单却常用的消息类型&#xff0c;为不同节点间的通信提供了基础的数据格式。 1. 消息包概述 std_msgs 包包含了多种基础消息类型&#xff0c;这些类型用于表示常…...

python基础:数据类型转换、运算符(算术运算符、比较运算符、逻辑运算符、三元运算符、位运算符)

目录 一、类型转换 隐式类型转换/自动转换&#xff1a; 显示类型转换/强制转换&#xff1a; 二、运算符 算数运算符&#xff1a; - * / 比较运算符 逻辑/布尔运算符 赋值运算符&#xff1a; 三元运算符 位运算符 [二进制] 运算符优先级 一、类型转换 python变量的类…...

[特殊字符] 终端效率提升指南:zsh + tmux

在日常开发中&#xff0c;一个舒适、高效的终端环境能显著提升工作效率。本文将介绍如何通过配置 oh-my-zsh 和 tmux 打造一个功能强大、便捷实用的终端工具集。无论你是 Linux 新手&#xff0c;还是资深开发者&#xff0c;都能从中获得实用的提升技巧。 &#x1f300; 一、终…...