docker容器---docker-compose容器集群的快速编排

news2024/12/23 18:03:24

一、Docker-compose简介

Docker-Compose项目是基于Python开发的Docker官方开源项目,负责实现对Docker容器集群的快速编排

Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)。

  1. Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。
  2. 一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
  3. 一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如Consul。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理。

二、YAML文件格式及编写注意事项

1、YAML文件格式

  1. YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。
  2. 类似于 json数据描述语言,语法比 json简单的很多。
  3. YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [ ] 括起来, hash 用花括号 { }括起来。

2、YAML格式的注意事项

  1. 不支持制表符 tab 键缩进,只能使用空格缩进
  2. 通常开头缩进2个空格
  3. 字符后缩进1个空格,如冒号 : 、逗号 , 、横杠 -
  4. 用 # 号注释
  5. 如果包含特殊字符用单引号 ‘’ 引起来作为普通字符;如果用双引号“”表示特殊字符本身的意思
  6. 布尔值必须用引号 “” 括起来
  7. 区分大小写

3、YAML数据结构

对象: 键值对的字典
animal: pets

数组: 一组按次序排列的列表
- cat
- dog
- goldfish

布尔值
debug: "true"
debug: "false"


#Yaml示例
languages:  #序列的映射
  - Java
  - Golang
  - Python
websites:   #映射的映射
  Baidu: www.baidu.com
  Wangyi: www.163.com
  Souhu: www.souhu.com
  
 
#或者 
languages: ["Java","Golong","Python"]
websites: 
  Baidu: 
    www.baidu.com
  Wangyi: 
    www.163.com
  Souhu: 
    www.souhu.com
 
 
 
#Json格式
{
  languages: [
    'Java',
    'Golong',
    'Python',
  ],
  websites: [
    Baidu: 'www.baidu.com',
    Wangyi: 'www.163.com',
    Souhu: 'www.souhu.com',
  ]
}

4、Docker-Compose配置常用字段

字段描述
build

指定 Dockerfile 文件名

(要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定)

dockerfile构建镜像上下文路径
context可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image指定镜像(已存在)
command执行命令。覆盖容器启动后默认执行的命令(会覆盖Dockerfile的CMD指令)
container_name指定容器名称,由于容器名称是唯一的,如果指定自定义名称呢,则无法scale指定容器数量
deploy 指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment添加环境变量
networks加入网络,引用顶级networks下条目
network_mode设置容器的网络模式,如 host, bridge,......
ports暴露容器端口,与 -p 相同,但端口不能低于 60
volumes挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称
volumes_from从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 '2' 支持
hostname容器主机名
sysctls在容器内设置内核参数
links连接到另外一个容器,- 服务名称[:服务别名]
privileged用来给容器root权限,注意是不安全的,true | false
restart设置重启策略,no,always,nounless-st-failure,oped
no,默认策略,在容器退出时不重启容器。
on-failure,在容器非正常退出时(退出状态非0),才会重启容器。
on-failure:3,在容器非正常退出时重启容器,最多重启3次。
always,在容器退出时总是重启容器。
unless-stopped,在容器退出的容器时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了。

5、Docker-compose 常用命令

字段描述
build重新构建服务
ps列出容器

up

创建和启动容器
exec在容器里面执行命令
scale指定一个服务容器启动数量
top显示容器进程
logs查看容器输出
down删除容器、网络、数据卷和镜像
stop/start/restart停止/启动/重启服务

三、部署docker-compose

1、安装所需包

[root@localhost ~]#cd /opt/
[root@localhost opt]#ls
containerd  lnmp  rh
[root@localhost opt]#rz -E
rz waiting to receive.
[root@localhost opt]#ls
containerd  docker-compose-1.25.0  lnmp  rh
[root@localhost opt]#mv docker-compose-1.25.0 docker-compose
[root@localhost opt]#ls
containerd  docker-compose  lnmp  rh
[root@localhost opt]#chmod +x docker-compose 
[root@localhost opt]#ls
containerd  docker-compose  lnmp  rh
[root@localhost opt]#mv docker-compose /usr/local/bin/
[root@localhost opt]#docker-compose --version
docker-compose version 1.25.0-rc4, build 8f3c9c58

[root@localhost opt]#docker ps -a
CONTAINER ID   IMAGE        COMMAND                   CREATED        STATUS                    PORTS     NAMES
56b579133ec3   php:lnmp     "/bin/sh -c '/usr/lo…"   18 hours ago   Exited (0) 18 hours ago             php
28af5fe9d022   mysql:lnmp   "/usr/local/mysql/bi…"   19 hours ago   Exited (0) 18 hours ago             mysql
94f22e52423f   nginx:lnmp   "/usr/local/nginx/sb…"   22 hours ago   Exited (0) 18 hours ago             nginx
[root@localhost opt]#docker ps -a  | awk 'NR>=2{print "docker rm "$1}' | bash
56b579133ec3
28af5fe9d022
94f22e52423f
[root@localhost opt]#docker images 
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
php          lnmp      3f352863e19b   18 hours ago   1.4GB
mysql        lnmp      d446e4998a17   20 hours ago   10.1GB
nginx        lnmp      97a40e10689a   22 hours ago   569MB
nginx        latest    7383c266ef25   5 days ago     188MB
centos       7         eeb6ee3f44bd   2 years ago    204MB

2、部署docker-compose (nginx)

1.创建管理文件夹

[root@localhost opt]#ls
containerd  lnmp  rh
[root@localhost opt]#mkdir -p /opt/docker-compose_nginx
[root@localhost opt]#cd /opt/docker-compose_nginx/
[root@localhost docker-compose_nginx]#mkdir wwwroot
[root@localhost docker-compose_nginx]#ls
wwwroot
[root@localhost docker-compose_nginx]#mkdir /opt/docker-compose_nginx/nginx
[root@localhost docker-compose_nginx]#cd nginx/
[root@localhost nginx]#ls
[root@localhost nginx]#cd /opt/lnmp/nginx/
[root@localhost nginx]#ls
Dockerfile  html  nginx-1.12.0.tar.gz  nginx.conf  wordpress-4.9.4-zh_CN.tar.gz
[root@localhost nginx]#cp -r Dockerfile nginx-1.12.0.tar.gz /opt/docker-compose_nginx/nginx/
[root@localhost nginx]#cd -
/opt/docker-compose_nginx/nginx
[root@localhost nginx]#ls
Dockerfile  nginx-1.12.0.tar.gz

[root@localhost nginx]#yum -y install tree

2.编写Dockerfile文件

[root@localhost nginx]#vim run.sh

#!/bin/bash
/usr/local/nginx/sbin/nginx

[root@localhost nginx]#vim Dockerfile

FROM centos:7
MAINTAINER this is nginx image <ah>
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
RUN make -j 4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]

[root@localhost wwwroot]#pwd
/opt/docker-compose_nginx/wwwroot
[root@localhost wwwroot]#echo "<h1>this is nginx</h1>" > /opt/docker-compose_nginx/wwwroot/index.html

3.编写docker-compose.yml

[root@localhost docker-compose_nginx]#pwd
/opt/docker-compose_nginx
[root@localhost docker-compose_nginx]#vim docker-compose.yml

service:
  nginx:
    container_name: web
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1234:80
      - 4321:443
    networks:
      lnmp:
        ipv4_address: 172.19.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  mykysw:
    driver: bridge
    ipam:
      config:
        - subnet: 172.19.0.0/16

4.查看

[root@localhost docker-compose_nginx]#pwd
/opt/docker-compose_nginx
[root@localhost docker-compose_nginx]#tree
.
├── docker-compose.yml
├── nginx
│?? ├── Dockerfile
│?? ├── nginx-1.12.0.tar.gz
│?? └── run.sh
└── wwwroot
    └── index.html

2 directories, 5 files

 5.创建

6.验证

7.查看网络及IP地址 

 

3、部署docker-compose (nginx+tomcat)

1.docker-compose.yml

[root@localhost docker-compose_nginx]#vim docker-compose.yml 

version: '3'
services:
  nginx:
    container_name: web1
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1234:80
      - 4321:443
    networks:
      lnmp:
        ipv4_address: 172.19.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html
  tomcat:
    container_name: web2
    hostname: tomcat
    build:
      context: ./tomcat
      dockerfile: Dockerfile
    ports:
      - 8080:8080
    networks:
      - lnmp:
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.19.0.0/16

2.将前面得web停止并删除

[root@localhost docker-compose_nginx]#docker ps 
CONTAINER ID   IMAGE                        COMMAND                   CREATED       STATUS       PORTS                                                                            NAMES
822da62329dd   docker-compose_nginx_nginx   "/usr/local/nginx/sb…"   2 hours ago   Up 2 hours   0.0.0.0:1234->80/tcp, :::1234->80/tcp, 0.0.0.0:4321->443/tcp, :::4321->443/tcp   web
[root@localhost docker-compose_nginx]#docker stop web
web
[root@localhost docker-compose_nginx]#docker rm web
web

删除镜像

[root@localhost docker-compose_nginx]#docker images 
REPOSITORY                   TAG       IMAGE ID       CREATED        SIZE
docker-compose_nginx_nginx   latest    b53232cf8956   2 hours ago    569MB
php                          lnmp      3f352863e19b   23 hours ago   1.4GB
mysql                        lnmp      d446e4998a17   24 hours ago   10.1GB
nginx                        lnmp      97a40e10689a   27 hours ago   569MB
nginx                        latest    7383c266ef25   6 days ago     188MB
centos                       7         eeb6ee3f44bd   2 years ago    204MB
[root@localhost docker-compose_nginx]#docker rmi b53232cf8956
Untagged: docker-compose_nginx_nginx:latest
Deleted: sha256:b53232cf89565d4809d6580c40e6d410045a12baa2093c7c3dca8500fef25dd1
Deleted: sha256:c96b94b951f6995c3a08a511b4f9bcaf946d59e854abca693724a019acbea6c9
Deleted: sha256:b927f4590f300cd65ec3221b9207fca786121a9945f013647b95e35605d478e1
Deleted: sha256:fc083d1e4e5e001f971127691903c791b2d1e410845a7a80b3191e6daf9f3eed
Deleted: sha256:309a2811bf2be28b373a2f7ab9031288c3de2324c4baca43af9ee083f50762d2
Deleted: sha256:cb5cd75405984df005e991407e6f297ab6b8a4df9d9a0f5492aa2c286d1d3a8a
Deleted: sha256:6e4f5758bb520b355176a09f9ec1adb120ba16ba5b4cac476b53e552e9deab8c
Deleted: sha256:d847363fe07f07191510bb344f16fea90b08ad184bb197ad91a78f76e837af10
Deleted: sha256:cd279ee686dd81a052abb2186d350166829069738a969283b4605d28b7a029a2
Deleted: sha256:02b297343f9e6154cb5ae7cfd463329bbc5c6e571fc135d3489cabde6eba6b25
Deleted: sha256:f64bc769af5ded3de3938b2baf7259c6c3430921eb02a315199b17438c5370d4
Deleted: sha256:9fe95a817933ccaf72c14c51e28b6a83877fdacfee785b2f3b3850fcf54a0294
Deleted: sha256:f2ef02d8183a673b7645525021b8b43ba8291f06313ec4fd92352190f044bf20
Deleted: sha256:d9c98a6944c7f9b59c7f25ba49842af4152c4c467eae723f6a4b8f1fde210520
Deleted: sha256:ad949c056e1c32df2f31e55b4d58b448cecd0208e49cf04e8737dea9a9f0e28f
Deleted: sha256:fda4ed2dcf4c6b0413285f260eccdfa07bace68af94952220bca2f36d89feeb4

删除网路

[root@localhost docker-compose_nginx]#docker network list
NETWORK ID     NAME                        DRIVER    SCOPE
213c0b6bc77b   bridge                      bridge    local
0d33d51242cc   docker-compose_nginx_lnmp   bridge    local
74a43c49b8c6   host                        host      local
adf31dc63e2f   mynetwork                   bridge    local
71f04f9ad5e1   none                        null      local
[root@localhost docker-compose_nginx]#docker network rm docker-compose_nginx_lnmp
docker-compose_nginx_lnmp
[root@localhost docker-compose_nginx]#docker network list
NETWORK ID     NAME        DRIVER    SCOPE
213c0b6bc77b   bridge      bridge    local
74a43c49b8c6   host        host      local
adf31dc63e2f   mynetwork   bridge    local
71f04f9ad5e1   none        null      local

3.建立tomcat文件夹

[root@localhost docker-compose_nginx]#mkdir tomcat
[root@localhost docker-compose_nginx]#cd tomcat/
[root@localhost tomcat]#cp -r ../../apache-tomcat-8.5.16.tar.gz ./
[root@localhost tomcat]#cp -r ../../jdk-8u291-linux-x64.tar.gz ./
[root@localhost tomcat]#ls
apache-tomcat-8.5.16.tar.gz  jdk-8u291-linux-x64.tar.gz
[root@localhost tomcat]#vim Dockerfile
[root@localhost tomcat]#ls
apache-tomcat-8.5.16.tar.gz  Dockerfile  jdk-8u291-linux-x64.tar.gz

[root@localhost tomcat]#vim Dockerfile 

FROM centos:7
MAINTAINER this is tomcat images <hg>
ADD jdk-8u91-linux-x64.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv jdk1.8.0_91 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH $JAVA_HOME/bin:$PATH
ADD apache-tomcat-8.5.16.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv apache-tomcat-8.5.16 /usr/local/tomcat
EXPOSE 8080
#CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"]
CMD ["/usr/local/tomcat/bin/startup.sh","start"]

4.创建

[root@localhost docker-compose_nginx]#docker-compose -f docker-compose.yml up -d

5.查看容器及镜像

[root@localhost docker-compose_nginx]#docker ps 
CONTAINER ID   IMAGE                         COMMAND                   CREATED              STATUS              PORTS                                                                            NAMES
c89e55c7c012   docker-compose_nginx_tomcat   "/usr/local/tomcat/b…"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                        web2
2efe6549806d   docker-compose_nginx_nginx    "/usr/local/nginx/sb…"   About a minute ago   Up About a minute   0.0.0.0:1234->80/tcp, :::1234->80/tcp, 0.0.0.0:4321->443/tcp, :::4321->443/tcp   web1
[root@localhost docker-compose_nginx]#docker-compose ps
Name              Command               State                                     Ports                                  
-------------------------------------------------------------------------------------------------------------------------
web1   /usr/local/nginx/sbin/ngin ...   Up      0.0.0.0:4321->443/tcp,:::4321->443/tcp,                                  
                                                0.0.0.0:1234->80/tcp,:::1234->80/tcp                                     
web2   /usr/local/tomcat/bin/cata ...   Up      0.0.0.0:8080->8080/tcp,:::8080->8080/tcp   

[root@localhost docker-compose_nginx]#docker images 
REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
docker-compose_nginx_tomcat   latest    30212342cf39   2 minutes ago   950MB
docker-compose_nginx_nginx    latest    9ac7efd323ca   2 minutes ago   569MB
php                           lnmp      3f352863e19b   23 hours ago    1.4GB
mysql                         lnmp      d446e4998a17   25 hours ago    10.1GB
nginx                         lnmp      97a40e10689a   27 hours ago    569MB
nginx                         latest    7383c266ef25   6 days ago      188MB
centos                        7         eeb6ee3f44bd   2 years ago     204MB

6.查看地址

[root@localhost docker-compose_nginx]#docker ps 
CONTAINER ID   IMAGE                         COMMAND                   CREATED         STATUS         PORTS                                                                            NAMES
c89e55c7c012   docker-compose_nginx_tomcat   "/usr/local/tomcat/b…"   4 minutes ago   Up 4 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                        web2
2efe6549806d   docker-compose_nginx_nginx    "/usr/local/nginx/sb…"   4 minutes ago   Up 4 minutes   0.0.0.0:1234->80/tcp, :::1234->80/tcp, 0.0.0.0:4321->443/tcp, :::4321->443/tcp   web1
[root@localhost docker-compose_nginx]#docker inspect c89e55c7c012 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.19.0.2",

7.删除容器、网络、数据卷和镜像

[root@localhost docker-compose_nginx]#docker-compose -f docker-compose.yml down
Stopping web2 ... done
Stopping web1 ... done
Removing web2 ... done
Removing web1 ... done
Removing network docker-compose_nginx_lnmp
[root@localhost docker-compose_nginx]#docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost docker-compose_nginx]#docker network  list
NETWORK ID     NAME        DRIVER    SCOPE
213c0b6bc77b   bridge      bridge    local
74a43c49b8c6   host        host      local
adf31dc63e2f   mynetwork   bridge    local
71f04f9ad5e1   none        null      local
[root@localhost docker-compose_nginx]#docker images 
REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
docker-compose_nginx_tomcat   latest    30212342cf39   8 minutes ago   950MB
docker-compose_nginx_nginx    latest    9ac7efd323ca   8 minutes ago   569MB
php                           lnmp      3f352863e19b   24 hours ago    1.4GB
mysql                         lnmp      d446e4998a17   25 hours ago    10.1GB
nginx                         lnmp      97a40e10689a   27 hours ago    569MB
nginx                         latest    7383c266ef25   6 days ago      188MB
centos                        7         eeb6ee3f44bd   2 years ago     204MB
[root@localhost docker-compose_nginx]#

总结:

一、什么是Docker-compose

docker-cpmpose是实现在单机上完成容器集群编排的管理  单机容器编排

docker-compose。yml  compose模板文件

工程(项目)   project   LNMP

服务   nginx  mysql  php

容器   container  容器名  --name  主机名 -h  镜像  image:tag 端口  -p  网络  --network  数据卷  -v .......

使用 docker-compose 可以完成 多个 docker run 的所有操作

二、使用Docker-compose注意事项:

大小写敏感
通过缩进表示层级关系
不支持制表符 tab 键缩进,只能使用空格缩进
缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
用 # 号注释
符号字符后缩进1个空格,如冒号 :  、逗号 ,  、横杠 -    
如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思

三、Docker-compose 配置的字段

字段                               		描述
build                              		指定 Dockerfile 文件名,
										要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定
dockerfile                         		构建镜像上下文路径
context                            		可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image                              		指定镜像
command:                          		执行命令,覆盖容器启动后默认执行的命令
container_name                     		指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量
deploy                             		指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment                        		添加环境变量
networks                           		加入网络,引用顶级networks下条目
network_mode							设置容器的网络模式,如 host,bridge,...
ports                              		暴露容器端口,与 -p 相同,但端口不能低于 60
volumes                            		挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称
volumes_from							从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 '2' 支持
hostname                           		容器主机名
sysctls									在容器内设置内核参数
links									连接到另外一个容器,- 服务名称[:服务别名]
privileged								用来给容器root权限,注意是不安全的,true | false
restart                            		设置重启策略,no,always,nounless-st-failure,oped
										no,默认策略,在容器退出时不重启容器。
										on-failure,在容器非正常退出时(退出状态非0),才会重启容器。
										on-failure:3,在容器非正常退出时重启容器,最多重启3次。
										always,在容器退出时总是重启容器。
										unless-stopped,在容器退出的容器时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了。

四、docker-compose 基本命令

字段                    					    描述
build                   					重新构建服务
ps                      					列出容器
up                      					创建和启动容器	
exec                    					在容器里面执行命令
scale                   					指定一个服务容器启动数量
top                     					显示容器进程
logs                    					查看容器输出
down                    					删除容器、网络、数据卷和镜像
stop/start/restart      					停止/启动/重启服务

五、案例执行操作

1、nginx

2、nginx+tomcat

等等

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

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

相关文章

MyBatis(环境配置+基本CRUD)

文章目录 1.基本介绍1.为什么需要MyBatis&#xff1f;2.MyBatis介绍3.MyBatis工作示意图4.MyBatis的优势 2.快速入门文件目录1.需求分析2.数据库表设计3.父子模块环境配置1.创建maven父项目2.删除父项目的src目录3.pom.xml文件文件解释 4.创建子模块1.新建一个Module2.创建一个…

ffmpeg与sdl的个人笔记

说明 这里的ffmpeg基础知识和sdl基础知识仅提及与示例代码相关的知识点, 进阶可学习雷神的博客。 https://blog.csdn.net/leixiaohua1020 当然&#xff0c;如代码写的有问题或有更好的见解&#xff0c;欢迎指正&#xff01; 音视频基础知识 在学习音视频理论知识时&#xff…

学数据结构之前是否该把c语言吃透?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「数据结构的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 我见过的第一个版本的数据…

vue+elementui(笔记)

vueelementui 表格 <div class"tableStyle"><el-table :data"pointsSettingsTableData" style"width: 70%" :stripe"true" size"mini"header-cell-class-name"headerClassName" :cell-style"{ tex…

合规基线:让安全大检查更顺利

前言 说起安全检查&#xff0c;安全从业人员可能都非常熟悉“安全标准”概念。所有企事业单位网络安全建设都需要满足来自于国家或监管单位的安全标准&#xff0c;如等保2.0、CIS安全标准等。安全标准&#xff0c;还有一个叫法就是“安全基线”。字典上对“基线”的解释是&…

AI视频教程下载:用ChatGPT做SEO的终极教程

ChatGPT是由OpenAI开发的一款尖端人工智能&#xff0c;它已经彻底改变了我们进行搜索引擎优化&#xff08;SEO&#xff09;的方式。其先进的语言处理能力使其成为增强网站内容、提高搜索引擎排名和显著提升在线可见性的宝贵工具。 这个全面的课程旨在为你提供使用ChatGPT进行SE…

算法必备数学基础:图论方法由浅入深实践与应用

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…

Phi-3-mini-4k-instruct 的功能测试

Model card 介绍 Phi-3-Mini-4K-Instruct 是一个 3.8B 参数、轻量级、最先进的开放模型&#xff0c;使用 Phi-3 数据集进行训练&#xff0c;其中包括合成数据和经过过滤的公开可用网站数据&#xff0c;重点是 高品质和推理密集的属性。 该型号属于 Phi-3 系列&#xff0c;Mini…

运营版游戏陪玩平台源码/tt语音聊天/声优服务/陪玩系统源码开黑/约玩源码

简述 一个人的游戏叫孤独&#xff0c;一群人的游戏才是乐趣&#xff0c;随着电竞产业在国内的快速发展&#xff0c;游戏陪练行业也迅速成长&#xff0c;现在很多游戏玩家为了追求更高质量的游戏体验感&#xff0c;往往会在玩游戏的过程中找陪练&#xff0c;通过陪玩系统进行预…

MySQL随便聊----之MySQL的调控按钮-启动选项和系统变量

-------MySQL是怎么运行的 基本介绍 如果你用过手机&#xff0c;你的手机上一定有一个设置的功能&#xff0c;你可以选择设置手机的来电铃声、设置音量大小、设置解锁密码等等。假如没有这些设置功能&#xff0c;我们的生活将置于尴尬的境地&#xff0c;比如在图书馆里无法把手…

react项目发布后,浏览器源码泄露的解决方案

在使用create-react-app时&#xff0c;打包生产环境npm run build&#xff0c;浏览器打开后仍然是可以看到源码的。源码都没上传&#xff0c;为啥线上能看到源码 。 例&#xff1a;线上与服务器 线上与源码 react-scripts build和npm run build 有什么不同 react-scripts bui…

spring高级篇(五)

1、参数解析器 前篇提到过&#xff0c;参数解析器是HandlerAdapters中的组件&#xff0c;用于解析controller层方法中加了注解的参数信息。 有一个controller&#xff0c;方法的参数加上了各种注解&#xff1a; public class Controller {public void test(RequestParam("…

Redux Toolkit 中持久化路由配置数组的实践指南

要将路由配置数组保存到 Redux Toolkit 中并持久化,你可以按照以下步骤进行操作: 创建一个 Slice 来管理路由配置 在 Redux Toolkit 中,我们使用 createSlice 来创建一个 slice,用于管理路由配置的状态。 import { createSlice } from reduxjs/toolkit;const routesSlice c…

【重磅】史上最全企业数字化转型项目流程管理资料大合集下载(2.5G,1429份)

重磅分享&#xff0c;史上最全企业数字化转型项目流程管理资料大合集&#xff0c;共1429份。 一、项目管理实战工具大全&#xff08;甘特图、表格、项目阶段文档等527份&#xff09; 二、项目管理流程规范制度&#xff08;各类流程制度共86份&#xff09; 三、项目管理模板&…

编译Qt6.5.3LTS版本(Mac/Windows)的mysql驱动(附带编译后的全部文件)

文章目录 0 背景1 编译过程2 福利参考 0 背景 因为项目要用到对MYSQL数据库操作&#xff0c;所以需要连接到MYSQL数据库。但是连接需要MYSQL驱动&#xff0c;但是Qt本身不自带MYSQL驱动&#xff0c;需要自行编译。网上有很多qt之前版本的mysql驱动&#xff0c;但是没有找到qt6…

Python数据结构与算法(1):将序列分解为单独的变量

问题 现在有一个包含 N 个元素的元组或者是序列&#xff0c;怎样将它里面的值解压后同时赋值给 N 个变量&#xff1f; 解决方案 任何的序列&#xff08;或者是可迭代对象&#xff09;可以通过一个简单的赋值操作来分解为单独的变量。 唯一的要求就是变量的总数和结构必须与序…

【数据结构7-1-查找-线性-二分法-二叉树-哈希表】

目录 1 查找基本概念2 线性表的查找2.1 顺序查找2.2 二分法查找2.3 分块查找 3 树表的查询3.1 二叉排序树3.1.1 定义3.1.2 二叉树的建立、遍历、查找、增加、删除&#xff1a;3.1.3 代码实现&#xff1a; 3.2 平衡二叉树3.2.1 平横因子3.2.2 不平横树的调整-左旋3.2.3 不平横树…

Unity 数字字符串逗号千分位

使用InputField时处理输入的数字型字符串千分位自动添加逗号&#xff0c;且自动保留两位有效数字 输入&#xff1a;123 输出&#xff1a;123.00 输入&#xff1a;12345 输出&#xff1a;12,345.00 代码非常简单 using UnityEngine; using TMPro;public class …

[机器学习系列]深入解析K-Means聚类算法:理论、实践与优化

目录 一、KMeans (一)Kmeans简介 (二)Kmeans作用和优点 (三)Kmeans局限和缺点 (四)Kmeans步骤 (五)如何选取最佳的K值的三种方法 (六)手肘法和目标函数的变化两种确定K值方法的区别 (七)如何选取第一次迭代的K个类中心------KMeans方法 (八)KMeans的常用参数介绍 二、…

【C语言刷题系列】对数字添加逗号

目录 一、问题描述 二、解题思路 三、源代码 拓展&#xff1a; 个人主页&#xff1a; 倔强的石头的博客 系列专栏 &#xff1a;C语言指南 C语言刷题系列 一、问题描述 二、解题思路 题目的要求&#xff0c;即对于一个较大的整数&#xff0c;每三位数字之间添加…