当前位置: 首页 > news >正文

【Docker基础】理解 Docker:本质、性质、架构与核心组件

文章目录

  • Docker 本质
  • Docker 的引擎迭代
  • Docker 和虚拟机的区别
  • Docker 为什么比虚拟机资源利用率高,速度快?
  • Docker 和 JVM 虚拟化的区别
  • Docker 版本
    • 1. LXC (Linux Containers)
    • 2. libcontainer
    • 3. Moby
    • 4. docker-ce
    • 5. docker-ee
    • 总结:
  • Docker 架构
    • 1. Docker 仓库 (Registry)
    • 2. Docker 守护进程 (Daemon)
    • 3. Docker 客户端 (Client)
    • 4. Docker 主机 (Host)
    • 5. Docker 镜像 (Images)
    • 6. Docker 容器 (Container)
    • 补充组件

Docker 本质

  • Docker 本质上类似于 LXC(Linux Container,一种 Linux 下的虚拟化解决方案),但它本身并不是容器,而是容器的易用工具。容器技术源自于 Linux 内核,Docker 的主要作用是将这一技术进行普及和简化。早期版本的 Docker 实际上是对 LXC 的二次封装和发行。

  • 作为容器技术的实现,Docker 是一个基于 Go 语言开发的开源项目,其核心目标是“Build, Ship and Run Any APP, Anywhere”。简单来说,Docker 通过对应用组件的封装、分发、部署和运行等生命周期的管理,帮助用户实现“一次封装,到处运行”的目标。

  • 在早期,Docker 使用 LXC 作为容器管理引擎,但它对容器创建过程进行了改进。Docker 不再通过模板去安装容器,而是采用镜像技术。镜像文件将操作系统用户空间所需的所有组件预先编排并打包成一个文件(即镜像)。这些镜像文件集中存储在镜像仓库中。当需要创建容器时,Docker 会调用 LXC 的工具 lxc-create,但是不再通过 LXC 模板安装,而是连接到镜像仓库,下载匹配的镜像文件,并基于镜像启动容器。

因此,Docker 极大地简化了容器的使用过程。用户创建和启动容器时,只需使用简单的命令:docker run 启动容器,docker stop 停止容器。


Docker 的引擎迭代

Docker 在早期是基于 LXC 容器管理引擎实现的,但随着技术的逐步成熟,Docker 自行开发了一个新的容器引擎,名为 libcontainer。随后,随着 CNCF(Cloud Native Computing Foundation)的介入,Docker 又研发了一个符合工业化标准的容器引擎——runC。目前,最新版的 Docker 已经采用了 runC 作为其默认的容器引擎。


Docker 和虚拟机的区别

对比项传统虚拟机Docker 容器
磁盘占用几个 GB 到几十个 GB几十 MB 到几百 MB
CPU/内存占用虚拟操作系统非常占用 CPU 和内存,需要通过虚拟层调用,占用率高Docker 引擎占用资源极低,直接作用于硬件资源,占用少
启动速度几分钟(从开机到运行项目)几秒(从开启容器到运行项目)
安装/管理需要专门的运维技术安装、管理方便,应用部署
部署手动部署,速度慢体系化部署,可以自动化,速度快
隔离性系统级别(每个虚拟机有独立的操作系统)进程级别(共享宿主机操作系统内核)
封装程度打包整个操作系统打包项目代码和依赖信息

Docker 为什么比虚拟机资源利用率高,速度快?

在这里插入图片描述

从上图可以看出来:

Docker 相比虚拟机具有更少的抽象层。Docker 不依赖 Hypervisor 进行硬件资源虚拟化,容器中的程序直接访问宿主机的物理硬件资源。

因此,在 CPU 和内存的利用率上,Docker 显著优于虚拟机,具备更高的效率。

Docker 使用的是宿主机的内核,而不需要独立的 Guest OS,这也节省了操作系统所占用的资源。 当创建 Docker 容器时,不需要像虚拟机那样重新加载操作系统内核。这样避免了加载和启动操作系统内核时所消耗的时间和资源。当创建一个虚拟机时,虚拟机管理软件需要加载 Guest OS,整个过程通常需要几分钟;而创建 Docker 容器则只需几秒钟。


Docker 和 JVM 虚拟化的区别

对比项JVMDocker 容器
性能JVM 需要占用一定的 CPU 和内存基本没有损失
虚拟层面基于 JVM 虚拟机,属于更高层的虚拟化基于操作系统,更加通用,不依赖特定代码
代码无关性一个特定代码的执行平台,运行时才存在,只能支撑特定代码的执行,并且必须在 JVM 进程内模拟了整个操作系统,是静态存在的,可以支撑任何相同平台的应用程序
主机隔离性JVM 不隔离主机通过命名空间实现隔离

Docker 版本

1. LXC (Linux Containers)

LXC 是最早的 Linux 容器技术,Docker 早期版本使用 LXC 来实现容器的底层功能。虽然使用者较少,但 LXC 仍在持续发展中。

2. libcontainer

从 Docker 0.9 版本开始,Docker 开发了 libcontainer,作为 LXC 的替代方案。在 Docker 1.10 版本中,完全移除了 LXC 支持,并在 1.11 版本中将 libcontainer 拆分成 runc,后者成为容器的标准。

3. Moby

Moby 是 Docker 推出的开源项目,核心组件就是 mobymoby 是 Docker 引擎(dockerd)使用的开源项目,现已从 moby 仓库 fork 并使用 containerd 作为运行时标准。
官方网站

4. docker-ce

Docker 的开源版本,CE 代表 Community Edition(社区版)。docker-ce 的组件来源于 mobycontainerd 等开源项目。
定价页面

5. docker-ee

Docker 的收费版本,EE 代表 Enterprise Edition(企业版)。与 docker-ce 相同,但添加了企业级功能和支持。
定价页面

总结:

  • LXC:早期的容器技术,现已被 Docker 替代。
  • libcontainer:Docker 自主开发的容器实现,后与 runc 合并。
  • Moby:Docker 开源项目,包含 Docker 引擎的核心。
  • docker-ce:Docker 开源社区版。
  • docker-ee:Docker 企业收费版,提供额外的企业级功能。

Docker 架构

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

Docker 容器通过 Docker 镜像来创建。
在这里插入图片描述

1. Docker 仓库 (Registry)

Docker 仓库用于存储和管理 Docker 镜像。可以类比为代码仓库(如 Git)。

  • 公共仓库:例如 Docker Hub,提供了丰富的公共镜像供用户使用,如 Nginx、MySQL、Redis 等。
  • 私有仓库:企业或个人可以搭建私有仓库(如 Docker Registry)来存储私有镜像,确保数据的安全性和定制化。
  • 功能:仓库支持镜像的推送(push)和拉取(pull),并且可以管理不同版本的镜像。

2. Docker 守护进程 (Daemon)

Docker 守护进程是运行在后台的服务,负责管理 Docker 容器的生命周期(包括容器的创建、运行、停止等)。它通常也被称为 Docker Daemon,负责:

  • 启动和停止容器
  • 构建、拉取和推送镜像
  • 处理 Docker 客户端的请求
  • 管理网络和存储等资源
  • 通常,守护进程通过 dockerd 启动。

3. Docker 客户端 (Client)

Docker 客户端是与 Docker 守护进程通信的接口,用户可以通过客户端与 Docker 守护进程交互,发送命令(如 docker rundocker build 等)。客户端主要通过以下方式进行通信:

  • 命令行接口 (CLI):最常见的方式,用户通过命令行与 Docker 守护进程交互。
  • REST API:开发者可以通过 Docker 提供的 API 进行集成和自动化管理。

4. Docker 主机 (Host)

Docker 主机是指运行 Docker 守护进程和容器的物理机或虚拟机。Docker 主机负责:

  • 执行容器的运行时环境
  • 提供计算资源(CPU、内存等)
  • 执行网络和存储管理等功能
  • 在单主机上运行多个容器,多个主机可以通过 Docker Swarm 或 Kubernetes 集群进行管理。

5. Docker 镜像 (Images)

Docker 镜像是容器的构建模板,包含运行某个应用所需要的操作系统环境、依赖库、应用程序代码等。镜像具有以下特点:

  • 只读:镜像本身是不可修改的,一旦构建完成,它就保持不变。
  • 分层存储:每个镜像由多个层组成,每一层都包含一些更改。Docker 镜像利用联合文件系统来实现这一点,这样可以有效地减少存储空间的浪费。
  • 构建和定制:用户可以使用 Dockerfile 来定义镜像的构建过程,包括安装软件、配置环境等。

6. Docker 容器 (Container)

Docker 容器是由 Docker 镜像创建的运行实例,是应用程序和服务的封装体。容器在隔离环境中运行,具有以下特点:

  • 轻量级:容器共享主机的操作系统内核,因此比虚拟机更节省资源。
  • 可移植性:容器内部的应用与其依赖环境封装在一起,可以在不同的主机上运行,保证一致性。
  • 短暂性:容器可以快速启动、停止和销毁,支持弹性扩展。
  • 隔离性:容器在操作系统级别提供进程和文件系统的隔离,使得不同的容器能够相互独立运行,避免冲突。

补充组件

除了基本的架构组成,Docker 生态系统还包括以下相关组件:

  • Docker Compose:用于定义和运行多容器应用的工具。通过一个 YAML 文件,用户可以定义多个服务,并使用单个命令来启动或停止整个应用。
  • Docker Swarm:Docker 原生的集群管理工具,支持容器的集群部署、负载均衡、自动伸缩等功能。
  • Kubernetes:容器编排工具,是一种跨平台的解决方案,支持高效管理容器的部署、扩展和管理。

相关文章:

【Docker基础】理解 Docker:本质、性质、架构与核心组件

文章目录 Docker 本质Docker 的引擎迭代Docker 和虚拟机的区别Docker 为什么比虚拟机资源利用率高,速度快?Docker 和 JVM 虚拟化的区别Docker 版本1. LXC (Linux Containers)2. libcontainer3. Moby4. docker-ce5. docker-ee总结: Docker 架构…...

QT:QLinearGradient、QRadialGradient、QConicalGradient

QLinearGradient QLinearGradient 是 Qt 框架中用于创建线性渐变的类,它允许在图形绘制中实现颜色沿着一条直线的平滑过渡效果。以下是关于 QLinearGradient 的详细介绍: 基本概念:线性渐变是指颜色从一个点(起始点)沿…...

MySql:Authentication plugin ‘caching sha2 password‘ cannot be loaded

报错问题解释 在 MySQL 数据库中,如果你尝试使用 caching_sha2_password 插件进行认证,但是遇到错误信息 "Authentication plugin caching sha2 password cannot be loaded",这通常意味着客户端库或者连接器不兼容或者没有正确配置…...

c++类知识点复习与总结

类 c 是一种人机交互的面向对象的编程语言,面向对象思想主要体现在 类 上。 类是具有相同属性和相同行为的对象的集合, 具有封装,继承,多态的特性。 类的定义 class 类名 { }; 封装 例如:人就是一种类…...

Redis快速入门

一、Redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings),散列(has…...

嵌入式开发:傅里叶变换(5):STM32和Matlab联调验证FFT

目录 1. MATLAB获取 STM32 的原始数据 2. 将数据上传到电脑 3. MATLAB 接收数据并验证 STM32进行傅里叶代码 结果分析 STM32 和 MATLAB 联调是嵌入式开发中常见的工作流程,通常目的是将 STM32 采集的数据或控制信号传输到 MATLAB 中进行实时处理、分析和可视化…...

LLM/VLM进行票据识别工作

​ 票据识别任务的需求是给定不同类型的票据图像,提取出指定的字段值,以json格式给出结构化信息。 目前的范式包括OCR,OCRLLM, OCRVLM,VLM四种方法。 一、OCR 利用OCR技术进行图像文字识别。 例如:https://github.c…...

AWS SDK for Java 1.x 403问题解决方法和原因

问题表现 使用AWS SDK for Java 1.x访问S3,已经确认文件存在,且具有权限,仍然出现403 Forbidden应答。 解决方法 升级到AWS SDK for Java 2.x。 问题原因 AWS签名机制严格依赖请求的精确路径格式,任何URI的差异(如…...

Spring Boot 项目中,JDK 动态代理和 CGLIB 动态代理的使用

在 Spring Boot 项目中,JDK 动态代理和 CGLIB 动态代理都是实现 AOP (面向切面编程) 的重要技术。 它们的主要区别在于代理对象的生成方式和适用范围。 下面详细介绍它们的使用场景: 1. JDK 动态代理 (JDK Dynamic Proxy) 原理: JDK 动态代理…...

蓝桥杯备赛-精卫填海-DP

精卫终于快把东海填平了!只剩下了最后的一小片区域了。同时,西山上的木石也已经不多了。精卫能把东海填平吗? 事实上,东海未填平的区域还需要至少体积为 v 的木石才可以填平,而西山上的木石还剩下 n 块,每块…...

萌新学 Python 之闭包函数

闭包函数:在一个函数体内嵌套函数,是一个函数对象,允许在内部函数中修改或引用外部函数的变量 闭包函数对数据有封存功能 闭包函数需要满足以下几个条件: 1.函数必须有一个嵌套函数,在定义函数时,内部再…...

AI创作教程:用deepseek和猫箱做互动故事游戏

年轻的时候我看过典型的玛丽苏文学、小妞文学,老了虽然识破这是给女孩编织的琉璃般的梦,看起来梦幻美丽其实一击就碎,会伤人的碎渣渣。【叠甲完毕】 本来我想用橙光的,但是橙光的话,最好把剧本和立绘都多打磨一下。快…...

【Linux探索学习】第三十一弹——线程互斥与同步(下):深入理解确保线程安全的机制

线程互斥与同步(上):【Linux探索学习】第三十弹——线程互斥与同步(上):深入理解线程保证安全的机制-CSDN博客 Linux探索学习: https://blog.csdn.net/2301_80220607/category_12805278.html?…...

博客系统完整开发流程

前言 通过前⾯课程的学习, 我们掌握了Spring框架和MyBatis的基本使用, 并完成了图书管理系统的常规功能开发, 接下来我们系统的从0到1完成⼀个项⽬的开发. 企业开发的流程 1. 需求评审(产品经理(PM)会和运营(想口号),UI,测试,开发等沟通) ,会涉及到背景/目标/怎么做,可能会有多…...

【C++】面试常问八股

5、内存管理 野指针 野指针指的是未进行初始化或未清零的指针,不是NULL指针野指针产生原因及解决方案: 指针变量未初始化:指针变量定义时若未初始化,则其指向的地址是随机的,不为NULL;定义时初始化为NULL…...

自定义提交按钮触发avue-form绑定的submit事件

场景 使用avue-form时&#xff0c;提交按钮会绑定至form区域下方&#xff0c;如果想自定义按钮位置&#xff0c;需要通过dialog的footer位置进行编写&#xff0c;例如&#xff1a; <avue-form ref"form" v-model"dataInfo" :option"dataInfoOpti…...

HarmonyOS 无线调试

下载sdk 找到hdc位置> C:\Users\27638\AppData\Local\OpenHarmony\Sdk\14\toolchains 不要去DevEco Studio的窗口不知道为什么调不动 hdc tconn IP:PORT...

Android之APP更新(通过接口更新)

文章目录 前言一、效果图二、实现步骤1.AndroidManifest权限申请2.activity实现3.有版本更新弹框UpdateappUtilDialog4.下载弹框DownloadAppUtils5.弹框背景图 总结 前言 对于做Android的朋友来说&#xff0c;APP更新功能再常见不过了&#xff0c;因为平台更新审核时间较长&am…...

二、大模型微调技术栈全解析

大模型微调技术栈全解析&#xff1a;从微调方法到算力支撑 在大模型的领域中&#xff0c;微调&#xff08;Fine-tuning&#xff09;就像是为模型量身定制的高级裁缝服务&#xff0c;能够让通用的大模型更好地适应特定的任务和场景。而要完成这项精细的工作&#xff0c;需要一整…...

设置 C++ 开发环境

设置 C++ 开发环境 C++ 是一种通用编程语言,现在广泛用于竞争性编程。它具有命令式、面向对象的和通用编程功能。 C++ 可以在许多平台上运行,如 Windows、Linux、Unix、Mac 等。在我们开始使用 C++ 编程之前。我们需要在本地计算机上设置一个环境,以便成功编译和运行我们的…...

计算机基础知识

1、RAM和ROM RAM&#xff1a;随机存取存储器&#xff0c;也叫做主存。是与CPU直接交换数据的内部存储器。这种存储器在断电时将丢失其数据&#xff0c;故主要用于短时间使用的程序。 ROM&#xff1a;即只读存储&#xff0c;是一种只能读出事先所存数据的固态半导体存储器 2、…...

蓝桥杯——按键

一&#xff1a;按键得原理图 二&#xff1a;按键的代码配置 step1 按键原理图对应引脚配置为输入状态 step2 在GPIO中将对应引脚设置为上拉模式 step3 在fun.c中写按键扫描函数 写完后的扫描函数需放在主函数中不断扫描 扫描函数主要通过两个定义变量的值来判断&#xf…...

Zemax OpticStudio 中的扩散器建模

在 Zemax OpticStudio 中构建漫射器涉及创建散射或漫射光的表面或物体。以下是有关如何在 Zemax OpticStudio 中创建漫射器的一般指南&#xff1a; 转到非序列模式 (NSC) 选项卡。NSC 对于模拟与物体而非表面相互作用的非序列射线很有用。 在需要散光器的位置创建新对象。对象…...

网络安全防御:蓝队重保备战与应急溯源深度解析

课程目标 本课程旨在培养专业的网络安全蓝队成员&#xff0c;通过系统化的学习和实战演练&#xff0c;使学员能够掌握网络安全防御的核心技能&#xff0c;包括资产测绘、应急响应、系统安全应急溯源分析、网络层溯源分析以及综合攻防演练等。学员将能够熟练运用各种工具和技术…...

MySQL 和 Elasticsearch 之间的数据同步

MySQL 和 Elasticsearch 之间的数据同步是常见的需求&#xff0c;通常用于将结构化数据从关系型数据库同步到 Elasticsearch 以实现高效的全文搜索、聚合分析和实时查询。以下是几种常用的同步方案及其实现方法&#xff1a; 1. 应用层双写&#xff08;双写模式&#xff09; 原…...

【深度学习】矩阵的核心问题解析

一、基础问题 1. 如何实现两个矩阵的乘法&#xff1f; 问题描述&#xff1a;给定两个矩阵 A A A和 B B B&#xff0c;编写代码实现矩阵乘法。 解法&#xff1a; 使用三重循环实现标准矩阵乘法。 或者使用 NumPy 的 dot 方法进行高效计算。 def matrix_multiply(A, B):m, n …...

汽车开放系统架构(AUTOSAR)中运行时环境(RTE)生成过程剖析

一、引言 在当今高度智能化的汽车电子领域&#xff0c;软件系统的复杂性呈指数级增长。为了应对这一挑战&#xff0c;汽车开放系统架构&#xff08;AUTOSAR&#xff09;应运而生&#xff0c;它为汽车电子软件开发提供了标准化的分层架构和开发方法。其中&#xff0c;运行时环境…...

VC++零基础入门之系列教程 【附录E MFC快速参考指南】

附录E MFC快速参考指南 E.1 创建窗口 使用M F C CWnd wnd; W n d . C r e a t e E x ( E xSt y l e , C l a s s N a m e , Wi n d o w N a m e , S t y l e , x , y, Wi d t h , H e i g h t , P a r e n t , M e n u , P a r a m ) ; 使用A P I HWND hwnd=::CreateWi n d …...

Holoens2开发报错记录02_通过主机获取彩色和深度数据流常见错误

01.E1696 E1696 无法打开源文件 “stdio.h” 解决方法&#xff1a; 更新一下SDK 1&#xff09;打开Visual Studio Installer&#xff0c;点击修改 2&#xff09;安装详细信息中自己系统对应的SDK&#xff0c;点击修改即可 02.WinError 10060 方法来源 解决方法&#xff1a…...

粉色和紫色渐变壁纸怎么设计?

粉色和紫色的渐变壁纸设计可以打造极为浪漫的氛围&#xff0c;这两种颜色的搭配极具梦幻感与浪漫气息&#xff0c;常被用于各种浪漫主题的设计之中。以下是关于粉色和紫色渐变壁纸的设计方法&#xff1a; 一、渐变方向设计 横向渐变&#xff1a;从画面左侧的粉色过渡到右侧的紫…...

maven Problem shading JAR的几个解决方案

1 现象 Error creating shaded jar: Problem shading JAR &#xff1a;xxxxxx.jar entry META-INF/versions/11/com/fasterxml/jackson/core/io/doubleparser/BigSignificand.class: java.lang.IllegalArgumentException -> [Help 1] 2 原因 这个问题通常是由于 maven-s…...

前缀和代码解析

前缀和是指数组一定范围的数的总和,常见的有两种,一维和二维,我会用两道题来分别解析 一维 DP34 【模板】前缀和 题目: 题目解析: 暴力解法 直接遍历数组,遍历到下标为 l 时,开始进行相加,直到遍历到下标为 r ,最后返回总和.这样做的时间复杂度为: O(n) public class Main …...

CaffeineCache自定义缓存时间

文章目录 1、POM文件依赖2、声明缓存3、缓存使用4、测试缓存5、自定义缓存过期时间6、测试自定义超时时间 1、POM文件依赖 <dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId><version>3.1…...

keil中出现Error_Handler错误的解决方法

这个错误表明在代码中使用了 Error_Handler 函数但未定义。以下是完整的修复方案&#xff1a; 步骤 1&#xff1a;在 main.h 中添加函数声明 /* main.h */ void Error_Handler(void);步骤 2&#xff1a;在 main.c 中完善错误处理函数 /* main.c */ void Error_Handler(void) …...

low rank decomposition如何用于矩阵的分解

1. 什么是矩阵分解和低秩分解 矩阵分解是将一个矩阵表示为若干结构更简单或具有特定性质的矩阵的组合或乘积的过程。低秩分解&#xff08;Low Rank Decomposition&#xff09;是其中一种方法&#xff0c;旨在将原矩阵近似为两个或多个秩较低的矩阵的乘积&#xff0c;从而降低复…...

Cesium@1.126.0,创建3D瓦片,修改样式

第一步&#xff1a;添加3D建筑 Cesium.createOsmBuildingsAsync()这是一个异步方法&#xff0c;所以要写在一个异步函数里 创建一个函数 const create3DBuilding async (viewer) > {try {// 添加3D建筑const tileset await Cesium.createOsmBuildingsAsync();viewer.scen…...

MFC学习笔记-1

一、编辑框和按钮 //.h文件private:CString str;//给窗口类加了一个变量&#xff08;定义一个成员变量&#xff09;&#xff0c;关联到IDC_EDIT1中&#xff08;要在实现中关联&#xff0c;源文件文件夹中&#xff09;CString str2;//接收button2&#xff0c;和IDC_EDIT2绑定 p…...

Bugku CTF CRYPTO

Bugku CTF CRYPTO 文章目录 Bugku CTF CRYPTO聪明的小羊ok[-<>]散乱的密文.!? 聪明的小羊 描 述: 一只小羊翻过了2个栅栏 fa{fe13f590lg6d46d0d0} 分 析&#xff1a;栅栏密码&#xff0c;分2栏&#xff0c;一个栏里有11个 ①手动解密 f a { f e 1 3 f 5 9 0 l g 6 d 4 …...

Leetcode2502:设计内存分配器

题目描述&#xff1a; 给你一个整数 n &#xff0c;表示下标从 0 开始的内存数组的大小。所有内存单元开始都是空闲的。 请你设计一个具备以下功能的内存分配器&#xff1a; 分配 一块大小为 size 的连续空闲内存单元并赋 id mID 。释放 给定 id mID 对应的所有内存单元。 …...

BERT模型详解及代码复现

架构设计 BERT模型的架构设计是其成功的关键之一,它巧妙地融合了Transformer架构的优势,并针对自然语言处理任务进行了优化。具体来说,BERT的架构主要由三个模块组成: Embedding模块 :负责将输入的文本转换为模型可处理的向量表示。该模块由三种Embedding组成: Token Em…...

面试中自己挖的一些坑

一些面试的细节深度持续更新。。。 1. 这里有4题&#xff0c;单独写成了博客2. 经典的八股文之一 (ArrayList扩容原理)1.博主的回答2.面试官问的一些细节 3.经典的八股文之一 (HashMap扩容原理)1.博主的回答2.面试官问的一些细节 4.SpringBoot的启动原理1. 博主回答2. 面试官问…...

二、环 Ring

文章目录 一、环的定义二、环的分类与变种1、交换环2、含单位元的环3、零环4、非交换环5、整环6、域 三、环的性质与应用四、环与群和域的对比 一、环的定义 一个集合 R 被称为一个环&#xff0c;如果它满足以下条件&#xff1a; 对于 加法 满足&#xff1a; 闭合性&#xff1…...

Python图像处理入门:如何打开图像文件及常见格式

神经网络中的图像处理是一个非常重要的环节&#xff0c;尤其是在计算机视觉领域。作为一名新手&#xff0c;你可能会遇到一个常见的挑战——如何在 Python 中打开并理解图像文件。在本篇文章中&#xff0c;我们将介绍几种常见的图像文件格式&#xff0c;并讲解如何使用 Python …...

银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法

银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法 一 系统环境二 使用场景三 操作步骤 一 系统环境 [rootlocalhost ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server…...

网络运维学习笔记 018 HCIA-Datacom综合实验02

文章目录 综合实验2sw3&#xff1a;sw4&#xff1a;gw&#xff1a;core1&#xff08;sw1&#xff09;&#xff1a;core2&#xff08;sw2&#xff09;&#xff1a;ISP 综合实验2 sw3&#xff1a; vlan 2 stp mode stp int e0/0/1 port link-type trunk port trunk allow-pass v…...

深度学习进阶:构建多层神经网络

在上一篇文章中&#xff0c;我们从零开始构建了一个简单的两层神经网络&#xff0c;并通过异或问题&#xff08;XOR&#xff09;展示了神经网络的强大能力。今天&#xff0c;我们将进一步深入&#xff0c;构建一个更复杂的多层神经网络&#xff0c;并引入更多高级概念&#xff…...

高斯消元法

前置数学知识 n元线性方程是具有如下形式的方程&#xff1a; a 1 x 1 a 2 x 2 a 3 x 3 … a n x n b a_1x_1a_2x_2a_3x_3…a_nx_n b a1​x1​a2​x2​a3​x3​…an​xn​b 其中&#xff0c; a 1 , a 2 , . . . a_1,a_2,... a1​,a2​,...以及常数项 b b b均为已知的实数…...

ubuntu 安全策略(等保)

windows 三个帐号屏保设置组策略,密码超时次数/审计记录&#xff1b; linux 应具有登录失败处理功能&#xff0c;应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。 1、在系统中新建测试用户&#xff0c;使用此用户登录时多次输入错误密码&…...

计算机毕业设计SpringBoot+Vue.js购物推荐系统网站(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

QT线程同步

文章目录 前言1. 使用互斥锁&#xff08;QMutex&#xff09;2.使用QMutexLocker便利类3. 使用读写锁&#xff08;QReadWriteLock&#xff09;4.QReadLocker便利类和QWriteLocker便利类对QReadWriteLock进行加解锁5. 使用信号量&#xff08;QSemaphore&#xff09;6. 使用条件变…...