Docker入门篇来啦~

文章目录

  • 1虚拟化技术
    • 1.1 硬件级虚拟化
    • 1.2 操作系统级虚拟化
  • 2 Docker是什么
    • 2.1 Docker介绍
    • 2.2 容器和虚拟机的区别
    • 2.3 为什么使用Docker
  • 3 Docker运行环境部署
    • 3.1 Docker安装
    • 3.2 Docker服务启动
  • 4 Docker核心组件
    • 4.1 镜像
      • 4.1.1 镜像的基本概念
      • 4.1.2 镜像的组成结构
      • 4.1.3 镜像的日常操作
    • 4.2 容器
      • 4.2.1 容器的基本概念
      • 4.2.2 容器的日常操作
    • 4.3 仓库
      • 4.3.1 仓库的基本概念
      • 4.3.2 仓库的日常操作
  • 5 Docker的运行机制
    • 5.1 第一个Docker容器
    • 5.2 进入Docker容器
    • 5.3 客户机访问容器
  • 6 Docker Compose容器编排
    • 6.1 docker-compose命令
    • 6.2 docker-compose一键部署微服务
  • 7 私有Docker仓库搭建
  • 8 Docker常用命令总结

1虚拟化技术

在介绍Docker之前,先了解一下,虚拟化技术是什么?

虚拟化(Virtualization) 是一种计算机资源管理技术,它将计算机的各种硬件资源,比如磁盘、网络、CPU、内存等硬件资源,予以抽象和转换,从而呈现出一套新的硬件资源环境,在这一套新的硬件环境下可以安装我们的操作系统,部署我们的应用运行环境等,它打破了计算机硬件资源不可切割的问题,使我们可以更加充分更加合理地利用计算机硬件资源。
虚拟化一般分为:

  • 硬件级虚拟化(hardware-level-virtualization)
  • 操作系统级虚拟化(os-level-virtualization)

1.1 硬件级虚拟化

硬件级虚拟化是运行在硬件之上的虚拟化技术,它的核心技术是Hypervisor,Hypervisor是一种运行在基础物理服务器硬件之上的软件层,可以虚拟化硬件资源,例如cpu、硬盘、内存、网络资源等,然后我们可以通过在虚拟化出来的资源之上安装操作系统,这也就是所谓的虚拟机,像VMWareVirtualBox等都是使用了该技术。

通过Hypervisor层,我们可以创建不同的虚拟机,并且每个虚拟机都是隔离独立的,这样一来,我们就可以在一台硬件服务器和操作系统之上虚拟化出多个虚拟服务器,用来部署我们的应用。

该种虚拟化优缺点:

  • 优点:一台物理服务器可以虚拟化出多个虚拟的服务器,让计算机资源得以充分利用
  • 缺点:每创建一个虚拟机的时候,都会创建一个操作系统,这个操作系统会占用很多资源,这样无疑大大的增加了资源的消耗,当安装的虚拟机越多,资源消耗就越多;另外,环境兼容性问题,开发时的环境运行正常,部署到虚拟机环境测试则有可能发生异常。

基于硬件级虚拟化技术的缺点和不足,随着技术的发展,后续又发展出来了另一种虚拟化技术,即操作系统级虚拟化技术

1.2 操作系统级虚拟化

操作系统级虚拟化 是运行在操作系统之上的虚拟化技术,它模拟的是运行在一个操作系统上的多个不同进程,并将其封装在一个密闭的容器里面,该技术也称为容器化技术,在容器化技术领域,Docker 是目前最流行的一种实现;

2 Docker是什么

2.1 Docker介绍

Docker发布于2013 年,基于LXC技术,LXC是Linux 平台上的容器化技术实现。LXC是Linux Container的简写,它是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,它与宿主机使用同一个内核,性能损耗小,这种技术是Linux提供的,但是直到Docker出世,该技术才被发挥出来。

  • Docker 是一个开源的应用容器引擎,它基于 Google 公司推出的 Go 语言实现,项目代码托管在 GitHub 上进行维护
    https://github.com/docker/docker-ce

  • Docker技术让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,打包好的容器可以发布到任何流行的 Linux 服务器上运行,这样就可以解决开发环境与运维环境不一致的问题了,所以容器技术解决了开发和运维之间的矛盾,让开发专注于开发,运维专注于运维,不要被环境问题所打扰

  • Docker彻底释放了虚拟化的威力,极大降低了计算机资源供应的成本,Docker 重新定义了程序开发测试、交付和部署过程,Docker提出了“构建一次,到处运行”的理念,让应用的开发、测试、部署和分发都变得前所未有的高效和轻松。

  • Docker是一种轻量级的操作系统虚拟化解决方案,Docker 的基础是 Linux 容器(LXC)技术,在LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。Docker 自开源后受到广泛的关注,Docker最早是基于Ubuntu开发的,但后续CentOS、Debian、Fedora等主流的Linux操作系统都支持Docker。

简单地说,Docker是对软件和其依赖环境的标准化打包(集装箱),应用之间相互隔离,共享一个OS Kernel(解决了资源浪费的问题),可以运行在很多主流操作系统上。但是也需要澄清一下,Docker本身不是容器,Docker只是管理容器的引擎。

2.2 容器和虚拟机的区别

容器是将代码和环境的关系打包在一起的一个集合,而虚拟机是在物理层面上,分出来的一个操作系统。

多个容器可以运行在同一台物理服务器上,并共享一个操作系统的内核资源。多个虚拟机也可以运行在同一台机器上,但每个虚拟机都需要一个完整的操作系统。

容器是在本地操作系统层面上实现虚拟化,直接复用本地主机的操作系统,不需要单独安装操作系统,而传统的虚拟化技术方式则需要单独安装每个虚拟机的操作系统。

特性容器虚拟机
启动秒级分钟级
磁盘空间一般为几十MB一般为10GB
性能接近原生弱于原生
系统支持量单机支持上千个容器一般几十个
操作系统与宿主机共享OS宿主机系统上运行虚拟机OS

2.3 为什么使用Docker

作为一种新兴的虚拟化技术,Docker 跟传统的虚拟化方式相比具有众多的优势。

  • Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。
  • Docker对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
  • 容器除了运行其中的应用外,基本不消耗额外的系统资源,使得应用的性能很高。传统虚拟机方式运行 10 个完全不同的应用可能我们会起10个虚拟机来部署,而Docker 只需要启动 10 个隔离的应用即可。
  • Docker可以更快速的交付和部署,大量地节约开发、测试、部署的时间,对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
  • 更高效的虚拟化,Docker 容器的运行不需要额外的 Hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
  • 更轻松的迁移和扩展,Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,这种兼容性可以让用户轻松地把一个应用程序从一个平台直接迁移到另一个平台。

3 Docker运行环境部署

3.1 Docker安装

Docker官方网站:https://www.docker.com/

Docker从2013年 3月 20 日发布 Docker 0.1,到现在已经发布了多个版本,从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本:Docker CEDocker EE

  • Docker CE 即社区免费版,可永久免费使用
  • Docker EE 即企业版,功能更全,更强调安全,但需付费使用

限于篇幅,Docker运行环境,可以参考我另一篇内容介绍:https://blog.csdn.net/smilehappiness/article/details/138447627

3.2 Docker服务启动

  • 按照3.1步骤 安装Docker之后,通过下面的命令启动或者停止 Docker 服务
    启动Docker:systemctl start docker 或者 service docker start
    停止Docker:systemctl stop docker 或者 service docker stop
    重启Docker:systemctl restart docker 或者 service docker restart

  • 检查docker进程的运行状态
    systemctl status docker 或者 service docker status

  • 查看docker进程:
    ps -ef | grep docker

  • 查看docker系统信息
    docker info

  • 查看所有的帮助信息
    docker --help

  • 查看某个commond命令的帮助信息
    docker commond --help 比如:docker ps --help

4 Docker核心组件

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器,Docker 容器通过 Docker 镜像来创建。

Docker 包括三个核心要素:镜像(Image)容器(Container)仓库(Repository)

理解了这三个概念,就理解了 Docker 的整个生命周期。Docker 的运行离不开以上核心几个组件的支持,Docker的成功也是拜这几个组件所赐。注意,不能错误地理解为Docker就是容器,实际上Docker不是容器,而是管理容器的引擎。(守护进程)

4.1 镜像

4.1.1 镜像的基本概念

Docker镜像就是一个只读的模板,可以用来创建Docker容器。

例如:一个镜像可以包含一个完整的 centos 操作系统环境,里面仅安装了 mysql 或用户需要的其它应用程序。Docker提供了一个非常简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

4.1.2 镜像的组成结构

镜像是由许多层的文件系统叠加构成的,最下面是一个引导文件系统bootfs,第二层是一个root文件系统rootfs,root文件系统通常是某种操作系统的运行环境,比如centos、Ubuntu,在root文件系统之上又有很多层文件系统,这些文件系统叠加在一起,构成docker中的镜像。

4.1.3 镜像的日常操作

  • 下载镜像
    docker hub官网搜索要使用的镜像,也可以在命令行使用命令搜索要使用的镜像,比如 docker search redis进行搜索,然后下载所需要的镜像。
    比如下载redis镜像:docker pull redis:latest
    其中,reids是查询到的镜像名称,latest是镜像的标签tag

    获取一个镜像有两种方式,一种是从官方镜像仓库下载一种是自己通过Dockerfile文件构建。如果有官方镜像,我们就不必自己用Dockerfile文件构建了,除非官方没有才会自己去Dockerfile文件构建。

  • 列出已经下载的镜像
    docker images,或者 docker images redis,或者 docker image ls

  • 运行镜像
    docker run -d redis 其中-d表示在后台运行
    然后通过ps -ef | grep redis可以查到redis进程

  • 查看容器镜像的状态
    docker ps,使用docker ps -a 可以查看所有的容器

  • 进入容器
    docker exec -it 容器ID bash 其中,bash也可以写成 /bin/bash

  • 删除镜像
    docker rmi redis:latest(或者镜像id) 注意是rmi,不是rm,rm是删除容器,如果必要,可以加上 -f 强制删除

4.2 容器

4.2.1 容器的基本概念

容器是从镜像创建的运行实例,它可以被启动、停止、删除,每个容器都是相互隔离的、保证安全平台,可以把看做一个简易版的 Linux环境,包括root用户权限、进程空间、用户空间和网络空间和运行在其中的应用程序。Docker利用容器来运行应用,镜像是只读的,容器在启动的时候创建一层可写层作为最上层;

4.2.2 容器的日常操作

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将处于终止状态的容器重新启动

  • 启动命令
    docker start 容器id或容器名称
    已经停止的容器,我们可以使用命令 docker start 来重新启动

  • 通过镜像启动容器
    docker run -d redis

  • 查看运行中的容器
    docker ps

  • 查看所有的容器
    docker ps -a

  • 停止容器
    docker stop 容器id或容器名称
    因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器

  • 删除容器
    docker rm 容器id或容器名称
    删除容器时,容器必须是停止状态,否则会报错,如果强制删除,可以指定-f参数

  • 进入容器
    docker exec -it 容器id或容器名称 bash
    还可以使用 docker inspect + 容器id或容器名称 查看容器的更多信息(元信息)

  • 停用全部运行中的容器
    docker stop $(docker ps -q)

  • 删除全部容器
    docker rm $(docker ps -aq)

  • 一条命令实现停用并删除容器
    docker stop $(docker ps -q) & docker rm -f $(docker ps -aq)

4.3 仓库

4.3.1 仓库的基本概念

仓库是集中存放镜像文件的场所,有时候会把仓库和仓库注册服务器(Registry)看做同一事物,并不严格区分,实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。

仓库分为公开仓库(Public)私有仓库(Private)两种形式,最大的公开仓库是 Docker Hub (https://hub.docker.com/),存放了数量庞大的镜像供用户下载。当然,用户也可以在本地网络内创建一个私有仓库。

当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来即可。Docker 仓库的概念跟 Git 类似,注册服务器也类似于 GitHub 这样的托管服务。

4.3.2 仓库的日常操作

用户可通过 docker search 命令来查找官方仓库中的镜像:
docker search rabbitmq
在这里插入图片描述

可以看到返回了很多包含关键字的镜像,其中包括镜像名字描述星级(表示该镜像的受欢迎程度)是否官方创建、是否自动创建。
官方的镜像说明是官方项目组创建和维护的,automated 资源允许用户验证镜像的来源和内容。根据是否是官方提供,可将镜像资源分为两类;

  • 一种是类似 rabbitmq 这样的基础镜像,被称为基础或根镜像,这些基础镜像是由 Docker 公司创建、验证、支持、提供,这样的镜像往往使用单个单词作为名字。

  • 还有一种类型,比如 bitnami/rabbitmq 镜像,它是由 Docker 的用户创建并维护的,往往带有用户名称前缀,可以通过前缀 user_name/ 来指定使用某个用户提供的镜像,比如 bitnami用户。

将镜像拉取到本地:
docker pull rabbitmq

5 Docker的运行机制

我们知道Docker并不是容器,而只是一个管理容器的引擎。
Docker的底层运行原理,按照如下1~4步骤:

  • 1 Docker服务启动
  • 2 下载镜像
  • 3 启动该镜像得到一个容器
  • 4 容器里运行着我们想要的程序

在这里插入图片描述

5.1 第一个Docker容器

根据Docker的运行机制,我们将按照如下步骤运行第一个Docker容器。
1、将Docker服务启动
2、下载一个镜像,Docker 运行一个容器前需要本地存在有对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub公共注册服务器中的仓库:https://hub.docker.com)

从docker hub官网搜索要使用的镜像,也可以在命令行使用命令搜索要使用的镜像,比如 docker search redis进行搜索,然后下载所需要的镜像

  • 下载镜像
    docker pull redis

  • 运行镜像
    docker run redis 前台运行, 如果需要后台运行,加参数 -d
    显示本地已有的镜像:docker images
    在这里插入图片描述
    在列出的信息中,可以看到几个字段信息:
    REPOSITORY:来自于哪个仓库,比如 redis
    TAG:镜像的标记,比如 latest最新的
    IMAGE ID:镜像的 ID 号(唯一)
    CREATED:创建时间
    SIZE:镜像大小

  • 启动下载下来的镜像得到一个容器:
    docker run -d redis 或者 docker run -d 7614ae9453d1(镜像ID)
    默认是前台启动,如果需要后台启动,指定-d参数;
    通过 ps -ef | grep redis查看,检查redis镜像是否启动容器成功

5.2 进入Docker容器

  • 查看运行了哪些容器
    docker ps,使用docker ps -a 可以查看所有的容器

  • 停止某个容器
    docker stop 容器ID/名称
    docker stop 7614ae9453d1(容器ID) 或者 docker stop redis

  • 进入容器
    docker exec -it 7614ae9453d1(容器ID) bash
    其中i表示交互式的,也就是保持标准输入流打开,t表示虚拟控制台,分配到一个虚拟控制台

  • 退出容器
    exit

5.3 客户机访问容器

从客户机上访问容器,需要有端口映射,docker容器默认采用桥接模式与宿主机通信,需要将宿主机的ip端口映射到容器的ip端口

停止容器:docker stop 容器ID/名称
启动容器:docker run -d -p 6379:6379 redis

6 Docker Compose容器编排

基于微服务架构的应用系统一般都包含若干个微服务,每个微服务一般都会集群部署多个实例,如果每个微服务都要手动启动与停止,那么效率非常低、工作量也非常大,那么使用 Docker Compose可以轻松、高效地管理多个容器。

Docker Compose 是一个用于定义和运行多容器的Docker应用的工具,使用Docker Compose,你可以在一个配置文件(yaml格式)中配置应用的所有服务,然后使用一个命令即可创建并启动配置文件中所配置的所有服务

代码示例:

# 定义compose语义版本
version: '3.8'
# 定义服务
services:#第一个服务名称xxl-job:image: xuxueli/xxl-job-admin:2.3.0container_name: xxl-jobrestart: alwaysenvironment:TZ: Asia/ShanghaiLANG: en_US.UTF-8PARAMS: '--spring.config.location=/application.properties'volumes:- "/opt/docker-server/xxl-job/logs:/data/applogs"- "/opt/docker-server/xxl-job/conf/application.properties:/application.properties"ports:- "9999:9999"networks:- conf_mynetnetworks:conf_mynet:external: true

6.1 docker-compose命令

docker-compose的命令与docker命令极为相似,用法上没有区别,下面列出它特有的几种命令:

  • up 创建并启动容器
    docker-compose up -d --scale 服务名=数字
    -d表示后台运行,scale是表示对应的服务同时启动几个容器

  • down 停止并删除容器
    docker-compose down
    会停掉容器,并删除掉容器,如果不希望删除容器,需要使用stop

6.2 docker-compose一键部署微服务

  • 编写docker-compose.yml文件
  • 启动服务,执行:docker-compose up -d
  • 关闭服务,执行:docker-compose down
  • 启动两个xxl-job服务,执行:docker-compose up -d --scale xxl-job=2

7 私有Docker仓库搭建

限于篇幅,这部分内容,在下一篇Docker进阶篇实现

8 Docker常用命令总结

  • 查看docker下的所有本地镜像
    docker images 或者 docker image ls

  • 查看正在运行的容器
    docker ps

  • 查看所有容器(包括未运行的)
    docker ps -a

  • 查看容器详细信息
    docker inspect <container_id>

  • 查看容器的实时日志
    docker logs -f <container_id>

  • 查看容器的CPU和内存使用情况(需要安装
    docker stats)
    docker stats

  • 删除docker 容器
    docker rm -f <container_id_or_name>

  • 使用命令docker rmi -f IMAGE_NAME_OR_ID来强制删除正在被一个或多个容器使用的镜像,即使有容器正在使用它。例如,要强制删除名为my_image的镜像,可以运行docker rmi -f my_image
    docker rmi -f IMAGE_NAME_OR_ID

  • 进入容器内部
    docker exec -it redis bash

  • Docker Compose 允许你通过命令行一次指定多个 docker-compose.yml 配置文件。这样可以让你在不同的文件中组织和管理服务定义,便于复用和分模块管理。要指定多个文件,你可以使用 -f 或 --file 选项多次,每次后面跟一个文件路径。
    docker-compose -f file1.yml -f file2.yml up -d

  • 启动docker
    systemctl start docker

  • 配置docker开机自启
    systemctl enable docker

  • 查看docker运行状态
    systemctl status docker

  • 创建桥接网络
    docker network create my-network

  • 可以通过docker network ls命令列出所有网络
    docker network ls

  • docker中 8080:8080两个端口含义

    在Docker中,8080:8080 是端口映射的表示方式,用于连接Docker容器内的服务端口到主机系统的端口。这种映射使用的是 -p 参数,允许外部访问容器内的服务。具体来说,8080:8080 意味着:
    左边的数字(8080)是 主机端口(Host Port),即你的机器上的端口号。在这个例子中,你将你的主机系统的8080端口对外开放。
    右边的数字(8080)是 容器端口(Container Port),即Docker容器内部应用监听的端口号。这意味着容器内的应用(比如一个Web服务器)监听8080端口,外部可以通过主机的8080端口与之通信。
    当您运行一个Docker容器,并使用 -p 8080:8080,你实际上是告诉Docker将主机的8080端口的所有网络流量转发到容器的8080端口。这样,外界可以通过访问 http://localhost:8080 来与容器内的应用交互,即使应用实际运行在容器的隔离环境中。
    例如,如果你正在运行一个基于Nginx的Docker镜像,通常Nginx配置为监听80端口,你可以使用 -p 8080:80 来映射,这样就可以在本地浏览器中通过 http://localhost:8080 访问Nginx服务,而无需改变Nginx的配置。
    请注意,如果你有多个容器都试图映射到同一个主机端口,Docker会抛出错误,因为端口冲突。如果你希望多个容器共享同一主机端口,可以使用端口映射的随机分配 (-P),或者使用端口映射范围 (-p 8080-8081:80)
  • 查看docker命令使用说明
    格式:docker 命令 --help,如:
    docker build --help,可以查看docker的build命令使用说明

  • 容器里面可以通过 ls -l查询目录信息,ll不支持,只支持ls
    ls -l

写博客是为了记住自己容易忘记的东西,另外也是对自己工作的总结,希望尽自己的努力,做到更好,大家一起努力进步!

如果有什么问题,欢迎大家一起探讨,代码如有问题,欢迎各位大神指正!

给自己的梦想添加一双翅膀,让它可以在天空中自由自在的飞翔!

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

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

相关文章

Java 三大特性之继承

目录 一、为什么需要继承&#xff1f; 二、继承概念 三、继承的语法 四、子类访问父类成员 五、super关键字 六、继承关系下的构造方法 七、继承关系下的初始化 八、protected关键字 九、继承的三种方式 十、final关键字 十一、继承和组合 一、为什么需要继承&#…

C语言——rand函数

一、rand函数 这是一个在 C 标准库 <stdlib.h> 中定义的函数&#xff0c;用于生成伪随机数&#xff0c;默认情况下&#xff0c;它生成从 0 到 RAND_MAX 的伪随机数&#xff0c;其中 RAND_MAX 是一个常数&#xff0c;通常是 32767。 1、函数原型&#xff1a; 2、函数返回…

k8s Dashboard 运维维护记录

k8s Dashboard 运维维护记录 k8s Dashboard 运维维护记录 Q1&#xff1a;需要使用firefox浏览器访问 提示了证书错误NET::ERR_CERT_INVALID&#xff0c;原因是由于物理机的浏览器证书不可用 需要注意的是&#xff0c;若提示“连接不安全”的警告时&#xff0c;点击“高级”…

SAP保税区业务方案

1. 保税区背景&#xff1a; 是经国务院批准设立的、海关实施特殊监管的经济区域&#xff0c;是我国目前开放度和自由度最大的经济区域。其功能定位为“保税仓储、出口加工、转口贸易”三大功能。根据现行有关政策&#xff0c;海关对保税区实行封闭管理&#xff0c;境外货物进入…

05 - 步骤 JSON output

简介 JSON Output 步骤用于将 Kettle 中的行流数据写出到 JSON 格式的文件或流中。它允许用户将 Kettle 中处理过的数据以 JSON 格式进行输出&#xff0c;适用于各种数据处理和交换场景。 什么是行流数据&#xff1f; preview data 中的每一个字段都是一个行流数据 使用 场…

www.fastssh.com SSH over WebSockets with CDNs

https://www.fastssh.com/page/create-ssh-cdn-websocket/server/这其实不是标准的websocket报文(服务器响应报文无Sec-Websocket-Accept字段)&#xff0c;所以无法使用github.com/gorilla/websocket包&#xff1a;GET / HTTP/1.1 Host: hostname:8080 User-Agent: Go-http-cli…

ubuntu20配置深度学习环境

目录 系统环境安装anaconda文件的安装anaconda环境配置anaconda换中科大源常用的anaconda命令 安装显卡驱动安装CUDA下载cudnn安装pytorch更换conda源选择对应的pytorch版本进行安装 系统环境 ubuntu20&#xff0c;安装了ros noetic。 参考博客主要有&#xff1a; https://g…

javascript 练习 写一个简单 另类录入 电脑组装报价表 可打印

数据格式 &#xff08;1代表cpu、2代表主板、3代表内存、。。。&#xff09; 1i3 12100 630 2H610 480 3DDR4 3200 16G 220 4500G M.2 299 5300W电源 150 6小机箱 85 7GT 730G 4G 350 8WD 2T 399 9飞利浦 24Led 580 主代码 Html JS <!DOCTYPE html> <html lang&qu…

Python学习笔记------pycharts模块

pyecharts模块简介 Echarts是个由百度开源的数据可视化&#xff0c;凭借着良好的交互性&#xff0c;精巧的图表设计&#xff0c;得到众多开发者的认可&#xff0c;而python是门富有表达力的语言&#xff0c;很适合用于数据处理&#xff0c;当数据分析遇上数据可视化时pyechart…

EPAI手绘建模APP演示板、材质编辑器、样式编辑器

(11) 更多 图 74 更多工具栏 ① 演示板&#xff1a;打开关闭演示板。演示板用来显示从设备导入的模型图纸图片或者打开模型建模教程网页&#xff0c;是建模过程中一个辅助功能。有些设备有小窗口功能有些没有&#xff0c;对于没有小窗口功能的设备&#xff0c;通过演示板能够在…

Boosting算法揭秘:从原理到scikit-learn实战

Boosting算法揭秘&#xff1a;从原理到scikit-learn实战 在机器学习的江湖中&#xff0c;Boosting算法以其强大的预测能力和独特的训练方式占据了一席之地。与Bagging算法并行训练的理念不同&#xff0c;Boosting算法更注重模型的串行迭代和错误修正。本文将从Boosting算法的基…

一键自动化博客发布工具,chrome和firfox详细配置

blog-auto-publishing-tools博客自动发布工具现在已经可以同时支持chrome和firefox了。 很多小伙伴可能对于如何进行配置和启动不是很了解&#xff0c;今天带给大家一个详细的保姆教程&#xff0c;只需要跟着我的步骤一步来就可以无障碍启动了。 前提条件 前提条件当然是先下…

ios app 之 中国大陆 ICP备案问题

从2024年3月份起&#xff0c;上传到苹果商店&#xff08;app store connect&#xff09;中的app, 若使用地区中选择了 亚太地区 - 中国大陆&#xff0c; 则需要上传 中国大陆 app 的ICP备案&#xff0c;下面是对本人对备案的实操及理解&#xff1a; 1) ICP备案与 app store co…

设计模式——行为型模式——策略模式

策略模式 定义 策略模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#xff0c;且算法的变化不会影响使用算法的客户。 策略模式属于对象行为模式&#xff0c;它通过对算法进行封装&#xff0c;把使用算法的责任和算法的实现分割开来&a…

uniapp+vue基于移动端的药品进销存系统r275i

最后我们通过需求分析、测试调整&#xff0c;与药品进销存管理系统管理系统的实际需求相结合&#xff0c;设计实现了药品进销存管理系统管理系统。 系统功能需求包含业务需求、功能需求用户需求&#xff0c;系统功能需求分析是在了解用户习惯、开发人员技术和实力等各个因素的前…

【Conda】解决无名虚拟环境问题

文章目录 问题描述&#xff1a;无名虚拟环境解决步骤1 添加虚拟环境目录到envs步骤2 成功命名 问题描述&#xff1a;无名虚拟环境 如果不指定创建目录&#xff0c;默认创建在C盘用户目录下&#xff0c;这应该是很多人不愿意的吧。 指定目录创建虚拟环境命令如下&#xff1a; …

【微服务】——Docker 基础知识

这里写自定义目录标题 1.1 了解Docker1.1.1应用部署的环境问题1.1.2.Docker解决依赖兼容问题1.1.3.Docker解决操作系统环境差异1.1.4.小结 1.2.Docker和虚拟机的区别1.3.Docker架构1.3.1.镜像和容器1.3.2.DockerHub1.3.3.Docker架构1.3.4.小结 1.4.安装Docker——未实践 2.Dock…

使用Python和Pygame创建一个简单的飞机大战游戏 [附源码]

在这个数字化时代&#xff0c;游戏已经成为我们生活中不可或缺的一部分。从经典的街机游戏到现代的3D游戏&#xff0c;游戏行业经历了巨大的变革。然而&#xff0c;有时候&#xff0c;简单的游戏反而能够带来更多的乐趣和满足感。在本篇文章中&#xff0c;我们将使用Python和Py…

Vue 组件间的数据绑定

在Vue组件中&#xff0c;v-model指令可以用来实现双向数据绑定。它用于将组件的属性和父组件中的数据进行双向绑定&#xff0c;使得当属性的值改变时&#xff0c;父组件中的数据也会相应地改变&#xff0c;并且当父组件中的数据改变时&#xff0c;属性的值也会相应地改变。 目…

多级留言/评论的功能实现——SpringBoot3后端篇

目录 功能描述数据库表设计后端接口设计实体类entity 完整实体类dto 封装请求数据dto 封装分页请求数据vo 请求返回数据 Controller控制层Service层接口实现类 Mapper层Mybatis 操作数据库 补充&#xff1a;返回的数据结构自动创建实体类 最近毕设做完了&#xff0c;开始来梳理…