Docker-compose管理工具的使用

华子目录

  • 容器编排工具docker compose
    • compose介绍
    • compose使用的三个步骤
    • docker-compose.yml文件案例
    • compose具有管理应用程序整个生命周期的命令
  • docker compose安装
    • 安装条件
    • 在Linux系统上安装compose
    • docker compose卸载
  • docker compose运用演示
    • 修改compose配置,添加存储卷
    • 测试存储卷
  • docker-compose其他命令
  • 实例2
  • docker与docker-compose的区别

容器编排工具docker compose

compose介绍

  • Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它使用yaml文件来配置应用程序的服务,然后使用一个命令,就可以启动并运行配置的所有服务。Docker Compose非常适合用于开发、测试和部署分布式应用,因为它可以管理容器的生命周期,使用单个命令就可以启动或停止多个容器。

compose使用的三个步骤

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

docker-compose.yml文件案例

version '2'
services:web:build:ports:- "5000:5000"volumes:- .:/coderedis:image: redis

compose具有管理应用程序整个生命周期的命令

  • 启动,停止和重建服务
  • 查看正在运行的服务的状态
  • 流式传输运行服务的日志输出
  • 在服务上运行一次性命令

docker compose安装

安装条件

  • docker compose依靠docker engine进行有意义的工作,因此请确保你已在本地或远程安装docker engine,具体取决于你的设置
  • 要以非root用户身份运行compose,请参考以非root用户身份管理docker
  • 安装系统
    • Linux
    • Mac
    • Windows
    • 备用安装选项(使用pip安装/安装为容器)

在Linux系统上安装compose

(1)下载安装

  • 在GitHub上,查询适合自己的版本https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-linux-x86_64
[root@server ~]# wget https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-linux-x86_64
[root@server ~]# mv   docker-compose-linux-x86_64   docker-compose
[root@server ~]# mv docker-compose /usr/local/bin/
[root@server ~]# chmod +x /usr/local/bin/docker-compose
[root@server ~]# docker-compose version  
Docker Compose version v2.26.0   #显示安装成功
  • 通过pip安装
[root@server ~]# yum install epel-release -y #安装pip需要先安装epel-release包
[root@server ~]# yum install -y python-pip   #安装pip
[root@server ~]# pip install --upgrade pip  #升级pip
[root@server ~]# pip install docker-compose  #安装docker-compose

(1)添加执行权限

[root@server ~]# chmod +x /usr/bin/docker-compose

(2)查看版本

[root@server ~]# docker-compose --version   #查看docker-compose版本

docker compose卸载

(1)正常系统安装卸载

[root@server ~]# rm -vf /usr/local/bin/docker-compose

(2)pip安装卸载

[root@server ~]# pip uninstall docker-compose

docker compose运用演示

  • 创建compose工作目录
[root@server ~]# mkdir compose-test
[root@server ~]# cd compose-test/
  • 创建一个app.py文件,后面在项目目录中调用文件
[root@server compose-test]# vim app.py
import time
import redis
from flask import Flaskapp = Flask(__name__)
cache = redis.Redis(host='redis',port=6379)def get_hit_count():retries = 5while True:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:if retries == 0:raise excretries -= 1time.sleep(0.5)@app.route('/')
def hello():count = get_hit_count()return 'Hello world! I have been seen {} times.\n'.format(count)if __name__ == "__main__":app.run(host="0.0.0.0",debug=True)

注:redis是应用程序网络上redis容器的主机名,我们使用redis的默认端口是6379

  • 创建requirements.txt项目目录中调用的另一个文件
[root@server compose-test]# vim requirements.txt
flask
redis
  • 在compose-test目录中创建dockerfile文本
[root@server compose-test]# vim Dockerfile
FROM python:3.7
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask","run"]

注:

- 从python3.7映射开始构建镜像
- 将工作目录设置为/code
- 设置flask命令使用的环境变量
- 复制requirements.txt并安装python依赖项
- 安装python依赖项
- 将.项目中的当前目录复制到.镜像中的工作目录
- 将容器的默认命令设置为flask run
  • 创建docker-compose.yml项目目录中调用的文件
[root@server compose-test]# vim docker-compose.yml
version: '3'
services:web:build: .ports:- "5000:5000"redis:image: "redis:alpine"
此compose文件定义了两个服务,web和redis,该web服务:- 使用build指定构建上下文路径,"."表示利用当前目录中的dockerfile构建应用镜像- 将容器上的公开端口5000转发到主机上的端口5000,我们使用Flask Web服务器的默认端口5000- 如果本地不存在该镜像,compose将尝试拉取Redis镜像
  • 使用compose构建并运行你的应用程序
  • 在项目目录中,启动应用程序docker-compose up
    • 构建之前可以先将python:3.7和redis:alpine拉取到本地
[root@server compose-test]# docker pull python:3.7
3.7: Pulling from library/python
0e29546d541c: Pull complete
9b829c73b52b: Pull complete
cb5b7ae36172: Pull complete
6494e4811622: Pull complete
6f9f74896dfa: Pull complete
fcb6d5f7c986: Pull complete
7a72d131c196: Pull complete
c4221d178521: Pull complete
71d5c5b5a91f: Pull complete
Digest: sha256:d9abbc0737ff8d23a546859c85903f1b8235a1495a405d5a47cbc55747f27b20
Status: Downloaded newer image for python:3.7
docker.io/library/python:3.7
[root@server compose-test]# docker pull redis:alpine
alpine: Pulling from library/redis
59bf1c3509f3: Pull complete
719adce26c52: Pull complete
b8f35e378c31: Pull complete
d034517f789c: Pull complete
3772d4d76753: Pull complete
211a7f52febb: Pull complete
Digest: sha256:4bed291aa5efb9f0d77b76ff7d4ab71eee410962965d052552db1fb80576431d
Status: Downloaded newer image for redis:alpine
docker.io/library/redis:alpine
[root@server compose-test]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
python       3.7       ad37de9b03ef   2 years ago   903MB
mysql        latest    3218b38490ce   2 years ago   516MB
redis        alpine    3900abf41552   2 years ago   32.4MB
ubuntu       latest    ba6acccedd29   2 years ago   72.8MB
 [root@server compose-test]# docker-compose up -d  #-d后台运行该服务
WARN[0000] /root/compose-test/docker-compose.yml: `version` is obsolete
[+] Building 22.1s (10/10) FINISHED                             docker:default=> [web internal] load build definition from Dockerfile                  0.0s=> => transferring dockerfile: 221B                                      0.0s=> [web internal] load metadata for docker.io/library/python:3.7         0.0s=> [web internal] load .dockerignore                                     0.0s=> => transferring context: 2B                                           0.0s=> [web 1/5] FROM docker.io/library/python:3.7                           0.0s=> [web internal] load build context                                     0.0s=> => transferring context: 319B                                         0.0s=> CACHED [web 2/5] WORKDIR /code                                        0.0s=> [web 3/5] COPY requirements.txt requirements.txt                      0.0s=> [web 4/5] RUN pip install -r requirements.txt                        21.5s=> [web 5/5] COPY . .                                                    0.1s=> [web] exporting to image                                              0.4s=> => exporting layers                                                   0.4s=> => writing image sha256:ab305846f0c5b6917a118d6ef17b001317d4a04c15d4  0.0s=> => naming to docker.io/library/compose-test-web                       0.0s
[+] Running 3/3✔ Network compose-test_default    Crea...                                0.2s✔ Container compose-test-redis-1  St...                                  0.2s✔ Container compose-test-web-1    Star...                                0.1s
  • 浏览器查询http://192.168.80.132:5000,进行验证
    在这里插入图片描述
  • 刷新页面,数字增加
    在这里插入图片描述
  • 另开一个终端,查看镜像和容器验证
[root@server ~]# docker images
REPOSITORY         TAG       IMAGE ID       CREATED          SIZE
compose-test-web   latest    ab305846f0c5   17 minutes ago   916MB
python             3.7       ad37de9b03ef   2 years ago      903MB
mysql              latest    3218b38490ce   2 years ago      516MB
redis              alpine    3900abf41552   2 years ago      32.4MB
ubuntu             latest    ba6acccedd29   2 years ago      72.8MB[root@server ~]# docker ps -a
CONTAINER ID   IMAGE              COMMAND                   CREATED          STATUS                        PORTS                                                  NAMES
6d70bdd98730   redis:alpine       "docker-entrypoint.s…"   19 minutes ago   Up 19 minutes                 6379/tcp                                               compose-test-redis-1
1b02950d60cd   compose-test-web   "flask run"               19 minutes ago   Up 19 minutes                 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp              compose-test-web-1
ea6beb680b7a   mysql:latest       "docker-entrypoint.s…"   20 hours ago     Exited (255) 32 minutes ago   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql
871fe7e0e9a3   ubuntu:latest      "bash"                    21 hours ago     Exited (255) 32 minutes ago                                                          ubuntu
  • 关闭服务

在新开的终端docker-compose down,或者在启动应用程序的原始终端中按Ctrl+C来停止应用程序

修改compose配置,添加存储卷

[root@server compose-test]# vim docker-compose.yml
version: '3'
services:web:build: .ports:- "5000:5000"volumes:- .:/coderedis:image: "redis:alpine"
注:将主机的数据卷挂载到容器里

测试存储卷

  • 重新启动compose
[root@server compose-test]# docker-compose up
WARN[0000] /root/compose-test/docker-compose.yml: `version` is obsolete
[+] Running 1/0⠋ Container compose-test-web-1    Recreated                                                                                                                                     0.1s✔ Container compose-test-redis-1  Created                                                                                                                                       0.0s
Attaching to redis-1, web-1
redis-1  | 1:C 31 Mar 2024 07:04:14.920 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis-1  | 1:C 31 Mar 2024 07:04:14.935 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
redis-1  | 1:C 31 Mar 2024 07:04:14.935 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis-1  | 1:M 31 Mar 2024 07:04:14.940 * monotonic clock: POSIX clock_gettime
redis-1  | 1:M 31 Mar 2024 07:04:14.941 * Running mode=standalone, port=6379.
redis-1  | 1:M 31 Mar 2024 07:04:14.941 # Server initialized
redis-1  | 1:M 31 Mar 2024 07:04:14.941 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis-1  | 1:M 31 Mar 2024 07:04:14.941 * Loading RDB produced by version 6.2.6
redis-1  | 1:M 31 Mar 2024 07:04:14.941 * RDB age 236 seconds
redis-1  | 1:M 31 Mar 2024 07:04:14.941 * RDB memory usage when created 0.77 Mb
redis-1  | 1:M 31 Mar 2024 07:04:14.941 # Done loading RDB, keys loaded: 0, keys expired: 0.
redis-1  | 1:M 31 Mar 2024 07:04:14.941 * DB loaded from disk: 0.000 seconds
redis-1  | 1:M 31 Mar 2024 07:04:14.941 * Ready to accept connections
web-1    |  * Serving Flask app 'app.py'
web-1    |  * Debug mode: off
web-1    | WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
web-1    |  * Running on all addresses (0.0.0.0)
web-1    |  * Running on http://127.0.0.1:5000
web-1    |  * Running on http://172.19.0.3:5000
web-1    | Press CTRL+C to quit
  • 在宿主机的存储卷上,修改代码
[root@server compose-test]# vim app.py
import time
import redis
from flask import Flaskapp = Flask(__name__)
cache = redis.Redis(host='redis',port=6379)def get_hit_count():retries = 5while True:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:if retries == 0:raise excretries -= 1time.sleep(0.5)@app.route('/')
def hello():count = get_hit_count()return 'Hello world! I am along! I have been seen {} times.\n'.format(count)if __name__ == "__main__":app.run(host="0.0.0.0",debug=True)

重新启动

[root@server compose-test]# docker-compose up
  • 在浏览器上刷新,验证成功
    在这里插入图片描述

docker-compose其他命令

  • 在后台运行服务,(-d)
[root@server compose-test]# docker-compose up -d
  • 使用docker-compose ps查看当前正在运行的内容
[root@server compose-test]# docker-compose ps
WARN[0000] /root/compose-test/docker-compose.yml: `version` is obsolete
NAME                   IMAGE              COMMAND                   SERVICE   CREATED          STATUS         PORTS
compose-test-redis-1   redis:alpine       "docker-entrypoint.s…"   redis     12 minutes ago   Up 3 minutes   6379/tcp
compose-test-web-1     compose-test-web   "flask run"               web       7 minutes ago    Up 3 minutes   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp
  • docker-compose run命令允许你为服务运行一次性命令。例如:要查看web服务可用的环境变量
[root@server compose-test]# docker-compose run web env
WARN[0000] /root/compose-test/docker-compose.yml: `version` is obsolete
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=ccc93be20d0c
TERM=xterm
LANG=C.UTF-8
GPG_KEY=0D96DF4D4110E5C43FBFB17F2D347EA6AA65421D
PYTHON_VERSION=3.7.12
PYTHON_PIP_VERSION=21.2.4
PYTHON_SETUPTOOLS_VERSION=57.5.0
PYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/3cb8888cc2869620f57d5d2da64da38f516078c7/public/get-pip.py
PYTHON_GET_PIP_SHA256=c518250e91a70d7b20cceb15272209a4ded2a0c263ae5776f129e0d9b5674309
FLASK_APP=app.py
FLASK_RUN_HOST=0.0.0.0
HOME=/root
  • 停止服务
[root@server compose-test]# docker-compose stop
WARN[0000] /root/compose-test/docker-compose.yml: `version` is obsolete
[+] Stopping 2/2✔ Container compose-test-redis-1  Stopped                                                                                                                                       0.3s✔ Container compose-test-web-1    Stopped                                                                                                                                      10.4s
  • 使用down命令完全删除容器,加--volumes参数还可以删除redis容器使用的数据卷
[root@server compose-test]# docker-compose down --volumes
WARN[0000] /root/compose-test/docker-compose.yml: `version` is obsolete
[+] Running 3/3✔ Container compose-test-web-1    Removed                                                                                                                                       0.0s✔ Container compose-test-redis-1  Removed                                                                                                                                       0.0s✔ Network compose-test_default    Removed                                                                                                                                       0.2s
[root@server ~]# docker-compose --helpUsage:  docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--ansi string                Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")--compatibility              Run compose in backward compatibility mode--dry-run                    Execute command in dry run mode--env-file stringArray       Specify an alternate environment file-f, --file stringArray           Compose configuration files--parallel int               Control max parallelism, -1 for unlimited (default -1)--profile stringArray        Specify a profile to enable--progress string            Set type of progress output (auto, tty, plain, quiet) (default "auto")--project-directory string   Specify an alternate working directory(default: the path of the, first specified, Compose file)-p, --project-name string        Project nameCommands:attach      Attach local standard input, output, and error streams to a service's running containerbuild       Build or rebuild servicesconfig      Parse, resolve and render compose file in canonical formatcp          Copy files/folders between a service container and the local filesystemcreate      Creates containers for a servicedown        Stop and remove containers, networksevents      Receive real time events from containersexec        Execute a command in a running containerimages      List images used by the created containerskill        Force stop service containerslogs        View output from containersls          List running compose projectspause       Pause servicesport        Print the public port for a port bindingps          List containerspull        Pull service imagespush        Push service imagesrestart     Restart service containersrm          Removes stopped service containersrun         Run a one-off command on a servicescale       Scale servicesstart       Start servicesstats       Display a live stream of container(s) resource usage statisticsstop        Stop servicestop         Display the running processesunpause     Unpause servicesup          Create and start containersversion     Show the Docker Compose version informationwait        Block until the first service container stopswatch       Watch build context for service and rebuild/refresh containers when files are updatedRun 'docker compose COMMAND --help' for more information on a command.

实例2

以下是一个简单的Docker Compose实例,用于部署一个基于Nginx的Web应用程序:

首先,你需要创建一个docker-compose.yml文件,该文件定义了应用程序的服务以及每个服务的配置。在这个例子中,我们将定义一个名为web的服务,该服务使用Nginx镜像:

version: '3'
services:web:image: nginxports:- "8080:80"volumes:- ./nginx.conf:/etc/nginx/nginx.conf

在这个配置中:

  • version: '3'指定了Docker Compose文件的版本。
  • services下面定义了我们的服务,这里只有一个名为web的服务。
  • image: nginx指定了服务使用的Docker镜像,这里是Nginx。
  • ports将主机的8080端口映射到容器的80端口,这样我们就可以通过访问主机的8080端口来访问Nginx服务。
  • volumes将当前目录下的nginx.conf文件挂载到容器的/etc/nginx/nginx.conf路径,这样我们就可以自定义Nginx的配置。

接下来,你需要创建一个自定义的Nginx配置文件nginx.conf,例如:

server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html index.htm;try_files $uri $uri/ /index.html;}
}

这个配置定义了一个监听80端口的服务器,并将请求映射到容器的/usr/share/nginx/html目录。try_files指令用于处理单页面应用(SPA)中的路由问题。

现在,你可以将你的Web应用文件(例如index.html)放在与docker-compose.ymlnginx.conf相同的目录中。

最后,运行以下命令来启动你的Web应用程序:

docker-compose up -d

-d参数表示在后台运行容器。运行此命令后,Docker Compose将构建并启动Nginx容器,并将你的Web应用文件作为Nginx的根目录。你现在可以通过访问http://localhost:8080来查看你的Web应用程序。

当你需要停止并删除容器时,可以使用以下命令:

docker-compose down

docker与docker-compose的区别

Docker与Docker Compose的主要区别体现在它们的功能和用途上。

  • Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖打包到一个可移植的容器中,然后发布到任何流行的Linux机器上,实现虚拟化。每个容器之间完全隔离,有自己的文件系统,进程不会相互影响,能区分计算资源。这种容器化技术解决了运行环境和配置问题,方便进行持续集成并有助于整体发布。通过Docker,用户可以快速地交付、测试和部署软件,同时大大减少了编写代码和在生产环境中运行代码的延迟。

  • Docker Compose则是一个用于定义和运行多个容器Docker应用程序的工具。它使用YAML文件来配置应用程序的服务,用户只需通过一个命令,就可以从YAML文件配置中创建并启动所有容器服务。这使得管理、运行和扩展多容器Docker应用程序变得更加简单和高效通过Docker Compose,用户可以定义多个容器之间的调用关系,同时启动或关闭这些容器,而无需手动一个个创建和运行。

  • 总的来说,Docker主要用于单个容器的管理,而Docker Compose则主要用于定义和运行多个容器的Docker应用程序。它们共同构成了Docker生态系统的重要部分,使得应用程序的部署和管理变得更加便捷和高效。

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

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

相关文章

【手册】——mq延迟队列

目录 一、背景介绍二、思路&方案三、过程1.项目为啥用延迟队列?2.项目为啥用三方延迟队列?3.项目中为啥用rabbitmq延迟队列?4.rabbitmq延迟队列的安装5.rabbitmq的延迟队列配置方式5.1.exchange配置5.2.queues配置5.3.exchange和queues的…

初识C++ · 入门(2)

目录 1 引用 1.1引用的概念 1.2 引用的特性 2 传值,传引用的效率 3 引用和指针的区别 4 内联函数 4.1 内联函数的定义 4. 2 内联函数的特性 5 关键字auto 5.1关于命名的思考 5.2 关于auto的发展 5.3 auto使用规则 6 范围for的使用 7 空指针 1 引用 …

win10如何开启麦克风权限,win10麦克风权限设置

手机下载软件后,总是会跳出各种权限需要,例如访问通讯录、读取位置信息、启动相机等等。电脑上的应用也有这些权限设置,比如说玩游戏、直播、或录制视频时,我们需要打开麦克风权限,否则无法进行交流和录音。但是,win10如何开启麦克风权限呢?针对这个问题,小编已整理了两…

《自动机理论、语言和计算导论》阅读笔记:p115-p138

《自动机理论、语言和计算导论》学习第 6 天,p115-p138 总结,总计 24 页。 一、技术总结 1.associativity and comutativity (1)commutativity(交换性): Commutativity is the property of an operator that says we can switch the order of its ope…

比KMP简单的Manacher

P3805 【模板】manacher - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) “没时间悼念KMP了,接下来上场的是Manacher!” 什么是Manacher? 历史背景: 1975 年,一个叫 Manacher 的人发明了这个算法,所以叫Manacher 算…

财务管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssmvue等技术项目合集) 目录 1. …

02-JDK新特性-接口新特性

接口新特性 接口组成更新概述 接口的组成 常量 public static final String ZERO "0";抽象方法 public abstract void dance();默认方法(JAVA8新增) public default void dance(){}静态方法(JAVA8新增) public stat…

leecode 331 |验证二叉树的前序序列化 | gdb 调试找bug

计算的本质是数据的计算 数据的计算需要采用格式化的存储, 规则的数据结果,可以快速的按照指定要求存储数据 这里就不得不说二叉树了,二叉树应用场景真的很多 本题讲的是,验证二叉树的前序序列化 换言之,不采用建立树的…

Logback日志框架常见配置

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl logback简介 Logback是一个高性能、功能强大的日志框架,专为Java应用程序设计。它由Log4j的创始人Ceki Glc创建,并被视为Log4j的继承者和改进版。Lo…

3D Web轻量化平台HOOPS Web Platform在大型水利工程中的应用和价值

随着科技的不断进步和互联网的普及,数字化技术在各个领域的应用日益广泛,大型水利工程也不例外。作为一种先进的3D Web轻量化引擎,HOOPS Web Platform在大型水利工程中扮演着重要的角色,为工程设计、施工管理、运行维护等方面提供…

Ubuntu部署BOA服务器

BOA服务器概述 BOA是一款非常小巧的Web服务器,源代码开放、性能优秀、支持CGI通用网关接口技术,特别适合用在嵌入式系统中。 BOA服务器主要功能是在互联嵌入式设备之间进行信息交互,达到通用网络对嵌入式设备进行监控,并将反馈信…

Go的数据结构与实现【Binary Search Tree】

介绍 本文用Go将实现二叉搜索树数据结构,以及常见的一些方法 二叉树 二叉树是一种递归数据结构,其中每个节点最多可以有两个子节点。 二叉树的一种常见类型是二叉搜索树,其中每个节点的值都大于或等于左子树中的节点值,并且小…

Unbtun-arach64架构安装PySide2(python3.6)

aarch平台是无法通过pip安装PySide2的,同时利用源码下载一直报错 1. 我是python3.6.9,在官网上找到对应的PySide2版本 5.15.2.所以首先在官网下载Qt5.15.2的源码:https://download.qt.io/archive/qt/5.15/5.15.2/single/ 2. 编译qt环境 aar…

Seata(分布式事务实例环境搭建)

文章目录 1.基本介绍1.引出Seata2.问题分析 2.Seata的安装和配置1.解压到d盘2.修改D:\seata\conf\file.conf文件1.修改事务组2.修改日志存储模式为db3.修改数据库(MySQL5.7)连接信息4.创建seata数据库5.复制db_store.sql的内容,创建需要的表6…

Web实例_报表开发01-基于HTML进行报表呈现

Web实例_报表开发01-基于HTML进行报表呈现 报表开发是一种在利用了软件的基础上, 针对不同类型的报表, 进行开放的工作。 而以报表的方式, 将相关的内容、数值呈现出来的话, 则会起到更好的概况作用。 再加上, 报表开发工作是依托于计算机来完成的, 因此在效率、完整性等方面…

红酒:分类视角下的红酒品质评估与标准制定

在红酒的世界中,品质的评估与标准的制定对于维护消费者权益、促进行业健康发展具有重要意义。云仓酒庄雷盛红酒作为业界持续发展品牌,从分类的视角出发,对红酒品质进行了多方的评估,并积极参与制定相关的标准。 首先,从…

优思学院|工程经理应如何利用PDCA循环?

作为工程经理,理解PDCA(计划-执行-检查-行动)质量管理循环程序对于确保项目质量和持续改进是十分重要。 PDCA 最早由美国质量管理专家 Walter A. Shewhart (1939)提出,其后被戴明博士(Dr. Deming)所采用、…

【Linux】权限理解

权限理解 1. shell命令以及运行原理2. Linux权限的概念3. Linux权限管理3.1 文件访问者的分类(人)3.2 文件类型和访问权限(事物属性)3.2.1 文件类型3.2.2 基本权限 3.3 文件权限值的表示方法3.4 文件访问权限的相关设置方法3.4.1 …

基于energy score的out-of-distribution数据检测,LeCun都说好 | NerulPS 2020

论文提出用于out-of-distributions输入检测的energy-based方案,通过非概率的energy score区分in-distribution数据和out-of-distribution数据。不同于softmax置信度,energy score能够对齐输入数据的密度,提升OOD检测的准确率,对算…

【JAVA】java基础(分支结构)洛谷刷题(含图解:吃苹果)

题目: 解析 代码 import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner input new Scanner(System.in);int apple,time,rate; appleinput.nextInt(); rateinput.nextInt(); timeinpu…