Docker学习——⑧

news2024/11/27 10:37:49

文章目录

  • 1、什么是 Docker Compose(容器编排)
  • 2、为什么要 Docker Compose?
  • 3、Docker Compose 的安装
  • 4、Docker Compose 的功能和使用场景
  • 5、Docker Compose 文件(docker-compose.yml)
    • 5.1 文件语法版本
    • 5.2 文件基本结构及常见指令
  • 6、Docker Compose 命令清单
  • 7、操作案例
  • 8、Docker Compose 部署 WordPress
  • 9、常见问题

1、什么是 Docker Compose(容器编排)

docker-compose 是 Docker 官方的开源项目,使用 python 编写,实现上调用了Docker 服务的 API 进行容器管理及编排,其官方定义为定义和运行多个 Docker 容器的应用。

docker-compose 中有两个非常重要的概念:

  1. 服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例
  2. 项目( project ):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件定义, 整个 docker-compose.yml 定义一个项目

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

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

在这里插入图片描述

docker-compose解决了容器的管理和编排问题

2、为什么要 Docker Compose?

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

如果一个应用需要涉及到 MySQL、nginx 等环境, 那么我需要分别为应用、数据库和 nginx 创建单独的 docker 容器,然后分别启动容器。

想象一下,当我们构建好 Docker 之后,每次启动应用,都至少需要 docker run三次, 或者写一些脚本来实现, 这样会比较繁琐

另外,这些 docker 容器都是分散独立的,也不方便镜像管理。那既然这些 docker容器 都是为了同一个应用服务,我们就应该把它们放到一起,这就引出了 docker-compose 来解决这类型的问题

3、Docker Compose 的安装

安装 docker 的时候,我们默认已经安装了 docker-compose,安装的组件包名称为docker-compose-plugin,此处不再赘述

检查安装是否成功

docker compose version

在这里插入图片描述

4、Docker Compose 的功能和使用场景

Compose 使用的步骤:
1、使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行
2、最后,执行 docker compose up 命令来启动并运行整个应用程序

核心功能
Compose 具有管理应用程序整个生命周期的命令:
启动,停止和重建服务
查看正在运行的服务的状态
流式传输运行服务的日志输出
在服务上运行一次性命令

Docker Compose 使用场景
单主机部署:快速搭建一个单节点开发或者测试环境,方便使用
不同环境隔离:通过指定 project 来运行不同的环境,实现隔离的目的

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

5.1 文件语法版本

目前官方支持三个大版本, 即 Version 1、Version 2 及 Version 3, 其中 Version 1 已经被废弃掉了

当前最新的版本是 3.8,它支持的 Docker Engine 版本不得低于 19.03.0。 我们主要基于 3.8 版本的 Compose file 语法进行讲解,其他版本介绍参见官方文档

在这里插入图片描述

5.2 文件基本结构及常见指令

yaml文件基本结构如下:

YAML
version: "3.8" 		#定义版本, 表示当前使用的 docker-compose 语法的版本
services: 			#服务,可以存在多个
servicename: 		#服务名字,它也是内部 bridge 网络可以使用的 DNS name,如果不是集群模式相当于docker run的时候指定的一个名称,集群(Swarm)模式是多个容器的逻辑抽象
 image: 			#必选,镜像的名字
 command: 			#可选,如果设置,则会覆盖默认镜像里的 CMD 命令
 environment: 		#可选,等价于 docker container run 里的 --env 选项设置环境变量
 volumes: 			#可选,等价于 docker container run 里的 -v 选项 绑定数据卷
 networks: 			#可选,等价于 docker container run 里的 --network 选项指定网络
 ports: 			#可选,等价于 docker container run 里的 -p 选项指定端口映射
 expose: 			#可选,指定容器暴露的端口
 build: 			#构建目录
 depends_on: 		#服务依赖配置
 env_file: 			#环境变量文件
 servicename2:
 image: 
 command: 
 networks: 
 ports: 
 servicename3:
 #...
volumes: 			#可选,等价于 docker volume create
networks: 			#可选,等价于 docker network create

因为不大可能记住所有的参数,如果不知道,就去官网查看:https://docs.docker.com/compose/compose-file/compose-file-v3/

常见字段格式语法

image
指定容器运行的镜像。以下格式都可以:

image: redis
image: redis:5
image: 
redis@sha256:0ed5d5928d4737458944eb604cc8509e245c3e19d02ad83935398
bc4b991aac7
image: library/redis
image: docker.io/library/redis
image: my_private.registry:5000/redis

搭建一个web站点:
先创建一个临时的工作目录,因为docker-compose中有一个参数,叫project,如果不指定目录名称,默认会使用配置文件所在的目录作为项目的名称,然后在这个目录下创建配置文件,并进行编辑

在这里插入图片描述

使用docker compose up 解析docker-compose文件,然后将所有的服务启动

在这里插入图片描述

检测对应的网路和容器是否存在

在这里插入图片描述

也可以用docker compose ps查看相关信息

在这里插入图片描述

使用命令docker compose down进行销毁,容器和网络都会销毁

在这里插入图片描述

command
覆盖容器启动的默认命令

command: ["bundle", "exec", "thin", "-p", "3000"]
command: bundle exec thin -p 3000

通过compose命令启动文件,再查看这个容器的启动命令

在这里插入图片描述

docker inspect project1-web-1

在这里插入图片描述

拷贝project1,再到project2中的compose文件加上command参数

在这里插入图片描述

在这里插入图片描述

启动容器,再查看容器的启动命令,此时它已经被改了

在这里插入图片描述

在这里插入图片描述

使用curl命令,访问本地地址

在这里插入图片描述

这里出错的原因就是,改了nginx的启动命令,nginx其实并没有启动

entrypoint
覆盖容器默认的 entrypoint

entrypoint: /code/entrypoint.sh

也可以是以下格式:

entrypoint:
  - php
  - -d
  - zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
  - -d
  - memory_limit=-1
  - vendor/bin/phpunit

拷贝project1,再到project2中的compose文件加上entrypoint参数,再启动

在这里插入图片描述

查看entrypoint

docker inspect project3-web-1

在这里插入图片描述

entrypoint也会把启动命令更改
在这里插入图片描述

environment
添加环境变量。您可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保 YML 解析器不会将其转换为 True 或 False

#map 语法
environment:
  RACK_ENV: development
  SHOW: "true"
  USER_INPUT:
#数组语法
environment:
  - RACK_ENV=development
  - SHOW=true
  - USER_INPUT

修改compose文件,启动容器

在这里插入图片描述

查看对应的Env

在这里插入图片描述

networks
指定容器运行的网络

配置容器网络

services:
  frontend:
    image: awesome/webapp
    networks:
      - front-tier
      - back-tier
      
  monitoring:
    image: awesome/monitoring
    networks:
      - admin
      
  backend:
    image: awesome/backend
    networks:
    back-tier:
    aliases:
      - database
    admin:
      aliases:
        - mysql

networks:
  front-tier:
  back-tier:
  admin:

配置网络驱动和子网信息

services:
  frontend:
    image: awesome/webapp
    networks:
    front-tier:
    ipv4_address: 172.16.238.10
  
networks:
  front-tier:
  ipam:
  driver: default

配置网络

在这里插入图片描述

使用docker compose config 命令,如果正常打印信息,则说明语法没问题

在这里插入图片描述

运行容器

在这里插入图片描述

volumes
将主机的数据卷或者文件挂载到容器里

#短语法
services:
  db:
    image: postgres:latest
    volumes:
      - "/localhost/postgres.sock:/var/run/postgres/postgres.sock"
      - "/localhost/data:/var/lib/postgresql/data"

#完整语法
services:
  backend:
    image: awesome/backend
    volumes:
      - type: volume
        #命名卷
        source: db-data
        target: /data
        volume:
          nocopy: true
     #绑定卷
     - type: bind
       source: /var/run/postgres/postgres.sock
       target: /var/run/postgres/postgres.sock
  
volumes:
  db-data:

拷贝project1,再到project5中的compose文件加上volumes参数,再启动,查看容器的卷信息

在这里插入图片描述

在这里插入图片描述

ports
指定端口映射。以下格式都可以:

#完整语法
ports:
  - target: 80
    host_ip: 127.0.0.1
    published: 8080
    protocol: tcp
    mode: host
    
  - target: 80
    host_ip: 127.0.0.1
    published: 8000-9000
    protocol: tcp
    mode: host

#短语法
ports:
  - "3000"
  - "3000-3005"
  - "8000:8000"
  - "9090-9091:8080-8081"
  - "49100:22"
  - "127.0.0.1:8001:8001"
  - "127.0.0.1:5000-5010:5000-5010"
  - "6060:6060/udp"

拷贝project1,再到project6中的compose文件加上ports参数,再启动

在这里插入图片描述

expose
暴露端口,但不映射到宿主机,只被连接的服务访问
仅可以指定内部端口为参数:

expose:
  - "3000"
  - "8000"

拷贝project1,再到project5中的compose文件加上expose参数,再启动

在这里插入图片描述

进入容器,使用curl命令,此时能访问到nginx的页面

在这里插入图片描述

build
指定为构建镜像上下文路径
例如 webapp 服务,指定为从上下文路径 ./dir/Dockerfile 所构建的镜像:

version: "3.7"
services:
  webapp:
  build: ./dir

或者,作为具有在上下文指定的路径的对象,以及可选的 Dockerfile 和 args:

version: "3.7"
services:
  webapp:
    build:
    context: ./dir
    dockerfile: Dockerfile-alternate
 args:
   buildno: 1
 labels:
   - "com.example.description=Accounting webapp"
   - "com.example.department=Finance"
   - "com.example.label-with-empty-value"

context:上下文路径
dockerfile:指定构建镜像的 Dockerfile 文件名
args:添加构建参数,这是只能在构建过程中访问的环境变量
labels:设置构建镜像的标签

depends_on
设置依赖关系
docker compose up :以依赖性顺序启动服务。在以下示例中,先启动 db 和redis ,才会启动 web
docker compose up SERVICE :自动包含 SERVICE 的依赖项。在以下示例中,docker compose up web 还将创建并启动 db 和 redis
docker compose stop :按依赖关系顺序停止服务。在以下示例中,web 在 db 和redis 之前停止

version: "3.8"
services:
  web:
    build: .
    depends_on:
     - db
     - redis
  redis:
    image: redis
  db:
    image: postgres

可以指定条件,healthy 需要配置 healthcheck 来完成

services:
  web:
  build: .
  depends_on:
    db:
      condition: service_healthy
    redis:
      condition: service_started
  redis:
    image: redis
  db:
    image: postgres

health check 样例

version: "3.8"
services:
  web:
    image: nginx:1.24.0
    environment:
      TEST: 1
    depends_on:
      mysql:
        condition: service_healthy 
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: fl@123  #设置密码
    healthcheck:
      test: mysql -uroot -pfl@123 -e "select 1;"
      interval: 10s  #间隔10s
      timeout: 5s    #超时时间5s
      retries: 10    #重试10次

拷贝project1,再到project7中的修改compose文件的参数

在这里插入图片描述

启动容器

在这里插入图片描述

停止容器

在这里插入图片描述

env_file
从文件添加环境变量。可以是单个值或列表的多个值

env_file: .env

也可以是列表格式:

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

拷贝project1,再到project8中的compose文件加上env_file,并配置对应的文件

在这里插入图片描述

启动容器,进入容器,查看对应的环境变量

在这里插入图片描述

6、Docker Compose 命令清单

官网参考地址:官方网站

命令清单如下:

命令功能
docker compose build构建服务
docker compose config规范的格式来显示服务配置
docker compose cp在本地系统和服务容器直接拷贝文件
docker compose create创建服务的容器
docker compose down停止所有容器,并删除容器
docker compose events从服务器获取实时事件
docker compose exec在容器中执行命令
docker compose images列出所有容器使用的镜像
docker compose kill强制停止服务的容器
docker compose logs显示日志
docker compose ls显示所有项目
docker compose pause暂停服务
docker compose port列出所有的端口映射
docker compose ps该命令可以列出项目中目前的所有容器
docker compose pull拉取服务镜像
docker compose push推送服务镜像
docker compose restart重启或者重启某个服务
docker compose rm删除服务停止的容器
docker compose run在指定服务容器上执行相关的命令
docker compose start启动当前停止的某个容器
docker compose stop停止当前运行的某个容器
docker compose top显示运行的进程
docker compose unpause恢复服务
docker compose upup 命令会构建,(重新)创建,启动,链接一个服务相关的容器。默认情况下如果容器已经存在,将会停止并尝试重新创建他们。并使用之前挂载的卷。 --no-recreate 参数可以让容器不被停止或者重新创建,-d 表示后台运行
docker compose version查看版本

命令格式:
对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响

docker-compose 命令的基本的使用格式为:

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

常见选项说明:
-f, --file 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定
-p, --project-name 指定项目名称,默认将使用所在目录名称作为项目名

在这里插入图片描述

常见命令说明
up
该命令的作用十分强大,它会尝试自动完成包括构建镜像、(重新)创建服务、启动服务并关联服务相关容器的一系列操作,可以直接通过该命令来启动一个项目

docker compose up [options] [SERVICE...]

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

前台运行容器,相关信息会被打印出来,按下ctrl+c,则停止容器

在这里插入图片描述

使用 --force-recreate 强制重新创建容器

在这里插入图片描述

使用 --no-recreate,如果容器已经存在了,则不重新创建

在这里插入图片描述

注意:--force-recreate 和 --no-recreate 不能一起使用

down
停止所有容器,并删除容器和网络,不会删除卷

docker compose down [options] [SERVICE...]

-v, --volumes 删除容器同时删除目录映射(删除的是docker管理的卷,也就是容器的,而不是宿主机的)

run
该命令可以在指定服务容器上执行相关的命令

# 例如:启动一个 ubuntu 服务容器,并执行 ping docker.com 命令
# docker compose run ubuntu ping docker.com
docker compose run [options] SERVICE [COMMAND] [ARGS...]

-d 后台运行容器
- -name NAME 为容器指定一个名字
- -entrypoint CMD 覆盖默认的容器启动指令
-e KEY=VAL 设置环境变量值,可多次使用选项来设置多个环境变量
-u, --user=“” 指定运行容器的用户名或者 uid
- -rm 运行命令后自动删除容器
-p, --publish=[] 映射容器端口到本地主机

启动一个nginx服务容器,并执行 curl www.baidu.com 命令

docker compose run --name mynginx721 web curl www.baidu.com

在这里插入图片描述

7、操作案例

先启动mysql和redis服务,然后再启动nginx站点

在这里插入图片描述

第一步:构建对应的拓扑关系,编辑docker-compose.yml文件

version: "3.8"
services:
  web:
    image: nginx:1.21.3
    environment:
      TEST: 1
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_healthy

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: fl@123
    healthcheck:
      test: mysql -u root -pfl@123
      interval: 10s
      timeout: 5s
      retries: 10
  redis:
    image: redis:7
    healthcheck:
      test: redis-cli ping
      interval: 10s
      timeout: 5s
      retries: 10

通过docker compose config检测语法是否有误,如果有误,则会输出提示,如果无误,也会有对应的信息输出

在这里插入图片描述

第二步:配置网络、首页及存储卷
再次编辑docker-compose.yml文件

version: "3.8"
services:
  web:
    image: nginx:1.21.3
    environment:
      TEST: 1
    ports:
      - 6379:80
    networks:
      - mytestnetwork
    volumes:
      - ./nginxhome:/usr/share/nginx/html
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_healthy

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: fl@123
    volumes:
      - ./mysqllib:/var/lib/mysql
    networks:
      - mytestnetwork
    healthcheck:
      test: mysql -u root -pfl@123
      interval: 10s
      timeout: 5s
      retries: 10
  redis:
    image: redis:7
    networks:
      - mytestnetwork
    healthcheck:
      test: redis-cli ping
      interval: 10s
      timeout: 5s
      retries: 10

networks:
  mytestnetwork:

通过docker compose config检测语法是否有误,确保通过

配置nginx首页

在这里插入图片描述

第三步:服务启动

docker compose up -d

在这里插入图片描述
通过浏览器访问,查看nginx站点是否启动成功

在这里插入图片描述

查看mysqllib,已经将数据全都放在这个目录下了

在这里插入图片描述

第四步:资源清理

docker compose down

在这里插入图片描述

宿主机的资源是不会被清理的

在这里插入图片描述

8、Docker Compose 部署 WordPress

什么是 WordPress?

WordPress 是使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站。也可以把 WordPress 当作一个内容管理系统(CMS)来使用

WordPress 是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP 语言和 MySQL 数据库开发的,用户可以在支持 PHP 和 MySQL 数据库的服务器上使用自己的博客

WordPress 有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用 HTML 代码、CSS、PHP 等相关知识

WordPress 官方支持中文版,同时有爱好者开发的第三方中文语言包,如 wopus 中文语言包。WordPress 拥有成千上万个各式插件和不计其数的主题模板样式

第一步:编写 Docker Compose

version: "3.8"
services:
  wordpress:
    image: wordpress
    restart: always
    depends_on:
      db:
        condition: service_healthy
    ports:
      - 6379:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: mywordpressuser
      WORDPRESS_DB_PASSWORD: mywordpresspass
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wordpress/:/var/www/html
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
      MYSQL_USER: mywordpressuser
      MYSQL_PASSWORD: mywordpresspass
    volumes:
      - ./mysqlvarlib/:/val/lib/mysql
    healthcheck:
      test: mysql -u root -proot -e "select 1;"
      interval: 10s
      timeout: 5s
      retries: 10

使用命令docker compose config检查,确保通过

第二步:wordpress启动和安装

docker compose up -d

在这里插入图片描述
因为我这里是第一次拉取wordpress镜像,所以花了这么久的时间

在这里插入图片描述

浏览器直接访问wordpress的首页,如果没安装过wordpress,就会进入对应的安装页面

在这里插入图片描述

安装完成后,进行登录

在这里插入图片描述

随便写一篇文章,仅用于测试

在这里插入图片描述

所有功能都没问题

9、常见问题

问题一:up、run 和 start 之间有什么区别?

通常,你想要 docker compose up. 用于 up 启动或重新启动 docker-compose.yml。在默认的“附加”模式下,会看到来自所有容器的所有日志。在“分离”模式 ( -d) 中,启动容器后 Compose 退出,但容器继续在后台运行

该 docker compose run 命令用于运行“一次性”或“临时”任务。它需要您要运行的服务名称,并且只为正在运行的服务所依赖的服务启动容器。用于 run 运行测试或执行管理任务,例如从数据卷容器中删除或添加数据。该 run 命令的作用类似于 docker run -ti 它打开容器的交互式终端并返回与容器中进程的退出状态匹配的退出状态

docker compose start 命令仅对重新启动先前创建但已停止的容器有用。它从不创建新容器

问题二:如何在同一主机上运行 Compose 文件的多个副本?

Compose 使用项目名称为项目的所有容器和其他资源创建唯一标识符。要运行项目的多个副本,请使用-p 命令行选项 或 COMPOSE_PROJECT_NAME 环境变量设置自定义项目名称

问题三:可以控制服务启动顺序吗?

可以控制启动顺序,通过依赖指定(depends_on),并且可以配合 healthcheck 等健康检查成功以后再启动

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

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

相关文章

Postgresql数据类型-数据类型转换

PostgreSQL数据类型转换主要有三种方式:通过格式化函数、CAST函数、::操作符,下面分别介绍。 通过格式化函数进行转换 PostgreSQL提供一系列函数用于数据类型转换,如表所示。 通过CAST函数进行转换将varchar字符类型转换成text类型&#xf…

【excel技巧】如何取消excel隐藏?

Excel工作表中的行列隐藏了数据,如何取消隐藏行列呢?今天分享几个方法给大家 方法一: 选中隐藏的区域,点击右键,选择【取消隐藏】就可以了 方法二: 如果工作表中有多个地方有隐藏的话,还是建…

使用select实现定时任务

selectOutOfTime.c里边的代码如下&#xff1a; #include<stdio.h> #include<sys/time.h> #include<sys/types.h> #include<unistd.h> #include <string.h>#define BUF_SIZE 100int main(void){fd_set reads;struct timeval tv;int errorNum;cha…

Elasticsearch7 入门 进阶

1、全文检索 1.1、数据分类 按数据分类的话&#xff0c;主要可以分为以下三类&#xff1a; 结构化数据&#xff1a;固定格式、有限长度&#xff0c;比如mysql存的数据非结构化数据&#xff1a;不定长、无固定格式&#xff0c;比如邮件、Word文档、日志等半结构化数据&#xf…

超详细!必看!!STM32--系统滴答SysTick

一、SysTick是什么&#xff1f; Systick定时器是一个24bit的倒计时&#xff08;向下计数&#xff09;定时器&#xff0c;功能就是实现简单的延时。 SysTick 是一种系统定时器&#xff0c;通常在嵌入式系统中使用。它是 ARM Cortex-M 处理器的一个特殊定时器&#xff0c;用于提…

Kvaser CAN硬件在Top Dutch Solar的遥测系统中发挥重要作用

Top Dutch Solar Racing&#xff08;荷兰顶级太阳能赛车队&#xff09;是2023年Bridgestone World Solar Challenge&#xff08;普利司通世界太阳能挑战赛&#xff09;的参赛车队之一&#xff0c;其赛车上搭载的Kvaser Ethercan HS是为基于Wifi的实时遥测系统捐赠的。Kvaser Me…

读写分离(基于mycat)和全同步复制

一、mycat实现读写分离&#xff08;VIP机制&#xff09; &#xff08;一&#xff09;配置主从复制 &#xff08;二&#xff09;部署mycat 1、安装Java 2、下载mycat安装包 3、解压mycat包 4、设置变量环境 5、启动mycat &#xff08;三&#xff09;客户端连接数据库 1、安装…

初冬喜事:星融元成都办事处开业啦!

立冬过去不久&#xff0c;我国大部分地区气温就随双十一打了五折。寒冬时分吃火锅温暖身心&#xff0c;红火的锅底也为生活增添不少喜气&#xff0c;今天就有一桩喜事——星融元成都办事处开业啦&#xff01; 星融元成都办事处位于成都市高新区锦城大道666号奥克斯广场C座2007…

【LeetCode】挑战100天 Day11(热题+面试经典150题)

【LeetCode】挑战100天 Day11&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-132.1 题目2.2 题解 三、面试经典 150 题-133.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…

9种高效提速的transformer魔改版本

Transformer目前已经成为人工智能领域的主流模型&#xff0c;应用非常广泛。然而Transformer中注意力机制计算代价较高&#xff0c;随着序列长度的增加&#xff0c;这个计算量还会持续上升。 为了解决这个问题&#xff0c;业内出现了许多Transformer的魔改工作&#xff0c;以优…

(.htaccess文件特性)[MRCTF2020]你传你呢 1

题目环境&#xff1a; 不难看出是一道文件上传漏洞 上传一句话木马文件burpsuite进行抓包<?php eval($_POST[shell]);?> 命名为PHP文件格式 Repeater进行重放 尝试了其它后缀进行绕过都没有成功 通过 application/x-php内容类型&#xff0c;可以看出被识别出是PHP文件&…

【C++】类和对象(3)--初始化列表(再谈构造函数)

目录 一 引入 二 初始化列表概念 三 初始化列表特性 1 引用和const 2 混合使用 3 自定义成员情况 四 初始化列表中的初始化顺序 五 总结 一 引入 构造函数体赋值 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} priv…

TSINGSEE青犀视频平台EasyCVR自定义可视化页面一览

视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#xff0c;也能支…

数据结构—队列的实现

前言&#xff1a;上次我们已经学习了数据结构中一个重要的线性表—栈&#xff0c;那么我们这一次就来学习另外一个重要的线性表—队列。 目录&#xff1a; 一、 队列的概念 二、 队列的实现&#xff1a; 1.队列的创建 三、 队列的操作 1.初始化队列 2.队尾入队列 3.队头出队列…

KOSMOS-G-图像文本结合控制生成

文章目录 摘要引言算法多模态语言建模图像解码器对齐微调instruction 实验结论 论文&#xff1a; 《Kosmos-G: Generating Images in Context with Multimodal Large Language Models》 github&#xff1a; https://github.com/microsoft/unilm/tree/master/kosmos-g 摘要 当…

朋友过生日送什么葡萄酒好呢

现在葡萄酒不但是活跃气氛、制造仪式感的酒精饮品&#xff0c;也是朋友之间礼尚往来的最佳礼品。有人问&#xff0c;朋友过生日送什么葡萄酒好呢&#xff1f;云仓酒庄的品牌雷盛红酒LEESON分享人们觉得红葡萄似乎太严肃&#xff0c;白葡萄酒颜色又太清淡&#xff0c;送一款什么…

pip安装到哪里

可以这样证明&#xff1a;

《QT从基础到进阶·二十六》绘制多个图形项(QGraphicsRectItem,QGraphicsLineItem,QGraphicsPolygonItem)

这个demo用QT实现了对多个图形项的绘制&#xff0c;包括矩形的绘制&#xff0c;直线的绘制和多边形的绘制&#xff0c;是之前一章中绘制矩形的增强版&#xff0c;之前一章节关于矩形的绘制可以参考&#xff1a;《QT从基础到进阶十五》用鼠标绘制矩形&#xff08;QGraphicsView、…

远程登录Linux方法(Linux平台相互远程;Windows远程登录Linux、远程编码、文件传输;无法远程登录的问题解决;c程序的编译)

在实际使用Linux系统过程中我们不可避免的需要远程登录Linux&#xff0c;这是因为未来大家使用Linux服务器的时候你所对应的那台Linux服务器不一定提供界面(服务器可能在外地)。本篇将会介绍远程登录Linux的方法。 文章目录 1. SSH介绍2. Linux平台相互远程及文件传输2.1 Linux…

准备搞OpenStack了,先装一台最新的Ubuntu 23.10

正文共&#xff1a;1113 字 25 图&#xff0c;预估阅读时间&#xff1a;2 分钟 依稀记得前面发了一篇Ubuntu的安装文档&#xff08;66%的经验丰富开发者和69%的学生更喜欢的Ubuntu的安装初体验&#xff09;&#xff0c;当时安装的是20.04.3的版本&#xff0c;现在看来已经是非常…