Docker-compose 简单介绍

目录

一      Docker-compose与  Docker Swarm

1,docker-compose 出现的意义

2,  Docker Compose 是什么

3,Docker Swarm    是什么

3,Docker Compose     Docker Swarm  主要区别

二     Docker-compose 简介

1, Docker-compose 组成

2,Docker-compose  的配置文文件

3,Docker-compose 工作原理

 三      compose 安装

1,Docker Compose 环境安装

2, 演示

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

1, YAML  语言是什么

2,  使用 YAML 时需要注意下面事项

3,    数据结构

3.1   对象映射: 键值对的字典

3.2  序列数组: 一组按次序排列的列表

3.3   布尔值

4    示例

五     Docker Compose配置常用字段

六      Docker Compose 常用命令

七      Docker Compose 文件结构

八    实验模拟   Docker Compose 部署nginx

1,准备依赖文件

2,准备安装包

3,  vim Dockerfile​

4,  编写nginx页面   

5,  编写配置文件docker-compose.yml

6,  查看准备环境

7, 启动 docker-compose

8,  查看 docker容器情况

9  ,浏览器访问:http://192.168.217.55:1216

九   nginx + tomcat docker-compose编排

1, 准备tomcat 容器所需的文件  和安装包

2, 写 tomcat  容器的 dockerfile

3,  修改 docker-compose.yml

4, 启动 docker-compose

5,查看容器状态

6,验证 docker-compose 效果

7, 验证是否可以自动获取ip 地址

十    关闭  dockerfile compose

1,会删除 自定义的网络模式

2, 会删除容器

3, 再次开启

十一       报错处理


一      Docker-compose与  Docker Swarm

1,docker-compose 出现的意义

我们知道使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。服务编排有很多种技术方案,今天给大家介绍 Docker 官方产品 Docker Compose 。

Dockerfile可以让用户管理一个单独的应用容器;而Compose则允许用户在一个模板(YAML格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web 服务容器再加上后端的数据库服务容器等。
 

2,  Docker Compose 是什么

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它通过一个 YAML 文件(默认为 docker-compose.yml)来定义构成应用程序的多个服务及其网络、卷等依赖关系。使用 Docker Compose 可以通过一个简单的命令(如 docker-compose up)来启动、停止和重建整个应用环境,大大简化了多容器应用的部署和管理流程。Docker Compose 适合于单主机或多主机(但非集群化)环境下的应用部署,适用于开发、测试及小型生产环境。

3,Docker Swarm    是什么

Docker Swarm 是 Docker 官方提供的容器编排工具,用于管理 Docker 容器集群。Swarm 将一组 Docker 引擎(称为节点)组织成一个集群,这些节点可以是物理服务器或虚拟机。在 Swarm 模式下,你可以定义服务(Services),每个服务可以跨越多个节点部署多个实例(Replicas),从而实现高可用性和负载均衡。Swarm 提供了服务发现、负载均衡、故障恢复等功能,并且支持多种调度策略。Swarm 更适用于大型生产环境,特别是需要自动伸缩、滚动更新和复杂服务管理的场景。

3,Docker Compose     Docker Swarm  主要区别

  1. 目标场景:Docker Compose 侧重于单主机或多主机环境下应用的快速部署和配置管理,而 Docker Swarm 则是面向大规模容器集群的编排和管理。

  2. 规模与复杂度:Compoose 适合小型项目或简单的微服务架构,管理相对直接;Swarm 则是为了处理更大规模的服务部署,提供高级功能如跨节点的服务发现、负载均衡和故障转移。

  3. 编排能力:Swarm 提供了更强大的服务编排功能,如自动扩缩容、滚动更新等,而 Compose 缺乏这些高级编排特性。

  4. 配置方式:两者都使用 YAML 文件来定义服务,但 Docker Compose 文件直接描述了服务的配置和依赖关系,而 Docker Swarm 服务定义则嵌入在集群层面的命令或API调用中。

  5. 网络和存储:Swarm 提供了更高级的网络配置选项(如覆盖网络)和数据管理功能,以适应复杂的集群环境。

总的来说,Docker Compose 是一个轻量级的本地开发和小型部署工具,而 Docker Swarm 是一个面向生产环境的容器编排平台,适合构建和管理大型容器化应用。

二     Docker-compose 简介

1, Docker-compose 组成

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

2,Docker-compose  的配置文文件

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

3,Docker-compose 工作原理

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

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

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

注:API(全称 Application Programming Interface,中文译为应用程序编程接口,可以把它想象成一套预先设定好的规则或工具箱。这个工具箱能让不同的软件应用程序之间互相“对话”和交换信息。就像是餐厅的菜单,顾客(开发者)不需要知道厨房(底层系统或服务)是如何运作的,只需要根据菜单(API文档)点菜(调用API),厨房就会按要求准备食物(返回数据或执行功能)。)

 三      compose 安装

1,Docker Compose 环境安装

Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose

curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

#安装
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

2, 演示

查看版本

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

1, YAML  语言是什么

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

2,  使用 YAML 时需要注意下面事项

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

3,    数据结构

3.1   对象映射: 键值对的字典

animal: pets    (注意有空格

3.2  序列数组: 一组按次序排列的列表

- Cat
- Dog
- Goldfish
 

["Cat", "Dog", "Goldfish"]            这是第二种写法
 

3.3   布尔值

debug: true
debug: false
 

4    示例

# yaml 格式

用于配置和管理     yaml 是一个简洁的非标记性语言,内容 格式 人性化   较易读


languages:       #序列的映射
  - Java
  - Golang
  - Python
websites:        #映射的映射
    cpu: 2
    memory: 1024M
    swap: 2048M
    disk: 60G 

 
# Json 格式

主要用于 API接口之间的消息传递

{
  languages: [
    'Java',
    'Golang',
    'Python'	
  ],
  resources: {
    cpu: '2',
    memory: '1024M',
    swap: '2048M',
    disk: '60G'
  }
}

 例子3

Baidu:
  www.baidu.com
wangyi: www.163.com
tengxun: www.qq.com

 

五     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 守护进程启动时就已经停止了。

no默认策略,在容器退出时不重启容器
on-failure在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3在容器非正常退出时重启容器,最多重启3次

always    在容器退出时总是重启容器
unless-stopped    在容器退出的容器时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了
depends_on    在使用Compose时,最大的好处就是少打启动命令,但一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,可能会因为容器依赖问题而启动失败。

微服务之间也有依赖关系 启动有先后顺序例如在没启动数据库容器的时候启动应用容器,应用容器会因为找不到数据库而退出。depends_on标签用于解决容器的依赖、启动先后的问题。

php:
    depends_on:
    - apache
    - mysql

六      Docker Compose 常用命令

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

 

七      Docker Compose 文件结构

# 定义 compose 文件的版本号,这里使用的是版本3
version: '3'

# services 部分定义了要启动的服务
services:
  # 定义名为 nginx 的服务
  nginx:
    # 设置容器的名字为 web1
    container_name: web1
    # 设置容器内的主机名
    hostname: nginx
    
    # build 部分指定了如何构建镜像
    build:
      # 指定构建上下文目录,即 Dockerfile 所在目录
      context: ./nginx
      # 指定使用的 Dockerfile 文件名
      dockerfile: Dockerfile
    
    # ports 配置服务端口映射
    ports:
      # 将容器的80端口映射到宿主机的1216端口
      - 1216:80
      # 将容器的443端口映射到宿主机的1217端口
      - 1217:443
    
    # networks 配置容器网络设置
    networks:
      # 指定容器加入名为 lnmp 的网络
      lnmp:
        # 为容器在 lnmp 网络中指定静态 IPv4 地址
        ipv4_address: 172.18.0.10
    
    # volumes 配置数据卷挂载
    volumes:
      # 将宿主机的 ./wwwroot 目录挂载到容器的 /usr/local/nginx/html 目录
      - ./wwwroot:/usr/local/nginx/html

# networks 部分定义了自定义网络
networks:
  # 定义名为 lnmp 的网络,类型为桥接
  lnmp:
    driver: bridge
    # IPAM (IP Address Management) 配置
    ipam:
      config:
        # 配置网络的子网
        - subnet: 172.18.0.0/16

八    实验模拟   Docker Compose 部署nginx

1,准备依赖文件

2,准备安装包

在 /opt/compose_nginx/nginx   拖入nginx 安装包

3,  vim Dockerfile

vim Dockerfile
#基于基础镜像
FROM centos:7
#用户信息
MAINTAINER this is nginx image <hmj>
#添加环境包
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
#上传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 && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
#指定http和https端口
EXPOSE 80
EXPOSE 443
//方法一:
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf			#关闭 nginx 在后台运行
#添加宿主机中run.sh到容器中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
//方法二:
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]

4,  编写nginx页面   

5,  编写配置文件docker-compose.yml

version: '3'
services:
  nginx:
    container_name: web1
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      lnmp:
        ipv4_address: 172.18.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  lnmp:
   driver: bridge
   ipam:
     config:
	   - subnet: 172.18.0.0/16

6,  查看准备环境

准备环境   以做好

7, 启动 docker-compose

去到 docker-compose.yml 所在的目录    启动

docker-compose -f docker-compose.yml up -d
 

-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行

8,  查看 docker容器情况

 

9  ,浏览器访问:http://192.168.217.55:1216


 

九   nginx + tomcat docker-compose编排

1, 准备tomcat 容器所需的文件  和安装包

2, 写 tomcat  容器的 dockerfile

FROM centos:7
MAINTAINER this is tomcat image <hmj>
ADD jdk-8u291-linux-x64.tar.gz /usr/local/
WORKDIR /usr/local/
RUN mv jdk1.8.0_291  /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"]

3,  修改 docker-compose.yml

version: '3'
services:
  nginx:
    container_name: web1
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      lnmp:
        ipv4_address: 172.18.0.10
    volumes:
      - ./wwwroot:/usr/local/nginx/html

  tomcat:
    hostname: tomcat
    build:
      context: ./tomcat
      dockerfile: Dockerfile
    ports:
      - 8080:8080
    networks:
      lnmp:
networks:
  lnmp:
   driver: bridge
   ipam:
     config:
           - subnet: 172.18.0.0/16

为验证 是否可以自动获取ip 地址

4, 启动 docker-compose

5,查看容器状态

6,验证 docker-compose 效果

7, 验证是否可以自动获取ip 地址

可以!

十    关闭  dockerfile compose

docker-compose -f docker-compose.yml down

1,会删除 自定义的网络模式

2, 会删除容器

3, 再次开启

容器 网络模式  都会回来   非常方便

十一       报错处理

  docker-compose -f docker-compose.yml up -d  有如下报错

是网络波动   

1,建议把dns  改为本地区dns  

2, 重启 docker

3,  开启路由转发

vim /etc/sysctl.conf
net.ipv4.ip_forward=1
 
sysctl -p
systemctl restart network
systemctl restart docker

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发接口Ability框架:【@ohos.ability.dataUriUtils (DataUriUtils模块)】

DataUriUtils模块 DataUriUtils模块提供用于处理使用DataAbilityHelper方案的对象的实用程序类的能力&#xff0c;包括获取&#xff0c;添加&#xff0c;更新给定uri的路径组件末尾的ID。 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#x…

windows ubuntu sed,awk,grep篇,8,Awk 语法和基础命令

目录 51.Awk 命令语法 52.Awk 程序结构(BEGIN,body,END)区域 53.打印命令 54.模式匹配 Awk 是一个维护和处理文本数据文件的强大语言。在文本数据有一定的格式&#xff0c;即每行数据包 含多个以分界符分隔的字段时&#xff0c;显得尤其有用。即便是输入文件没有一定的格式&a…

在使用ChatGPT之前,你真的知道这些吗?|TodayAI

当OpenAI在2022年11月发布ChatGPT时&#xff0c;它标志着技术领域的一次重大突破。ChatGPT是一个高级AI聊天机器人&#xff0c;它的功能几乎令人难以置信。过去的AI技术多年来一直在逐步发展&#xff0c;早期版本通常只能生成毫无意义的文本或质量较差的图片。这些早期的尝试虽…

安装 AngularJS

安装 AngularJS 文章目录 安装 AngularJS1. 使用在线 cdn2. 使用依赖管理工具 npm 1. 使用在线 cdn <!-- 1. 引入在线地址 --> <script src"http://code.angularjs.org/1.2.25/angular.min.js"></script><!-- 2. 下载到本地&#xff0c;引入文…

集合系列(二十二) -一文到你搞懂二叉树实现

一、介绍 在前面的文章中&#xff0c;我们对树这种数据结构做了一些基本介绍&#xff0c;今天我们继续来聊聊一种非常常用的动态查找树&#xff1a; 二叉查找树。 二叉查找树&#xff0c;英文全称&#xff1a;Binary Search Tree&#xff0c;简称&#xff1a;BST&#xff0c;…

js cookie和它的写入,读取,删除

什么是cookie Cookie 是直接存储在浏览器中的一小串数据&#xff0c;它们是 HTTP 协议的一部分 Cookie 通常是由 Web 服务器使用响应 Set-Cookie HTTP-header 设置的。然后浏览器使用 Cookie HTTP-header 将它们自动添加到&#xff08;几乎&#xff09;每个对相同域的请求中。…

升级价值主张 用友帮企业找到乘风破浪的“密码”

近期&#xff0c;用友发布了其战略级产品用友BIP的全新价值主张&#xff0c;将其从原来的“企业数智化 用友BIP”升级为“用友BIP 成就数智企业”。用友这次价值主张升级看似变动不大&#xff0c;实则大有深意。 顺势而为的主动升级 从当前数智化发展的形势来看&#xff0c;各…

牛客NC320 装箱问题【中等 动态规划,背包问题 C++/Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/d195a735f05b46cf8f210c4ad250681c 几乎完全相同的题目&#xff1a; https://www.lintcode.com/problem/92/description 思路 动态规划都是递归递推而来。php答案是动态规划版本&#xff0c;递归版本有 测试用…

ios CI/CD 持续集成 组件化专题五-(自动发布私有库-组件化搭建)

一&#xff1a;手动发布私有库总结 手动发布pod私有库&#xff0c;需要进行如下几步操作&#xff1a; 1、修改完代码之后&#xff0c;需要提交代码push到git仓库。 2、给代码打tag。 3、修改podspec文件的version值&#xff0c;使其和设置的tag一直。 4、命令行执行pod repo…

【蓝桥杯省赛真题41】python搬运物品方案 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

目录 python搬运物品方案 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python搬运物品方案 第十三届蓝桥杯青少年组python省赛比赛 一、题目…

【CGALDotNet】二维矢量多边形可视域计算(C#调用CGAL)

参考 CGALDotNet快速开始&#xff1a;https://blog.csdn.net/liqian_ken/article/details/138274933 CGAL二维可视域计算介绍&#xff1a;https://doc.cgal.org/latest/Visibility_2/index.html#visibility_2_introduction CGAL相关接口&#xff1a;https://doc.cgal.org/late…

明日周刊-第8期

现在露营的人越来越多了&#xff0c;都是带着帐篷或者遮阳篷聚在一起喝喝茶聊聊天&#xff0c;这是一种很好的放松方式。最近我养了一只金毛&#xff0c;目前两个月大&#xff0c;非常可爱。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 一、人工智能领域 本周&#xff…

2024.4.29

模板类实现顺序栈 #include <iostream>using namespace std; template <typename T> class Seqlite{T data[30];int len0; public:void head_inst(T date);void head_dele();void show(); }; template <typename T> //头插函数 void S…

如何快速申请SSL证书实现HTTPS访问?

申请SSL证书最简单的方法通常涉及以下几个步骤&#xff0c;尽量简化了操作流程和所需专业知识&#xff1a; 步骤一&#xff1a;选择适合的SSL证书类型 根据您的网站需求&#xff0c;选择最基础的域名验证型&#xff08;DV SSL&#xff09;证书&#xff0c;它通常只需验证域名所…

OpenAI 新推出 AI 问答搜索引擎——SearchGPT 震撼登场

您的浏览器不支持 video 标签。 OpenAI-SearchGPT 近日&#xff0c;OpenAI 曝光了自己的一款令人瞩目的 AI 问答搜索引擎——SearchGPT。这款搜索引擎带来了全新的搜索体验&#xff0c;给整个行业带来了巨大的压力。 SearchGPT 支持多种强大的功能。首先&#xff0c;它能够通过…

新一代状态空间模型网络替代Transformer 综述

本文首先初步介绍了状态空间模型&#xff08;SSM&#xff09;的工作原理。然后&#xff0c;从多个方面回顾SSM的相关工作&#xff0c;包括SSM的起源和变化、自然语言处理、计算机视觉、图、多模态处理、多模态和多媒体、点云/事件流数据、时间序列数据等领域的相关工作。 此外…

网络安全设计的技术有哪些?

目录 1. 防火墙 2. 入侵检测系统&#xff08;IDS&#xff09;和入侵防御系统&#xff08;IPS&#xff09; 3. 身份和访问管理&#xff08;IAM&#xff09; 4. 数据加密 5. 网络分割和虚拟化 6. 安全信息和事件管理&#xff08;SIEM&#xff09; 7. 端点保护 8. 配置管理…

链表带环问题的方法证明

目录 一、带环问题的解决 1、固定思路 2、思路后的数学证明 3、不相遇的情况分析 二、环入口问题 ​编辑 1、固定思路 2、数学证明 三、求环的长度 一、带环问题的解决 1、固定思路 链表带环问题比较传统的思路是使用快慢指针&#xff0c;当快和慢指针相遇的时候那么…

工具篇--Window--常用工具命令汇总(持续更新)

文章目录 前言一、常用工具&#xff1a;1.1 window host 修改&#xff1a;1.2 window 端口占用&#xff1a;1.3 打开/关闭防火墙&#xff1a;1.4 JavaScript 对象或值转换为 JSON 字符串: 二、命令行&#xff1a;2.1 获取本机ip&#xff1a; 三、网页在线工具&#xff1a;3.1 本…

吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.9-1.10

目录 第一门课&#xff1a;第二门课 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第一周&#xff1a;深度学习的 实践层面 (Practical aspects of Deep Learning)…
最新文章