Docker复习

目录

  • 1. Docker的理解
    • 1.1 Docker三要素
  • 2 安装Docker
    • 2.1 安装命令
    • 2.2 配置阿里云加速器
  • 3 Docker命令
    • 3.1 启动类命令
    • 3.2 镜像类命令
  • 4 实战
    • 4.1 启动容器,自动创建实例
    • 4.2 查看Docker内启动的容器
    • 4.3 退出容器
    • 4.4 其他
    • 4.5 导入导出文件
    • 4.6 commit
  • 5 Dockerfile
    • 5.1 理解Dockerfile
    • 5.2 制作镜像
    • 5.2 虚悬镜像
  • 6 Compose
    • 6.1 下载Compose
    • 6.2 docker-compose.yaml文件示例
    • 6.3 使用compose
  • 基础概念补充
    • 1 挂载 Volume
    • 2 网络 network
      • 2.1. Docker容器之间如何通信的?
      • 2.2 想看看Docker各个容器的网络信息
      • 2.3 如何分配给容器Ip?
      • 2.4 bridge模式
      • 2.5 自定义网络名
      • 2.6 host 网络类型
    • 3 网关

1. Docker的理解

为什么要使用Docker?

  • 在开发项目的过程中,开发人员一套环境(软件代码,JDK版本,Redis版本,数据库版本等环境),测试人员一套环境,运维人员一套环境。

  • 开发人员自己可以运行程序,仅将源代码打包发给测试人员,测试人员需要按照要求配置出同样的运行环境,非常容易出现某处配置错误无法启动项目的情况。如使用了集群,不仅配置起来繁琐,工程量也大,维护更难。所以希望可以改善这种情况。

  • 于是出现Docker,开发人员将 开发环境+源代码,全部打包发送,测试人员在Docker上简单部署(其实就是将文件上传到Docker),就可以启动项目了,不需要像之前那样,还得按照要求搭建运行环境。

什么是Docker?

  • 对比VMware,我们需要一个本地服务器(自己的电脑),安装VM,在VM上安装centOS(一个或者多个),在centOS上安装软件。需要清楚的是:centOS本质上是一个Linux操作系统的镜像,也就是打包了Linxu一整套操作系统,所以比较大。因此安装几个centOS电脑资源就不够用了。而且每次创建centOS都得花费个3-5min,是比较慢的(我自己有时还得看教程安装)
  • 在这里插入图片描述
  • Docker引擎本质上就是将Linux操作系统的核心打包,并不是打包一整套操作系统。所以做到了轻量化,之前一台服务器安装一个VM,在VM上部署10台centOS,现在一台服务器安装一个Docker,可以部署100台容器。所以看到Docker对比VM就能理解了。只不过我们把VMware的centOS叫做虚拟机,也就是Docker的容器。
  • 创建不同的虚拟机实现隔离。也就是创建不同的容器实现隔离

1.1 Docker三要素

  1. 镜像
    将程序源代码+生产环境打包,制作成一个镜像文件(如跨境电商管理系统的镜像文件)

  2. 容器实例
    根据镜像文件创建运行实例,一个容器运行一种服务
    在这里插入图片描述

  3. 仓库
    存放镜像的地方,需要把镜像发布到仓库,再到仓库拉取下来。

  • Docker公司提供的库:Docker Hub
  • 阿里提供的仓库:阿里云
  • 公司自己建立的库

2 安装Docker

2.1 安装命令

yum -y install gcc
yum -y install gcc-c++
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
docker version
docker run hello-world

2.2 配置阿里云加速器

1. mkdir -p /ect/docker
2. cd /ect/docker/
3. tee /ect/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://aa25jngu.mirror.aliyun.com"]
> }
> EOF
4. systemctl daemon-reload
5. systemctl restart docker
6. docker run hello-world

3 Docker命令

3.1 启动类命令

stystemctl start docker 启动
stystemctl stop docker 关闭
stystemctl status docker 查看状态

3.2 镜像类命令

查看镜像
1. docker images

在这里插入图片描述

  • repository 仓库:存放下载的镜像
  • Tag 标签:(例如mysql 5.6 版本,Tag就是5.6)不设置版本号,默认是latest,表示最新版本
  • Image Id 唯一标识
根据镜像名称去查询仓库中的镜像查询redis镜像(未指定版本号)
2. docker search redis将查询结果限制展示5条
docker search --limit 5 redis

在这里插入图片描述

下载镜像查询redis镜像(未指定版本号,默认下载最新版)
3. docker pull redis查询redis镜像(指定版本号)
docker pull redis:6.0.8
查看docker资源使用情况
4. docker system df

在这里插入图片描述

查看操作系统的资源使用情况
在这里插入图片描述

删除镜像(指定名字)
5. docker rmi hello-world删除镜像(指定镜像的唯一标识)
docker rmi 对应的Image Id删除镜像(强制删除)
docker rmi -f hello-world 删除多个
docker rmi -f 镜像名1:TAG 镜像名2:TAG删除全部
docker rmi -f $(docker images -qa)

4 实战

4.1 启动容器,自动创建实例

在这里插入图片描述
在Docker容器中启动ubuntu

启动容器中ubuntu实例
docker run -it ubuntu /bin/bash-i :指交互式访问
-t :指tty,即系统
it需要一起使用,即告诉系统,启动后不要立刻走,而是停下来等待我进一步操作。并且是以bash的交互方式
/bin/bash:以bash的方式

在这里插入图片描述

此时就可以操作ubuntu内部信息,比如查看ubuntu的文件啥的

4.2 查看Docker内启动的容器

在这里插入图片描述

container id:容器实例Id
表示使用ubuntu镜像创建了 Id=226a56fb739e 的容器实例,因为未指定名称,此时就随机分配了一个

现在再利用ubuntu镜像创建一个容器实例,并且 指定名称

使用--name指定名称
(bash 或者 /bin/bash 都可以)
docker run -it --name=My_Ubuntu02 ubuntu bash

在这里插入图片描述

此时就根据ubuntu镜像创建了两个容器实例

此时若提问:必须指定交互方式吗,如果不写呢?如这样:docker run -it ubuntu
因为Docker机制的问题,这样启动有时候会导致容器启动后紧接着直接关闭,添加上交互方式就是让容器启动后并停留住。

这种方式叫做前台交互式启动
还有一种后台交互式启动:docker run -d ubuntu

总结一下,
前台交互式启动:docker run -it ubuntu bash
后台交互式启动:docker run -d ubuntu

4.3 退出容器

- exit
run 进去容器,exit退出,容器停止
- ctrl+p+q
run进去容器,ctrl+p+q退出,容器不停止

退出后如何再进去呢?

  • 第一种方式:docker exec -it 容器实例ID (推荐)

在这里插入图片描述

  • 第二种方式:docker attach -it 容器实例ID

区别:
exec会在容器中打开新的终端,并且启动新的进程,用exit退出,不会导致容器停止
attach直接进入容器终端,不启动新的进程,用exit退出,会导致容器停止

4.4 其他

  • 启动已经停止的容器 docker start 容器ID或者容器名
  • 重启容器 docker restart 容器ID或者容器名
  • 停止容器 docker stop 容器ID或者容器名
  • 强制停止容器 docker kill 容器ID或者容器名
  • 删除已停止的容器 docker rm 容器ID

4.5 导入导出文件

将容器实例中的文件导出在本地

docker cp 容器实例Id:/路径/a.txt  /主机路径

将容器实例打包成压缩包A.tar

docker export 容器实例Id > A.tar

4.6 commit

例如:我们使用ubuntu镜像创建了一个名为MyUbuntu01的实例,这个实例只包含了linxu核心的命令,我们现在实际业务需要修改内部的某个文件,想使用vim命令。MyUbuntu01内部没有
所以我们需要给其添加功能

如何做呢?先进入容器实例,依次执行命令
apt-get update
apt-get -y install vim

那我如果使用ubuntu镜像再创建一个名为MyUbuntu02的实例,也需要vim命令,岂不是还要添加一次功能。
这个时候,我们可以根据实例MyUbuntu01反向生成一个新的镜像,修改名称为new_ubuntu,同时也可指定版本用于区分(例如new_ubuntu:1.2)。这样根据new_ubuntu:1.2 创建的实例就都具有我们添加的vim功能了

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创作的目标镜像名:[TAG]
docker commit -m="vim cmd add ok" -a="zzyy" fahf33rfaaa new_ubuntu:1.2

5 Dockerfile

5.1 理解Dockerfile

我们已经学会使用镜像去创建容器实例,现在了解一下如何创建镜像
在这里插入图片描述
每个镜像背后都是由各自的Dockerfile制作的
因此学习一下DockerFile的语法规则

  • from

在每个Dockerfile的第一行,表示当前镜像是基于哪个镜像进行变动的,也可以指定自己

  • maintainer

镜像的作者,表明此镜像是谁做的

  • run

这个run命令和docker run -it xxxx中的docker run不一样
docker run:这个run是在创建并启动实例
dockerfile内部的run:是在docker build时运行(创建镜像)

  • expose

暴露端口 Docker容器端口:镜像实例暴露端口
比如为什么Tomcat可以用8080端口访问,就是因为其镜像暴露的端口设置成了8080

  • workdir

修改进入容器后的落脚点(实例展示默认的落脚点)

在这里插入图片描述
如何修改

EVA MY_PATH /user/local
WORKDIR $MY_PATH
这样进去运行为镜像实例,就会切换到/user/local路径下,而不是默认落脚点

  • env

设置环境变量

  • copy

copy 路径A 路径B
A路径是本机资源路径,B路径是镜像中的路径,意思是将本地资源复制到镜像中指定的路径

copy --from=镜像名:TAG 路径A 路径B
例如COPY --from=oms-middleware-gosu-alpine-amd64:latest /usr/local/bin/gosu /bin/
A路径是镜像中路径,B路径也是镜像路径,意思是将名为XX的镜像A路径下的资源复制到 生成镜像B路径下

  • add

表示将路径A的资源复制到路径B,并且自动解压tar压缩包

  • volume

容器数据卷

  • cmd
  • Dockerfile内不写cmd指令,然后我们运行镜像实例时这样写的 docker run -it ubuntu /bin/bash
  • Dockerfile内会这么写 CMD ["/bin/bash","run"],然后我们运行镜像实例时这样写的 docker run -it ubuntu ,实际上执行的命令是 docker run -it ubuntu /bin/bash
    Dockerfile内写多个CMD命令 CMD ["/bin/bash","run"] CMD ["demo.sh","run"] ,然后我们运行镜像实例时这样写的 docker run -it ubuntu ,实际上执行的命令是 docker run -it ubuntu demo.sh (可以看到最后一个cmd命令会覆盖前面的cmd命令)
    Dockerfile内写多个CMD命令 CMD ["/bin/bash","run"] ,然后我们运行镜像实例时这样写的 docker run -it ubuntu demo.sh,实际上执行的命令是 docker run -it ubuntu demo.sh (可以看到最后一个dockerfile文件内的cmd直接失效)
  • entrypoint

类似于CMD命令,不会被覆盖

Dockerfile文件,镜像 nginx:test

 FROM nginxENTRYPOINT {"nginx","-c"} # 定参CMD {"/etc/nginx/nginx.conf"} # 变参
# Docker命令 
docker run nginx:test
# 实际上执行命令docker run nginx:test nginx -c /etc/nginx/nginx.conf
# Docker命令 
docker run nginx:test  /etc/nginx/AAAA.conf
# 实际上执行命令docker run nginx:test nginx -c /etc/nginx/AAAA.conf

5.2 制作镜像

5.2 虚悬镜像

在构建镜像或者删除镜像时产生错误,导致创建了一个仓库名和TAG都为< none >的镜像,这种会有潜在的安全风险,建议删除

查询所有的虚悬镜像

docker image ls -f dangling=true

删除所有的虚悬镜像

docker image purne

6 Compose

6.1 下载Compose

搞一个新文件存放

curl -L "https://github.com/docker/compose/releases/download/v2.11.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composedocker-compose --version

前面利用镜像创建镜像实例的时候,需要执行 docker run -d 镜像名
考虑一个场景:在一个大型项目中,我们需要先启动mysql服务,再启动redis集群(有30个redis),最后再启动注册中心(consul),最最后再启动项目代码。
会有什么问题呢?

  • 需要手动且按序 启动很多个容器(数量多+难记住顺序)
  • 假如consul服务挂掉,重新启动consul的容器后,会变更新的网络地址,无法保证容器之间的通信

使用Compose工具,将如何启动的相关信息全部写在一个文件,我们仅执行这个文件,Docker会自动执行该文件内部的信息。此乃自动化部署。

所以Compose被称为:自动化统一编排工具,我们创建的文件名为docker-compose.yaml。可以看,其实就是一个yaml文件。yaml有自己的语法规则,学习springboot就知道了

6.2 docker-compose.yaml文件示例

看一个docker-compose.yaml文件示例

versdion:"3.6"servers: #表示有几个服务(有MyUbuntu和MyZookeeper服务)MyUbuntu: # 自定义,命名不冲突就行iamg: ubuntu:3.2 # 模版镜像的名字container_name: mu01 # 生成镜像的名字ports:- "6001:6001" # 端口号volumes:- /app/MyUbuntu:/data # 挂载network:- atguigu_net # 设置网路depends_on: # 表明需要先启动redis,mysql,再启动本服务- redis- mysqlMyZookeeper:# 自定义,命名不冲突就行......
network:atguigu_net # 设置网络

这个文件与我们执行此命令是一样的

docker run -d -p 6001:6001 -v /app/MyUbuntu:/data --network atguigu_net --name mu01 ubuntu:3.2

6.3 使用compose

  1. 编写docker-compose.yaml(重点)
  2. 执行docker-compose up -d

基础概念补充

1 挂载 Volume

挂载是什么?

主机上有A文件,容器有B文件,此时容器无法访问主机的A文件,仅仅可访问自己的B文件
将主机的A文件挂载到容器上,容器就可以访问主机的A文件,也可以访问自己的B文件

为什么不直接将主机A文件放在容器中?

例如容器大小是10Mb,文件A是1Gb,无法直接将文件A存放到容器内。
此时使用一个链接,将主机的文件A 链接在容器上,当容器需要访问文件A时,就顺着链子获取A。这就是挂载
在这里插入图片描述

使用挂载还有什么好处?

  • 可以访问到主机的A文件,也就代表可以操作主机上A文件,可以保证数据持久化,若是只保存在容器,容器一重启就没了
  • 数据共享:多个容器可以共享同一个挂载目录,实现数据共享

怎么挂载呢?

  1. 创建名为web的容器,并将主机的/src/web目录挂载到容器的/opt/web目录下
    docker run -d --name web -v /src/webapp:/opt/webapp

2 网络 network

2.1. Docker容器之间如何通信的?

容器A:ip–127.0.0.1
容器B:ip–127.0.0.4
(注:在A,B同一网关下)
容器A通过ip连接 :ping 127.0.0.4 √,连接成功

2.2 想看看Docker各个容器的网络信息

选择一个镜像实例,查看具体网络情况
在这里插入图片描述
查看网关 Getway 和 地址 IPAddress
在这里插入图片描述
再看看另外一个镜像实例的网络情况
在这里插入图片描述
可以看到每个容器中镜像实例都有一个IP和网关,这个IP是怎么来的。其实不然,是Docker内部分配的

2.3 如何分配给容器Ip?

这就必须先了解Docker的网络模式
在这里插入图片描述
此图表示,网络模式有三种bridge(主要使用的),host ,null

这个name是什么意思?
选择一种网络模式后,必须自定义一个名字
我们定义方案A为dirver类型,以后谁想使用driver,直接勾选方案A。很方便管理
在这里插入图片描述

2.4 bridge模式

若容器A选择桥接模式后,docker会创建一个虚拟网桥docker0,docker0会给容器随机发一个Ip和网关
在这里插入图片描述
我怎么知道有虚拟网桥的?

输入ip addr查看主机上的通信情况
在这里插入图片描述

docker0我明白了这个东西的存在,那下面两条红框是什么?

当然不是容器直接一根线就链接到虚拟网桥,而是有更多的细节在里面
当创建一个容器并且设置网络模式为bridge(创建时默认为bridge)时,虚拟网桥会创建一个网卡给容器A,自己留一个与之对应的接口。容器B,容器C也是同样的。

在这里插入图片描述
当我们在主机上输入 ip addr时,veth 就是我们的接口标识。
在这里插入图片描述
现在我们切换到容器视角看看网络信息
在这里插入图片描述
总结一下
在这里插入图片描述

查看所有是桥接模式的容器docker network inspect bridge

在这里插入图片描述
在这里插入图片描述

2.5 自定义网络名

回到最开始的问题,docker容器之间如何通信?

前面说了根据Ip进行连接,那是不是容器A必须得知道容器B的Ip,第一次我告诉容器A了,10分钟后容器B挂掉了,我重启了容器B,这个时候容器B的IP就变成了新的,AB无法通信,除非A知道B最新的IP地址。

那这样岂不是特别麻烦,有没有什么办法解决呢?

既然容器IP是变动的,容器名不会变动,我们直接通过名字进行通信。
以前:容器A需要知道容器B的IP ping 127.0.0.3
现在:容器A只需要知道容器B名字 ping tomcat(容器B名字)

怎么做到呢?

  1. 创建自定义网络
    在这里插入图片描述
  2. 新建容器并指定使用该网络
docker run -d -p 8081:8081 --network diy_name --name t1 tomcat bash
docker run -d -p 8081:8081 --network diy_name --name t1 ubuntu bash
  1. ping一下
    docker exec -it t1 bash 进入容器t1
    ping t2 连接容器t2

2.6 host 网络类型

容器共享主机的IP,不再分配容器单独的Ip。

在这里插入图片描述

3 网关

网关是什么?

比如我们在浏览器输入www.baidu.com,域名解析后会得到百度的IP地址。电脑的网卡会将IP发送给路由器的网关,网关先转发到本地网络查是否有此IP地址,若没有再转发到互联网去查此IP地址。

所以网关就是负责转发。

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

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

相关文章

uniapp:H5定位当前省市区街道信息

高德地图api&#xff0c;H5定位省市区街道信息。 由于uniapp的uni.getLocation在H5不能获取到省市区街道信息&#xff0c;所以这里使用高德的逆地理编码接口地址接口&#xff0c;通过传key和当前经纬度&#xff0c;获取到省市区街道数据。 这里需要注意的是&#xff1a;**高德…

0基础学习VR全景平台篇 第69篇:VR直播-如何设置广告

直播间可以插入轮播广告&#xff0c;并且支持外链跳转&#xff0c;能够有效地提升VR直播活动的转化率。 1、点击&#xff0c;添加广告 2、广告图展现形式分为两种&#xff1a;普通广告和全屏广告&#xff0c;普通广告在非全屏播放的直播间显示&#xff0c;全屏广告在全屏播放的…

Raki的读paper小记:LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

Abstract&Introduction&Related Work 研究任务 对大模型进行部分微调 已有方法和相关工作 现有技术通常通过扩展模型深度引入推理延迟&#xff08;Houlsby 等人&#xff0c;2019&#xff1b;Rebuffi 等人&#xff0c;2017&#xff09;&#xff0c;或通过减少模型可用序…

redis的四种模式优缺点

redis简介 Redis是一个完全开源的内存数据结构存储工具&#xff0c;它支持多种数据结构&#xff0c;以及多种功能。Redis还提供了持久化功能&#xff0c;可以将数据存储到磁盘上&#xff0c;以便在重启后恢复数据。由于其高性能、可靠性和灵活性&#xff0c;Redis被广泛应用于…

什么是 MyBatis?

经过前几篇博客的学习 Spring 系列的基本操作已经实现的差不多了&#xff0c;接下来&#xff0c;我们来学习更重要的知识&#xff0c;将前端传递的数据存储起来&#xff0c;或者查询数据库里面的数据。 一、MyBatis 是什么&#xff1f; MyBatis 是一款优秀的持久层框架&…

东南大学轴承故障诊断(Python代码,CNN模型,适合复合故障诊断研究)

运行代码要求&#xff1a; 代码运行环境要求&#xff1a;Keras版本>2.4.0&#xff0c;python版本>3.6.0 本次实验主要是在两种不同工况数据下&#xff0c;进行带有复合故障的诊断实验&#xff0c;没有复合故障的诊断实验。 实验结果证明&#xff0c;针对具有复合故障的…

面试—Redis相关

文章目录 一、概述二、缓存1、缓存穿透2、缓存击穿3、缓存雪崩4、双写一致性5、持久化6、数据过期策略7、数据淘汰策略 三、分布式锁四、其它面试题1、主从复制2、哨兵3、分片集群结构4、I/O多路复用 一、概述 使用场景&#xff1a; Redis的数据持久化策略有哪些什么是缓存穿透…

智能安全配电装置应用场景有哪些?

安科瑞 华楠 一、应用背景 电力作为一种清洁能源&#xff0c;给人们带来了舒适、便捷的电气化生活。与此同时&#xff0c;由于使用不当&#xff0c;维护不及时等原因引发的漏电触电和电气火灾事故&#xff0c;也给人们的生命和财产带来了巨大的威胁和损失。 为了防止低压配电…

SkyEye与Jenkins的DevOps持续集成解决方案

在技术飞速发展的当下&#xff0c;随着各行各业的软件逻辑复杂程度提升带来的需求变更&#xff0c;传统测试已无法满足与之相对应的一系列测试任务&#xff0c;有必要引入一个自动化、可持续集成构建的DevOps平台来解决此类问题。本文将主要介绍SkyEye与Jenkins的持续集成解决方…

C++OpenCV(5):图像模糊操作(四种滤波方法)

&#x1f506; 文章首发于我的个人博客&#xff1a;欢迎大佬们来逛逛 &#x1f506; OpenCV项目地址及源代码&#xff1a;点击这里 文章目录 图像模糊操作均值滤波高斯滤波中值滤波双边滤波 图像模糊操作 关于图片的噪声&#xff1a;指的是图片中存在的不必要或者多余的干扰数…

windows下搭建php开发环境

http://wed.xjx100.cn/news/139397.html?actiononClick https://www.bilibili.com/read/cv23429835/ https://www.php.cn/faq/498307.html 安装iis 选择卸载程序 安装php 官网https://www.php.net/下载 选择线程安全 国内地址 下载完成后解压放到想存放的路径 添加p…

数据可视化 - 动态柱状图

基础柱状图 通过Bar构建基础柱状图 from pyecharts.charts import Bar from pyecharts.options import LabelOpts # 使用Bar构建基础柱状图 bar Bar() # 添加X轴 bar.add_xaxis(["中国", "美国", "英国"]) # 添加Y轴 # 设置数值标签在右侧 b…

深入浅出之Docker Compose详解

目录 1.Docker Compose概述 1.1 Docker Compose 定义 1.2 Docker Compose产生背景 1.3 Docker Compose 核心概念 1.4 Docker Compose 使用步骤 1.5 Docker Compose 常用命令 2. Docker Compose 实战 2.1 Docker Compose下载和卸载 2.2 Docker Compose 项目概述 2.3 Do…

北航投资已投企业四象科技成功发射三颗卫星

1箭4星&#xff01;2023年7月23日10时50分&#xff0c;我国在太原卫星发射中心使用长征二号丁运载火箭&#xff0c;成功将四象科技“矿大南湖号”SAR遥感卫星、“虹口复兴号”光学遥感卫星、“中电农创号”热红外遥感卫星以及银河航天灵犀03星共4颗卫星发射升空&#xff0c;卫星…

idea springBoot 部署多个项目打开Run Dashboard 窗口

在部署springcloud 项目的时候 本地调试&#xff0c;有可能需要全部启动所有服务&#xff0c;单个部署比较麻烦&#xff0c;通过Run DashBoard 窗口可以完美实现 1.先打开项目的文件地址找到workspace.xml文件&#xff0c;在项目下的.idea\workspace.xml 2. ctrlf 找到RunDash…

SpringMVC-mybatis,SQL语句中误用了desc关键字,导致报错。

17-Jul-2023 21:26:22.295 淇℃伅 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log 1 Spring WebApplicationInitializers detected on classpath 17-Jul-2023 21:26:22.621 淇℃伅 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalin…

小白的机器学习之路(四)神经网络的初步认识:基于pytorch搭建自己的神经网络

小白的机器学习之路&#xff08;四&#xff09; 引子神经网络的基本结构反向传播算法和激活函数优化器如何通过pytorch搭建自己的BP network 引子 当前交通大数据业务的需要&#xff0c;需要承担一部分算法工作&#xff08;数据处理&#xff09;&#xff0c;考虑到上次研究深度…

springboot开放实验室管理系统【纯干货分享,免费领源码03361】

摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是使用动态网页开发技术java作为系统的开发语言&#xff0c;M…

【Leetcode】二叉树进阶面试题

文章目录 二叉树创建字符串二叉树分层遍历&#xff08;从前开始&#xff09;二叉树分层遍历&#xff08;从后开始&#xff09;二叉树的最近公共祖先二叉搜索树与双向链表从前序与中序遍历序列构造二叉树从中序与后序遍历序列构造二叉树二叉树的前序遍历&#xff08;非递归&…

GitLab 删除项目

1.点击头像 2.点击Profile 3.选择要删除的项目点进去 4.settings-general-Advances-expand 5.然后在弹出框中输入你要删除的项目名称即可