一文搞清楚 Docker 镜像、容器、仓库

news2024/11/17 21:55:42

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌

Java知识图谱点击链接:体系化学习Java(Java面试专题)
💕💕 感兴趣的同学可以收藏关注下不然下次找不到哟💕💕

在这里插入图片描述

文章目录

  • 1、什么是 Docker 镜像、容器、仓库
  • 2、镜像、容器、仓库之间的关系
  • 3、Docker 镜像
    • 3.1、镜像列表
    • 3.2、查找镜像
    • 3.3、拉取镜像
    • 3.4、删除镜像
    • 3.5、更新镜像
    • 3.6、生成镜像
    • 3.7、镜像标签
  • 4、Docker 容器
    • 4.1、容器启动
    • 4.2、容器查看
    • 4.3、容器停止和重启
    • 4.4、后台模式和进入
    • 4.5、容器导入和导出
    • 4.6、强制停止容器
    • 4.7、清理停止的容器
    • 4.8、容器别名及操作
    • 4.9、容器错误日志
  • 5、Docker 仓库
    • 5.1、公有仓库
    • 5.2、私有仓库

1、什么是 Docker 镜像、容器、仓库

Docker 镜像、容器、仓库是 Docker 技术中的三个重要概念。

Docker 镜像是一个只读的模板,可以用来创建 Docker 容器。镜像可以包含操作系统、应用程序、依赖库、配置文件等。

Docker 容器是 Docker 镜像的一个运行实例,可以理解为一个轻量级的虚拟机。容器包含了运行应用程序所需的所有组件,包括操作系统、应用程序、依赖库等。

Docker 仓库是用来存储和管理 Docker 镜像的地方,类似于代码仓库。Docker 官方提供了 Docker Hub 仓库,可以在其中存储和分享 Docker 镜像。用户也可以自建私有仓库来存储和管理自己的 Docker 镜像。

通过使用 Docker 镜像、容器、仓库,可以实现应用程序的快速部署、运行和管理,提高了应用程序的可移植性和可伸缩性。

2、镜像、容器、仓库之间的关系

在这里插入图片描述

Docker 镜像、容器、仓库之间的关系如下:

  1. Docker 镜像是一个只读的模板,包含了操作系统、应用程序、依赖库、配置文件等,用来创建 Docker 容器。

  2. Docker 容器是 Docker 镜像的一个运行实例,可以理解为一个轻量级的虚拟机。容器包含了运行应用程序所需的所有组件,包括操作系统、应用程序、依赖库等。

  3. Docker 仓库是用来存储和管理 Docker 镜像的地方,类似于代码仓库。Docker 镜像可以从仓库中拉取,也可以推送到仓库中进行存储和分享。Docker 官方提供了 Docker Hub 仓库,用户也可以自建私有仓库来存储和管理自己的 Docker 镜像。

综上所述,Docker 镜像是创建 Docker 容器的基础,Docker 容器是 Docker 镜像的运行实例,Docker 仓库是存储和管理 Docker 镜像的地方。通过使用 Docker 镜像、容器、仓库,可以实现应用程序的快速部署、运行和管理,提高了应用程序的可移植性和可伸缩性。

3、Docker 镜像

3.1、镜像列表

docker images

该命令将列出所有本地镜像的名称、标签、镜像 ID、创建时间和大小等信息。例如:

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               4c108a37151f        3 weeks ago         130MB
nginx               latest              6f715f503b62        4 weeks ago         133MB
mysql               5.7                 4a3c9c5a0a3d        4 weeks ago         448MB

其中,REPOSITORY 列表示镜像的名称,TAG 列表示镜像的标签(通常是版本号),IMAGE ID 列表示镜像的唯一 ID,CREATED 列表示镜像的创建时间,SIZE 列表示镜像的大小。

3.2、查找镜像

要查找 Docker Hub 上的镜像,可以使用以下命令:

docker search <image-name>

搜索 MySQL 镜像可以使用以下命令:

docker search mysql
[root@ecs-32f7 ~]# docker search mysql
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   14221     [OK]
mariadb                         MariaDB Server is a high performing open sou…   5432      [OK]
percona                         Percona Server is a fork of the MySQL relati…   614       [OK]
phpmyadmin                      phpMyAdmin - A web interface for MySQL and M…   818       [OK]
bitnami/mysql                   Bitnami MySQL Docker Image                      89                   [OK]
circleci/mysql                  MySQL is a widely used, open-source relation…   29
bitnami/mysqld-exporter                                                         5
ubuntu/mysql                    MySQL open source fast, stable, multi-thread…   49
cimg/mysql                                                                      0
rapidfort/mysql                 RapidFort optimized, hardened image for MySQL   23
rapidfort/mysql8-ib             RapidFort optimized, hardened image for MySQ…   9
google/mysql                    MySQL server for Google Compute Engine          23                   [OK]
hashicorp/mysql-portworx-demo                                                   0
rapidfort/mysql-official        RapidFort optimized, hardened image for MySQ…   7
newrelic/mysql-plugin           New Relic Plugin for monitoring MySQL databa…   1                    [OK]
databack/mysql-backup           Back up mysql databases to... anywhere!         86
linuxserver/mysql               A Mysql container, brought to you by LinuxSe…   38
bitnamicharts/mysql                                                             0
mirantis/mysql                                                                  0
docksal/mysql                   MySQL service images for Docksal - https://d…   0
linuxserver/mysql-workbench                                                     50
vitess/mysqlctld                vitess/mysqlctld                                1                    [OK]
eclipse/mysql                   Mysql 5.7, curl, rsync                          0                    [OK]
drupalci/mysql-5.5              https://www.drupal.org/project/drupalci         3                    [OK]
drupalci/mysql-5.7              https://www.drupal.org/project/drupalci         0
[root@ecs-32f7 ~]#

3.3、拉取镜像

拉取 Docker 镜像可以使用以下命令:

docker pull <镜像名称>:<标签>

其中, <镜像名称> 是要拉取的 Docker 镜像的名称, <标签> 是要拉取的 Docker 镜像的版本号或标签。例如,要拉取官方的 Nginx 镜像,可以使用以下命令:

docker pull nginx:latest

该命令将从 Docker Hub 上拉取最新版本的 Nginx 镜像,并将其保存到本地。如果要拉取指定版本的 Nginx 镜像,可以将 latest 替换为相应的版本号或标签。拉取完成后,可以使用 docker images 命令查看本地已有的 Docker 镜像列表。

[root@ecs-32f7 ~]# docker pull nginx:latest
latest: Pulling from library/nginx
f03b40093957: Pull complete
eed12bbd6494: Pull complete
fa7eb8c8eee8: Pull complete
7ff3b2b12318: Pull complete
0f67c7de5f2c: Pull complete
831f51541d38: Pull complete
Digest: sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@ecs-32f7 ~]#

3.4、删除镜像

删除 Docker 镜像可以使用以下命令:

docker rmi <镜像名称>:<标签>

其中, <镜像名称> 是要删除的 Docker 镜像的名称, <标签> 是要删除的 Docker 镜像的版本号或标签。例如,要删除本地的 Nginx 镜像,可以使用以下命令:

docker rmi nginx:latest

该命令将删除本地最新版本的 Nginx 镜像。如果要删除指定版本的 Nginx 镜像,可以将 latest 替换为相应的版本号或标签。注意,如果该镜像正在被使用,则无法删除。可以使用 docker ps 命令查看当前正在运行的 Docker 容器列表,如果某个容器正在使用该镜像,则需要先停止该容器,再删除镜像。

[root@ecs-32f7 ~]# docker rmi nginx:latest
Untagged: nginx:latest
Untagged: nginx@sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305
Deleted: sha256:f9c14fe76d502861ba0939bc3189e642c02e257f06f4c0214b1f8ca329326cda
Deleted: sha256:419f8948c50c723f2a5ac74428af3d804b5d0079d6df8f7f827663cf10cbc366
Deleted: sha256:1030aac4f1a8096ed58d3d4a2df55dd1b1b27d919ad156d97ad1f68081d0051a
Deleted: sha256:7d90b49d96c3036539ef144ecc27c01de03902d8ea166a0f7b77d11d3779c4bd
Deleted: sha256:551acb210764654af31b6cd51adaa74edc9a202587c3395fe0e9f95a2e097f8b
Deleted: sha256:3c530958db4c75c6fb409f339367aaf9a1e163c84718c035d4b09bebc83f43e7
Deleted: sha256:8cbe4b54fa88d8fc0198ea0cc3a5432aea41573e6a0ee26eca8c79f9fbfa40e3
[root@ecs-32f7 ~]#

3.5、更新镜像

更新 Docker 镜像可以使用以下命令:

docker pull <镜像名称>:<标签>

其中, <镜像名称> 是要更新的 Docker 镜像的名称, <标签> 是要更新的 Docker 镜像的版本号或标签。例如,要更新本地的 Nginx 镜像,可以使用以下命令:

docker pull nginx:latest

该命令将会从 Docker Hub 中下载最新版本的 Nginx 镜像,并覆盖本地的同名镜像。如果要更新指定版本的 Nginx 镜像,可以将 latest 替换为相应的版本号或标签。注意,如果本地已经有了最新版本的镜像,则不需要执行该命令。

3.6、生成镜像

生成 Docker 镜像的步骤如下:

  1. 编写 Dockerfile:Dockerfile 是用于构建 Docker 镜像的脚本文件,其中包含了构建镜像所需的指令和配置信息。

  2. 构建 Docker 镜像:使用 docker build 命令根据 Dockerfile 构建 Docker 镜像。构建过程中会执行 Dockerfile 中的指令,并生成一个新的 Docker 镜像。

  3. 上传 Docker 镜像:使用 docker push 命令将生成的 Docker 镜像上传到 Docker 镜像仓库中。如果没有自己的 Docker 镜像仓库,可以使用 Docker 官方提供的 Docker Hub 镜像仓库。

下面是一个简单的 Dockerfile 示例,以 ubuntu 系统为例:

FROM ubuntu:18.04
 # 安装必要的软件包
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
 # 设置工作目录
WORKDIR /app
 # 复制应用程序文件到镜像中
COPY . /app
 # 安装 Python 依赖包
RUN pip3 install --no-cache-dir -r requirements.txt
 # 暴露应用程序端口
EXPOSE 8000
 # 设置启动命令
CMD ["python3", "app.py"]

以上 Dockerfile 文件用于构建一个 Python Web 应用程序的 Docker 镜像。在构建完成后,可以使用 docker push 命令将镜像上传到 Docker 镜像仓库中。

3.7、镜像标签

Docker 镜像标签是用来标识 Docker 镜像版本的一种方式,可以让用户更方便地管理和使用 Docker 镜像。Docker 镜像标签由两部分组成,用冒号分隔,例如: ubuntu:18.04 。其中, ubuntu 表示镜像仓库名称, 18.04 表示镜像标签。

Docker 镜像标签可以是任意字符串,但建议使用语义化的版本号或者日期作为标签,以便于管理和使用。例如, v1.0.0latest20210720 等都可以作为 Docker 镜像标签。

使用 Docker 镜像标签,可以方便地管理和使用不同版本的 Docker 镜像。例如,可以使用 docker pull ubuntu:20.04 命令拉取 Ubuntu 20.04 版本的 Docker 镜像,也可以使用 docker pull ubuntu:18.04 命令拉取 Ubuntu 18.04 版本的 Docker 镜像。

docker tag 命令用于为 Docker 镜像打标签,其语法格式如下:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

其中, SOURCE_IMAGE 表示要打标签的 Docker 镜像, TARGET_IMAGE 表示要打的标签后的目标镜像。

例如,要为本地的 ubuntu:20.04 镜像打上 my-ubuntu:latest 的标签,可以使用以下命令:

docker tag ubuntu:20.04 my-ubuntu:latest

执行该命令后,本地的 ubuntu:20.04 镜像就会被打上 my-ubuntu:latest 的标签,可以使用 docker images 命令查看。

4、Docker 容器

4.1、容器启动

启动容器的命令是 docker start ,其语法格式如下:

docker start [OPTIONS] CONTAINER [CONTAINER...]

其中, CONTAINER 表示要启动的容器名称或 ID,可以同时启动多个容器。 OPTIONS 包括以下常用选项:

  • -a ,表示将容器的标准输入、标准输出和标准错误输出连接到当前终端。
  • -i ,表示以交互模式启动容器。
  • -d ,表示以守护进程模式启动容器。
  • –attach ,等同于 -a 选项。
  • –interactive ,等同于 -i 选项。

例如,要启动名称为 my-nginx 的 Nginx 容器,可以使用以下命令:

docker start my-nginx

如果要以交互模式启动该容器,可以使用以下命令:

docker start -ai my-nginx

如果要以守护进程模式启动该容器,可以使用以下命令:

docker start -d my-nginx

4.2、容器查看

查看容器的命令是 docker ps ,其语法格式如下:

docker ps [OPTIONS]

其中, OPTIONS 包括以下常用选项:

  • -a ,表示查看所有容器,包括已经停止的容器。
  • -q ,表示只显示容器的 ID。
  • -n ,表示显示最近创建的 n 个容器。
  • -s ,表示显示容器所占用的磁盘空间大小。
  • --format ,表示指定输出格式。
    例如,要查看当前正在运行的容器,可以使用以下命令:
docker ps

如果要查看所有容器,包括已经停止的容器,可以使用以下命令:

docker ps -a

如果只想显示容器的 ID,可以使用以下命令:

docker ps -q

如果只想显示最近创建的 5 个容器,可以使用以下命令:

docker ps -n 5

如果想显示容器所占用的磁盘空间大小,可以使用以下命令:

docker ps -s

如果想指定输出格式,可以使用以下命令:

docker ps --format "{{.ID}}\t{{.Names}}\t{{.Status}}"

上述命令将输出容器的 ID、名称和状态信息。

4.3、容器停止和重启

要停止容器,可以使用 docker stop 命令。其语法格式如下:

docker stop [OPTIONS] CONTAINER [CONTAINER...]

其中, OPTIONS 包括以下常用选项:

  • -t ,表示停止容器的等待时间,单位为秒,默认为 10 秒。
    例如,要停止 ID 为 123456 的容器,可以使用以下命令:
docker stop 123456

要重启已经停止的容器,可以使用 docker start 命令。其语法格式如下:

docker start [OPTIONS] CONTAINER [CONTAINER...]

其中, OPTIONS 包括以下常用选项:

  • -i ,表示启动容器并进入交互模式。
  • -a ,表示启动容器并附加到容器的标准输入、输出和错误输出。
  • -d ,表示以后台模式启动容器。
  • -p ,表示将容器的端口映射到主机的端口。
  • -v ,表示将主机的目录或文件挂载到容器中。
    例如,要重新启动 ID 为 123456 的容器,可以使用以下命令:
docker start 123456

如果想以交互模式启动容器,可以使用以下命令:

docker start -i 123456

如果想以后台模式启动容器,可以使用以下命令:

docker start -d 123456

如果想将容器的端口映射到主机的端口,可以使用以下命令:

docker start -p 80:80 123456

上述命令将容器的 80 端口映射到主机的 80 端口。
如果想将主机的目录或文件挂载到容器中,可以使用以下命令:

docker start -v /host/path:/container/path 123456

上述命令将主机的 /host/path 目录或文件挂载到容器的 /container/path 目录中。

4.4、后台模式和进入

后台模式是指在容器中运行应用程序时,不占用当前终端窗口,而是在后台运行。这样可以让终端窗口继续执行其他命令,而不会被占用。

在 Docker 中,要在后台模式下运行容器,可以使用 -d 参数。例如,运行一个名为 myapp 的容器,并在后台模式下运行,可以使用以下命令:

docker run -d myapp

进入容器是指在已经运行的容器中打开一个新的终端窗口,以便在容器中执行命令。在 Docker 中,可以使用 docker exec 命令进入容器。例如,进入名为 myapp 的容器,可以使用以下命令:

docker exec -it myapp /bin/bash

其中, -it 参数表示进入交互模式,并打开一个新的终端窗口。 /bin/bash 表示进入容器后执行的命令,这里是打开一个新的 Bash 终端。在进入容器后,可以在容器中执行各种命令,如查看文件、修改配置文件等。

4.5、容器导入和导出

Docker 容器导入和导出是指将容器及其文件系统导出为一个压缩文件,或将一个压缩文件导入为 Docker 容器的过程。
容器导出可以用于备份容器或迁移容器到其他机器上。容器导入可以用于创建一个新的容器,或者将容器恢复到之前的状态。
容器导出可以使用 docker export 命令。例如,将名为 mycontainer 的容器导出为一个 tar 文件,可以使用以下命令:

docker export mycontainer > mycontainer.tar

容器导入可以使用 docker import 命令。例如,将名为 mycontainer.tar 的 tar 文件导入为一个名为 myimage 的 Docker 镜像,可以使用以下命令:

docker import mycontainer.tar myimage

导入后,可以使用 docker run 命令创建一个新的容器,例如:

docker run -it myimage /bin/bash

这将创建一个新的容器,并进入容器的交互式终端。

4.6、强制停止容器

可以使用 docker stop 命令来停止容器。例如,停止名为 mycontainer 的容器,可以使用以下命令:

docker stop mycontainer

如果容器无法正常停止,可以使用 docker kill 命令来强制停止容器。例如,强制停止名为 mycontainer 的容器,可以使用以下命令:

docker kill mycontainer

注意,使用 docker kill 命令会直接终止容器进程,可能会导致数据丢失或其他问题,应该尽量避免使用。

4.7、清理停止的容器

可以使用 docker container prune 命令来清理停止的容器。这个命令会删除所有已经停止的容器,释放占用的系统资源。例如,可以使用以下命令清理停止的容器:

docker container prune

在执行命令之前,可以使用 docker container ls -a 命令来列出所有容器,确认哪些容器已经停止。执行 docker container prune 命令后,所有已经停止的容器都会被删除,无法恢复,请谨慎使用。

4.8、容器别名及操作

在 Docker 中,可以为容器设置别名,方便对容器进行操作。以下是设置容器别名及常用操作的命令:

  1. 为容器设置别名
docker rename [容器ID或容器名] [新别名]
  1. 启动容器
docker start [容器ID或容器名]
  1. 停止容器
docker stop [容器ID或容器名]
  1. 重启容器
docker restart [容器ID或容器名]
  1. 进入容器
docker exec -it [容器ID或容器名] /bin/bash
  1. 查看容器日志
docker logs [容器ID或容器名]
  1. 删除容器
docker rm [容器ID或容器名]

通过为容器设置别名,可以方便地对容器进行操作,避免了频繁输入容器ID或容器名的麻烦。

4.9、容器错误日志

在 Docker 中,可以通过查看容器的错误日志来定位和解决容器运行中的问题。以下是查看容器错误日志的命令:

docker logs [容器ID或容器名]

该命令会输出容器的标准输出和标准错误信息。如果容器运行中出现了错误,可以通过查看错误日志来定位问题所在。可以使用以下命令来查看容器最近的错误日志:

docker logs --tail [行数] [容器ID或容器名]

其中, --tail 参数用于指定要查看的日志行数。例如,要查看容器最近的 10 行错误日志,可以使用以下命令:

docker logs --tail 10 [容器ID或容器名]

通过查看容器错误日志,可以快速定位和解决容器运行中的问题,提高容器的稳定性和可靠性。

5、Docker 仓库

5.1、公有仓库

公有仓库是指可以供用户免费使用的 Docker 镜像仓库,用户可以在其中存储和分享自己的 Docker 镜像。Docker 官方提供了 Docker Hub 公有仓库,其中包含了大量的 Docker 镜像,用户可以通过搜索和下载这些镜像来快速部署和运行应用程序。除了 Docker Hub,还有一些其他的公有仓库,如 Google Container Registry、AWS Elastic Container Registry 等。用户也可以自己搭建私有仓库,用于存储和管理自己的 Docker 镜像。使用公有仓库可以方便地获取和分享 Docker 镜像,提高了应用程序的可移植性和可伸缩性。

1.Docker 官方和国内很多云服务商都提供了国内加速器服务,比如:阿里云的加速器
https://help.aliyun.com/document_detail/60750.html

2.网易加速器:http://hub-mirror.c.163.com

3.Docker官方中国加速器:https://registry.docker-cn.com

4.ustc 的镜像:https://docker.mirrors.ustc.edu.cn

5.daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

5.2、私有仓库

私有仓库是指用户自己搭建的 Docker 镜像仓库,用于存储和管理自己的 Docker 镜像。相比于公有仓库,私有仓库更加安全和可控,用户可以完全掌控自己的镜像,避免了因为公有仓库的镜像被篡改或者存在漏洞而导致的安全问题。私有仓库可以部署在本地服务器或者云服务器上,用户可以根据自己的需求进行扩容和优化。Docker 官方也提供了 Docker Registry 作为私有仓库的解决方案,用户可以在其中搭建自己的私有仓库。使用私有仓库可以提高应用程序的安全性和可控性,适用于一些对安全性要求比较高的企业或者组织。
1. 安装 Docker Registry

Docker Registry 是 Docker 官方提供的镜像仓库,可以用来搭建私有仓库。可以通过以下命令来拉取 Docker Registry 镜像:

docker pull registry

2. 运行 Docker Registry 容器

可以通过以下命令来运行 Docker Registry 容器:

docker run -d -p 5000:5000 --name registry registry

其中, -p 5000:5000 表示将容器内部的 5000 端口映射到主机的 5000 端口, --name registry 表示指定容器的名称为 registry。

3. 配置 Docker 客户端

在使用私有仓库时,需要在 Docker 客户端中配置私有仓库的地址。可以通过以下命令来配置:

echo '{"insecure-registries":["<私有仓库地址>:<端口号>"]}' > /etc/docker/daemon.json

其中, <私有仓库地址> 表示私有仓库的地址, <端口号> 表示私有仓库的端口号。配置完成后,需要重启 Docker 服务:

systemctl restart docker

4. 推送和拉取镜像

在配置完成后,就可以使用 docker push 命令来推送镜像到私有仓库,使用 docker pull 命令来从私有仓库拉取镜像了。例如:

docker tag <镜像名称> <私有仓库地址>:<端口号>/<镜像名称>
docker push <私有仓库地址>:<端口号>/<镜像名称>
docker pull <私有仓库地址>:<端口号>/<镜像名称>

其中, <镜像名称> 表示要推送或拉取的镜像名称, <私有仓库地址> 表示私有仓库的地址, <端口号> 表示私有仓库的端口号。

在这里插入图片描述

💕💕 本文由激流原创,首发于CSDN博客,博客主页 https://blog.csdn.net/qq_37967783?spm=1010.2135.3001.5421
💕💕喜欢的话记得点赞收藏啊

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

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

相关文章

【服务器数据恢复】EXT3文件系统下Oracle数据库数据恢复案例

服务器数据恢复环境&#xff1a; 华为OceanStor某型号存储&#xff0c;十几块FC硬盘组建一组RAID5磁盘阵列&#xff0c;配备了一块热备盘&#xff1b;上层使用EXT3文件系统&#xff0c;配置了oracle数据库。 服务器故障&#xff1a; 该存储RAID5中的一块硬盘未知原因离线&…

从软件测试到自动化测试,待遇翻倍,我整理的超全学习指南!

因为我最近在分享自动化测试技术&#xff0c;经常被问到&#xff1a; 功能测试想转自动化&#xff0c;请问应该怎么入手&#xff1f;有没有好的资源推荐&#xff1f; 那么&#xff0c;接下来我就结合自己的经历聊一聊我是如何在工作中做自动化测试的。&#xff08;学习路线和…

教你该如何写单元测试

目录 前言&#xff1a; 到底什么是单元测试 为什么单测这么难写 写个单测例子 道阻且长 前言&#xff1a; 编写单元测试是软件开发中非常重要的一环&#xff0c;它可以确保代码的质量&#xff0c;减少Bug的产生&#xff0c;提高代码的可维护性&#xff0c;同时也能够大大…

ts自定义迭代器

key 为 [Symbol.iterator]

软考A计划-系统架构师-案例分析知识点整理

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

【数据结构】24王道考研笔记——栈、队列和数组

三、栈、队列和数组 目录 三、栈、队列和数组栈基本概念顺序栈链式栈 队列基本概念顺序存储链式存储双端队列 应用括号匹配前中后缀表达式栈在递归中的运用队列的运用 数组数组的存储对称矩阵三角矩阵三对角矩阵稀疏矩阵 栈 基本概念 栈是只允许在一端进行插入或删除操作的线…

朋友拿下字节27K的offer,实名羡慕了....

最近有朋友去字节面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…

Redux异步解决方案 1. Redux-Thunk中间件

简单介绍一下thunk&#xff0c;这是一个中间件&#xff0c;是解决redux异步问题产生的。我们都知道&#xff0c;在使用redux的时候&#xff0c;通过dispatch一个action 发生到reducer 然后传递给store修改状态 一系列都是同步的&#xff0c;那如果说我dispatch一个action 这个a…

blockchain layer区块链分层

目录 1.layer0 2.layer1 3.layer2 ​4.layer3 1.layer0 第0层的定义目前行业还没有完全一致的理解。多数人认为第0层是 加密数据连接层及其硬件&#xff0c;对应上图下半部分。 也有一些人把跨链或可以创建链的基础设施为作为第0层&#xff0c;他们的代表有: LayerZero、S…

一文讲清后摩尔时代国产高性能并行应用软件生态建设

摘自《后摩尔时代国产高性能并行应用软件生态建设综述》 作者&#xff1a; 龚春叶1&#xff0c;刘杰1&#xff0c;包为民2&#xff0c;潘冬梅1&#xff0c;甘新标1&#xff0c;李胜国1 陈旭光1&#xff0c;肖调杰1&#xff0c;杨博1&#xff0c;王睿伯1 (1.国防科技大学 并…

基于stm32作品设计:多功能氛围灯、手机APP无线控制ws2812,MCU无线升级程序

文章目录 一、作品背景二、功能设计与实现过程三、实现基础功能&#xff08;一&#xff09;、首先是要选材&#xff08;二&#xff09;、原理图设计&#xff08;二&#xff09;、第一版本PCB设计&#xff08;三&#xff09;、焊接PCB板&#xff08;四&#xff09;编写单片机程序…

软件测试基础知识 —— 白盒测试

白盒测试 白盒测试&#xff08;White Box Testing&#xff09;又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试只测试软件产品的内部结构和处理过程&#xff0c;而不测试软件产品的功能&#xff0c;用于纠正软件系统在描述、表示和规格上的错误&#xff0c…

基于诺亚无人船ROS与Dronekit之间的通信浅析

阿木实验室的诺亚无人船上市已经有一段时间&#xff0c;经过对开发者们的多次调研&#xff0c;我们发现不少开发者都对诺亚无人船的通信实现方式感兴趣&#xff0c;为了帮助大家更好地理解并使用该产品&#xff0c;本期我们将针对诺亚无人船中所使用的linux编程技术以及ROS系统…

2023最新互联网工程师 Java 面试题及答案整理(7 天就能吃透)

现在 Java 面试都只是背答案吗&#xff1f; 不背就通过不了面试&#xff0c;但是现在面试都问原理、问场景&#xff01;Java 面试题就像我们高考时的文言文&#xff0c;包括古诗词&#xff0c;不背是不可能答出来的&#xff01;当然了&#xff0c;除了背&#xff0c;还得理解&…

某球中如何驾驶西锐SR-22小飞机在美国大峡谷中穿行

某球中如何驾驶西锐SR-22小飞机在美国大峡谷中穿行 我已经厌烦了无聊的围绕机场的五边飞行了&#xff0c;想飞一趟跨越乡野的转场飞行了。在我常用的飞软SimplePlanes里面&#xff0c;我已经完成取胜了所有的竞速赛道&#xff0c;我想自己创建一个航路想定&#xff0c;最终选择…

帆软Finereport数据分页,分页查询

目标&#xff1a; 在数据集中一次性获取所有数据后&#xff0c;分页查看&#xff0c;导出时导出的所有数据 如图&#xff1a; 实现步骤&#xff1a; 一、在表格中点击第一列数据集的单元格&#xff0c;添加条件属性&#xff0c; 条件属性内容&#xff1a;&A3 % 5 0 公式解…

【Spring框架学习】了解什么是Spring框架?Spring框架有什么用?创建第一个SpringBoot项目

前言&#xff1a; &#x1f49e;&#x1f49e;今天我们开始学习Spring&#xff0c;这里我们会了解什么是Spring&#xff0c;知道什么是框架&#xff0c;为什么要学Spring框架&#xff0c;框架有什么作用等等。 &#x1f49f;&#x1f49f;前路漫漫&#xff0c;希望大家坚持下去…

pikachu靶场-../../(目录遍历)

目录遍历, 也叫路径遍历, 由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞&#xff0c;使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制&#xff0c;访问任意的文件 (可以是web根目录以外的文件&#xff09;&#xff0c;甚至…

客户案例:CACTER邮件安全网关解决餐饮企业邮件安全痛点,有效提升防护!

客户背景 某大型餐饮企业是一家在全国范围内拥有多家连锁店的知名品牌&#xff0c;以优秀的产品和服务质量&#xff0c;严格的质量控制和管理体系&#xff0c;以及开创性的营销策略&#xff0c;赢得了广泛的客户认可和信任。 然而&#xff0c;正因为该企业具有良好的口碑和声誉…

sonar scanner配置

sonar scanner配置 这里记录如何配置sonar scanner扫描C/C项目代码。话不多说&#xff0c;先上官网链接。 文章目录 sonar scanner配置1. 环境1.1 SonarSource Build Wrapper1.2 sonar-scanner 2. 使用2.1 Compilation Database2.2 执行sonar-scanner 3. 注意 1. 环境 对于C…