Docker容器初始

news2024/11/15 19:40:35

华子目录

  • docker简介
  • 虚拟化技术
    • 硬件级虚拟化
    • 硬件级虚拟化历史
    • 操作系统虚拟化历史
    • 基于服务的云计算模式
  • 什么是docker
    • Docker和传统虚拟化方式的不同之处
    • 为什么要使用docker?
      • Docker 在如下几个方面具有较大的优势
    • 对比传统虚拟机总结
    • docker应用场景
    • docker改变了什么
  • 基本概念
    • docker镜像
    • docker容器
      • 注意
    • docker仓库

docker简介

  • 随着生产力得发展尤其是弹性架构得广泛应用(如微服务),许多一流开发者都将应用托管到了应用容器上,比如Google,微软,亚马逊,腾讯,阿里,京东和新浪。
  • 在这里插入图片描述

虚拟化技术

虚拟化一般分为硬件级虚拟化操作系统级虚拟化

硬件级虚拟化

  • 硬件级虚拟化是运行在硬件之上的虚拟化技术,它得管理软件也就是我们通常说的 hypervisor 或者 virtual machine monitor,它需要模拟的就是一个完整的操作系统,也就是我们通常所说的基于 Hyper-V 的虚拟化技术。VMWare,Xen,VirtualBox,亚马逊和阿里云都是用的这种技术。
  • 操作系统级虚拟化是运行在操作系统之上的,它模拟的是运行在操作系统上的多个不同进程,并将其封装在一个密闭的容器里面,也称为容器化技术docker正是容器虚拟化中目前最流行的一种实现

硬件级虚拟化历史

  • 19 世纪 60 年代:美国出现了第一个虚拟化系统,它是由 IBM 开发的 CP-40Mainframes 系统, 虽然这个系统只是在实验室使用,但却为后来的 CP-67 系统奠定了基础。在那个时代,虚拟化系统主要由通用,贝尔实验室和 IBM 主导研发。

  • 1987 年:一个非常牛逼的公司 InsigniaSolutions 演示了一个称为 SoftPC 的软件模拟器,这 个模拟器允许用户在 UnixWorkstations 上运行 DOS 应用。在此之前这是不可能办到的,当 时一个可以运行MSDOS 的个人电脑需要 1,500 美金,而通过 SoftPC 模拟之后,可降低到 500 美金。可以看出,当时
    的需求就是在大型工作站上运行微软的 DOS。到了 1989 年的时 候,InsigniaSolutions 发布了 Mac 版的 SoftPC,使苹果用户不仅能运行 DOS,还能运行 Windows 操作系统。

  • 1997 年:随着 SoftPC 的一炮而红,其他虚拟化公司如雨后春笋般的出现了。在 1997 年,苹果开发了virtualPC,后来又卖给了 Connectix。

  • 1998 年:真正的王者 VMWare 出现了,他们在 1999 年开始销售 VMWare workstation,也就是我们很多人使用过得桌面版的虚拟机。

  • 2001 年:VMWare 又发行了 ESX 和 GSX,也就是我们现在经常使用的 ESX-i 的前身。

  • 2003 年:之前所说的 Connectix 被微软收购,后续推出了 Microsoft VirualPC,再之后就没什么音讯了。同年 VMWare 也被 EMC 收购,成为 EMC 迄今最成功的一笔收购。就在这一年,一个开源的虚拟化项目 Xen 启动了,并在 2007 年被 Citrix 收购。

操作系统虚拟化历史

  • 1982 年:你一定会很惊讶,第一个操作系统级的虚拟化技术是什么。答案就是 chroot,直到现在我们依然在使用的一个系统调用。这个系统调用会改变运行进程的工作目录,并且只能 在这个目录里面工作。这种操作其实就是一种文件系统层的隔离。
  • 2000 年:FreeBSD jail,真正意义上的第一个功能完整的操作系统级虚拟化技术。所以,真正的容器化技术出现到现在已经过去了 16 年,并不是几年的时间。
  • 2005 年:OpenVZ,这是 linux 平台上的容器化技术实现,同时也是 LXC,即 docker 最初使 用的容器技术核心实现。
  • 2008 年:LXC 发布,这是 docker 最初使用的具体内核功能实现。
  • 2013 年:Docker 发布,可以看出,docker 本身是使用了 LXC,同时封装了其他的一些功能。

Docker 的成功,与其说是技术的创新,还不如说是一次组合式的创新。

基于服务的云计算模式

我们知道传统的服务器或者电脑主机,基本都是一锤子买卖,商家卖给你之后基本就很难再从消费者身上获得其他收入。随着云的概念出现,越来越多的厂商意识卖硬件是不可能获得长期利益的只有服务才是可持续的赢利点。因此,在2010年左右,出现了以大批提供云服务的公司。总体来说基本都可以归为下面几大类的一种或多种

  • 基础设施即服务(Infrastructure as a service),通常指的是在云端为用户提供基础设施,如:虚拟机、服务器、存储、负载均衡、网络等等。亚马逊的 AWS 就是这个领域的佼佼者,国内则 以阿里云为首
  • 平台即服务(Platform as a service),通常指的是在云端为用户提供可执行环境、数据库、网站服务器、开发工具等等。国外的 OpenShift,RedHat,ClouderaCloudFoundry,GoogleAppEngine 都是这个领域的,当然还有一个非常有名的公司,那就是 dotCloud,后续会再介绍一下这个公 司。
  • 软件即服务(Software as a service),通常指的是在云端为用户提供软件,如 CRM 系统,邮件系统,在线协作,在线办公等等。比如微软就把自己的 Office 搬到了云端,国内的有道、麦 客、Tower 都是属于这个领域的。

一般认为这三种模式,是最基本的云服务模式,其分层结构如下图:
在这里插入图片描述

什么是docker

  • Docker 是一个开源项目, 诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议, 项目代码在 GitHub 上进行维护。
  • Docker 自开源后受到广泛的关注和讨论,以至于 dotCloud 公司后来都改名为 Docker Inc。
  • Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux容 ( LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装, 让用户不需要去关心容器的管理,使得操作更为简便。用户操作Docker 的容器就像操作一个快速轻量级的虚拟机一 样简单。
  • Docker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、baremetal、OpenStack 集群和其他的基础应用平台。
  • 简单的理解,Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这个容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。
  • 在这里插入图片描述
  • 总而言之,Docker 是一个开放平台,使开发人员和管理员可以在称为容器的松散隔离的环境中构建镜像、交付和运行分布式应用程序。以便在开发、QA 和生产环境之间进行高效的应用程序生命周期管理。

Docker和传统虚拟化方式的不同之处

在这里插入图片描述

  • 在这里插入图片描述

为什么要使用docker?

  • 作为一种新兴的虚拟化方式, Docker跟传统的虚拟化方式相比具有众多的优势。首先, Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。其次, Docker 对系统资源的利用率很高一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。
  • 传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机而 Docker 只需要启动 10 个隔离的应用即可。

Docker 在如下几个方面具有较大的优势

  • 更快速的交付和部署

    • 对开发和运维( devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后, 运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程。可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker容器很轻很快!容器的启动时间是秒级的,大量地节约开发、 测试、部署的时间
  • 更高效的虚拟化

    • Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
  • 更轻松的迁移和扩展

    • Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
  • 更简单的管理

    • 使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

对比传统虚拟机总结

特性容器虚拟机
启动秒级分钟级
硬盘使用一般是MB一般为GB
性能接近原生弱于
系统支持量单机支持上千个容器一般几十个

docker应用场景

  • 简化配置

    • 虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件、系统),Docker在降低额
      外开销的情况下提供了同样的功能。它能让你将运行环境和配置放在代码中然后部署,同一个Docker的
      配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。
  • 代码流水线(Code Pipeline)管理:

    • 前一个场景对于管理代码的流水线起到了很大的帮助。代码从开发者的机器到最终在生产环境上的部署,需要经过很多的中间环境。而每一个中间环境都有自己微小的差别,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。
    • 在这里插入图片描述
  • 提高开发效率

    • 不同的开发环境中,我们都想把两件事做好。一是我们想让开发环境尽量贴近生产环境,二是我们想快速搭建开发环境。
    • 使用Docker非常简单的就能够实现这两点,而且哪怕是开发环境的机器配置一般的情况下搭建多个生成服务应用。一台一般配置服务器或开发机也能轻松的跑起多个Docker应用,而无需额外增加机器配置。因为Docker有个非常NB的特性,拥有虚拟化的特性,而几乎没有额外的开销。
    • 在这里插入图片描述
  • 隔离应用

    • 很多情况下,我们需要在一台服务器上运行多个不同的应用,比如上面提到的提高开发效率的场景等。
    • 我们经常需要考虑三点,一是因为要降低成本而进行服务器整合,二是将一个整体式的应用拆分成松耦合的单个服务(比如微服务架构),三是还需要考虑应用之间的兼容性。而对于Docker来说,支持起来就非常简单了。同一台机器,我可以同时运行N个Docker web应用,托管到不同的Web服务器(Kestrel、Ngnix、Tomcat),而无需担心他们会搞起3Q大战,也无需担心我的开发机器会跑不起来
    • 在这里插入图片描述
  • 整合服务器

    • 正如通过虚拟机来整合多个应用,Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。由于没有多个操作系统的内存占用,以及能在多个实例之间共享没有使用的内存,Docker可以比虚拟机提供更好的服务器整合解决方案。
    • 这就意味着资源得到更有效的利用——可以做更多衣服,而且还没有边角料,成本还更低。
    • 在这里插入图片描述
  • 调试能力

    • Docker提供了很多的工具,这些工具不一定只是针对容器,但是却适用于容器。它们提供了很多的功能,包括可以为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助调试Bug。
  • 多租户环境

    • 在多租户的应用中,它可以避免关键应用的重写。比如IoT(物联网)的应用中,开发一个快速、易用的多租户环境。这种多租户的基本代码非常复杂,很难处理,重新规划这样一个应用不但消耗时间,也浪费金钱。
    • 使用Docker,可以为每一个租户的应用层的多个实例创建隔离的环境,这不仅简单而且成本低廉,当然这一切得益于Docker环境的启动速度和其高效的diff命令。
    • 就如同我们现在写了一个不支持多租户的业务程序,而实际的业务中经常会出现需要支持多租户或者有新客户需要使用的场景,这是我们通常的简单做法是——部署一套新的代码。当站点达到一定量的适合,要么重写程序,要么维护人员Game over。
  • 快速部署

    • 在虚拟机之前,引入新的硬件资源需要消耗几天的时间。虚拟化技术(Virtualization)将这个时间缩短到了分钟级别。而Docker通过为进程仅仅创建一个容器而无需启动一个操作系统,再次将这个过程缩短到了秒级。
    • 你可以在服务器中或云端创建销毁资源而无需担心重新启动带来的开销。通常情况下,服务器的资源利用率只有30%,而通过使用Docker并进行有效的资源分配可以提高资源的利用率。
    • 在这里插入图片描述
  • Docker 实现了微服务架构,也让遗留的单体应用转变为现代应用

  • 在这里插入图片描述

docker改变了什么

  • Docker改变了云服务,使云服务的共融共通的理想逐步成为了可能。并且Docker 已经是云策略的一部分,许多开发者正在计划使用 Docker 将业务迁移到云端。另外,为了避免被云服务供应商绑定,Docker成为很多开发者的首选。
  • Docker改变了产品交付,为产品的整个生命周期提供了一整套的解决方案和流程。
  • Docker改变了开发方式,提供了简化的环境配置、封装的运行环境以及统一的环境。并且提供了快速部署的方式。
  • Docker改变了测试,多版本测试变得极为方便,快速构建测试环境也变得更加简单并且无需开发人员干预或者搭建。
  • Docker改变了运维,环境的一致性让运维变得更加简单,同时热更新的支持让运维不再需要半夜加班部署更新,更新可以随时进行。当出现重大问题时,还能快速回滚到指定版本。
  • Docker改变了架构,自动化扩容支持让架构变得更加简单,分布式系统也更加易于搭建和支持。同时遗留的单体应用也很易于转变为现代应用。

总之,在某种程度上,Docker改变了产品开发中的一些游戏规则。虽然Docker是一项技术,但是它也带来了新的思维,新的流程和工作方法,Docker在推动行业的发展,Docker已经在改变世界,并且在逐步的变为事实……
在这里插入图片描述

基本概念

docker包括三个基本概念

  • 镜像(image)
  • 容器(container)
  • 仓库(repository)

docker镜像

镜像一个特殊的文件系统docker镜像就是一个只读的模板

  • 操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。
  • Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
  • 镜像不包含任何动态数据,其内容在构建之后也不会被改变。
  • Docker 设计时,就充分利用 Union FS 的技术,将其设计为分层存储的架构镜像实际是由多层文件系统联合组成。
  • 镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。
  • 比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。 在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。
  • 因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。
  • 分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

docker容器

容器镜像运行时的实体docker利用容器来运行应用。

  • 镜 像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。
  • 容器的实质是进程但与直接在宿主执行的进程不同容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。
  • 容器存储层的生存周期和容器一样容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
  • 按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据 ,容器存储层要保持无状态化。
  • 所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层直接对宿主(或网络存储)发生读写,其性能和稳定性更高。
  • 数据卷的生存周期独立于容器容器消亡,数据卷不会消亡。因此, 使用数据卷后,容器可以随意删除、重新 run,数据却不会丢失。
  • 在这里插入图片描述

注意

容器在整个应用程序生命周期工作流中提供以下优点:隔离性、可移植性、灵活性、可伸缩性和可控性。 最重要的优点是可在开发和运营之间提供隔离

docker仓库

仓库:集中存放镜像文件的地方

  • 镜像构建完成后,可以很容易的在当前宿主上运行,但是如果需要在其他服务器上使用这个镜像我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
  • 一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
  • 所以说,镜像仓库Docker 用来集中存放镜像文件的地方类似于我们之前常用的代码仓库
  • 通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本 。
  • 我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像如果不给出标签,将以latest 作为默认标签。
  • 仓库名:仓库名可以是两段式名称,即<用户名>/<软件名>
    • 常见的仓库名格式有以下几种:

    • 仓库名:例如ubuntu、nginx。

    • 域名/仓库名:例如registry.example.com/nginx

    • 域名:端口/仓库名:例如docker.example.com:5000/nginx

  • 仓库分为公开仓库( Public)和私有仓库( Private) 两种形式
  • 这里补充一下 Docker Registry 公开服务和私有 Docker Registry 的概念:
    • Docker Registry 公开服务是开放给用户使用、允许用户管理镜像的 Registry 服务。
    • 一般这类公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
    • 最常使用的 Registry 公开服务官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像网址为https://hub.docker.com/
    • 在国内访问 Docker Hub 可能会比较慢国内也有一些云服务商(如腾讯云,阿里云等)提供类似于 Docker Hub 的公开服务, 可以提供稳定的国内访问。
    • 除了使用公开服务外,用户还可以在本地搭建私有 Docker RegistryDocker 官方提供了 Docker Registry 镜像,可以直接使用做为私有 Registry 服务。
    • 当用户创建了自己的镜像之后就可以使用 push 命令将它上传到指定的公有或者私有仓库。这样用户下次在另外一台机器上使用该镜像时,只需要将其从仓库上 pull下来就可以了。
      • 可以看出, Docker 利用仓库管理镜像的设计理念与 Git 代码仓库的概念非常相似,实际上 Docker 设计上借鉴了 Git 的很多优秀思想

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

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

相关文章

iOS开发 - 转源码 - __weak问题解决

iOS开发 - 转源码 - __weak问题解决 在使用clang转换OC为C代码时&#xff0c;可能会遇到以下问题 cannot create __weak reference in file using manual reference 原因 __weak弱引用是需要runtime支持的&#xff0c;如果我们还只是使用静态编译&#xff0c;是无法正常转换的…

MultiArch与Ubuntu/Debian 的交叉编译

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;基于ARM 的Linux系统的交叉编译 下一篇&#xff1a;MultiArch与Ubuntu/Debian 的交叉编译 警告&#xff1a; 本教程可能包含过时的信息。 什么是“MultiArch” OpenCV 可能…

家乡特色推荐系统设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

flink join的分类

带窗口的join 下图是固定窗口,同样的还有滑动窗口和会话窗口join DataStream<Integer> orangeStream = ...; DataStream<Integer> greenStream = .

物联网应用技术中的stm32该怎么学,该从哪入手?

物联网应用技术中的stm32该怎么学&#xff0c;该从哪入手&#xff1f; STM32是只物联网中的一部分&#xff0c;单纯的学个STM32是没法满足物联网开发需求的&#xff0c;实际产品开发过程中会考虑成本等多种因素选择合适的方案&#xff0c;比如使用单片机还是stm32或是更高端的芯…

上位机图像处理和嵌入式模块部署(qmacvisual点线测量)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 上面一篇文章&#xff0c;我们完成了直线的拟合操作。在实际场景中&#xff0c;拟合之后更多地是需要进行长度的测量。既然是测量&#xff0c;那么…

Linux:传输层和UDP的传输原理

文章目录 端口号端口号理解端口号的划分 netstatUDP协议 之前结束了对于应用层的理解&#xff0c;那么从本篇开始往后&#xff0c;将会深入到传输层当中进行理解&#xff0c;尝试打通整个网络的协议栈 从对于之前的理解来说&#xff0c;在应用层涉及到的知识体系是相当庞大的&…

力扣450 删除二叉搜索树中的节点 Java版本

文章目录 题目描述思路代码 题目描述 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除…

力扣100热题[哈希]:最长连续序列

原题&#xff1a;128. 最长连续序列 题解&#xff1a; 官方题解&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;题解&#xff0c;最长连续序列 &#xff1a;哈希表 官方解题思路是先去重&#xff0c;然后判断模板长度的数值是否存在&#xff0c;存在就刷新&#xff0c…

算法打卡day15

今日任务&#xff1a; 1&#xff09;110.平衡二叉树 2&#xff09;257. 二叉树的所有路径 3&#xff09;404.左叶子之和 110.平衡二叉树 题目链接&#xff1a;110. 平衡二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树…

爬楼梯C语言

方法一&#xff1a;动态规划 int climbStairs(int n) {int f[100] {0};f[0] 0;f[1] 1;f[2] 2;for(int i 3;i<n;i)f[i] f[i-1] f[i-2];//可能是从i-1阶爬上第i阶&#xff0c;也有可能是从i-2阶 return f[n]; } 方法二&#xff1a;滚动数组 int climbStairs(int n){int…

DCDC60V80V100V转12V5V1A2A降压恒压芯片 惠海半导体原厂

H4020是一种内置40V耐压MOS&#xff0c;并且能够实现精确恒压以及恒流的同步降压型DC-DC转换器&#xff1b;支持1A持续输出电流输出电压可调&#xff0c;最大可支持 100%占空比&#xff1b;通过调节 FB 端口的分压电阻&#xff0c;可以输出 2.5V到 24V 的稳定电压 。H4020 具有…

【Science】:配位不饱和 Al3+ 中心作为 γ-Al2O3 上铂活性相催化剂的结合位点

在许多非均相催化剂中&#xff0c;金属颗粒与其氧化物载体的相互作用可以改变金属的电子属性&#xff0c;并且在确定颗粒形态和保持分散性方面发挥关键作用。我们结合使用了超高磁场、固态魔角旋转核磁共振光谱技术和高角环形暗场扫描透射电子显微镜技术&#xff0c;配合密度泛…

array go 语言的数组 /切片

内存地址通过& package mainimport "fmt"func main() {var arr [2][3]int16fmt.Println(arr)fmt.Printf("arr的地址是: %p \n", &arr)fmt.Printf("arr[0]的地址是 %p \n", &arr[0])fmt.Printf("arr[0][0]的地址是 %p \n"…

通过命令在Windows入站出站放行上放行端口8090, 8443, 5222, 8021

可以通过循环结构来简化操作&#xff0c;下面分别创建入站和出站规则的示例&#xff1a; 入站规则 $ports 8090, 8443, 5222, 8021foreach ($port in $ports) {New-NetFirewallRule -DisplayName "Allow Inbound Port $($port)" -Direction Inbound -Action Allow…

【协议-HTTP】

HTTP协议 HTTP协议(超文本传输协议HyperText Transfer Protocol)&#xff0c;它是基于TCP协议的应用层传输协议。http协议定义web客户端如何才能够web服务器请求web页面&#xff0c;以及服务器如何把web页面传送给客户端。 HTTP 是一种无状态 (stateless) 协议, HTTP协议本身…

基于前端技术实现的全面预算编制系统

前言 在现代商业环境中&#xff0c;预测销售数据和实际成本是每个公司CEO和领导都极为重视的关键指标。然而&#xff0c;由于市场的不断变化&#xff0c;准确地预测和管理这些数据变得愈发具有挑战性。为了应对这一挑战&#xff0c;建立一个高效的系统来管理和审查销售数据的重…

发电机回收公司哪家靠谱?二手房发电机回收公司排名榜

在当今这个能源日益紧张的时代&#xff0c;发电机的存在依然有着不可替代的重要地位。然而&#xff0c;随着科技的不断进步&#xff0c;老旧或退役的发电机往往会被淘汰。这时&#xff0c;选择一家可靠的发电机回收公司就显得尤为重要。本文将为您解析发电机回收行业的现状&…

曲线生成 | 图解Reeds-Shepp曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是Reeds-Shepp曲线&#xff1f;2 Reeds-Shepp曲线的运动模式3 Reeds-Shepp曲线算法原理3.1 坐标变换3.2 时间翻转(time-flip)3.3 反射变换(reflect)3.4 后向变换(backwards) 4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f5…

Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(三)

概览 承接上一篇博文: Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(二)我们在其中讨论了如何使用第三方强大通用的钩子库 SwiftHook 来协助我们完成 NSObject 构造器 init 的 SWIZZ 操作。我们还讨论了为什么用 print 打印对象信息时会发生崩溃…