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仓库搭建

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.rhkb.cn/news/319221.html

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

相关文章

【Hadoop】--基于hadoop和hive实现聊天数据统计分析,构建聊天数据分析报表[17]

目录 一、需求分析 1、背景介绍 2、目标 3、需求 4、数据内容 5、建库建表 二、ETL数据清洗 1、数据问题 2、需求 3、实现 4、扩展概念&#xff1a;ETL 三、指标计算 1、指标1&#xff1a;统计今日消息总量 2、指标2&#xff1a;统计每小时消息量、发送量和接收用…

Unity UGUI Image 点击事件忽略空白像素区域

我们会遇到图片不是方形的不规则图片。这个时候我们希望只有点击到图像内容本身才算点击&#xff0c;点击空白区域则不算点击。而UGUI对图片的处理是整个图片都会算作点击区域&#xff0c;这样不能满足于我们的使用需求了。 首先我们需要把图片本身的Read/Write 选项打开 然后…

CSS精灵图、字体图标、HTML5新增属性、界面样式和网站 favicon 图标

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度,因此&#xff0c;为了有效地减少服务…

【源码阅读】Golang中的go-sql-driver库源码探究

文章目录 前言一、go-sql-driver/mysql1、驱动注册&#xff1a;sql.Register2、驱动实现&#xff1a;MysqlDriver3、RegisterDialContext 二、总结 前言 在上篇文章中我们知道&#xff0c;database/sql只是提供了驱动相关的接口&#xff0c;并没有相关的具体实现&#xff0c;具…

分层图像金字塔变压器

文章来源&#xff1a;hierarchical-image-pyramid-transformers 2024 年 2 月 5 日 本文介绍了分层图像金字塔变换器 (HIPT)&#xff0c;这是一种新颖的视觉变换器 (ViT) 架构&#xff0c;设计用于分析计算病理学中的十亿像素全幻灯片图像 (WSI)。 HIPT 利用 WSI 固有的层次结…

JDK14特性

JDK14 1 概述2 语法层面的变化1_instanceof的模式匹配(预览)2_switch表达式(标准)3_文本块改进(第二次预览)4_Records 记录类型(预览 JEP359) 3 API层面的变化4 关于GC1_G1的NUMA内存分配优化2_弃用SerialCMS,ParNewSerial Old3_删除CMS4_ZGC on macOS and Windows 4 其他变化1…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-8.2-链接脚本

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

3.9设计模式——Strategy 策略模式(行为型)

意图 定义一系列的算法&#xff0c;把它们一个个封装起来&#xff0c;并且使他们可以相互替换此模式使得算法可以独立于使用它们的客户而变化 结构 Strategy&#xff08;策略&#xff09;定义所有支持的算法的公共入口。Context使用这个接口来调用某ConcreteStrategy定义的方…

实验14 MVC

二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握MVC的用法。【参考课本 例1 】 三、源代码以及执行结果截图&#xff1a; example7_1.jsp&#xff1a; <% page contentType"text/html" %> <% page pageEncoding "ut…

【信息收集-基于字典爆破敏感目录--御剑/dirsearch

两个工具都是内置字典来对于目录进行爆破的&#xff0c;这是信息收集的一部分&#xff0c;若能在列举出的目录中找到有价值的信息能为后续渗透做准备。 御剑比较简便 dirsearch需要集成python3.x环境&#xff0c;但是可选的命令更多。两者爆破的结果不一定相同&#xff0c;可以…

怎样建设网站

建设一个网站需要经过一系列的步骤和技术&#xff0c;以下是一个简单的指导&#xff1a; 1. 确定网站目的&#xff1a;首先要确定网站的目的和目标。是为了促销产品&#xff1f;提供信息&#xff1f;还是为了社交交流&#xff1f;确定网站目的可以帮助你更好地规划网站的结构和…

【深度学习】位置编码

一、引言 Self-Attention并行的计算方式未考虑输入特征间的位置关系&#xff0c;这对NLP来说是不可接受的&#xff0c;毕竟一个句子中每个单词都有着明显的顺序关系。Transformer没有RNN、LSTM那样的顺序结构&#xff0c;所以Transformer在提出Self-Attention的同时提出了Posi…

RKNN Toolkit2 工具的使用

RKNN Toolkit2 是由瑞芯微电子 (Rockchip) 开发的一套用于深度学习模型优化和推理的工具。它主要面向在瑞芯微SoC上进行AI应用开发&#xff0c;但也可以用于PC平台进行模型的转换、量化、推理等操作。它支持将多种深度学习框架的模型&#xff08;如Caffe, TensorFlow, PyTorch等…

Linux下软硬链接和动静态库制作详解

目录 前言 软硬链接 概念 软链接的创建 硬链接的创建 软硬链接的本质区别 理解软链接 理解硬链接 小结 动静态库 概念 动静态库的制作 静态库的制作 动态库的制作 前言 本文涉及到inode和地址空间等相关概念&#xff0c;不知道的小伙伴可以先阅读以下两篇文章…

网络安全是智能汽车下一个要卷的方向?

2024年一季度&#xff0c;中国汽车市场延续了2023年的风格&#xff0c;核心就是「卷」。 2023年&#xff0c;我国汽车市场爆发「最强价格战」&#xff0c;燃油车的市场空间不断被挤压&#xff0c;如今只剩下最后一口气。近日乘联会发布4月1-14日最新数据&#xff0c;新能源&am…

【前端】VUE项目创建

在所需文件夹中打开cmd命令行窗口&#xff0c;输入vue ui 进入web可视化界面选择创建新项目 根据需求依次完成下列选择&#xff0c;下列是参考配置&#xff0c;完成后点击创建项目即可 最终显示完成

CUDA和显卡驱动

1.安装显卡驱动 https://www.nvidia.com/download/index.aspx?langen-us 由于我的显卡是RTX4060&#xff0c;因此先选择RTX40系列&#xff0c;然后选择RTX4060&#xff0c;进行安装 2.查看显卡对应的CUDA CUDA安装地址&#xff1a;https://developer.nvidia.com/cuda-toolk…

应用分层和企业规范

目录 一、应用分层 1、介绍 &#xff08;1&#xff09;为什么需要应用分层&#xff1f; &#xff08;2&#xff09;如何分层&#xff1f;&#xff08;三层架构&#xff09; MVC 和 三层架构的区别和联系 高内聚&#xff1a; 低耦合&#xff1a; 2、代码重构 controlle…

【 书生·浦语大模型实战营】学习笔记(六):Lagent AgentLego 智能体应用搭建

&#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料&#xff0c;配有全面而有深度的专栏内容&#xff0c;包括不限于 前沿论文解读、…

相机知识的补充

一&#xff1a;镜头 1.1MP的概念 相机中MP的意思是指百万像素。MP是mega pixel的缩写。mega意为一百万&#xff0c;mega pixel 指意为100万像素。“像素”是相机感光器件上的感光最小单位。就像是光学相机的感光胶片的银粒一样&#xff0c;记忆在数码相机的“胶片”&#xff…