Docker 介绍

news2024/11/24 14:36:20

Docker 介绍

  • 1 介绍
    • 1.1 概述
    • 1.2 资源高效利用
    • 1.3 发展历程
    • 1.4 组件
    • 1.5 工具
    • 1.6 对环境部署和虚拟化的影响
    • 1.7 优点
    • 1.8 容器技术核心
      • Cgroup
      • Namespace
      • UnionFS
  • 2 命令
    • 信息、状态、配置
      • info命令用于显示当前系统信息、docker容器、镜像个数、设置等信息
    • 镜像
    • 容器
    • 资源
  • 3 安装
    • 3.1 版本介绍
    • 3.2 官方安装说明
    • 3.3 配置文件
  • 4 使用
    • 加载镜像
    • container 处理
    • 架构
    • 运行arm镜像
    • 本地文件夹映射到镜像中
  • 参考

1 介绍

1.1 概述

在这里插入图片描述

  • Docker是一组平台即服务(PaaS) 产品,它使用操作系统级虚拟化以称为容器的包形式交付软件。该服务有免费和高级两种级别。托管容器的软件称为Docker Engine。它于 2013 年首次启动,由Docker, Inc.开发。
  • Docker是一种用于在轻量级容器中自动化部署应用程序的工具,使应用程序能够在不同的环境中隔离高效地工作。
  • 容器之间相互隔离,并捆绑自己的软件、库和配置文件;他们可以通过明确的渠道相互沟通。由于所有容器共享单个操作系统内核的服务,因此它们使用的资源比虚拟机少。
  • Docker 可以将应用程序及其依赖项打包在可以在任何 Linux、Windows 或 macOS 计算机上运行的虚拟容器中。
  • 由于 Docker 容器是轻量级的,因此单个服务器或虚拟机可以同时运行多个容器。
  • Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。
  • Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。
  • Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
  • Docker 是一个用于开发,交付和运行应用程序的开放平台。
  • Docker 是容器的一种技术实现,常见的容器运行时有:
    Containerd (Docker)、cri-o、kata、lxd、lxc、runC
  • Docker 使得容器技术变得好用,从而普及了容器技术。(容器技术解决了虚拟化本身的损耗问题,但因为难用,很长一段时间没有成为主流。)

1.2 资源高效利用

为了资源高效利用,计算机行业发展了很多技术。
从早期的物理机到虚拟机,然后再到容器技术;以及 CPU 从单任务到多任务,然后到多核处理器,主要就是在解决资源共享问题,以及资源共享后衍生出来的安全问题、性能损耗问题以及资源隔离问题。

在20世纪60年年代,虚拟化的概念就已经产生。1961年 IBM709 机实现了分时系统,将 CPU 占用切分为多个极短(1/100sec)时间片,每一个时间片都执行着不同的任务。通过对这些时间片的轮询,这样就可以高效利用单个CPU。

主流的虚拟化技术及软件,常见有:MWare workstation(VMWare)、VirtualBox(Oracle)、Hyper-V(Microsoft)、KVM(Redhat)、Xen、OpenStack等。

虚拟机目的都是在一台强性能的物理机上虚拟出多个互相之间完全独立的虚拟机。主要优势就是能大大提升物理资源利用率的同时,又能将不同的应用完全独立开来,能够进行资源的隔离,资源的共享。但缺点也比较明显,就是在进行虚拟化的同时会消耗大量的资源,这部分资源的消耗并没有产生任何业务价值。而容器技术刚好能够解决虚拟机的这个问题。

1.3 发展历程

  • 2010年,Kamel Founadi、Solomon Hykes 和 Sebastien Pahl 三人创立的项目 DotCloud 获得了创业孵化器 Y Combinator 的支持,并开始吸引到一些真正的投资,在接下来的3年中,dotCloud 内部孵化了一款名为 Docker 的产品。
  • 2013 年,Docker在圣克拉拉的PyCon上向公众首次亮相。它于 2013 年 3 月作为开源发布。当时,它使用LXC作为默认执行环境。一年后,随着 0.9 版本的发布,Docker 用自己的组件libcontainer取代了 LXC,该组件是用Go编程语言编写的。
  • 2013 年 9 月 19 日:红帽和 Docker 宣布围绕Fedora、红帽企业 Linux (RHEL) 和OpenShift开展合作。
  • 2014 年 10 月 15 日:微软宣布将 Docker 引擎集成到Windows Server中,并原生支持 Windows 中的 Docker 客户端角色。
  • 2014 年 11 月:宣布为Amazon Elastic Compute Cloud (EC2) 提供 Docker 容器服务。
  • 2014 年 11 月 10 日:Docker 宣布与Stratoscale建立合作伙伴关系。
  • 2014 年 12 月 4 日:IBM宣布与 Docker 建立战略合作伙伴关系,使 Docker 能够与 IBM Cloud 更紧密地集成。
  • 2015 年 6 月 22 日:Docker 和其他几家公司宣布他们正在为软件容器制定一个新的供应商和独立于操作系统的标准。
  • 2015 年 12 月:Oracle Cloud在收购 Docker 容器初创公司StackEngine后添加了 Docker 容器支持。
  • 2016 年 4 月:独立软件供应商Windocks向 Windows 发布了 Docker 开源项目的端口,支持 Windows Server 2012 R2 和 Server 2016,以及 SQL Server 2008 及以后的所有版本。
  • 2016 年 5 月:分析显示以下组织是 Docker 的主要贡献者:Docker 团队、思科、谷歌、华为、IBM、微软和红帽。
  • 2016 年 6 月 8 日:微软宣布 Docker 现在可以在Windows 10上原生使用。
  • 2017 年 1 月:对LinkedIn个人资料提及的分析显示 Docker 的存在在 2016 年增长了 160%。
  • 2017 年 4 月,Docker 公司将 Docker 项目重命名为 Moby。
  • 2019 年 5 月 6 日:微软宣布推出第二版Windows Subsystem for Linux (WSL)。Docker, Inc. 宣布已开始开发在 WSL 2 上运行的 Docker for Windows 版本。特别是,这意味着 Docker 可以在 Windows 10 Home 上运行(之前仅限于 Windows Pro 和 Enterprise,因为它使用 Hyper-V)。
  • 2020 年 8 月:微软宣布将 WSL2 向后移植到 Windows 10 版本 1903 和 1909(之前 WSL2 仅在版本 2004 上可用),并且 Docker 开发人员宣布 Docker 可用于这些平台。
  • 2021 年 8 月:适用于 Windows 和 MacOS 的 Docker Desktop 不再对企业用户免费。Docker 结束了对大型企业客户的免费 Docker Desktop 使用,并将其免费计划替换为个人计划。Linux 发行版上的 Docker 不受影响。

1.4 组件

Docker 软件即服务产品由三个组件组成:

软件: Docker守护进程,称为dockerd,是一个管理 Docker 容器并处理容器对象的持久进程。该守护进程侦听通过 Docker 引擎 API 发送的请求。Docker 客户端程序,称为docker,提供了一个命令行界面(CLI),允许用户与 Docker 守护进程交互。

对象: Docker 对象是用于在 Docker 中组装应用程序的各种实体。Docker 对象的主要类别是镜像、容器和服务。

  • Docker 容器是运行应用程序的标准化封装环境。容器是使用 Docker API 或CLI进行管理的。
  • Docker 镜像是用于构建容器的只读模板。图像用于存储和传送应用程序。
  • Docker 服务允许容器在多个 Docker 守护进程之间进行扩展。结果被称为swarm,一组通过 Docker API 进行通信的协作守护进程。

注册表: Docker 注册表是 Docker 镜像的存储库。Docker 客户端连接到注册表以下载(“拉取”)图像以供使用或上传(“推送”)它们已构建的图像。注册表可以是公共的或私有的。主要的公共注册表是 Docker Hub。Docker Hub 是 Docker 查找镜像的默认注册表。Docker 注册表还允许基于事件创建通知。

1.5 工具

  • Docker Compose是一个用于定义和运行多容器 Docker 应用程序的工具。它使用YAML文件来配置应用程序的服务,并使用单个命令执行所有容器的创建和启动过程。CLIdocker-compose实用程序允许用户同时在多个容器上运行命令,例如构建映像、扩展容器、运行已停止的容器等。与图像操作或用户交互选项相关的命令与 Docker Compose 无关,因为它们针对的是一个容器。 docker -compose.yml文件用于定义应用程序的服务并包含各种配置选项。例如,该build选项定义了 Dockerfile 路径等配置选项,该command选项允许覆盖默认的 Docker 命令等等。Docker Compose 的第一个公开测试版(版本 0.0.1)于 2013 年 12 月 21 日发布。第一个生产就绪版本(1.0)于 2014 年 10 月 16 日发布。

  • Docker Swarm为 Docker 容器提供原生集群功能,将一组 Docker 引擎转变为单个虚拟 Docker 引擎。在 Docker 1.12 及更高版本中,Swarm 模式与 Docker Engine 集成。CLI 实用程序允许用户运行 Swarm 容器、创建发现令牌、列出集群中的节点等等docker swarm。CLI实用程序允许用户运行各种命令来管理群中的节点,例如列出群中的节点、更新节点以及从群中删除节点。Docker 使用Raft共识管理集群docker node 算法。根据 Raft 的说法,要执行更新,大多数 Swarm 节点需要就更新达成一致。

  • Docker Volume有利于数据的独立持久化,即使容器被删除或重新创建后,数据仍然保留。

1.6 对环境部署和虚拟化的影响

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.7 优点

  • 统一开发测试运行环境
    Docker 使得不同工程师之间配置统一。
    在这里插入图片描述
  • 更高效的利用系统资源
    Docker 在应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。
  • 更快速的启动时间
    传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。
  • 一致的运行环境
    Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。
  • 持续交付和部署
    使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
  • 更轻松的迁移
    Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。
  • 更轻松的维护和扩展
    Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

1.8 容器技术核心

支持容器技术的底层技术主要有 Cgroup、Namespace、UnionFS。

Cgroup

Linux CGroup 全称 Linux Control Group, 是 Linux 内核的一个功能,用来限制,控制与分离一个进程组群的资源(如 CPU、内存、磁盘输入输出等)。这个项目最早是由 Google 的工程师在2006年发起(主要是 Paul Menage 和 Rohit Seth),最早的名称为进程容器(process containers)。在2007年时,因为在 Linux 内核中,容器(container)这个名词太过广泛,为避免混乱,被重命名为 cgroup,并且被合并到2.6.24版的内核中去。

Linux CGroup 为系统中所运行任务(进程)的用户定义组群分配资源 — 比如 CPU 时间、系统内存、网络带宽或者这些资源的组合。您可以监控您配置的 cgroup,拒绝 cgroup 访问某些资源,甚至在运行的系统中动态配置您的 cgroup。

主要提供了如下功能:

  • Resource limitation: 限制资源使用,比如内存使用上限以及文件系统的缓存限制。
  • Prioritization: 优先级控制,比如:CPU 利用和磁盘 IO 吞吐。
  • Accounting: 一些审计或一些统计,主要目的是为了计费。
  • Control: 挂起进程,恢复执行进程。

使用 cgroup,系统管理员可更具体地控制对系统资源的分配、优先顺序、拒绝、管理和监控。可更好地根据任务和用户分配硬件资源,提高总体效率。

Linux 的 Cgroup 具有不同功能的子系统:

  • cpu 子系统,主要限制进程的 cpu 使用率。
  • cpuacct 子系统,可以统计 cgroups 中的进程的 cpu 使用报告。
  • cpuset 子系统,可以为 cgroups 中的进程分配单独的 cpu 节点或者内存节点。
  • memory 子系统,可以限制进程的 memory 使用量。
  • blkio 子系统,可以限制进程的块设备 io。
  • devices 子系统,可以控制进程能够访问某些设备。
  • net_cls 子系统,可以标记 cgroups 中进程的网络数据包,然后可以使用 tc 模块(traffic control)对数据包进行控制。
  • freezer 子系统,可以挂起或者恢复 cgroups 中的进程。
  • ns 子系统,可以使不同 cgroups 下面的进程使用不同的 namespace。

Namespace

Linux Namespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于特定的Namespace。每个Namespace里面的资源对其他Namespace都是透明的。要创建新的Namespace,只需要在调用clone时指定相应的flag。Linux Namespaces机制为实现基于容器的虚拟化技术提供了很好的基础,LXC(Linux containers)就是利用这一特性实现了资源的隔离。不同container内的进程属于不同的Namespace,彼此透明,互不干扰。
Linux 中使用多种 Namespace 进行系统资源的管理,目前支持:

分类系统调用参数相关内核版本描述
Mount namespacesCLONE_NEWNSLinux 2.4.19隔离文件系统挂载点
UTS namespacesCLONE_NEWUTSLinux 2.6.19隔离主机名和域名信息
IPC namespacesCLONE_NEWIPCLinux 2.6.19隔离进程间通信
PID namespacesCLONE_NEWPIDLinux 2.6.24隔离进程的ID
Network namespacesCLONE_NEWNET始于Linux 2.6.24 完成于 Linux 2.6.29隔离网络资源
User namespacesCLONE_NEWUSER始于 Linux 2.6.23 完成于 Linux 3.8隔离用户和用户组的ID

UnionFS

UnionFS 是一种为 Linux,FreeBSD 和 NetBSD 操作系统设计的把其他文件系统联合到一个联合挂载点的文件系统服务。它使用 branch 把不同文件系统的文件和目录“透明地”覆盖,形成一个单一一致的文件系统。这些 branches 或者是 read-only 或者是 read-write 的,所以当对这个虚拟后的联合文件系统进行写操作的时候,系统是真正写到了一个新的文件中。看起来这个虚拟后的联合文件系统是可以对任何文件进行操作的,但是其实它并没有改变原来的文件,这是因为 unionfs 用到了一个重要的资管管理技术叫写时复制。

写时复制(copy-on-write,简称 CoW ),也叫隐式共享,是一种对可修改资源实现高效复制的资源管理技术。它的思想是,如果一个资源是重复的,但没有任何修改,这时候并不需要立即创建一个新的资源;这个资源可以被新旧实例共享。创建新资源发生在第一次写操作,也就是对资源进行修改的时候。通过这种资源共享的方式,可以显著地减少未修改资源复制带来的消耗,但是也会在进行资源修改的时候增减小部分的开销。

2 命令

Docker 分为客户端和服务端两部分, docker 为客户端调用的命令, dockerd 为服务端调用的命令。
在这里插入图片描述

信息、状态、配置

命令描述
info显示 Docker 详细的系统信息
version显示docker客户端和服务端版本信息
inspect查看容器或镜像的配置信息, 默认为json数据
events实时打印服务端执行的事件

info命令用于显示当前系统信息、docker容器、镜像个数、设置等信息

镜像

docker search: 查找镜像
docker pull: 获取镜像
docker push: 推送镜像到仓库
docker login: 登录第三方仓库
docker logout: 退出第三方仓库

容器

资源

3 安装

3.1 版本介绍

Docker 分为 Community Edition (CE) 和 Enterprise Edition (EE) 两个版本。
Docker Community Edition (CE) 又分为 Stable / Test / Nightly 三个版本。

2017 之前,docker的版本
Docker V1.7
Docker V1.8
Docker V1.9
Docker V1.10
Docker V1.11
Docker V1.12
Docker V1.13
2017 年 3月1号后,docker 的版本命名发生变化。
同时将将 docker 分为 DockerCE 版本与 DockerEE。
Docker 社区版(Docker CE):开源调度版本
Docker CE 17.03
Docker CE 17.09
Docker CE 18.03
Docker CE 18.08
Docker CE 19.03
Docker CE 19.09
Docker CE 20.03
Docker CE 20.09
Docker CE 21.03
Docker 企业版(Docker EE):提供企业服务支持

3.2 官方安装说明

https://docs.docker.com/install/

3.3 配置文件

4 使用

加载镜像

docker import ubuntu-2004-arm-dds.tar u20:dds

container 处理

1.停止所有的container,这样才能够删除其中的images:

docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令:

docker rm $(docker ps -a -q)

2.查看当前有些什么images

docker images

3.删除images,通过image的id来指定删除谁

docker rmi

想要删除untagged images,也就是那些id为的image的话可以用

docker rmi $(docker images | grep “^” | awk “{print $3}”)

要删除全部image的话

docker rmi $(docker images -q)

架构

docker inspect u20:dds | grep -i 'architecture'

运行arm镜像

#下载qemu-aarch64-static
wget https://github.com/multiarch/qemu-user-static/releases/download/v5.1.0-5/qemu-aarch64-static.tar.gz

#解压
tar xzvf qemu-aarch64-static.tar.gz

#配置可执行文件路径
sudo cp qemu-aarch64-static /usr/bin/
chmod +x /usr/bin/qemu-aarch64-static

单次运行
#x86环境运行一个arm镜像,将本地qemu-aarch64-static映射到容器内

docker run -it -v /home/bot/worth/qemu-aarch64-static:/usr/bin/qemu-aarch64-static u20:dds bash

一直运行

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

本地文件夹映射到镜像中

docker run -it -v .:/opt/worth u20:dds /bin/bash

参考

1、wiki–Docker
2、Docker 公司
3、Docker 发展历史
4、Docker 文档–zhaowenyu
5、Docker常用命令大全(万字详解)
6、Docker的历史
7、Docker 入门教程–阮一峰
8、x86环境打包和运行arm镜像
9、【docker】x86主机在docker中运行arm64镜像

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

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

相关文章

flashAttention是什么

flashAttention是一种attention加速计算的精确算法,它的核心有三点:tiling(分块计算),kernel合并,和重计算。

03运算符综合

03 3.1.1算数运算符 3.1.2赋值运算符 3.1.3比较(关系)运算符 3.1.4逻辑运算符 3.1.5位运算符 3.2运算符的优先级 3.3条件表达式

IP地址冲突解决办法

在计算机网络中,每个设备都需要一个唯一的IP地址来与其他设备进行通信。然而,有时候会出现IP地址冲突的情况即多个设备使用了相同的IP地址。这种冲突会导致网络连接问题,因此需要及时解决。 IP地址查询:IP66_ip归属地在线查询_免费…

Python 数据库应用教程:安装 MySQL 及使用 MySQL Connector

Python可以用于数据库应用程序。 其中最流行的数据库之一是MySQL。 MySQL数据库 为了能够在本教程中尝试代码示例,您应该在计算机上安装MySQL。 您可以在 MySQL官方网站 下载MySQL数据库。 安装MySQL驱动程序 Python需要一个MySQL驱动程序来访问MySQL数据库。…

关于electron打包卡在winCodeSign下载问题

简单粗暴,直接上解决方案: 在你的项目根目录下创建一个.npmrc的文件,且在里面加上以下文本,不用在意这个镜像源是不是最新的,它会自己重定向到nodemirror这个域名里下载 ELECTRON_MIRRORhttps://npm.taobao.org/mirror…

RS练习 - PTE(一)

目录 RS 题目练习 请问大学中的研究员到底处于一个什么样的地位,它的晋升通道是什么样的? 介绍一下莎翁笔下的塞壬 介绍一下绘画当中的至上主义派 介绍一下黑格尔的主仆辩证法 介绍一下巴塔耶的“经济学的终结” 介绍一下愿望驱动的力比多经济&am…

flink的带状态的RichFlatMapFunction函数使用

背景 使用RichFlatMapFunction可以带状态来决定如何对数据流进行转换,而且这种用法非常常见,根据之前遇到过的某个key的状态来决定再次遇到同样的key时要如何进行数据转换,本文就来简单举个例子说明下RichFlatMapFunction的使用方法 RichFl…

一台电脑生成两个ssh,绑定两个GitHub账号

背景 一般一台电脑账号生成一个ssh绑定一个GitHub,即一一对应的关系!我之前有一个账号也配置了ssh,但是我想经营两个GitHub账号,当我用https url clone新账号的仓库时,直接超时。所以想起了配置ssh。于是有了今天这篇…

UG画弹簧模型教程

我们通常做的弹簧大多数都圆柱形的,如果要创建弹簧弯曲的形状也是可以的,这里介绍怎样通过样条曲线做弯曲样式来生成弹簧的技巧。 UG怎么画已经折弯的弹簧模型? 1、先新建一个模型文件,进入草图,绘制一条样条曲线,样…

深入理解指针:【探索指针的高级概念和应用二】

目录 一,数组参数、指针参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 二,函数指针 三,函数指针数组 🍂函数指针数组的用途(转移表): 四,指向函数指针…

Git 代码库 gogs 部署私服及 https 配置手册

背景 玩了一下 Git ,想到一个问题:企业内部怎么用 Git 呢?仓库哪里来呢? 理一理 Git 及其相关产品的区别: Git 分布式版本管理工具。GitHub 和 Gitee ,基于 Git 的互联网代码托管平台,一个是…

【小技巧】WPS统计纯汉字(不计标点符号)

【小技巧】WPS统计纯汉字(不计标点符号) 首先,CtrlF打开查找页面: 选择“高级搜索”,然后勾选“使用通配符”,然后在“查找内容”后面输入:[一-﨩]。注意:一定要带“[]”和“-”且…

FreeRTOS_空闲任务

目录 1. 空闲任务详解 1.1 空闲任务简介 1.2 空闲任务的创建 1.3 空闲任务函数 2. 空闲任务钩子函数详解 2.1 钩子函数 2.2 空闲任务钩子函数 3. 空闲任务钩子函数实验 3.1 main.c 空闲任务是 FreeRTOS 必不可少的一个任务,其他 RTOS 类系统也有空闲任务&a…

Android MotionLayout

MotionLayout exends ConstraintLayout(动画框架 过渡) View动画 API1 属性动画API11 过渡动画API18 root.width RootViewWidth TransitionManager.beginDelayedTransition(view) 过渡动画 可以改变其大小和流畅性 Fade 可以改变透明度 通过TrasitinManager管理 Go:动态替…

adb and 软件架构笔记

Native Service,这是Android系统里的一种特色,就是通过C或是C代码写出来的,供Java进行远程调用的Remote Service,因为C/C代码生成的是Native代码(机器代码),于是叫Native Service。 native服务…

Linux C语言进阶-D14指针函数

指针函数&#xff1a;指一个函数的返回值为地址量的函数 <数据类型>* <函数名称>&#xff08;<参数说明>&#xff09; { 语句序列; } 返回值&#xff1a;全部变量的地址、静态变量的地址、字符串常量的地址、堆上的地址 注意&#xff1a;不可返回局部变量…

Redis Java 开发简单示例

文章目录 一、概述二、Jedis 开发示例2.1 导入 maven 依赖2.2 使用连接池读写2.3 使用集群读写2.4 完整示例代码2.5 测试集群的搭建 三、Lettuce 开发示例3.1 导入 maven 依赖3.2 读写数据 四、Spring Boot Redis 开发示例4.1 导入 maven 依赖4.2 配置Redis服务地址4.3 基于 Re…

52基于MATLAB的希尔伯特Hilbert变换求包络谱

基于MATLAB的希尔伯特Hilbert变换求包络谱&#xff0c;对原始信号进行初步滤波&#xff0c;之后进行包络谱分析。可替换自己的数据进行优化。程序已调通&#xff0c;可直接运行。 52的尔伯特Hilbert变换包络谱 (xiaohongshu.com)

混沌系统在图像加密中的应用(基于哈密顿能量函数的混沌系统构造1.1)

混沌系统在图像加密中的应用&#xff08;基于哈密顿能量函数的混沌系统构造1.1&#xff09; 前言一、基于广义哈密顿系统的一类混沌系统构造1.基本动力学特性分析2.数值分析 待续 前言 本文的主题是“基于哈密顿能量函数的混沌系统构造”&#xff0c;哈密顿能量函数是是全文研…

【Git】快速入门安装及使用git与svn的区别常用命令

一、导言 1、什么是svn&#xff1f; SVN是Subversion的简称&#xff0c;是一个集中式版本控制系统。与Git不同&#xff0c;SVN没有分布式的特性。在SVN中&#xff0c;项目的代码仓库位于服务器上&#xff0c;团队成员通过向服务器提交和获取代码来实现版本控制。SVN记录了每个文…