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

Docker架构深度解析:守护进程、客户端与存储驱动的协同作战(下)

🐇明明跟你说过:个人主页

🏅个人专栏:《Docker幻想曲:从零开始,征服容器宇宙》 🏅

🔖行路有良友,便是天堂🔖

目录

四、命名空间和控制组

1、Linux命名空间的作用和类型

2、控制组在Docker中的应用

五、容器与镜像管理

1、容器的生命周期管理

2、镜像的拉取、构建和推送过程

六、网络和存储

1、Docker网络模型和驱动

2、存储驱动和数据卷的作用

七、高级话题

1、Docker Compose和Swarm介绍

2、Kubernetes与Docker的关系与比较

八、总结

1、Docker架构发展历程

2、Docker架构未来趋势


四、命名空间和控制组

1、Linux命名空间的作用和类型

Linux命名空间(Namespace)是Linux内核提供的一种机制,用于隔离系统资源,使得不同进程看到的资源是不同的,从而实现了进程间的隔离和资源管理。命名空间技术是容器化技术的基础之一,它使得容器可以在一个隔离的环境中运行,互相之间不会产生影响。

作用:

  1. 进程隔离: 不同命名空间中的进程拥有自己独立的视图,互相之间不会感知到对方的存在,从而实现了进程之间的隔离。

  2. 网络隔离: 不同命名空间中的网络资源是隔离的,每个命名空间可以拥有自己的网络接口、IP地址、路由表等网络配置,从而实现了网络资源的隔离。

  3. 文件系统隔离: 不同命名空间中的文件系统是隔离的,每个命名空间可以拥有自己的文件系统挂载点,使得文件系统的操作在不同命名空间中互不干扰。

  4. 用户隔离: 不同命名空间中的用户和用户组是隔离的,每个命名空间可以拥有自己独立的用户和用户组列表,从而实现了用户隔离。

  5. PID隔离: 不同命名空间中的进程ID是隔离的,每个命名空间拥有自己独立的PID命名空间,使得进程ID在不同命名空间中具有不同的意义

类型:

  1. PID命名空间(pid): 用于隔离进程ID,使得在不同PID命名空间中的进程看到的进程ID是不同的。

  2. 网络命名空间(net): 用于隔离网络资源,包括网络接口、IP地址、路由表等。

  3. 挂载命名空间(mnt): 用于隔离文件系统挂载点,使得在不同挂载命名空间中的文件系统操作不会相互影响。

  4. UTS命名空间(uts): 用于隔离主机名和域名,使得在不同UTS命名空间中的主机名和域名是独立的。

  5. IPC命名空间(ipc): 用于隔离进程间通信资源,包括信号量、消息队列和共享内存等。

  6. 用户命名空间(user): 用于隔离用户和用户组,使得在不同用户命名空间中的用户和用户组列表是独立的。

通过组合不同类型的命名空间,可以实现对不同类型资源的细粒度隔离,从而为容器提供了一个独立、隔离的运行环境。 

2、控制组在Docker中的应用

 控制组(cgroups,也称为资源限制)在Docker 中扮演着至关重要的角色,它允许用户对容器内的资源进行限制和管理,确保不同容器之间的资源隔离和公平共享。

  1. 资源限制: 控制组允许用户限制容器使用的资源,如CPU、内存、磁盘I/O、网络带宽等。这样可以确保一个容器不会耗尽系统资源影响其他容器的正常运行。

  2. 优先级管理: 控制组允许用户设置容器的资源优先级,以确保关键服务的资源需求得到满足。例如,可以通过设置 CPU 的份额和优先级来保证关键服务的处理器时间。

  3. 资源统计: Docker 利用控制组来监视容器的资源使用情况,包括 CPU 使用率、内存占用、磁盘I/O等。这些统计信息可以帮助用户优化容器的配置和性能调优。

  4. 资源限制配额: 控制组可以设置资源配额,确保容器不会超出分配的资源限制。这有助于避免意外的资源耗尽,并提高系统的稳定性和可靠性。

  5. 自动调整: Docker 可以根据容器的资源使用情况动态调整控制组的限制,以适应系统负载的变化。这种自动调整可以提高资源利用率,并确保系统对突发负载的响应能力。

五、容器与镜像管理

1、容器的生命周期管理

Docker 容器的生命周期管理涵盖了容器的创建、启动、停止、重启、销毁等方面。

  1. 创建容器: 创建容器是指基于 Docker 镜像生成一个新的容器实例。可以通过 docker run 命令来创建容器,该命令会指定要使用的镜像以及容器的配置参数,如容器名称、端口映射、环境变量等。

  2. 启动容器: 创建容器后,需要通过 docker start 命令来启动容器。启动容器时,Docker 会根据容器配置加载相应的文件系统和网络配置,并启动容器内的应用程序。

  3. 停止容器: 当容器中的应用程序完成任务或需要停止时,可以使用 docker stop 命令来停止容器。停止容器会发送一个信号给容器内的进程,以请求其停止运行。

  4. 重启容器: 在某些情况下,需要重新启动容器,可以使用 docker restart 命令来重启容器。该命令会先停止容器,然后再启动它。

  5. 暂停和恢复容器: Docker 允许暂停和恢复容器的运行状态。可以使用 docker pause 命令暂停容器的运行,并使用 docker unpause 命令恢复容器的运行。

  6. 销毁容器: 当容器不再需要时,可以使用 docker rm 命令将其销毁。销毁容器会释放容器占用的系统资源,并从 Docker 主机中移除该容器的相关信息。

  7. 查看容器状态: 可以使用 docker ps 命令查看当前正在运行的容器列表,以及它们的状态和相关信息。可以使用 docker inspect 命令查看特定容器的详细信息。

2、镜像的拉取、构建和推送过程

镜像的拉取、构建和推送是 Docker 中常见的操作,用于获取现有镜像、构建新的镜像以及将镜像推送到远程仓库。

1. 镜像的拉取:

  • 用户可以使用 docker pull 命令从远程镜像仓库(如 Docker Hub)中拉取镜像到本地系统。例如,要拉取一个名为 nginx 的镜像,可以运行命令 docker pull nginx
  • Docker 会首先检查本地系统是否已经存在这个镜像,如果不存在或者需要更新,则会从远程仓库下载镜像的文件系统层。

2. 镜像的构建:

  • 用户可以通过编写 Dockerfile 来定义自定义的镜像。Dockerfile 是一个文本文件,其中包含了一系列指令,用于描述如何构建镜像。
  • 通过运行 docker build 命令并指定 Dockerfile 的路径,Docker 将会根据 Dockerfile 中的指令逐步执行构建过程,生成新的镜像。例如,运行命令 docker build -t myimage:latest . 将会构建一个名为 myimage 的镜像。

3. 镜像的推送:

  • 用户可以将本地构建的镜像推送到远程镜像仓库,以便其他用户或系统可以访问和使用。通常情况下,推送到 Docker Hub 是一个常见的选择,但也可以推送到其他的镜像仓库。
  • 运行命令 docker login 登录到远程仓库(如果需要认证)。
  • 运行命令 docker tag 给本地镜像打标签,指定镜像的名称和版本信息。例如,运行命令 docker tag myimage:latest username/repository:tag
  • 最后,运行命令 docker push 将标记过的镜像推送到远程仓库。例如,运行命令 docker push username/repository:tag

六、网络和存储

1、Docker网络模型和驱动

Docker 的网络模型和驱动是容器网络的核心组成部分,负责管理容器之间的通信以及容器与外部网络之间的连接。

1. 网络模型:

  • Docker 的网络模型是基于 Linux 的网络命名空间和虚拟网桥技术实现的。每个容器都会被分配一个独立的网络命名空间,使得容器之间的网络环境彼此隔离,可以拥有自己的网络接口、IP 地址和路由表。
  • Docker 默认提供了三种网络模式:bridge(桥接模式)、host(主机模式)和 none(无网络模式)。用户可以根据应用的需求选择不同的网络模式进行配置。

2. 网络驱动:

  • Docker 的网络驱动是实现容器网络功能的插件化组件,允许用户根据需要选择不同的网络驱动来实现容器的网络连接。
  • Docker 默认提供了多种网络驱动,包括 bridge(桥接驱动)、overlay(覆盖网络驱动)、macvlan(MACVLAN 驱动)等。每种网络驱动都有其特定的用途和适用场景。
  • bridge 驱动是 Docker 默认的网络驱动,用于在宿主机上创建一个虚拟网桥,使得容器可以通过该网桥连接到宿主机的物理网络。overlay 驱动用于跨主机之间创建覆盖网络,实现容器的跨主机通信。

3. 自定义网络:

  • Docker 允许用户创建自定义网络,以实现更灵活和定制化的网络配置。通过自定义网络,用户可以控制容器之间的通信方式、子网分配、DNS 设置等。
  • 用户可以使用 docker network create 命令创建自定义网络,并通过 --driver 参数选择网络驱动,指定网络的名称和其他配置选项。

2、存储驱动和数据卷的作用

存储驱动(Storage Driver):

  • 存储驱动是 Docker 用来管理容器镜像和容器数据的底层技术。它负责将容器的文件系统、元数据等数据存储到宿主机的文件系统中,并提供对这些数据的读写操作。
  • Docker 支持多种存储驱动,如 overlay2、aufs、btrfs、zfs 等。每种存储驱动都有其特定的特性和优劣势,用户可以根据需求选择合适的存储驱动来进行配置。
  • 存储驱动的选择会影响容器的性能、可靠性和存储特性,因此在进行容器部署和运行时需要考虑存储驱动的选择。

数据卷(Volume):

  • 数据卷是用于在容器之间共享数据、持久化存储数据的一种机制。它可以将宿主机的文件或目录挂载到容器内部,从而使得容器可以访问和修改宿主机上的文件系统。
  • 数据卷提供了持久化存储的能力,即使容器被删除,数据卷中的数据仍然保留。这使得容器可以在重新创建时保留之前的数据状态。
  • Docker 提供了多种类型的数据卷,如本地主机数据卷、命名数据卷、远程数据卷等。用户可以根据应用需求选择不同类型的数据卷进行配置和使用。

七、高级话题

1、Docker Compose和Swarm介绍

Docker Compose 和 Docker Swarm 都是 Docker 官方提供的工具,用于简化和管理容器化应用的部署和管理。它们都是 Docker 生态系统中的重要组件,但在功能和用途上有所不同。

Docker Compose:

  • Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。它允许用户使用 YAML 文件来定义应用的服务、网络和卷等配置,然后使用单个命令就可以启动、停止和管理整个应用。
  • Docker Compose 适用于在单个主机上快速启动和管理开发和测试环境。通过 Docker Compose,用户可以轻松地在开发环境中部署多个服务,并进行快速迭代和调试。
  • Docker Compose 支持声明式配置,并且可以与 Docker 引擎无缝集成,使得容器化应用的开发和测试过程更加简单和高效。

Docker Swarm:

  • Docker Swarm 是 Docker 官方提供的容器编排平台,用于在多个 Docker 主机上部署和管理容器化应用。它通过将多个 Docker 主机组成一个集群,并使用内置的调度器和管理器来协调容器的部署和运行。
  • Docker Swarm 提供了高可用性、伸缩性和安全性等特性,使得用户可以轻松地在生产环境中部署和管理容器化应用。它支持服务发现、负载均衡、滚动更新等功能,同时还提供了容器的自动恢复和故障转移等机制。
  • Docker Swarm 可以与 Docker Engine 无缝集成,并且提供了简单的命令行接口和 Web 控制台,使得用户可以方便地进行集群的管理和监控。

2、Kubernetes与Docker的关系与比较

Kubernetes(通常简称为 K8s)和 Docker 是两个不同但相关的技术,它们在容器化和容器编排领域扮演着不同的角色。

关系:

  • Docker 是一种容器化平台,提供了一套工具和技术,用于创建、打包和运行容器化应用。它包括 Docker Engine、Docker Compose、Docker Swarm 等组件,提供了从开发到部署的端到端解决方案。
  • Kubernetes 是一个开源的容器编排平台,用于在多个主机上管理和调度容器化应用。它提供了集群管理、自动扩展、服务发现、负载均衡、滚动更新等功能,使得容器化应用在生产环境中能够更加灵活、高效和可靠地运行。

比较:

  • 范围和定位: Docker 主要关注于容器的创建、打包和运行,是一种容器化平台。而 Kubernetes 则专注于容器编排和管理,用于在多个主机上部署和运行容器化应用。
  • 功能和特性: Docker 提供了包括容器引擎、容器编排工具、镜像仓库等在内的一整套容器化解决方案。而 Kubernetes 则提供了更为丰富和复杂的功能,如服务发现、负载均衡、自动伸缩、滚动更新等,使得容器化应用能够在分布式环境中更加灵活和强大。
  • 易用性和学习曲线: Docker 的学习曲线相对较低,提供了简单易用的命令行接口和图形化界面,适合于开发人员和小型团队使用。而 Kubernetes 的学习曲线相对较陡,需要理解复杂的概念和机制,适合于大型团队和复杂应用的部署和管理。
  • 生态系统和社区支持: Docker 有一个庞大的生态系统和活跃的社区支持,提供了丰富的插件和工具,适用于不同场景和需求。而 Kubernetes 也拥有强大的生态系统和广泛的社区支持,提供了各种扩展和集成方式,适用于不同规模和复杂度的应用场景。

八、总结

1、Docker架构发展历程

起初,Docker采用了典型的客户端-服务器(CS)架构设计,通过Client端与Server端的通信,实现了构建、运行和分发Docker容器的功能。这种设计使得Docker能够灵活地在各种环境中运行,并提供了多种通信方式,如Unix套接字、Restful API、网络接口和命令行等。

随着Docker的不断发展,其架构也经历了一系列的演进。原有的引擎功能逐渐下沉到containerd,这使得containerd逐渐独立于Docker,成为一个通用的容器运行时工具。同时,swarm功能也被整合入引擎,swarmkit模块不断弱化,最终将被引擎吸收。这些变化使得Docker的架构更加核心化,引擎集群化,提高了Docker的性能和稳定性。

此外,Docker的内部功能也在不断解耦,新的功能模块不断被加入,使得Docker的功能更加丰富和强大。例如,Docker在镜像管理、容器编排、网络管理等方面都进行了大量的优化和改进,为用户提供了更加便捷和高效的使用体验。

2、Docker架构未来趋势

展望未来,Docker的架构将继续朝着更加核心化、集群化的方向发展。随着容器技术的不断成熟和普及,Docker将更加注重与云原生技术的融合,为用户提供更加全面的解决方案。

Docker还将在安全性和稳定性方面进行更多的投入。随着容器在生产环境中的广泛应用,安全性和稳定性成为了用户最为关心的问题。因此,Docker将加强在容器安全、隔离性、故障恢复等方面的研究和开发,为用户提供更加可靠和安全的容器运行环境。

Docker还将继续加强与开源社区的合作,推动容器技术的不断发展和创新。开源社区是Docker发展的重要推动力,通过与开源社区的合作,Docker可以获取更多的技术资源和创新思路,推动容器技术的不断进步。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Docker的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!! 

相关文章:

Docker架构深度解析:守护进程、客户端与存储驱动的协同作战(下)

🐇明明跟你说过:个人主页 🏅个人专栏:《Docker幻想曲:从零开始,征服容器宇宙》 🏅 🔖行路有良友,便是天堂🔖 目录 四、命名空间和控制组 1、Linux命名空…...

【强化学习笔记一】初识强化学习(定义、应用、分类、性能指标、小车上山案例及代码)

文章目录 第1章 初识强化学习1.1 强化学习及其关键元素1.2 强化学习的应用1.3 强化学习的分类1.3.1 按任务分类1.3.2 按算法分类 1.4 强化学习算法的性能指标1.5 案例:基于Gym库的智能体/环境接口1.5.1 安装Gym库1.5.2 使用Gym库1.5.3 小车上山1.5.3.1 有限动作空间…...

安卓面试准备汇总

java相关 面试-java基础相关-CSDN博客 android 基础相关 安卓基础面试题-CSDN博客 kotlin相关 android pms,cms,wms相关知识 android fragmework层的知识 项目相关的...

C#+datax实现定时增量同步

要使用C#和DataX实现定时增量同步,你可以使用以下步骤: 1. 安装DataX:首先,确保你已经安装了DataX。你可以从DataX的官方仓库中获取最新版本。 2. 配置DataX 任务:创建一个DataX任务,定义源(sou…...

VUE实现Provide的计算属性

通过此篇可以学到: 如何使用Providerinject进行“跨代”传值如何实现一个计算属性的Provider如何解决告警“injection "xxxxx" not found. ” 一、描述 目前需要创建一个计算属性传入Provide,并且能够被其他组件Inject 二、实现 父组件 .…...

Spring Schedule:Spring boot整合Spring Schedule实战讲解定时发送邮件的功能

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…...

Midjourney绘图欣赏系列(十)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子,它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同,Midjourney 是自筹资金且闭源的,因此确切了解其幕后内容尚不…...

【C语言】人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…...

船舶AIS监控网络-船位信息查询:实时查询船舶动态,服务于船舶安全航行管理、港口调度计划、物流、船代、货代。【AIS动态信息编写船舶轨迹】

文章目录 引言I 预备知识1.1 相关术语1.2 主要功能1.3 MongoDB和Es各自优势II 系统架构2.1 电子海图开源JavaScript包2.2 地图渲染库2.3 地图服务调用(天地图)2.4 在Elasticsearch(ES)中存储船舶轨迹数据III 数据同步方案3.1 基于 Binlog 实时同步3.2 数据迁移工具:Canal3.3…...

Axios 中的文件上传(Upload File)方法

Axios 提供了多种上传文件(Upload File)的方法,适用于不同的上传场景。以下是其中几种常用的方法: 1. 使用 FormData 对象FormData是一个用于创建表单数据的 API,可用于发送包含文件和其他表单数据的multipart/form-d…...

机试:数塔路径

问题描述: 代码示例: //数塔路径 #include <bits/stdc.h>using namespace std;int main(){ // 算法思想: // 逆推,将最下方和右下方的数字进行比较,哪个大则加上并更新,直至到根节点即为最大 int n;cin >> n; int nums[n1][n1]; // 输入数塔 for(int i 1;i < n…...

ROS2中launch编写及参数含义(xml、python)

ROS2系列文章目录 ROS2中nav_msgs/msg/Path 数据含义及使用 ROS2中std_msgs/msg/Header 数据含义及使用 ROS中TF变换详解 文章目录 ROS2系列文章目录ROS2中launch编写及参数含义&#xff08;xml、python&#xff09;一、ROS官方介绍二、实现案例1.编写主函数、CMakeLists.tx…...

鸿蒙Socket通信示例(TCP通信)

前言 DevEco Studio版本&#xff1a;4.0.0.600 参考链接&#xff1a;OpenHarmony Socket 效果 TCPSocket 1、bind绑定本地IP地址 private bindTcpSocket() {let localAddress resolveIP(wifi.getIpInfo().ipAddress)console.info("111111111 localAddress: " …...

yolov5-v6.0详细解读

yolov5-v6.0详细解读 一、yolov5版本介绍二、网络结构2.1 Backbone特征提取部分2.1.1 ConvBNSiLU模块2.1.2 C3模块2.1.2.1 BottleNeck模块 2.1.3 SPPF模块 2.2 Neck特征融合部分2.2.1 FPN2.2.2 PANet 2.3Head模块 三、目标框回归3.1 yolo标注格式3.2 yolov4目标回归框3.3 yolov…...

FPGA - 单总线协议(one-wire)

1&#xff0c;简介 单总线&#xff08;one-wire&#xff09;是美国 DALLAS 公司推出的外围串行扩展总线技术&#xff0c;与 SPI、I2C 等串行数据通信方式不同&#xff0c;它采用单根信号线&#xff0c;既传输时钟又传输数据&#xff0c;而且数据传输是双向的。它具有节省 I/O口…...

python的函数与类的定义

目录 1.函数 1.函数的定义 2.输入参数与输出参数的类型 3.输入和输出多个参数 1.普通参数 2.含有任意数量的参数 3.关键字参数 4.普通参数与多个参数的结合 2.类 1.类的定义 2.类的实例化 3.继承 1.函数 1.函数的定义 def 函数名(输入参数): 文档字符串 函数体 …...

Parade Series - WebRTC ( < 300 ms Low Latency ) T.B.D

Parade Series - FFMPEG (Stable X64) C:\Conda\parading-cam>ffmpeg -f dshow -i video"Surface Camera Front" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -an -rtsp_transport tcp -f rtsp://127.0.0.1:8554/cam0801...

【ARM】MDK在programming algorithm界面添加FLM

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 解决在programming algorithm界面中无法添加想要的Flash编程算法的问题 2、 问题场景 在对于Debug进行Flash Download进行配置的时候&#xff0c;在programming algorithm界面中有对应的Flash编程算法。可以通过…...

springmvc学习笔记1

springmvc学习笔记part1 总概述图创建步骤创建project并在父工程中导入配置类添加为web工程检查maven配置写handller方法写配置类SpringMVC环境搭建项目部署关键步骤总结 具体设置路径设置注解接收参数&#xff08;重点param参数接收路径参数接收json参数接收请求头接收和cooki…...

力扣106 从中序与后续遍历序列构造二叉树

文章目录 题目描述解题思路代码 题目描述 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], …...

GPU层次结构(Nvidia和Apple M芯片,从硬件到pytorch)

这里写目录标题 0、驱动pytorch环境安装验证1.window环境2.Mac Apple M芯片环境 1、Nvidia显卡驱动、CUDA、cuDNN关系汇总1**1. Nvidia显卡驱动&#xff08;Graphics Driver&#xff09;****2. CUDA&#xff08;Compute Unified Device Architecture&#xff09;****3. cuDNN&a…...

精益数据分析(93/126):增长率的真相——从数据基准到科学增长策略

精益数据分析&#xff08;93/126&#xff09;&#xff1a;增长率的真相——从数据基准到科学增长策略 在创业领域&#xff0c;增长率常被视为企业成功的核心指标&#xff0c;但多少才算“足够好”&#xff1f;如何避免陷入“盲目增长陷阱”&#xff1f;今天&#xff0c;我们将…...

day14 leetcode-hot100-27(链表6)

21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 1. 暴力法 思路 创建一个空节点&#xff0c;用来组装这两个链表&#xff0c;谁小谁就是下一个节点。 知识 创建空节点&#xff1a;ListNode n1 new ListNode(-1); 具体代码 /*** Definition for singly-l…...

如何让 Git 停止跟踪文件?停止后又如何恢复跟踪?

在使用 Git 管理代码时&#xff0c;有时我们希望某些文件不再被 Git 跟踪&#xff08;比如本地配置文件、临时文件等&#xff09;&#xff0c;但保留这些文件在本地&#xff1b;过了一段时间&#xff0c;可能又需要恢复跟踪这些文件。本文将用通俗易懂的语言&#xff0c;教你如…...

JVM学习(七)--JVM性能监控

目录 一、JVM性能监控 1、JVM监控及诊断工具-命令行篇 2、JVM监控及诊断工具-GUI篇 3、JVM运行时参数 一、JVM性能监控 1、JVM监控及诊断工具-命令行篇 面试题&#xff1a; 1、你使用过Java虚拟机性能监控和故障处理工具吗? 2、怎么打出线程栈信息。 3、怎么获取 Jav…...

华为云【Astro zero】如何做“设备编辑”页面

目录 一、整体原理概述(逻辑图+原理) 1. 页面组件组装(用户交互界面) 2. 数据模型(数据临时存储) 3. 页面事件(逻辑交互) 二、详细操作步骤(按功能模块分) ✅【1】页面创建与结构组装 ✅【2】定义自定义模型与字段(临时数据绑定) ✅【3】定义服务模型(与后…...

ubuntu系统上运行jar程序输出时间时区不对

springboot项目打包jar文件在ubuntu系统上运行&#xff0c;发现在系统和日志里面&#xff0c;显示和打印的当前时间时区都是UTC0&#xff0c;通过timedatectl命令设置系统时区为Asia/Shanghai&#xff0c;命令date -R发现系统已经修改成功&#xff0c;但是发现springboot仍然输…...

RESTful APInahamcon Fuzzies-write-up

RESTful API 路径详解 RESTful API&#xff08;Representational State Transfer&#xff09;是一种 基于 HTTP 协议的 API 设计风格&#xff0c;它通过 URL 路径 和 HTTP 方法&#xff08;GET、POST、PUT、DELETE 等&#xff09;来定义资源的访问方式。它的核心思想是 将数据…...

IP Search Performance Tests dat/db/xdb/mmdb 结构性能差异对比

IP Search Performance Tests qqzeng-ip by 2025-06-01 测试环境&#xff1a; BenchmarkDotNet v0.15.0 macOS Sequoia 15.5 (24F74) [Darwin 24.5.0] Apple M4 Max, 1 CPU, 14 logical and 14 physical cores .NET SDK 10.0.100-preview.4.25258.110 [Host]: .NET…...

【Netty系列】实现HTTP文件服务器

目录 一、完整代码实现 1. Maven依赖 (pom.xml) 2. 主启动类 (FileServer.java) 3. 通道初始化类 (FileServerInitializer.java) 4. 核心业务处理器 (FileServerHandler.java) 二、代码关键解释 1. 架构分层 2. 安全防护机制 3. 文件传输优化 4. 目录列表生成 三、运…...