Docker技术入门 | Part01:Docker简介

news2024/11/26 7:26:07

文章目录

  • 1 虚拟化技术
  • 2 Docker概述
    • 2.1 Docker能解决的问题
    • 2.2 Docker介绍
    • 2.3 为什么使用Docker
    • 2.4 Docker特点
    • 2.5 Docker应用场景
  • 3 Docker与虚拟机对比
    • 3.1 Docker和虚拟机组成结构
    • 3.2 Docker和虚拟机的不同点
  • 4 Docker基本概念
    • 4.1 Docker引擎
    • 4.2 Docker基本架构
    • 4.3 Docker容器的核心概念
  • 5.Docker底层技术
    • 5.1 命名空间
    • 5.2 群组控制
    • 5.3 联合文件系统
    • 5.4 容器格式

1 虚拟化技术

虚拟化技术

虚拟化技术是一-种计算机资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来。虚拟化技术打破了计算机实体结构间的不可切割的障碍。使用户可以比原本的组态更好的方式来应用这些资源。

虚拟化技术主要作用:

●高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件。

●软件跨环境迁移问题(代码的水土不服)。

在一台主机上实现多个操作系统,关键技术就是硬件的虚拟化。

2 Docker概述

2.1 Docker能解决的问题

首先,我们先来看几个问题:

  1. 合作开发的时候,在本机可以运行,在别人的电脑上跑不起来。

这里我们以ava Web应用程序为例,-个lava Web应用程序涉及很多东西,比如DK、Tomcat. Spring等。 当这些其中某一项版本不一致的时候, 可能就会导致应用程序跑不起来这种情况。Docker则将程序直接打包成镜像,直接运行在容器中即可。

  1. 服务器自己的程序挂了,结果发现是别人程序出了问题把内存吃完了,自己程序因为内存不够就挂了。

这种也是一-种比较常见的情况,如果你的程序重要性不是特别高的话, 公司基本上不可能让你的程序独享-台服务器的, 这时候你的服务器就会跟公司其他人的程序共享- - 台服务器,所以不可避免地就会受到其他程序的干扰,导致自己的程序出现问题。Docker就很好解决了环境隔离的问题,别人程序不会影响到自己的程序。

  1. 测试阶段能运行和上线出现问题。

开发阶段部署一套软件环境,测试人员在开发中测试没有问题,运维进行部署(同-套代码)。但是正式部署到服务器时,发生了问题(启动参数、环境问题、漏配了参数)等意外。

  1. 公司要弄一个活动,可能会有大量的流量进来,公司需要再多部署几十台服务器。

在没有Docker的情况下,要在几天内部署几十台服务器,这对运维来说是一件非常折磨人的事,而且每台服务器的环境还不一定一样,这时就会出现各种问题,最后部署地头皮发麻。用Docker的话, 我只需要将程序打包到镜像, 你要多少台服务,我就给你跑多少容器,极大地提高了部署效率。

  1. 微服务环境搭建问题。

随着微服务技术的兴起,一个大的应用需要拆分成多个微服务。多个微服务的生成,就会面临庞大系统的部署效率,开发协同效率问题。然后通过服务的拆分,数据的读写分离、分库分表等方式重新架构,而且这种方式如果要做的彻底,需要花费大量人力物力。可能需要部署很多个服务器。

  1. 容器版本管理。

持续的软件版本发布、测试项目到线上环境的集成。用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码样。

2.2 Docker介绍

Docker是一个开源的应用容器引擎,诞生于2013年初, 基于Go语言实现,dotCloud公司出品(后改名为Docker Inc),并遵从Apache2.0协议开源。从17.03版本之后,Docker分为CE (Community Editin-社区版)和EE (Enterprise Edition-企业版)版本,Docker CE是免费版。

Docker可以让开发者打包他们的应用,以及依赖包到-个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上。Docker容器是完全使用沙箱机制,相互隔离,性能开销也极低。

Docker通俗的讲是服务器中高性能的虚拟机,可以将一台物理机虚拟N多台虚拟机的机器,互相之间隔离,互不影响。

“Debug your app, not your environment!”.调试您的应用程序,而不是您的环境!

官网的介绍是"Docker is the world’s leading software container platform.".官方给Docker的定位是一个应用容器平台。

想要搞懂Docker,其实看它的两句口号就行。第一句是"Build, Ship and Run"。也就是“搭建、发送、运行”,三板斧。
Docker的第二句口号就是"Build once, Run anywhere.“,意思是"搭建一次,到处能用”。

2.3 为什么使用Docker

  1. 简化程序

Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Lnux机器上,便可以实现应拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容 器的处理下,只需要数秒就能完成。

  1. 避免选择恐惧症

如果你有选择恐惧症,还是资深患者。Docker 帮你打包你的纠结! Docker镜像中包含了运行环境和配置,所以Docker可以简化部署多种应用实例工作。比如Web应用、后台应用、数据库应用、大数据应用,再如Hadoop集群、 消息队列等都可以打包成一个镜像部署。

  1. 节省开支

一方面, 云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变 了高性能必然高价格的思维定势。Docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

  1. 持续交付和部暑

对开发和运维(DevOps) 人员来说,最希望的就是一-次创建或配置, 可以在任意地方正常运行。使用Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile来进行镜像构建,并结合持续集成(Continuous Integration)系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署(Continuous Delivery/Deployment)系统进行自动部署。而且使用Dockerfile使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部暑该镜像。

  1. 更轻松的迁移

由于Docker确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的, 因此用户可以很轻易的将在一个平台上运行的应用,迁移到另个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

2.4 Docker特点

标准化交付: Docker将应用打包成标准化单元,用于交付、部署。

轻量级:容器及包含了软件运行所需的所有环境,而且非常轻量级。

高可靠:容器化的应用程序,可以在任何Linux环境中始终如一的运行。

隔离性:容器化的应用程序,具备隔离性,这样多团队可以共享同一Linux系统资源。

2.5 Docker应用场景

1.Web应用的自动化打包和发布。

2.自动化测试和持续集成、发布。

3.在服务型环境中部署和调整数据库或其他的后台应用。

4.从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

●PaaS: Platform as a Service, 平台即服务

●SaaS: Software as a Service, 软件即服务

●laas: Infrastructure as a Service,基础设施即服务

3 Docker与虚拟机对比

3.1 Docker和虚拟机组成结构

下面的图片比较了传统虚拟化方式和Docker的不同之处,

虚拟机通过硬件虚拟化,即每台虚拟机事先从物理机分配好cpu核数,内存, 磁盘,每台虚拟机一般只部署一个应用。
传统虚拟机的组成结构图:
在这里插入图片描述

Docker的组成结构图:
在这里插入图片描述

比较上面两张图,可见Docker是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式(VMware)则是在硬件层面实现。

Docker和虚拟机的相同点是: Docker和虚拟机都是虚拟化技术,具备资源隔离和分配优势。

3.2 Docker和虚拟机的不同点

  1. 性能对比

Docker容器作为一种轻量级的虚拟化技术,和传统虚拟机技术的特性差异如下表所示:

特性容器虚拟机
启动速度秒级分钟级
存储占用MB级GB级
性能对比接近原生级别理论达不到原生级别
系统量级单机可支持上千个单机支持几十个
安全能力依赖宿主系统安全能力完全隔离
  1. 应用场景不同

若需要资源的完全隔离并且不考虑资源的消耗,可以使用虚拟机。若是想隔离进程井且需要运行大量进程实例,应该选择Docker容器.

  1. 使用资源方面不同

Docker容器与主机共享操作系统内核,不同的容器之间可以共享部分系统资源,因此更加轻量级,消耗的资源更少。虚拟机会独占分配给自己的资源,不存在资源共享,各个虚拟机之间近乎完全隔离,更加重量级,也会消耗更多的资源。

  1. 实现原理不同

虚拟机是用来进行硬件资源划分的完美解决方案,利用的是硬件虚拟化技术,如此VT-x、 AMD-V会通过一个Hypervisor层来实现对资源的彻底隔离。而容器则是操作系统级别的虚拟化,利用的是内核的cgroup和namespace特性,此功能通过软件来实现,仅仅是进程本身就可以实现互相隔离,不需要任何辅助。

4 Docker基本概念

4.1 Docker引擎

Docker引|掌组件的流程如下图所示:
在这里插入图片描述

Docker使用客户端-服务器C/S架构模式,使用远程API来管理并创建Docker容器

4.2 Docker基本架构

Docker采用C/S架构。Docker Server负责构建、运行和分发Docker镜像。Docker Client和Docker Server可以运行在同一台机器上,也可以通过RESTful或其他网络接口进行远程通信,如下图所示:
在这里插入图片描述

从上图能够看到,Docker体系的核心组件包括如下几部分:

●Docker Client: Docker客户端。

●Docker Daemon: Docker守护进程。

●Docker Container: Docker容器。

●Docker Image: Docker镜像。

●Docker Regitry: Docker仓库。

4.3 Docker容器的核心概念

  1. 镜像Image

Docker镇像和虚拟机镜像的概念是一样的,可以将其理解为-一个面向Docker引擎的只读模板,可用于批量创造可运行的容器实例。Docker镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如环境变量、用户等) .镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像是创建Docker容器的基础,而Docker体系能够提供一套简单的机制创建和更新已有的镜像,也可以从网上下载一个制作好的现成的镜像。

分层储层。因为镜像包含操作系统完整的root文件系统,其体积往往是庞大的,因此在Docker设计时,将其设计为分层存储的架构。所以严格来说,镜像并非是像个ISO那样的打包文件,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说, 由多层文件系统联合组成。

镜像构建时,会一层层构建,前一层是后一层的基础。每-层构建完就不会再发生改变,后-层 上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件.而是仅在当前层标记为该文件已副除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。 因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。

分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层, 以定制自己所需的内容,构建新的镜像。

  1. 容器Container

Docker容器是一个镜像运行时的概念,实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至自己的用户ID空间。容器内的进程是运行在一个隔离的环境里, 使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

前面讲过镜像使用的是分层存储,容器也是如此。每-个容器运行时,是以镜像为基础层,在其上创建一个当前容器的存储层,我们可以称这个为容器运行时读写而准备的存储层为容器存储层

容器存储层的生存周期和容器一样, 容器消亡时,容器存储层也随之消亡。按照Docker最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume) 、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储) 发生读写,其性能和稳定性更高。
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器删除或者重新运行之后,数据却不会丢失。Docker容器与Docker镜像的关系类似于面向对象编程中的对象与类。

Docker 镜像是只读的。当 Docker 运行一个从镜像建立的容器,它会在镜像顶部添加一个可读写的层,应用程序可以在这里运行。

$ sudo docker run -i -t ubuntu /bin/bash

Docker 客户端使用docker命令来运行,run参数表名客户端要运行一个新的容器。
容器以哪个镜像为模板创建忙,这里是ubuntu镜像。
在容器中要运行的命令,这里是/bin/bash,在容器中运行 Bash shell。
按照顺序,Docker 做了这些事情:

  • 拉取ubuntu镜像: Docker 检查ubuntu镜像是否存在,如果在本地没有该镜像,Docker 会从 Docker Hub 下载。如果镜像已经存在,Docker 会使用它来创建新的容器。
  • 创建新的容器: 当 Docker 有了这个镜像之后,Docker 会用它来创建一个新的容器。
  • 分配文件系统并且挂载一个可读写的层: 容器会在这个文件系统中创建,并且一个可读写的层被添加到镜像中。
  • 分配网络/桥接接口: 创建一个允许容器与本地主机通信的网络接口。
  • 设置一个 IP 地址: 从池中寻找一个可用的 IP 地址并且服加到容器上。
  • 运行你指定的程序: 运行指定的程序。
  • 捕获并且提供应用输出: 连接并且记录标准输出、输入和错误让你可以看到你的程序是如何运行的。

你现在拥有了一个运行着的容器!从这里开始你可以管理你的容器,与应用交互,应用完成之后,可以停止或者删除你的容器。

  1. 仓库Reopsitory

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。
一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Docker利用仓库管理镜像的理念类似于Git,默认情况下Docker会在中央仓库(Docker Hub和Docker Cloud)寻找镜像文件。

  1. 1 公有Docker Registry

Docker Registry公开服务是开放给用户使用、允许用户管理镜像的Registy服务。- -般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。

最常使用的Registry公开服务是官方的Docker Hub,这也是默认的Registry, 并拥有大量的高质量的官方镜像。

由于某些原因,在国内访问这些服务可能会比较慢。国内的一些云服务商提供 了针对Docker Hub的镜像服务(Reglsry Mrron),这些镇像服务被称为加速器,常见的有阿里云加速器、DaoCloud加速器等。

  1. 2 私有Docker Registry

除了使用公开服务外,用户还可以在本地搭建私有Docker Registry, Docker官方提供了Docker Registry镜像,可以直接使用做为私有Registry服务。

开源的Docker Registry镜像只提供了Docker Registry API的服务端实现、足以支持docker命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。在官方的商业化版本Docker Trusted Registry中,提供了这些高级功能。

  1. 客户端Client

Docker Client提供了命令行界面(CLI) ,是用户与Docker进行交互的主要窗口。通过Client可以构建、运行和停止容器,还可以与运程的Docker Server进行交互。

  1. 守护进程Daemon

Docker Daemon是最核心的后台服务进程,管理容器的进程,以Linux后台服务的方式运行,也称为守护进程。它负责响应来自Docker Client的请求,内部对请求进行路由分发,交给具体的管理模块进行处理。

5.Docker底层技术

5.1 命名空间

每个容器都有自己单独的名字空间,运行在其中的应用都像是在独立的操作系统中运行一样。Docker 为该容器创建了一个命名空间集合,使容器之间互不影响。

一些 Docker 使用到的命名空间有:

  • pid命名空间:

使用在进程隔离 (PID: Process ID)。

  • net命名空间:

使用在管理网络接口 (NET: Networking)。

  • ipc命名空间:

使用在管理进程间通信资源 (IPC: InterProcess Communication)。

  • mnt命名空间:

使用在管理挂载点 (MNT: Mount)。

  • uts命名空间:

使用在隔离内核和版本标识 (UTS: Unix Timesharing System)。

5.2 群组控制

Docker 还使用到了cgroups技术来管理群组。控制分配到容器的资源,才能避免当多个容器同时运行时的对系统资源的竞争。群组控制允许 Docker 分享或者限制容器使用硬件资源。例如,限制指定的容器的内容使用。

5.3 联合文件系统

联合文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into asingle virtual filesystem)。

联合文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

另外,不同 Docker 容器就可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。

5.4 容器格式

Docker 连接这些组建到一个包装中,称为一个 container format(容器格式)。默认的容器格式是libcontainer。Docker 同样支持传统的 Linux 容器使用LXC。

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

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

相关文章

怎样把英语视频字幕翻译成中文

我们知道&#xff0c;随着中外文化交流日益频繁&#xff0c;视频翻译作为一种重要的跨文化交流方式&#xff0c;也越来越受到重视。那么&#xff0c;怎样把英语视频翻译成中文&#xff0c;北京视频翻译哪里比较专业&#xff1f; 据了解&#xff0c;视频翻译是直接将一种语言的音…

植物大战僵尸植物表(二)

前言 此文章为“植物大战僵尸”专栏中的第007刊&#xff08;2023年9月第六刊&#xff09;。 提示&#xff1a; 1.用于无名版&#xff1b; 2.用于1代&#xff1b; 3.pvz指植物大战僵尸&#xff08;Plants VS Zonbies)。 植物大战僵尸植物表 土豆雷窝瓜火炬树桩火爆辣椒杨…

python调用C语言库

1. 在linux下通过gcc生成so库 //请保存为 foo.c #include<stdio.h> #define uint8_t unsigned char #define uint16_t unsigned shorttypedef struct TagMyStruct {char name[10];uint8_t age;int score; } MyStruct,*MyStructPointer;MyStructPointer foo_get_data_…

JS 实现同时往数组多个位置插入值和删除值

1 start下标实现往固定地方插入数据 const aa [1, 2, 3, 4, 5, 6]; let bb [{ start: 5, list: [b1, b2, b3] },{ start: 0, list: [a1, a2] },{ start: 1, list: [c1, c2] },{ start: 1, list: [c11, c22] },{ start: 2, list: [d1, d2] },{ start: 3, deleteCount: 1 }, …

Spring 怎么解决循环依赖的呢?

Spring 怎么解决循环依赖 什么是循环依赖那 Spring 怎么解决循环依赖的呢&#xff1f;为什么要三级缓存&#xff1f;⼆级不⾏吗&#xff1f; 什么是循环依赖 Spring 循环依赖&#xff1a;简单说就是自己依赖自己&#xff0c;或者和别的 Bean 相互依赖。 只有单例的 Bean 才存在…

局域网ntp服务器设置(windows时间同步服务器NetTime)(ubuntu systemd-timesyncd ntp客户端)123端口、ntp校时

文章目录 背景windows如何配置ntp服务器手动配置配置参数AnnounceFlags和Enabled含义 使用软件配置&#xff08;NetTime&#xff09;实操相关疑问&#xff1a;0.nettime.pool.ntp.org是什么&#xff1f; 注意事项请务必检查windows主机123端口是否已被占用&#xff0c;方法请参…

按钮控件的基类--- QAbstractButton 类(抽象类)

1、QAbstractButton 属性 QAbstractButton 属性速查表属性名说明属性名说明autoExclusive自动排他性checked是否被选中autoRepeat是否启用自动重复down是否处于按下状态autoRepeatDelay初始延迟(毫秒)icon按钮上显示的图标autoRepeatInterval时间间隔(毫秒iconSize显示的图标的…

Python图像处理算法实战【1】超详细整理 | 新手入门实用指南 | 图像处理基础

1. 什么是图像 & 图像在计算机中如何存储&#xff1f;2. 图像可分为哪些类型&#xff1f; 2.1. 二值(黑白)图像2.2. 灰度图像2.3. RGB彩色图像2.4. RGBA图像 3. 什么是图像通道&#xff1f;4. 图像处理 4.1. 什么是图像处理&#xff1f;4.2. 图像处理流程4.3. 图像处理技术…

汉诺塔问题(java解析代码版)

此文章只解析代码部分问题&#xff0c;理解汉诺塔&#xff0c;但是不理解代码的可以看一下&#xff0c;希望能帮到各位&#xff0c;如果有什么地方错了&#xff0c;欢迎指正。 不过其实主要还是给自己看的&#xff0c;怕到时候忘记 汉诺游戏规则如下&#xff1a; 1、有三根相…

成集云 | 金蝶云星空即时库存明细同步到多维表格 | 解决方案

源系统成集云目标系统 方案介绍 金蝶云星空是金蝶软件推出的新一代成长型企业SaaS管理软件&#xff0c;基于可组装低代码PaaS平台&#xff0c;构建了财务、供应链、采购管理、销售管理、生产管理、成本、税务、零售、电商、人力资源、协同办公等三十多个领域的一体化企业管理…

使用Android原生制作毛玻璃效果图片

毛玻璃效果&#xff0c;也被称为模糊效果&#xff0c;是许多现代应用中流行的一种视觉效果。在 Android 中&#xff0c;我们可以通过多种方式实现该效果。本文将探讨如何使用 Android 原生的 Bitmap 类和 RenderScript 来实现毛玻璃效果。 1. 准备工作 首先&#xff0c;你需要…

使用maven idea环境

创建模块工程后 idea三种方式执行maven命令 想在哪个工程模块上执行就点开哪一个 如果觉得双击完clean再双击install麻烦&#xff0c;可以 如果有需要还可以给命令后面加参数 ​​​ 第三种&#xff0c;在终端中打开&#xff0c;相当于通过idea进入了命令行 工程导入 导入模块…

Vue + Element UI 前端篇(十一):第三方图标库

Vue Element UI 实现权限管理系统 前端篇&#xff08;十一&#xff09;&#xff1a;第三方图标库 使用第三方图标库 用过Elment的同鞋都知道&#xff0c;Element UI提供的字体图符少之又少&#xff0c;实在是不够用啊&#xff0c;幸好现在有不少丰富的第三方图标库可用&…

JVM性能优化 —— 类加载器,手动实现类的热加载

一、类加载的机制的层次结构 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑&#xff0c;这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件&#xff0c;”.class”文件中保存着Java代码经转换后的虚拟机指令&#xff0c;当需要使用某个类时&#…

Redis List类型命令 - Set类型命令 - SortedSet类型命令

目录 List类型 什么是双向链表呢&#xff1f; List类型的特征&#xff1a; List的常用命令 LPUSH和RPUSH的区别&#xff1a; LPOP和RPOP的区别&#xff1a; LPUSH和RPUSH的使用 LPOP和RPOP的使用 LRANGE key star end&#xff1a;返回一段距离范围内所有的元素 BLPOP…

Kotlin(五) 循环语句

目录 For循环 关键字 until step downTo Java中主要有两种循环语句&#xff1a;while循环和for循环。而Kotlin也提供了while循环和for循环&#xff0c;其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别&#xff0c;因此我们就直接跳过不进行讲解…

winserver 2012 R2 部署记录

记一次winserver2012 R2 环境部署&#xff0c;程序要求 framework4.6.1 安装好之后发现报错&#xff0c;提示运行环境没有 4.6.1 支持&#xff0c;需要安装 于是先装了 chs 版本&#xff0c;发现报错。 再次打开卸载&#xff0c;重新安装enu版本&#xff0c;发现程序正常。

GPT引领前沿热点、AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。如在科研编程、绘图领域&#xff1a; 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。 2、数据可…

ubuntu 22.04 深度学习环境配置

第一步 安装驱动 网址&#xff1a;https://www.nvidia.com/download/index.aspx 根据硬件选择&#xff0c;我这里是 ubuntu 服务器,显卡是v100 sudo su root chmod ax NVIDIA //按 TAB 即可 加运行权限 # 禁用原显卡驱动 vim /etc/modprobe.d/blacklist.conf # 在最后一行…

服装商城小程序制作:打造便捷购物体验和提升销售额的利器

随着移动互联网的发展&#xff0c;服装商城小程序成为各大服装品牌推广销售的重要工具。它不仅能够为用户提供便捷的购物体验&#xff0c;还能帮助服装商城实现更高效的销售和管理。下面给大家介绍下服装商城小程序的优点以及制作流程&#xff0c;让您了解并充分利用这一利器。…