生产环境部署与协同开发-Docker(原创超全)

    1. 关闭防火墙
  1. systemctl stop firewalld.service
  1. 关闭SELinux
  1. vim /etc/selinux/config
  1. 查看yum支持的包
  2. 并安装docker引擎
  1. yum list
  2. yum install -y docker
  1. 启动docker
  2. 设置docker自启动
  3. 测试docker是否安装成功?
  1. systemctl start docker
  2. systemctl enable docker
  3. docker run hello-world
  • 镜像命令
    1. 获取镜像名叫cento的镜像
  1. docker pull centos
  1. 查看主机已有的镜像
  2. 镜像搜索
  1. docker images
  2. docker search cento
  1. 删除镜像(3)
  1. docker rmi 5d0da3dc9764
  2. docker rmi 5d
  3. docker rmi docker.io/centos
  • 容器命令
    1. 创建一个容器
    2. 查看未开启的镜像
    3. 启动容器
  1. docker create -it centos
  2. docker ps -a
  3. docker start f63400dfc24a
  1. 创建并启动容器(docker不是容器,是管理容器的工具)
  1. docker run -it centos /bin/echo "hello world"
  1. 以守护态的形式在后台运行
  1. docker run -d centos /bin/bash -c "while i <= 4 ;do echo hello ; sleep 1 ;done"

  1. 获取容器信息
  2. 获取容器启动时输出的信息
  3. 终止容器
  4. 重开起容器
  5. 重启restart 换 start
  1. docker ps
  2. docker logs cb
  3. docker stop cb
  4. docker start cb
  1. 进入容器里边
  2. 退出
  1. docker exec -it f6 /bin/bash
  2. exit
  1. 删除容器
  1. docker rm cb


 

卡片2


 

  • 其他命令
    1. docker 日志帮助
    2. 查看容器日志
  1. docker log -help
  2. docker top f6
  1. 从容器拷贝文件到主机上
  1. docker exec -it f6 /bin/bash
  2. ls
  3. cd opt/
  4. vi a.info
  5. exit
  6. cd /opt
  7. docker cp f6:/opt/a.info /opt
  • java环境
    1. 查看java镜像
    2. 下载jdk
    3. 运行jdk镜像
  1. docker search openjdk:11
  2. docker pull openjdk:11
  3. docker run openjdk:11 java -version
  • docker实践_安装Tomcat
    1. 查看tomcat镜像
    2. 下载tomcat镜像
    3. 查看所有镜像
    4. 启动Tomcat容器
  1. docker search docker.io/tomee
  2. docker pull docker.io/tomee
  3. docker images
  4. docker run --name my_tomcat -d -p 9090:8080 docker.io/tomee

  1. 查看防火墙
  2. 关闭防火墙
  3. 开启防火墙
  1. firewall-cmd --state
  2. systemctl stop firewalld.service
  3. systemctl start firewalld.service
  • docker 实践_安装Mysql
    1. 查看
    2. 下载
    3. 启动
  1. docker search mysql:5.7
  2. docker pull docker run -d -p 3036:3036 docker.io/migs/mysql-5.7
  3. docker run --name mysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 docker.io/migs/mysql-5.7

卡片3

  • docker数据管理_配置数据卷
    1. 先查看并关停已有的容器(先暂停再删除)
    2. 先创建一下Tomcat并进入再找到容器中webapps的路径
    3. 退回并删除刚刚创建的,重新创建并添加参数-v 将主机的本地绝对路经挂载到刚刚copy下来的容器的路经下面
    4. 并重启
    5. 在网站上输入本机的IP以及文件所在路径
  1. docker stop 90
  2. docker rm 90
  3. docker run -d --name my_tomcat -p 6060:
  4. 80 docker.io/tomee
  5. docker exec -it 40 /bin/bash
  6. 80
  7. cd webapps
  8. pwd
  9. exit
  10. docker stop 40
  11. docker rm 40
  12. docker run -d --name my_tomcat -p 6060:8080 -v /opt/webapps:/usr/local/tomee/webapps docker.io/tomee
  13. cd /opt
  14. ll
  15. cd webapps
  16. mkdir test
  17. cd test
  18. vim index.html
  19. cd ..
  20. cd ..
  21. docker restart 15
  • docker数据管理_数据卷容器
  1. docker volume COMMAND
  2. docker volume ls
  3. docker volume prune
  4. docker volume create test_web
  5. docker volume ls
  6. docker volume inspect test_web
  7. cd /var/lib/docker
  8. pwd
  9. ll
  10. cd volumes
  11. ll
  12. cd test_web/
  13. ll
  14. cd -data
  15. pwd
  16. docker run -d --name mytomcat -p 6060:8080 -v test_web:/user/local/tomee/webapps docker.io/tomee
  17. mkdir test
  18. cd test/
  19. vim index.html
  20. docker restart d5

查看数据卷命令

查看数据卷信息(路径)

查看docker存放文件的地方里的内容

这就是docker存放文件的路径

进入volume后再进入里面存数据的地方

创建文件并在浏览器上运行

出现这个问题

原因分析:

写错了路径

  • Mysql数据持久化(上)
  1. docker run -d -p 3036:3306 -v /opt/mysql/conf.d -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_pASSWORD=123456 --name my-mysql docker.io/migs/mysql-5.7

第一次创建了这个dockerMysql容器,但始终没法运行

删了重弄

查看日志(不被允许,权限受限制)

删了重弄,这次加个 --privileged

然后就好了进容器里了

卡片4

  • Mysql数据持久化(下)
  1. docker exec -it e2 /bin/bash
  2. mysql -uroot -p
  3. show databases;
  4. create database test;
  5. use test;
  6. create table dog;
  7. insert into dog value (1,"tom");
  8. select *from dog;
  9. exit
  10. exit
  11. docker ps
  12. docker stop e2
  13. docker rm e2
  14. cd /opt
  15. ll
  16. cd mysql
  17. ll
  18. cd data
  19. ll
  20. docker run -d -p 3036:3306 -v /opt/mysql/conf:/etc/mysql/conf.d -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 docker.io/google/mysql
  21. docker exec -it a1 /bin/bash
  22. mysql -uroot -p
  23. show databases;
  24. use test;
  25. select * from dog ;

问题1:

解决方式:

vi /etc/sysctl.conf

#新增一行

net.ipv4.ip_forward=1

#执行命令

systemctl restart network

注释呀,你写进去,注释掉,那不是相当于没写吗

问题2:找不到镜像

换个源

2.匿名挂载

  1. docker run -d --name my_tomcat -p 8081:8080 -v /usr/local/tomcat/webapps tomee

2.数据卷挂载还可以指定权限

  1. docker run -d -P --name tomcat -v my-nginx:/etc/nginx:ro tomcat
  2. docker run -d -P --name tomcat -v my-nginx:/etc/nginx:rw tomcat
  • 构建镜像

构建centos镜像

  1. vim Dockerfile
  2. vim(3~8) 里
  3. #基础镜像
  4. FROM centos
  5. #维护者信息
  6. MAINTAINER baizhan<baizhan@163.com>
  7. #当容器启动的时候执行的命令
  8. CMD echo "Hello Dockerfile"
  9. docker build -t test:v1 .

  1. docker images
  2. docker run test:v1

构建java镜像

  1. cd /opt
  2. ll
  3. vim Dockerfile
  4. # 基础镜像
  5. FROM java:8
  6. # 维护者
  7. MAINTAINER baizhan<baizhan@163.com>
  8. # 工作目录 切换目录
  9. WORKDIR /opt
  10. # 构建镜像的时候执行的命令
  11. RUN mkdir abc
  12. docker build -t test:v1 .
  13. docker run -it test:v1
  14. ls

run 命令创建的中间镜像会缓存,会在下次构建中使用,如果不想使用这些缓存镜像,可以指定

--no-cache参数

卡片5

  • FROM/MAINTAINER/RUN/ADD/CMD/

tar -cvf info.tar a.info b.info

vim Dockerfile

# 基础镜像

FROM java:8

# 维护者

MAINTAINER baizhan<baizhan@163.com>

# 工作目录 切换目录

WORKDIR /opt

# 构建镜像的时候执行的命令

RUN mkdir abc

#将本地文件添加到容器内

ADD ./info.tar /opt #如果是压缩文件的话,会自动为我们解压

#构建成功后执行的命令

CMD echo "This is a test." | wc - #wc的用法

docker build -t test:v3

docker run -it test:v3

卡片6

  • ENV

FROM java:8

# 维护者

MAINTAINER baizhan<baizhan@163.com>

# 工作目录 切换目录

WORKDIR /opt

# 构建镜像的时候执行的命令

RUN mkdir abc

#将本地文件添加到容器内

ADD ./apache-tomcat-9.0.76.tar.gz /opt

#构建成功后执行的命令

#CMD echo "This is a test." | wc -

    • (额外仿照jdk对Tomcat进行相关操作)
    • linux 解压和压缩文件
    • tar -zxvf jdk-8u201-linux-x64.tar.gz -c /usr/local #解压文件
    • tar -zcvf jdk-8u201-linux-x64.tar.gz jdk-8u201-linux-x64 #压缩文件

docker build -t test2:v1 .

docker run -it test2:v1

ls

cd apache-tomcat-9.0.76

ls

cd bin

./startup.sh #在bin路径下确实可以运行tomcat

但如果返回到/opt 路径下就不行了(如果不配置环境变量的话)

所以操作如下:

# 基础镜像

FROM java:8

# 维护者

MAINTAINER baizhan<baizhan@163.com>

# 工作目录 切换目录

WORKDIR /opt

# 构建镜像的时候执行的命令

RUN mkdir abc

#将本地文件添加到容器内

ADD ./info.tar /opt #如果是压缩文件的话,会自动为我们解压

#构建成功后执行的命令

CMD echo "This is a test." | wc - #wc的用法

#环境变量

ENV TOMCAT_HOME=/opt/apache-tomcat-9.0.76 #设置了一个Tomcat的home路径

ENV PATH=$PATH:$TOMCAT_HOME/bin #将该Tomcat路径加到Path路径里

(permission denied)

  • EXPOSE

# 基础镜像

FROM java:8

# 维护者

MAINTAINER baizhan<baizhan@163.com>

# 工作目录 切换目录

WORKDIR /opt

# 构建镜像的时候执行的命令

RUN mkdir abc

#将本地文件添加到容器内

ADD ./info.tar /opt #如果是压缩文件的话,会自动为我们解压

#构建成功后执行的命令

CMD echo "This is a test." | wc - #wc的用法

#环境变量

ENV TOMCAT_HOME=/opt/apache-tomcat-9.0.76 #设置了一个Tomcat的home路径

ENV PATH=$PATH:$TOMCAT_HOME/bin #将该Tomcat路径加到Path路径里

#对外暴露端口

EXPOSE 8080

docker run -it -p 8080:8080 #绑定暴露的对外端口号


 

  • VOLUMN

VOLUME /data #一个卷可以存在于一个或多个容器的指定目录

  • ONBUILD

cd /opt

mkdir abc

cd abc

vim Dockerfile

FROM centos

WORKDIR /data

ONBUILD RUN mkdir test

docker build -t test3:v1 .

docker run -it test3:v1

ls #没有test 文件, 单纯一个镜像不作操作,只有别人继承它的时候才会作用

exit

mkdir d

cd d

vim Dockerfile

FROM test3:v1

docker build -t test3:v2 .

docker run -it test3:v2

ls #有test文件

  • CMD和ENTRYPOINT的区别

vim Dockerfile

#基础镜像

#基础镜像

from centos

#启动容器运行命令

CMD ["ls" , "-a"]

docker build -t test4:v1 .

docker run -it test4:v1

docker run -it test4:v1 ls -l #对CMD的指令进行替换

vim Dockerfile

#基础镜像

#基础镜像

from centos

#启动容器运行命令

ENTRYPOINT ["ls" , "-a"]

docker build -t test4:v2

docker run -it test4:v2 -l #对ENTRYPOINT的指令进行追加

  • 构建tomcat 的镜像

docker search tomcat |wc -l

tar -zxvf apache-tomcat-9.0.76.tar.gz

cd apache-tomcat-9.0.76

cd bin

ls #查看到有startup.sh文件

vim Dockerfile

#基础镜像

#基础镜像

FROM openjdk:11

#维护者

MAINTAINER baizhan

#将本地文件添加到容器内

ADD ./apache-tomcat-9.0.76.tar.gz /usr/local

#设置工作目录

WORKDIR /usr/local

#设置环境变量

ENV TOMCAT_HOME=/usr/local/apache-tomcat-9.0.76

ENV PATH=$PATH:$TOMCAT_HOME/bin

#保留端口

EXPOSE 8080

#启动容器运行命令

CMD startup.sh && tail -F /usr/local/ apache-tomcat-9.0.76/bin/catalina.bat

docker build -t tomcat:1.0 . # " . "代表Dockerfile文件和该命令在同一个目录

docker run --name tomcat -d -p 8080:8080 tomcat:1.0 #运行刚刚创建的镜像

卡片7

  • docker0 详解

ifconfig

#看到:

3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether 02:42:58:9b:bc:66 brd ff:ff:ff:ff:ff:ff

inet172.17.0.1/16 scope global docker0

valid_lft forever preferred_lft forever

inet6 fe80::42:58ff:fe9b:bc66/64 scope link

valid_lft forever preferred_lft forever

57: vethc23b124@if56: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default

link/ether 12:64:29:59:42:ea brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet6 fe80::1064:29ff:fe59:42ea/64 scope link

valid_lft forever preferred_lft forever

docker run --name mytomcat -d -p 8080:8080 docker.io/tomcat

docker exec -it tomcat /bin/bash

ip addr

问题:没办法使用ifconfig 和ip addr 命令

问题解决:(阉割版的Tomcat,纯净的镜像)

在容器里使用:

apt-get update

apt install net-tools

ifconfig

root@0a5a85d262e4:/usr/local/tomcat# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0

inet6 fe80::42:acff:fe11:2 prefixlen 64 scopeid 0x20<link>

ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)

RX packets 3277 bytes 10820785 (10.3 MiB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 3214 bytes 181688 (177.4 KiB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

#出现172.17.0.2

  • evth-pair(容器通过这个技术分配IP)

docker run --name tomcat3 -d -p 9090:8080 docker.io/tomee

docker exec -it mytomcat ping tomcat3

[root@localhost opt]# docker exec -it mytomcat ping tomcat2

rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:290: starting container process caused "exec: \"ping\": executable file not found in $PATH"

#报错

docker exec -it tomcat3 /bin/bash

ifconfig

root@80b82ebc2d88:/usr/local/tomee# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet172.17.0.4 netmask 255.255.0.0 broadcast 0.0.0.0

inet6 fe80::42:acff:fe11:4 prefixlen 64 scopeid 0x20<link>

ether 02:42:ac:11:00:04 txqueuelen 0 (Ethernet)

RX packets 4075 bytes 30095862 (30.0 MB)

RX errors 0 dropped 0 overruns 0 frame 0

TX packets 3506 bytes 194772 (194.7 KB)

TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

#出现172.17.0.4

61: veth9f3b85c@if60: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default

link/ether be:aa:d7:25:26:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet6 fe80::bcaa:d7ff:fe25:2670/64 scope link

valid_lft forever preferred_lft forever

65: veth1224aaa@if64: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default

link/ether da:73:51:80:e1:6a brd ff:ff:ff:ff:ff:ff link-netnsid 2

inet6 fe80::d873:51ff:fe80:e16a/64 scope link

valid_lft forever preferred_lft forever

虚拟接口,成对出现

docker使用linux的桥接,宿主机中一个docker 容器的网桥:即Docker0

docker stop $(docker ps -aq) #暂停所有的容器

docker rm $(docker ps -aq) #删掉容器

ifconfig #只有docker0,刚刚创建的网桥不在了

  • 容器互联

Docker网络管理——容器互联

docker run --name tomcat3 -d -p 8080:8080 docker.io/tomee

docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 docker.io/mysql:5.7

docker exec -it mysql /bin/bash

ifconfig

#还是不行

#换了个tomee的镜像再重复刚刚操作就好了

#ip 是172.17.0.4

exit

    • ping ip

docker exec -it mytomcat /bin/bash

ping 172.17.0.4 #可以ping通,因为两个容器都在同一个局域网下

问题:要下载语言包

apt -y install iputils-ping

    • ping 名字

删除所有Tomcat容器

docker run --name my_tomcat3 -d -p 8080:8080 --link mysql1 tomcat

docker run --name mysql3 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

docker exec -it my_tomcat3 ping mysql3

问题:没ping通

原因分析:两个容器都要下载ping 命令

问题: mysql ping不了

解决:

apt-get update

apt-key adv --keyserver https://mirrors.tuna.tsinghua.edu.cn/ubuntu --recv-keys B7B3B788A8D3785C

apt -y install iputils-ping

#能通过名字进行Ping的原因分析:

映射关系

docker exec -it my_tomcat3 /bin/bash

cat /etc/hosts

[root@localhost opt]# docker exec -it my_tomcat1 /bin/bash

root@694940ed4da1:/usr/local/tomee# cat /etc/hosts

127.0.0.1 localhost

::1 localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

172.17.0.2 mysql1 b6f400762441

172.17.0.3 694940ed4da1

  • docker4种网络模式

Host模式

容器和宿主机共同一个网卡,使用宿主机的IP和端口(同时可以访问你的容器,全开放,不安全)

Container模式

刚创建的容器和之前创建的容器共用一个IP ,而不是和宿主机共享(极少用)

None模式

创建的容器没办法联网,最安全

bridge模式(默认,最常用)

docker0 分配IP,在同一个局域网里

  • 自定义网络

docker network --help

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

# 模式 网段 网关 名字

#192.168.66.0/24 : 192.168.66.1-192.168.66.254

#192.168.0.0/16 : 192.168.0.1-192.168.255.254

docker run --name tomcat -d -p 8080:8080 tomee

docker ps

docker network connect mynet tomcat #方法1

docker network inspect mynet

"1604ea3b0b420507237b7d46fee2fc0633da421c5a539a436af4fe6130f5cf52": {

"Name": "tomcat",

"EndpointID": "d0f5e72ad1942ea5b7ac38c848f87675b2696776ecce3355b2f01307c84da688",

"MacAddress": "02:42:c0:a8:00:02",

"IPv4Address": "192.168.0.2/16",

"IPv6Address": ""

docker network connect mynet tomcat

docker run -d -p 8090:8080 --name tomcat2 --net mynet tomee #方法2

docker network inspect mynet

"Containers": {

"1604ea3b0b420507237b7d46fee2fc0633da421c5a539a436af4fe6130f5cf52": {

"Name": "tomcat",

"EndpointID": "d0f5e72ad1942ea5b7ac38c848f87675b2696776ecce3355b2f01307c84da688",

"MacAddress": "02:42:c0:a8:00:02",

"IPv4Address": "192.168.0.2/16",

"IPv6Address": ""

},

"363b1a8fe1003533b1c872709aa61d583664a54723c799621afefe94a784207f": {

"Name": "tomcat2",

"EndpointID": "b3cd0b6cefe3d2079d582e9c5f9c60fe11a206179194e21296377984516fea40",

"MacAddress": "02:42:c0:a8:00:03",

"IPv4Address": "192.168.0.3/16",

"IPv6Address": ""

}

都在同一个网络下就能ping通

网关相同就能ping通

docker run -d -p 7070:8080 --name tomcat4 --net=host tomee #指定Docker的连接方式

  • Docker公有云-DockerHub
  • Docker C|S架构

sudo docker version

sudo docker -H tcp://127.0.0.1:1234 (docker run / docker pull )

  • Docker的联合文件

FROM centos:6.9

RUN rm -rf /etc/yum.repos.d/* && \

curl -o /etc/yum.repos.d/CentOS

Base.repo

http://mirrors.aliyun.com/repo/Centos-6.repo

&& \

curl -o /etc/yum.repos.d/epel.repo

http://mirrors.aliyun.com/repo/epel-6.repo

&& \

yum install nginx -y

WORKDIR /usr/share/nginx/html

ADD xiaoniao.tar.gz .

ADD init.sh /init.sh

EXPOSE 80

VOLUME /usr/share/nginx/html

CMD ["/bin/bash","/init.sh"]

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

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

相关文章

算法基础-----【动态规划】

动态规划(待完善) 动规五部曲分别为&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式&#xff08;状态转移公式&#xff09;dp数组如何初始化确定遍历顺序举例推导dp数组、 动态规划的核心就是递归剪枝&#xff08;存储键值&#xff0c;…

教师备课三要素是指什么内容

在教育的舞台上&#xff0c;教师的角色至关重要。他们不仅是知识的传递者&#xff0c;更是学生学习路上的引导者。那么&#xff0c;教师备课的三要素究竟是什么呢&#xff1f;这不仅是每个教师在教学过程中必须面对的问题&#xff0c;也是他们不断探索和实践的课题。 教师备课的…

如何通过TPM活动提升员工的设备管理能力?

在快节奏的现代职场中&#xff0c;设备管理能力已成为员工综合素质的重要一环。然而&#xff0c;如何有效提升这一能力&#xff0c;让员工在设备操作、维护和管理上更加得心应手呢&#xff1f;答案就隐藏在TPM&#xff08;Total Productive Maintenance&#xff0c;全面生产维护…

Python容器 之 列表--定义

1.什么是列表呢&#xff1f; 列表(list)是 Python 中使用最频繁的数据类型, 在其他语言中通常叫做数组, 专门用来存储一组数据 列表,list, 使用 [ ] 列表可以存放任意多个数据 列表中可以存放任意类型的数据 列表中数据之间 使用 逗号隔开 2.列表如何定义&#xff1f; &#…

【TB作品】atmega16 计算器,ATMEGA16单片机,Proteus仿真

实验报告&#xff1a;基于ATmega16单片机的简易计算器设计 1. 实验背景 计算器是日常生活和工作中不可或缺的工具&#xff0c;通过按键输入即可实现基本的四则运算。通过本实验&#xff0c;我们将利用ATmega16单片机、矩阵键盘和LCD1602显示屏&#xff0c;设计并实现一个简易…

2023软考中级《软件设计师》(备考冲刺版) | 数据库系统

目录 1.数据库的基本概念 1.1 数据库体系结构 1.2 三级模式结构 1.3 数据仓库 2.数据库设计过程 2.1 概念结构设计 2.1.1 概念设计过程 2.1.2 E-R图 2.2 逻辑结构设计 2.2.1 关系模式相关概念 2.2.2 E-R图转关系模式&#xff08;涉及下午题&#xff09; 2.2.3 关系…

小白学习手册:轻松理解MQ消息队列

目录 # 开篇 RabbitMQ介绍 通讯概念 1. 初始MQ及类型 2. MQ的架构 2.1 RabbitMQ的结构和概念 2.2 RabbitMQ消息流示意图 3. MQ下载使用 3.1 Docker下载MQ参考 3.2 进入RabbitMQ # 开篇 MessagesQueue 是一个抽象概念&#xff0c;用于描述消息队列系统的一般特性和功能…

python如何求不定积分

sympy介绍 sympy库的安装非常的简单&#xff0c;利用conda命令可以快速的完成安装。 conda install sympy 接下来&#xff0c;我们将介绍利用第三方库sympy来完成积分的计算。 python求解不定积分 接下来&#xff0c;我们将介绍上述的不定积分的求解。 首先导入sympy库中的…

大聪明教你学Java | 深入浅出聊 RocketMQ

前言 &#x1f34a;作者简介&#xff1a; 不肯过江东丶&#xff0c;一个来自二线城市的程序员&#xff0c;致力于用“猥琐”办法解决繁琐问题&#xff0c;让复杂的问题变得通俗易懂。 &#x1f34a;支持作者&#xff1a; 点赞&#x1f44d;、关注&#x1f496;、留言&#x1f4…

YOLOv10改进教程|C2f-CIB加入注意力机制

一、 导读 论文链接&#xff1a;https://arxiv.org/abs/2311.11587 代码链接&#xff1a;GitHub - CV-ZhangXin/AKConv YOLOv10训练、验证及推理教程 二、 C2f-CIB加入注意力机制 2.1 复制代码 打开ultralytics->nn->modules->block.py文件&#xff0c;复制SE注意力机…

Docker期末复习

云计算服务类型有: IaaS 基础设施及服务 PaaS 平台及服务 SaaS 软件及服务 服务类型辨析示例: IaaS 服务提供的云服务器软件到操作系统,具体应用软件自己安装,如腾讯云上申请的云服务器等;SaaS提供的服务就是具体的软件,例如微软的Office套件等。 云计算部署模式有: 私有云…

发那科机床采集数据

前面两篇重点介绍了理论&#xff0c;从这篇开始&#xff0c;我们开始进行实战。首先从发那科机床开始&#xff0c;为何第一个将发那科。因为发那科系统机床有三最。最广泛&#xff08;中国保有量最多&#xff09;、 最多资料&#xff08;发那科系统的开发包历史悠久&#xff0c…

Linux——移动文件或目录,查找文件,which命令

移动文件或目录 作用 - mv命令用于剪切或重命名文件 格式 bash mv [选项] 源文件名称 目标文件名称 注意 - 剪切操作不同于复制操作&#xff0c;因为它会把源文件删除掉&#xff0c;只保留剪切后的文件。 - 如果在同一个目录中将某个文件剪切后还粘贴到当前目录下&#xff0c;…

CS144 Lab3 TCPSender复盘

一.基础概念 1.TCPSender在TCPSocket中的地位与作用 Lab0中实现了基于内存模拟的流控制-字节流&#xff08;ByteStream&#xff09;&#xff0c;底层使用std::deque实现&#xff0c;根据最大容量Capacity进行容量控制。个人理解它相当于应用层的输入输出缓存区&#xff0c;用户…

江协科技51单片机学习- p23 DS1302实时时钟

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

巴比达内网穿透:深度剖析其在解决远程连接挑战中的技术优势

在信息技术日新月异的今天&#xff0c;远程协作与管理的需求日益增长&#xff0c;但内网环境的隔离性一直是横亘在高效远程操作面前的一道坎。本文将深入探讨一款专为打破此壁垒而生的工具——巴比达内网穿透&#xff0c;如何以其技术创新和高效性能&#xff0c;成为解决远程连…

汽车内饰塑料件光照老化实验箱

塑料件光照老化实验箱概述 塑料件光照老化实验箱&#xff0c;又称为氙灯老化试验箱&#xff0c;是一种模拟自然光照条件下塑料材料老化情况的实验设备。它通过内置的氙灯或其他光源&#xff0c;产生接近自然光的紫外线辐射&#xff0c;以此来加速塑料及其他材料的光老化过程。…

数据挖掘常见算法(分类算法)

K&#xff0d;近邻算法&#xff08;KNN&#xff09; K-近邻分类法的基本思想&#xff1a;通过计算每个训练数据到待分类元组Zu的距离&#xff0c;取和待分类元组距离最近的K个训练数据&#xff0c;K个数据中哪个类别的训练数据占多数&#xff0c;则待分类元组Zu就属于哪个类别…

Python + OpenCV 酷游地址教学V鄋KWK3589

本篇文章汇整了一系列的Python OpenCV 教学&#xff0c;只要按照教学文的顺序阅读和实作&#xff0c;就可以轻松入门OpenCV&#xff0c;并透过OpenCV 实现许多影像相关的创意应用。 接下来我们来介绍OpenCV-- OpenCV 是一个跨平台的电脑视觉函式库( 模组) &#xff0c;可应用…

Python容器 之 字符串--字符串的常用操作方法

1.字符串查找方法 find() 说明&#xff1a;被查找字符是否存在于当前字符串中。 格式&#xff1a;字符串.find(被查找字符) 结果&#xff1a;如果存在则返回第一次出现 被查找字符位置的下标 如果不存在则返回 -1 需求&#xff1a; 1. 现有字符串数据: 我是中国人 2. 请设计程序…