Docker - 使用Docker Compose部署应用

2023-10-26

简介

Docker Compose是一个基于Docker Engine进行安装的Python工具。该工具使得用户可以在一个声明式的配置文件中定义一个多容器的应用,在Docker节点上,以单引擎模式(Single-Engine Mode)进行多容器应用的部署和生命周期的管理。

背景

Docker Compose的前身是Fig。Fig是一个由Orchard公司开发的强有力的工具,在内部实现上,Fig会解析YAML文件,并通过Docker API进行应用的部署和管理。

在2014年,Docker公司收购了Orchard公司,并将Fig更名为Docker Compose。命令行工具也从fig更名为docker-compose,并自此成为绑定在Docker引擎之上的外部工具。虽然它从未完全集成到Docker引擎中,但是仍然受到广泛关注并得到普遍使用。

安装与卸载

这里介绍在Linux上安装Docker Compose。

1、Docker Compose安装

官网安装介绍链接:https://docs.docker.com/compose/install/

按官网的介绍,我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/release

这里我安装的是1.29.0版本的

下载二进制包

sudo curl \
-L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose

为二进制包添加可执行权限

sudo chmod +x /usr/local/bin/docker-compose

测试

$ docker-compose --version
docker-compose version 1.29.0, build 07737305

2、Docker Compose卸载

sudo rm /usr/local/bin/docker-compose

3、Docker Compose安装命令行补全工具(非必须)

安装docker-compose命令行补全工具的前提需确保bash completion已安装了。

bash completion安装

yum install -y bash-completion 

docker-compose命令行补全工具安装

curl \
    -L https://raw.githubusercontent.com/docker/compose/1.29.0/contrib/completion/bash/docker-compose \
    -o /etc/bash_completion.d/docker-compose

重新打开terminal,可以通过terminal键入docker-compose sta 加上tab键查看效果。

使用案例

案例下载地址:https://github.com/nigelpoulton/counter-app.git
这是一个能够对访问者进行计数并将其保存到redis的简单web服务
包含了两个服务:

  • web-fe:小型Flask应用
  • Redis

案例文件结构
案例文件结构

Compose文件

Docker Compose是使用YAML文件来定义多服务应用的,默认使用的文件名为docker-compose.yml,如果需要指定具体文件我们可以使用-f参数来指定。

下面来看下案例文件中的docker-compose.yml

version: "3.5"
services:
  web-fe:
    build: .
    command: python app.py
    ports:
      - target: 5000
        published: 5000
    networks:
      - counter-net
    volumes:
      - type: volume
        source: counter-vol
        target: /code
  redis:
    image: "redis:alpine"
    networks:
      counter-net:

networks:
  counter-net:

volumes:
  counter-vol:

观察文件的基本结构,首先可以注意到,它包含4个一级key:versionservicesnetworksvolumes

version
version是必须指定的,而且总是位于文件的第一行。它定义了Compose文件格式的版本。

services
services用于定义不同的应用服务,上边的例子定义了两个服务:

  • web-fe的Web前端服务
  • redis内存数据库服务

networks
networks用于指引Docker创建新的网络。默认情况下,Docker Compose会创建bridge网络。这是一种单主机网络,只能够实现同一主机上容器的连接。

volumes
volumes用于指引Docker来创建新的卷。

更多的信息在services中,下面仔细分析一下。

services:
  web-fe:
    build: .
    command: python app.py
    ports:
      - target: 5000
        published: 5000
    networks:
      - counter-net
    volumes:
      - type: volume
        source: counter-vol
        target: /code
  redis:
    image: "redis:alpine"
    networks:
      counter-net:

Compose文件中的services部分定义了两个二级key,它们各自定义了一个应用程序服务。
DockerCompose会将每个服务部署为一个容器,并且会使用key作为容器名字的一部分。

web-fe的服务定义中,包含如下指令:

  • build:.指定Docker基于当前目录(.)下Dockerfile中定义的指令来构建一个新镜像。该镜像会被用于启动该服务的容器。
  • command:python app.py指定Docker在容器中执行名为app.py的Python脚本作为主程序。因此镜像中必须包含app.py文件以及Python,这一点在Dockerfile中可以得到满足。
  • ports:指定Docker将容器内(-target)的5000端口映射到主机(published)的5000端口。这意味着发送到Docker主机5000端口的流量会被转发到容器的5000端口。容器中的应用监听端口5000。
  • networks:使得Docker可以将服务连接到指定的网络上。这个网络应该是已经存在的,或者是在networks一级key中定义的网络。
  • volumes:指定Docker将counter-vol卷(source:)挂载到容器内的/code(target:)。counter-vol卷应该是已存在的,或者是在文件下方的volumes一级key中定义的。

redis服务的定义:

  • image:使得Docker可以基于redis:alpine镜像启动一个独立的名为redis的容器。这个镜像会被从Docker Hub上拉取下来。
  • networks:配置redis容器连接到counter-net网络。

了解Compose文件中定义的内容后,下面开始部署实战。

使用Docker Compose部署应用

进入案例counter-app的目录查看文件

root@centos: ~/docker_learn/counter-app # ls
app.py  docker-compose.yml  Dockerfile  README.md  requirements.txt
  • app.py是应用程序代码(一个Python Flask应用)。
  • docker-compose.yml是Compose文件,其中定义了Docker如何部署应用。
  • Dockerfile定义了如何构建web-fe服务所使用的镜像。
  • requirements.txt列出了应用所依赖的Python包。

请根据需要自行查看文件内容。

app.py显然是应用的核心文件,而docker-compose.yml文件将应用的所有组件组织起来。

使用Docker Compose将应用启动起来

root@centos: ~/docker_learn/counter-app # docker-compose up &
[1] 15337
root@centos: ~/docker_learn/counter-app # Creating network "counter-app_counter-net" with the default driver
Creating volume "counter-app_counter-vol" with default driver
Building web-fe
Sending build context to Docker daemon  6.656kB

Step 1/5 : FROM python:3.4-alpine
3.4-alpine: Pulling from library/python
8e402f1a9c57: Pulling fs layer
cda9ba2397ef: Pulling fs layer
aafecf9bbbfd: Pulling fs layer
bc2e7e266629: Pulling fs layer
e1977129b756: Pulling fs layer
bc2e7e266629: Waiting
e1977129b756: Waiting
cda9ba2397ef: Verifying Checksum
cda9ba2397ef: Download complete
8e402f1a9c57: Verifying Checksum
8e402f1a9c57: Download complete
8e402f1a9c57: Pull complete
cda9ba2397ef: Pull complete
bc2e7e266629: Verifying Checksum
bc2e7e266629: Download complete
e1977129b756: Verifying Checksum
e1977129b756: Download complete
aafecf9bbbfd: Verifying Checksum
aafecf9bbbfd: Download complete
aafecf9bbbfd: Pull complete
bc2e7e266629: Pull complete
e1977129b756: Pull complete
Digest: sha256:c210b660e2ea553a7afa23b41a6ed112f85dbce25cbcb567c75dfe05342a4c4b
Status: Downloaded newer image for python:3.4-alpine
 ---> c06adcf62f6e
Step 2/5 : ADD . /code
 ---> 7892fdd84650
Step 3/5 : WORKDIR /code
 ---> Running in 1e0cf312dcca
Removing intermediate container 1e0cf312dcca
 ---> 99159e289c92
Step 4/5 : RUN pip install -r requirements.txt
 ---> Running in 42d4809518a7
DEPRECATION: Python 3.4 support has been deprecated. pip 19.1 will be the last one supporting it. Please upgrade your Python as Python 3.4 won't be maintained after March 2019 (cf PEP 429).
Collecting flask (from -r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/d8/94/7350820ae209ccdba073f83220cea1c376f2621254d1e0e82609c9a65e58/Flask-1.0.4-py2.py3-none-any.whl (92kB)
Collecting redis (from -r requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/32/ae/28613a62eea0d53d3db3147f8715f90da07667e99baeedf1010eb400f8c0/redis-3.3.11-py2.py3-none-any.whl (66kB)
Collecting Werkzeug>=0.14 (from flask->-r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/c2/e4/a859d2fe516f466642fa5c6054fd9646271f9da26b0cac0d2f37fc858c8f/Werkzeug-0.16.1-py2.py3-none-any.whl (327kB)
Collecting itsdangerous>=0.24 (from flask->-r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting Jinja2>=2.10 (from flask->-r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/65/e0/eb35e762802015cab1ccee04e8a277b03f1d8e53da3ec3106882ec42558b/Jinja2-2.10.3-py2.py3-none-any.whl (125kB)
Collecting click>=5.1 (from flask->-r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask->-r requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz
Building wheels for collected packages: MarkupSafe
  Building wheel for MarkupSafe (setup.py): started
  Building wheel for MarkupSafe (setup.py): finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/f2/aa/04/0edf07a1b8a5f5f1aed7580fffb69ce8972edc16a505916a77
Successfully built MarkupSafe
Installing collected packages: Werkzeug, itsdangerous, MarkupSafe, Jinja2, click, flask, redis
Successfully installed Jinja2-2.10.3 MarkupSafe-1.1.1 Werkzeug-0.16.1 click-7.0 flask-1.0.4 itsdangerous-1.1.0 redis-3.3.11
You are using pip version 19.0.3, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Removing intermediate container 42d4809518a7
 ---> 2600a9ea5d6d
Step 5/5 : CMD ["python", "app.py"]
 ---> Running in e248803bb90b
Removing intermediate container e248803bb90b
 ---> d1d7338a16dc
Successfully built d1d7338a16dc
Successfully tagged counter-app_web-fe:latest
WARNING: Image for service web-fe was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Pulling redis (redis:alpine)...
alpine: Pulling from library/redis
540db60ca938: Pull complete
29712d301e8c: Pull complete
8173c12df40f: Pull complete
ce3f2993175f: Pull complete
62cc615d2d57: Pull complete
03f18c6c97e1: Pull complete
Digest: sha256:cd68f7db2caeff01a62bab0cdb5630e86e2a608b0aba3b988b1d13dcf3cfdedb
Status: Downloaded newer image for redis:alpine
Creating counter-app_web-fe_1 ... done
Creating counter-app_redis_1  ... done
Attaching to counter-app_redis_1, counter-app_web-fe_1
redis_1   | 1:C 16 Apr 2021 15:33:23.444 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1   | 1:C 16 Apr 2021 15:33:23.444 # Redis version=6.2.1, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1   | 1:C 16 Apr 2021 15:33:23.444 # 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 16 Apr 2021 15:33:23.445 * monotonic clock: POSIX clock_gettime
redis_1   | 1:M 16 Apr 2021 15:33:23.445 * Running mode=standalone, port=6379.
redis_1   | 1:M 16 Apr 2021 15:33:23.445 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1   | 1:M 16 Apr 2021 15:33:23.445 # Server initialized
redis_1   | 1:M 16 Apr 2021 15:33:23.445 # 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 16 Apr 2021 15:33:23.454 * Ready to accept connections
web-fe_1  |  * Serving Flask app "app" (lazy loading)
web-fe_1  |  * Environment: production
web-fe_1  |    WARNING: This is a development server. Do not use it in a production deployment.
web-fe_1  |    Use a production WSGI server instead.
web-fe_1  |  * Debug mode: on
web-fe_1  |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
web-fe_1  |  * Restarting with stat
web-fe_1  |  * Debugger is active!
web-fe_1  |  * Debugger PIN: 150-882-136

值得注意的是,Docker Compose会在部署服务之前创建网络和卷。这很合理,因为它们是供服务(容器)使用的底层基础资源。如打印的日志可见,Docker Compose会首先创建网络和卷(甚至先于构建和拉取镜像)。

使用了&将终端窗口返回,所有的日志还是会直接输出到我们后续可能会用的终端窗口上。
使用-d参数在后台启动应用也是常见的用法:

docker-compose up -d

观察终端输出,提示容器已成功启动,下面来验证下
查看容器

root@centos: ~/docker_learn/counter-app # docker ps 
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                    NAMES
2f81dae5a6e8        redis:alpine         "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes        6379/tcp                 counter-app_redis_1
eab24e06ea55        counter-app_web-fe   "python app.py"          5 minutes ago       Up 5 minutes        0.0.0.0:5000->5000/tcp   counter-app_web-fe_1

可以看到容器已成功启动了。每个容器的名称都以项目名称(所在目录名称)为前缀,以一个数字为后缀用于标识容器实例序号——因为Docker Compose允许扩缩容。

查看网络和卷

root@centos: ~/docker_learn/counter-app # docker network ls
NETWORK ID          NAME                      DRIVER              SCOPE
cacae91f20ca        counter-app_counter-net   bridge              local
...
root@centos: ~/docker_learn/counter-app # docker volume ls
DRIVER              VOLUME NAME
local               counter-app_counter-vol
...

用Docker主机的浏览器连接5000端口来查看应用的运行效果
在这里插入图片描述
每次刷新页面,计数就会增加。

使用Docker Compose管理应用

root@centos: ~/docker_learn/counter-app # docker-compose 
Define and run multi-container applications with Docker.
...
Commands:
  build              Build or rebuild services
  config             Validate and view the Compose file
  create             Create services
  down               Stop and remove resources
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show version information and quit

我们可以通过docker-compose或docker-compose -h来查看帮助文档,其中列出Docker Compose支持用来管理应用的命令:

  • docker-compose up命令用于部署一个Compose应用。默认情况下该命令会读取名为docker-compose.yml或docker-compose.yaml的文件,当然用户也可以使用-f指定其他文件名。通常情况下,会使用-d参数令应用在后台启动。
  • docker-compose stop命令会停止Compose应用相关的所有容器,但不会删除它们。被停止的应用可以很容易地通过docker-- compose restart命令重新启动。
  • docker-compose rm命令用于删除已停止的Compose应用。它会删除容器和网络,但是不会删除卷和镜像。
  • docker-compose restart命令会重启已停止的Compose应用。如果用户在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。
  • docker-compose ps命令用于列出Compose应用中的各个容器。输出内容包括当前状态、容器运行的命令以及网络端口。
  • docker-compose down会停止并删除运行中的Compose应用。它会删除容器和网络,但是不会删除卷和镜像。

参考:
CentOS Bash 命令补全增强软件包 bash-completion
菜鸟教程 Docker Compose

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker - 使用Docker Compose部署应用 的相关文章

  • Bash 脚本 Mysql 警告:在命令行界面上使用密码可能不安全

    你好 我有一个脚本来对一些 mysql 数据库进行分区 我们正在从 5 5 升级到 5 6 在测试脚本时 我注意到新的 5 6 版本 mysql 返回Warning Using a password on the command line
  • 不同 Perl 安装造成的混乱

    我尝试升级 Perl 却把我的电脑搞得一团糟 我目前运行的是 RHEL6 5 64 位 事情是这样的 我安装了 perl 5 10 1 并且运行良好 这是安装好的 我可以从百胜看到它 我想安装 Padre 一个 Perl IDE 但这至少需
  • 如何在Linux中为特定程序设置进程ID

    我想知道是否有某种方法可以在运行某些应用程序之前强制使用 Linux 的某些特定进程 ID 我需要提前知道进程ID 实际上 有一种方法可以做到这一点 自内核 3 3 设置了 CONFIG CHECKPOINT RESTORE 在大多数发行版
  • 使用端口 80 (Ubuntu / Linode) 运行 Node.js 的最佳实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在设置我的第一个Node js服务器上的cloud Linux node我对以下细节还很陌生Linux admin 顺便说一句 我并没有尝试
  • 在我的 Linux 机器上安装 lisp

    我使用 Vim 作为我的编辑器 Practical common Lisp 建议安装 Lispbox 我不知道如何使用 emacs 不知道如何用那个 T T 运行 lisp 代码 之后我找到了一个名为 limp vim 的 vim lisp
  • 如何在没有 root 访问权限的情况下在 Ubuntu 上安装 Google Test?

    我正在尝试根据以下方式安装 Google Test这个答案 https stackoverflow com a 21314020 6560773在没有 root 访问权限的 Ubuntu 上 因为我需要在工作中学习和使用它 设法在我自己的用
  • Linux下对多个文件进行排序

    我有多个 很多 文件 每个都非常大 file0 txt file1 txt file2 txt 我不想将它们合并到一个文件中 因为生成的文件将超过 10 场演出 每个文件中的每一行都包含一个 40 字节的字符串 现在字符串的排序相当好 大约
  • 编译错误:linux/module.h:没有这样的文件或目录

    我写了一个简单的模块 define KERNEL define MODULE include
  • 如何让SSH命令执行超时

    我有一个这样的程序 ssh q email protected cdn cgi l email protection exit echo output value gt 在上面的代码中 我尝试通过 SSH 连接到远程服务器 并尝试检查是否可
  • 将管道输入转储到文件的简单方法是什么? (Linux)

    我正在寻找一个小 shell 脚本 它可以将任何内容通过管道传输到其中 并将其转储到文件中 用于电子邮件调试目的 有任何想法吗 unix 命令 tee 可以做到这一点 man tee
  • 如何尽可能快地输出固定缓冲区?

    示例代码 include
  • Jenkinsfile 泊坞窗

    我正在 docker 容器内的 GCE 上运行一个 jenkins 实例 并希望从此 Jenkinsfile 和 Github 执行多分支管道 我正在使用GCE詹金斯 https cloud google com solutions con
  • 在大型文本文件中查找重复记录

    我在一台 Linux 机器 Redhat 上 并且有一个 11GB 的文本文件 文本文件中的每一行包含单个记录的数据 并且该行的前 n 个字符包含该记录的唯一标识符 该文件包含略多于 2700 万条记录 我需要验证文件中不存在具有相同唯一标
  • ERRO[0001] 等待容器时出错:上下文已取消

    运行 docker 镜像时出现错误 看起来问题出在我的电脑上 我使用的是 MacOS 10 13 6 我已按照步骤创建 docker 映像 Sanjeet server api sanjeet docker build t apiconta
  • 打印堆栈指针的值

    如何在 Linux Debian 和 Ubuntu 中用 C 打印堆栈指针的当前值 我尝试谷歌但没有找到结果 一个技巧是简单地将本地地址作为指针打印出来 但它不可移植 甚至无法保证有效 void print stack pointer vo
  • 由于参数中有空格,Bash 脚本因未知选项而失败

    我正在尝试运行 aws create lambda 函数 事情的经过如下 eval aws lambda create function function name FUNCTION NAME runtime RUNTIME role RO
  • “排序文件名 | uniq”不适用于大文件

    我可以从小文本文件中删除重复条目 但不能从大文本文件中删除重复条目 我有一个 4MB 的文件 文件的开头如下所示 aa aah aahed aahed aahing aahing aahs aahs aal aalii aalii aali
  • PHP exec - 检查是否启用或禁用

    有没有办法检查 php 脚本是否exec 在服务器上启用还是禁用 这将检查该功能是否确实有效 权限 权利等 if exec echo EXEC EXEC echo exec works
  • Linux 缓冲区溢出环境变量

    我一直在审查不同类型的缓冲区溢出 并遇到了一个我不记得为什么会发生的问题 下面的代码是我尝试执行缓冲区溢出的程序 include
  • 在 LINUX 上测量 TLB 未命中的命令

    有人可以指导我使用一个命令来测量 LINUX 上的 TLB 未命中吗 是否可以将轻微页面错误视为 TLB 未命中 您可以使用perf去做这个 前提是你的CPU支持 Use perf list了解可用的计数器 当我拿到这个列表并查找 TLB

随机推荐

  • so库的反编译,反汇编

    Linux APP SO的反汇编工具 ida Pro 可以反汇编app和SO库 有函数名 但是不能反编译到code这一级别 下载最强的反编译工具 ida Pro 6 4 Plus rar 还有这个反汇编工具 没用过 转自 http bbs
  • protobuf的序列化和反序列化的分析

    一 protobuf的optional 数据类型序列化分析 1 optional 的protobuf的文件 格式 syntax proto2 message test proto optional int32 proto1 1 option
  • thinkphp5.0.24反序列化漏洞分析

    thinkphp5 0 24反序列化漏洞分析 文章目录 thinkphp5 0 24反序列化漏洞分析 具体分析 反序列化起点 toArray getRelationData分析 modelRelation生成 进入 call前的两个if c
  • 初步学习Oracle之PL/SQL

    PL SQL简介 PL SQL Procedure Language SQL 程序语言是 Oracle 对 sql 语言的过程化扩展 指在 SQL 命令语言中增加了过程处理语句 如分支 循环等 使 SQL 语言具有过程处理能力 把SQL 语
  • 【满分】【华为OD机试真题2023 JS】最差产品奖

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 最差产品奖 知识点滑窗 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 A公司准备对他下面的N个产品评选最差奖 评选的方式是首先对每个产品进行评分 然后根据评分区
  • 在Android Studio中使用vulkan

    首先要确定手机是否支持Vulkan 可以下载一个aida64 在设备中如果能找到vulkan设备 说明支持 否则不支持 严格按照官方介绍的步骤一步步执行 就能获得官方推荐的可执行的例子 有很多 可以都试一试 那怎么在自己的工程中使用vulk
  • Vue模版语法&2种数据绑定方式

    Vue模板语法有2大类 1 插值语法 功能 用于解析标签体内容 写法 xx 其中xx是js表达式 且可以直接读取到data中的所有属性 p value p 在双大括号中 除了可以简单的传值外 还可以使用表达式 每个绑定都只能包含单个表达式
  • 中文新闻文本标题分类(基于飞桨、Text CNN)

    目录 一 设计方案概述 二 具体实现 三 结果及分析 四 总结 一 设计方案概述 主要网络模型设计 设计所使用网络模型为TextCNN 由于其本身就适用于短中句子 在标题分类这一方面应该能发挥其优势 TextCNN是Yoon Kim在201
  • R语言查看每列的缺失值

    代码 library tidyverse library naniar data gt miss var summary 注 gt 为管道函数 不懂可以看下面的链接 管道函数 miss var summary在naniar包里面
  • softwares

    视频切帧 变换分辨率 VLC 文件对比 Beyond Compare 远程控制 向日葵 TeamViewer
  • MATLAB安装配置MinGW-w64 C++编译器

    文章目录 前言 一 Mingw安装 1 安装教程 2 验证 二 MATLAB安装配置MinGW 总结 pic center 前言 只是为方便学习 不做其他用途 一 Mingw安装 在网上找到的安装一直报错 The file has been
  • uniapp(小程序)加载更多(LoadMore)在列表上的应用和刷新逻辑完善

    活动列表应用loadMore应用以及刷新逻辑完善 获取列表的方法会有3种状态 第一种是onLoad时 首屏的1页5条 第二种是加载更多触发的n页5条 以及第三种 当我们离开页面去往其他页面再回到列表页进行刷新触发的1页n条 首先先说加载更多
  • 全国DNS服务器IP地址大全、公共DNS大全

    各省公共DNS服务器IP大全 名称 各省公共DNS服务器IP大全 114 DNS 114 114 114 114 114 114 115 115 阿里 AliDNS 223 5 5 5 223 6 6 6 百度 BaiduDNS 180 7
  • 突发:香港警方警告 JPEX疑涉诈骗

    来源 香港明报 据香港明报跟进报道 未获发牌的 绿石数字资产平台 JPEX 涉疑违规在港宣传及经营 其后有客户表示提币失败 警务处长萧泽颐今日表示 警方前日收到证监会转介案件 因或涉及行骗成份 现由商业及罪案调查科跟进 至昨日下午3时收到8
  • 《UVM实战》学习笔记——第六章 sequence机制

    文章目录 前言 一 sequence的启动与执行 1 启动 2 启动方式 3 sequence分类 二 sequence的仲裁机制 1 sequence相关的宏 2 sequencer的仲裁算法 6种 3 sequence独占sequenc
  • USB HUB简述

    概述 hub 集线器 连接在host与device之间的一种用于usb接口扩展的usb设备 可以将一个usb上行接口扩展为多个下行接口 使得一个host可以同时与多个device连接 一般来说 一块hub桥接芯片可扩展4个usb接口 而市面
  • ‘dtools’不是内部或外部命令,也不是可运行的程序或批处理文件,个人解决方案

    powershell或cmd执行时出现 dtools 不是内部或外部命令 也不是可运行的程序或批处理文件 奇怪的是 我的工程目录下明明有dtools exe可执行文件 搜索引擎上多数反馈是添加C system32等路径到环境变量 但后续发现
  • 亲密关系-【沟通提示】-如何把学习到的东西用到生活中

    关于亲密关系 我学到了这么多 可为什么ta对这些毫不在意 我知道课里的观点都很重要 可我该怎么教会ta ta没有意识 看画面 案例 妈妈说话总是带有攻击性 总是骂她 怎么说 常见误区 你不要老师贬低我 对方苦苦思考 我到底该怎么办 你下意识
  • java中的多重循环

    多重循环 一个循环体内又包含另一个完整的循环结构 如下 while 循环条件1 循环操作1 while 循环条件2 循环操作2 do 循环操作1 do 循环操作2 while 循环条件2 while 循环条件1 for 循环条件1 循环操作
  • Docker - 使用Docker Compose部署应用

    简介 Docker Compose是一个基于Docker Engine进行安装的Python工具 该工具使得用户可以在一个声明式的配置文件中定义一个多容器的应用 在Docker节点上 以单引擎模式 Single Engine Mode 进行