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

《Docker 入门与进阶:架构剖析、隔离原理及安装实操》

1 docker 简介

1.1 Docker 的优点

Docker 是一款开放平台,用于应用程序的开发、交付与运行,能将应用和基础架构分离,实现软件快速交付 ,还能以统一方式管理应用和基础架构,缩短代码从编写到上线的时间。其核心优势如下:

  • 加速应用交付流程:开发人员可在本地容器的标准化环境编写代码,轻松与同事共享成果。应用能快速推送至测试环境完成自动或手动测试,发现问题后可及时修复、重新部署。测试通过后,更新的镜像可便捷推送至生产环境,适配持续集成和持续交付流程。
  • 灵活部署与高效扩展:基于容器的 Docker,工作负载具备高移植性,能在本地、数据中心、云服务等多环境运行。凭借可移植、轻量特性,可按需实时扩展或缩减应用、服务规模。
  • 提升硬件资源利用率:Docker 轻巧快速,相比传统虚拟机,是更经济高效的选择,能让硬件发挥更大效能,尤其适用于高密度及中小型部署场景。

Docker和虚拟机(VM)虽然都用于实现资源隔离和应用程序的独立运行,但它们在技术架构、性能特征和适用场景上存在显著差异。以下是两者的核心区别:

总结对比表

特性Docker(容器)虚拟机(VM)
隔离级别进程级(共享内核)硬件级(独立内核)
启动时间秒级分钟级
资源占用低(仅需必要依赖)高(完整操作系统)
性能接近原生有Hypervisor开销
可移植性高(镜像标准化)中(依赖Hypervisor)
管理复杂度低(容器编排工具)高(多OS维护)
安全性中等(需配置安全策略)高(完全隔离)
适用场景微服务、CI/CD、轻量级应用传统应用、多租户、关键系统

选择建议

  • 优先使用Docker:若追求快速部署、资源效率和微服务架构。
  • 优先使用VM:若需要强隔离性、异构环境支持或传统应用迁移。

1.2 docker架构

Docker 架构是基于客户端-服务器模式的,其中包括多个关键组件,确保容器化应用的高效构建、管理和运行。

Docker 的架构设计使得开发者能够轻松地将应用程序与其所有依赖封装在一个可移植的容器中,并在不同的环境中一致地运行。

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

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。

类与镜像:在面向对象编程里,类是一种抽象的模板,定义了对象所具有的属性和方法。例如,定义一个 “汽车” 类,包含品牌、型号、速度等属性以及启动、加速、刹车等方法。类似地,Docker 镜像也是一种模板,它包含了运行应用程序所需的所有文件、依赖项、配置等,是一个静态的实体。比如一个 Python 应用的镜像,会包含 Python 解释器、应用代码以及相关的库等。
对象与容器:对象是类的实例,基于类创建出来,具有具体的属性值和行为。比如根据 “汽车” 类创建出一辆具体的汽车对象,有特定的品牌、型号等属性和实际的操作行为。Docker 容器则是镜像的运行实例,基于镜像创建。容器具有动态的特性,在运行时可以对其进行启动、停止、扩展等操作,就像一个正在行驶的汽车对象,而镜像只是一个制造汽车的蓝图。
在这里插入图片描述

Docker 架构的工作流程
构建镜像:使用 Dockerfile 创建镜像。
推送镜像到注册表:将镜像上传到 Docker Hub 或私有注册表中。
拉取镜像:通过 docker pull 从注册表中拉取镜像。
运行容器:使用镜像创建并启动容器。
管理容器:使用 Docker 客户端命令管理正在运行的容器(例如查看日志、停止容器、查看资源使用情况等)。
网络与存储:容器之间通过 Docker 网络连接,数据通过 Docker 卷或绑定挂载进行持久化。

1. Docker 客户端(Docker Client)
Docker 客户端就像是用户与 Docker 系统沟通的“遥控器”,它以命令行的形式存在,让用户能轻松操控 Docker 各项功能。当你在命令行输入指令,比如创建容器、构建镜像,这些指令就会通过客户端发送给 Docker 守护进程,由守护进程去执行具体操作。

核心功能:通过简单的命令就能实现与 Docker 守护进程的交互,完成容器创建、镜像构建、查看容器状态等任务 。

常用指令及作用

  • docker run:基于镜像快速启动一个容器;
  • docker ps:查看当前正在运行的容器列表;
  • docker build:根据 Dockerfile 中的配置,生成定制化的 Docker 镜像;
  • docker exec:进入正在运行的容器内部,执行特定命令。
  1. Docker 守护进程(Docker Daemon)
    Docker 守护进程(进程名通常为 dockerd)是 Docker 系统的“幕后管家”,负责处理 Docker 最核心的工作,像管理容器从创建到销毁的整个生命周期、构建镜像、分发镜像等。它在后台默默运行,持续监听 Docker 客户端发送过来的指令请求,一旦收到指令,就立即开始执行相关操作。

启动与自启动设置:在大多数情况下,安装 Docker 后,守护进程会自动启动。若需手动设置开机自启动(适用于使用 service 初始化系统的场景),可以执行以下命令:

sudo update-rc.d docker defaults

这样每次系统启动时,Docker 守护进程也会自动运行,无需手动开启。

3. Docker 引擎 API(Docker Engine API)
Docker 引擎 API 是 Docker 对外开放的“接口大门”,采用 RESTful 架构设计,外部客户端能通过它与 Docker 守护进程进行通信。借助这个 API,开发者可以使用 HTTP 请求的方式,实现对 Docker 的各种操作,包括启动容器、构建镜像、查看容器状态等。它打破了不同平台之间的限制,无论你使用哪种编程语言,只要能发送 HTTP 请求,就能实现与 Docker 的交互。

4. Docker 容器(Docker Containers)
Docker 容器是 Docker 最核心的“产品”,它是一个轻量级、可独立运行的“软件盒子”,里面封装了运行应用程序所需要的所有内容,从底层的操作系统库到应用程序代码,一应俱全。容器运行时会共享宿主机的操作系统内核,但彼此之间的文件系统和进程都是相互隔离的,就像一个个独立的小房间,互不干扰。

核心优势

  • 环境一致性:无论在开发、测试还是生产环境,只要运行同一个容器,应用程序的运行效果都是一样的;
  • 临时性与灵活性:容器生命周期短暂,任务完成后可以随时销毁,也能快速重新创建;
  • 跨平台性:不依赖底层操作系统配置,只要有 Docker 环境,就能运行。
    以下是面向初学者优化后的 Docker 核心概念解释,采用简洁易懂的语言和示例:

5. Docker 镜像(Docker Images)
Docker 镜像就像是一个“软件安装包”,它是容器的只读模板,包含了应用程序运行所需的一切:从操作系统、运行时环境、依赖库,到应用代码和配置文件。镜像就像一个“蓝图”,可以被多次复制并运行,形成多个相互隔离的容器。

核心特点

  • 只读与共享:镜像本身是只读的,多个容器可以共享同一个镜像,减少资源占用。
  • 分层结构:镜像由多个“层”(Layer)组成,每层代表一次文件系统的修改,这种设计让镜像的构建和传输更高效。
  • 可复用与可定制:可以基于官方镜像进行二次开发,也可以将自己的镜像分享到仓库。

镜像 vs 容器

  • 镜像:静态的“模板”,类似程序的安装包。
  • 容器:镜像的运行实例,类似运行中的程序进程。

镜像的设计让应用部署变得简单:只需拉取镜像,即可在任何支持 Docker 的环境中运行相同的应用,实现“一次构建,到处运行”。

6. Docker 仓库(Docker Registries)
类比
Docker 仓库就像一个“应用商店”,只不过存储的不是手机应用,而是 Docker 镜像。你可以从这里下载别人做好的镜像,也可以上传自己的镜像分享给他人。

功能

  • 存储镜像:类似于 GitHub 存储代码,Docker 仓库存储镜像文件。
  • 上传/下载:支持用户上传自定义镜像或下载公共镜像。
  • 官方与社区资源:Docker Hub(默认公共仓库)提供大量官方镜像(如 Ubuntu、MySQL)和社区贡献的镜像。

7. Docker Compose
类比
如果你需要同时运行多个容器(比如一个网站和数据库),Docker Compose 就像一个“批量启动器”,用一个配置文件就能一键启动所有服务。

功能

  • 多容器管理:通过一个 docker-compose.yml 文件定义多个容器及其关系。
  • 简化部署:只需一条命令即可启动/停止整个应用。

8. Docker Swarm
类比
如果你有多台服务器(主机),Docker Swarm 就像一个“指挥官”,能把它们组建成一个“集群”,统一管理和分配任务。

功能

  • 集群管理:将多台 Docker 主机组成一个逻辑集群。
  • 自动扩展:根据负载自动增加或减少容器数量。
  • 高可用性:当某个容器故障时,自动重新部署。

9. Docker 网络(Docker Networks)
类比
Docker 网络就像给容器搭建的“虚拟局域网”,让容器之间可以互相通信,也能与外部网络连接。

功能

  • 容器通信:不同容器可通过网络互相访问。
  • 隔离与安全:通过自定义网络隔离不同应用。

常见网络模式

  • bridge(默认):容器通过宿主机的虚拟网桥通信。
  • host:容器直接使用宿主机网络(无隔离)。
  • overlay:跨主机集群网络(用于 Swarm)。

10. Docker 卷(Docker Volumes)
类比
容器的文件系统就像“临时存储”,容器删除后数据会丢失。而 Docker 卷就像一个“外挂硬盘”,数据独立于容器,不会丢失。

功能

  • 数据持久化:容器删除后,卷中的数据依然保留。
  • 数据共享:多个容器可挂载同一个卷共享数据。

总结对比表

概念作用适合场景
镜像作为容器的只读模板,封装应用程序及其依赖环境(如操作系统、运行时、库和代码等),是容器创建的基础;通过分层存储实现复用与高效传输开发阶段构建应用运行环境;打包应用交付测试与生产环境;作为公共基础镜像供团队使用
容器镜像的运行实例,提供轻量级、隔离的运行环境,包含可读写层,实现应用的快速部署与运行;支持动态启停、扩展和迁移微服务架构中独立部署服务;CI/CD流水线快速交付应用;隔离不同版本或功能的应用
仓库存储和分享镜像,分为公共仓库(如Docker Hub)和私有仓库;支持镜像的上传、下载与版本管理团队协作共享自定义镜像;获取公共开源镜像加速开发;企业内部安全存储敏感镜像
Compose通过YAML文件定义多容器应用的配置(服务、网络、卷等),实现一键编排和管理多个关联容器本地开发同时启动前后端服务与数据库;搭建复杂测试环境;快速部署小型多服务应用
Swarm将多台Docker主机组成集群,实现容器的集群化管理,支持负载均衡、高可用和自动扩展大型生产环境的分布式部署;应对高并发流量的弹性伸缩;跨主机资源调度
网络管理容器间的通信与隔离,提供多种网络模式(如bridge、host、overlay),支持容器服务发现与访问多容器服务间数据交互;隔离不同安全级别的应用;跨主机集群内容器通信
实现数据持久化,独立于容器生命周期,支持容器间数据共享;避免容器删除导致数据丢失数据库存储数据;应用日志持久化;共享配置文件或上传文件
客户端作为用户与Docker交互的命令行接口(CLI),发送指令(如创建容器、构建镜像)到守护进程日常开发运维操作;自动化脚本执行Docker命令;与守护进程交互管理容器
守护进程作为Docker架构核心,负责处理客户端请求,管理容器生命周期、镜像构建与分发等后台任务持续监控与维护Docker环境;执行容器创建、启动、停止等操作;管理资源分配
引擎提供RESTful API接口,允许外部客户端(如编程语言、工具)通过HTTP请求与守护进程通信开发自定义管理工具;集成Docker功能到自动化平台;通过编程方式控制容器

1.3 docker的隔离机制

Docker 的隔离机制是其核心优势之一,主要基于 Linux 内核的 NamespacesCgroups 技术实现,同时结合文件系统和网络隔离,确保容器间相互独立且资源可控。

1. Namespaces(命名空间)
Namespaces 是 Linux 内核提供的一种隔离机制,Docker 通过它将容器的不同资源(如进程、网络、文件系统等)隔离到独立的命名空间中,使容器内的进程看起来像是在独立的环境中运行。

主要 Namespaces 类型

  • PID Namespace:隔离进程 ID,每个容器有独立的进程树(容器内的 PID 1 与宿主机无关)。
  • NET Namespace:隔离网络栈,每个容器有独立的网络接口、IP 地址和端口空间。
  • MNT Namespace:隔离文件系统挂载点,容器有独立的根文件系统。
  • UTS Namespace:隔离主机名和域名,容器可自定义主机名。
  • IPC Namespace:隔离进程间通信(如消息队列、共享内存)。
  • USER Namespace:隔离用户和用户组,容器内的用户可映射到宿主机的不同 UID。

作用

  • 容器内的进程无法看到或影响其他容器的进程。
  • 容器可使用相同的端口(如 80),但在不同的网络命名空间中互不冲突。

一个容器包含多个进程

2. Cgroups(控制组)
Cgroups(Control Groups)是 Linux 内核的另一项技术,用于限制和监控容器的资源使用(如 CPU、内存、磁盘 I/O、网络带宽等),防止单个容器耗尽系统资源。

主要功能

  • 资源限制:设置容器的 CPU 使用率上限、内存配额等。
  • 优先级控制:调整容器的资源使用优先级。
  • 资源统计:监控容器的资源使用情况(如 CPU、内存用量)。
  • 进程终止:当容器超出资源限制时,可自动终止进程

3. 联合文件系统(UnionFS)
Docker 使用联合文件系统(如 Overlay2、AUFS 等)实现镜像的分层存储和容器的可写层。每个容器在只读的镜像层之上添加一个可写层,修改只发生在容器的可写层,不会影响底层镜像。

特性

  • 写时复制(Copy-on-Write):只有当容器修改文件时,才会从镜像层复制文件到可写层。
  • 高效复用:多个容器可共享同一个镜像层,节省存储空间。

4. 网络隔离
Docker 提供多种网络模式(如 bridgehostoverlay 等),默认使用 bridge 模式创建虚拟网络,实现容器间的隔离与通信。

常见网络模式

  • bridge:容器通过虚拟网桥(docker0)连接到宿主机网络,容器间通过 IP 或容器名通信。
  • host:容器直接使用宿主机的网络栈,无网络隔离(性能高,但端口冲突风险)。
  • overlay:跨主机集群网络,用于 Swarm 或 Kubernetes 环境。
  • none:禁用网络,容器无法联网。

5. 安全增强
Docker 还通过以下技术进一步强化隔离:

  • Seccomp(Secure Computing Mode):限制容器内进程的系统调用权限。
  • AppArmor/SELinux:为容器应用强制访问控制(MAC)策略。
  • Capabilities:细粒度控制容器的特权(如禁用不必要的系统权限)。

隔离机制 vs 虚拟机

特性容器(Docker)虚拟机(VM)
隔离级别进程级(共享内核)硬件级(独立内核)
启动速度秒级分钟级
资源占用低(仅需必要依赖)高(完整操作系统)
性能接近原生有 Hypervisor 开销
隔离安全性中等(需配置安全策略)高(完全隔离)

总结
Docker 的隔离机制通过 Namespaces 实现资源的逻辑隔离,Cgroups 控制资源使用,联合文件系统 管理存储,网络模式 隔离通信,最终达到轻量级、高性能的应用隔离效果。这种设计使得容器能在共享内核的前提下,安全、高效地运行多个独立应用,成为微服务和 DevOps 的理想选择。

2 安装docker

2.1 前期工作

# 更新 索引
sudo apt-get update
# 安装 依赖
sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common# 安装 添加 Docker 的官方 GPG 密钥sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# 使用以下指令设置稳定版仓库
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

2.2 安装引擎

sudo apt-get update
# 安装最新版
sudo apt-get install docker-ce docker-ce-cli containerd.io

或者安装特定版本

#要安装特定版本的 Docker Engine-Community, 
apt-cache madison docker-cedocker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packagesdocker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packagesdocker-ce | 18.06.1~ce~3-0~ubuntu       | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packagesdocker-ce | 18.06.0~ce~3-0~ubuntu       | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
# 命令
sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

安装成功

$ sudo docker run hello-worldHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

相关文章:

《Docker 入门与进阶:架构剖析、隔离原理及安装实操》

1 docker 简介 1.1 Docker 的优点 Docker 是一款开放平台&#xff0c;用于应用程序的开发、交付与运行&#xff0c;能将应用和基础架构分离&#xff0c;实现软件快速交付 &#xff0c;还能以统一方式管理应用和基础架构&#xff0c;缩短代码从编写到上线的时间。其核心优势如…...

OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——mqtt库

准备工作 请依照这篇文章搭建环境 OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——环境配置_openharmony交叉编译-CSDN博客 下载 wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.9.tar.xz 解压 tar -xf mkdir ./out cd ./out Cmake命…...

【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;LeetCode 热题 100 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 二叉树的中序遍历二叉树的最大深度翻转二叉树对称二叉树二叉树的直径二叉树的层序遍历将有序数组转换为二叉搜索树验…...

中国版 Cursor---腾讯云 CodeBuddy | 从安装VSCode到数独小游戏问世

中国版 Cursor---腾讯云 CodeBuddy | 从安装VSCode到数独小游戏问世 引言CodeBuddy环境准备VSCodeCodeBuddyNode.js下载安装 游戏开发Craft模型一句话生成数独游戏游戏体验 EdgeOne PagesMCPPages MCP Server配置 MCP Server 游戏源码总结 引言 在正文开始之前&#xff0c;先引…...

【蓝桥杯嵌入式】【复盘】第13届国赛真题

1. 前言 最近在准备16届的蓝桥杯嵌入式赛道的国赛&#xff0c;打算出一个系列的博客&#xff0c;记录STM32G431RBT6这块比赛用板上所有模块可能涉及到的所有考点&#xff0c;如果有错误或者遗漏欢迎各位大佬斧正。 本系列博客会分为以下两大类&#xff1a; 1.1. 单独模块的讲…...

Docker疑难杂症解决指南

Docker疑难杂症解决指南 Docker作为容器化技术的代表&#xff0c;广泛应用于开发、测试和部署环境中。然而&#xff0c;在使用过程中&#xff0c;用户可能会遇到各种问题。以下是一些常见的Docker疑难杂症及其解决方法。 容器无法启动 容器无法启动是常见问题之一&#xff0…...

嵌入式开发学习日志(数据结构--顺序结构单链表)Day19

一、顺序结构 安装软件命令&#xff1a; sudo apt-get install (软件名) 安装格式化对齐&#xff1a;sudo apt-get install clang-format 内存泄漏检测工具&#xff1a; sudo apt-get install valgrind 编译后&#xff0c;使用命令 valgrind ./a.out 即可看内…...

MySQL 8.0 OCP 1Z0-908 题目解析(2)

题目005 Choose two. Which two actions can obtain information about deadlocks? □ A) Run the SHOW ENGINE INNODB MUTEX command from the mysql client. □ B) Enable the innodb_status_output_locks global parameter. □ C) Enable the innodb_print_all_deadlock…...

短板效应--双指针

1.根据题意取决于最小的高&#xff0c;那么 若当移动最小高的一端&#xff0c;mv可能会变 但若移动较大的一端&#xff0c;v一定会变小就没有意义了&#xff0c;所以我们只需要每次移动一端&#xff0c;直到lr就行 2.原理就是与左右端点有关且每次只要移动一端就行 #include…...

CodeBuddy终极测评:中国版Cursor的开发革命(含安装指南+HTML游戏实战)

一、腾讯云CodeBuddy产品全景解读 1. 什么是腾讯云代码助手&#xff1f; 官方定义&#xff1a; Tencent Cloud CodeBuddy是由腾讯自研的AI编程辅助工具&#xff0c;基于混元大模型DeepSeek双引擎&#xff0c;提供&#xff1a; ✅ 智能代码补全&#xff08;支持200语言&#x…...

【Linux】简单设计libc库

&#x1f4dd;前言&#xff1a; 经过之间两篇文章&#xff0c;【Linux】基础IO&#xff08;一&#xff09;和【Linux】基础IO&#xff08;二&#xff09;的学些&#xff0c;我们对文件的基础IO已经有了一定的理解。 这篇文章我们来简单设计一下libc库&#xff0c;来复习一下文…...

3335. 字符串转换后的长度 I

3335. 字符串转换后的长度 I class Solution:def lengthAfterTransformations(self, s: str, t: int) -> int:# 大质数mod 10**97# 创建一个长度为26的数组cnt&#xff0c;对应26个小写字母cnt [0]*26# 计算出s中26个字符分别有多少个for ch in s:cnt[ord(ch)-ord(a)] 1f…...

《医院网络安全运营能力成熟度评估指南》(试行版)研究解读

引言 随着数字化转型的不断深入,医院信息化建设已从单点应用走向全面系统集成,信息系统已成为支撑医院业务运行和管理决策的基础设施。然而,信息化发展也带来了日益复杂的网络安全挑战,从传统的边界防护到如今的全方位安全威胁,医院网络安全建设面临着前所未有的压力。20…...

鸿蒙5.0项目开发——鸿蒙天气项目的实现(介绍)

【高心星出品】 文章目录 项目简介&#xff1a;项目运行效果图&#xff1a;主要功能&#xff1a;使用的技能点&#xff1a;开发环境&#xff1a; 项目简介&#xff1a; 这是一个基于鸿蒙系统&#xff08;HarmonyOS&#xff09;开发的天气应用&#xff0c;采用 ArkTS 语言开发&…...

软考软件测评师——计算机网络

目录 第一部分 核心知识点解析 1. IPv4地址规范 2. 层次化网络架构 3. 网络设备解析 4. URL结构规范 5. 关键网络命令 6. SNMP配置要求 第二部分 历年真题精析 2020年真题 2016年真题 2015年真题 高频考点总结 第一部分 核心知识点解析 1. IPv4地址规范 特殊地址说…...

Node.js 中的 URL 模块

一、URL 模块基础 1. 模块导入方式 // Node.js 方式 const url require(url);// ES 模块方式 (Node.js 14 或启用 ESM) import * as url from url; 2. 核心功能 解析 URL 字符串 格式化 URL 对象 URL 处理工具方法 WHATWG URL 标准实现 二、URL 解析与构建 1. 传统解…...

JavaWeb 前端开发

JavaWeb前端 初识 HTMLCSS 入门程序 什么是HTML HTML是由标签构成的 什么是CSS HTML快速入门 标签可以是大写&#xff0c;也可以是小写&#xff0c;也可以是大小写混用。 属性值也可以使用单引号&#xff0c;但一般使用双引号。 HTML的语法结构比较松散&#xff0c;不严谨…...

设计模式深度解析:AI大模型下的策略模式与模板方法模式对比解析

目录 一、策略模式:AI大模型的动态决策引擎 1.1 核心原理与工业级实现 1.2 AI时代的技术演进 二、模板方法模式:AI流水线的标准化基石 2.1 多模态处理框架设计 三、策略与模板方法的协同创新 3.1 电商推荐系统实践 四、前沿趋势与挑战 4.1 量子计算增强模式 五、伦理…...

2. 盒模型/布局模块 - 响应式产品展示页_案例:电商产品网格布局

2. 盒模型/布局模块 - 响应式产品展示页 案例&#xff1a;电商产品网格布局 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">:root {--primary-color…...

H5S 视频监控AWS S3 对象存储

本文介绍一下如何使用S3对象存储作为H5S 存储空间进行录像存储 然后创建一个对象存储&#xff0c;本文以minio 为例(实际项目亲测天翼云)&#xff1a; 首先安装 s3fs 如果是redhat系列&#xff0c;使用如下命令 sudo yum install epel-release sudo yum install s3fs-fuse …...

Visual Studio 2022 跨网络远程调试

&#x1f680; Visual Studio 2022 跨网络远程调试实践指南 在本地开发软件时&#xff0c;Visual Studio 的调试器是我们最依赖的工具之一。但是当目标程序运行在远程设备上&#xff0c;例如测试服务器、工控设备或嵌入式终端&#xff0c;如何实现 跨网络远程调试 成为了开发中…...

最短路与拓扑(1)

1、找最长良序字符串 #include<bits/stdc.h> using namespace std; const int N105; int dis[N]; int vis[N]; int edge[N][N]; int n,m; int vnum;void dij(int u, int v) {// 初始化距离数组和访问标记for(int i0; i<vnum; i) {vis[i] 0;dis[i] edge[u][i];}// D…...

【前缀和】和为 K 的子数组(medium)

【前缀和】和为 K 的子数组 题目描述算法原理和细节问题代码 题目描述 和为 K 的子数组 给定一个整数数组和一个整数 k &#xff0c;请找到该数组中和为 k 的连续子数组的个数。 示例 1&#xff1a; 输入:nums [1,1,1], k 2 输出: 2 解释: 此题 [1,1] 与 [1,1] 为两种不同的…...

深入理解 JVM:StackOverFlow、OOM 与 GC overhead limit exceeded 的本质剖析及 Stack 与 Heap 的差异

摘要 在 Java 开发过程中&#xff0c;内存管理相关的问题一直是开发者需要重点关注的领域。StackOverFlow、OutOfMemory&#xff08;OOM&#xff09;和GC overhead limit exceeded是常见的运行时错误&#xff0c;而理解Stack&#xff08;栈&#xff09;和Heap&#xff08;堆&a…...

汽车功能安全--TC3xx MBIST设计要点

英飞凌针对硬件潜伏故障的自测&#xff0c;提供了四种机制&#xff1a;PBIST、LBIST、MONBIST和MBIST。 LBIST和MONBIST我们已经聊过了&#xff0c;今天就快速介绍下MBIST。 MBIST&#xff0c;全程Memory Built-in Self Test&#xff0c;用于检测SRAM数据单元的完整性。 在2…...

blazor与硬件通信实现案例

在网页接入硬件交互通信方案这篇博客中,曾经提到了网页中接入各种硬件操作的方法,即通过Windows Service作为指令的中转,并建立websocket通信连接,进而实现接入硬件的各种操作。这篇博客就以实际的案例来讲解具体怎么实现。 一、建立Windows Service项目 比如我就建立了一…...

思迈特软件携手天阳科技,打造ChatBI金融智能分析新标杆

5月10日&#xff0c;广州思迈特软件有限公司&#xff08;以下简称“思迈特软件”&#xff09;与天阳宏业科技股份有限公司&#xff08;以下简称“天阳科技”&#xff09;在北京正式签署战略合作协议。思迈特软件董事长吴华夫、CEO姚诗成&#xff0c;天阳科技董事长兼总裁欧阳建…...

微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现

在上一篇中&#xff0c;我们理解了微服务架构的核心理念以及Spring Cloud为我们提供的强大工具集。我们提到&#xff0c;微服务架构的一个核心挑战在于&#xff0c;服务实例的网络位置是动态的&#xff0c;服务之间需要一种机制来互相定位。 想象一下&#xff0c;你开了一家新…...

Linux之初见进程

1. 冯诺依曼体系结构 冯诺依曼体系结构是计算机的基本设计原则之一&#xff0c;也被认为是现代计算机的基础。它由美国数学家约翰冯诺伊曼在20世纪40年代后期提出。冯诺依曼体系结构包括存储程序概念、将数据和指令存储在同一存储器中、按照顺序执行指令等关键特征。 具体来说…...

Docker入门教程:常用命令与基础概念

目录 简介常用命令Docker 常用命令汇总docker run 命令格式与参数解析 简介 Docker 是一个客户端-服务器&#xff08;client-server&#xff09;架构的应用程序&#xff0c;其中包含两个主要组件&#xff1a;Docker 客户端和 Docker 守护进程&#xff08;也称为 Docker Daemon…...

内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程

内核深入学习3——ARM32/ARM64在Linux内核中的实现&#xff08;2&#xff09; ​ 今天我们来讨论的是一个硬核的内容&#xff0c;也是一个老生常谈的话题——那就是分析ARM32和ARM64体系架构下的Linux内存区域示意图的内容。对于ARM64的部分&#xff0c;我们早就知道一个基本的…...

vim 练习题

文章目录 前言&#xff1a;学习了vim基础命令&#xff0c;上机实操下吧命令模式练习插入模式练习末行模式练习视图模式练习高级操作练习 总结 前言&#xff1a;学习了vim基础命令&#xff0c;上机实操下吧 命令模式练习 打开任意文本文件&#xff0c;使用gg跳转到首行&#x…...

CSS3 选择器完全指南:从基础到高级的元素定位技术

CSS3选择器完全指南&#xff1a;从基础到高级的元素定位技术 一、基本选择器&#xff1a;精准定位的基石 &#xff08;一&#xff09;元素选择器 通过元素标签名直接匹配页面元素&#xff0c;语法简洁直观&#xff1a; p { color: #333; } /* 选择所有<p>元素 */ div…...

从SAM看交互式分割与可提示分割的区别与联系:Interactive Segmentation Promptable Segmentation

SAM的火爆也带来了一项新的任务&#xff1a;Promptable Segmentation&#xff0c;并且作者在文中对比了交互式分割Interactive Segmentation&#xff0c;并且在训练过程中也参考了交互式分割的训练方法&#xff0c;那么可提示分割与交互式分割有什么区别&#xff1f; 个人观点…...

k8s初始化时候,报错无法通过 CRI(容器运行时接口)与 containerd 通信

报错主要信息处 [reset] Unmounting mounted directories in “/var/lib/kubelet” W0513 11:34:19.818023 27124 cleanupnode.go:134] [reset] Failed to evaluate the “/var/lib/kubelet” directory. Skipping its unmount and cleanup: lstat /var/lib/kubelet: no such f…...

k8s之k8s集群部署

一、kubernetes基础环境搭建 1.安装虚拟机 2. 基础环境配置 2.1 关闭防火墙 更改主机名 #系统更新 sudo dnf update -y # 关闭防火墙 sudo systemctl stop firewalld sudo systemctl disable firewalld # 临时关闭 SELinux sudo setenforce 0 # 永久关闭 SELinux sudo sed -i…...

百度智能云千帆携手联想,共创MCP生态宇宙

5月7日&#xff0c;2025联想创新科技大会&#xff08;Tech World&#xff09;在上海世博中心举行&#xff0c;本届大会以“让AI成为创新生产力”为主题。会上&#xff0c;联想集团董事长兼CEO杨元庆展示了包括覆盖全场景的超级智能体矩阵&#xff0c;包括个人超级智能体、企业超…...

黑白浮生项目测试报告

文章目录 一、项目背景二、项目功能三、测试计划1. 功能测试1.1 注册页面1.1.1 正常注册1.1.2 异常注册 1.2 登录页面1.2.1 正常登录1.2.2 异常登录 1.3 游戏大厅页面1.3.1 开始匹配1.3.2 取消匹配 1.4 游戏房间页面1.4.1 落子1.4.2 游戏结束 2. 自动化测试2.1 创建浏览器驱动类…...

《操作系统真象还原》第十四章(2)——文件描述符、文件操作基础函数

文章目录 前言文件描述符简介文件描述符原理文件描述符实现修改thread.h修改thread.c 文件操作相关的基础函数inode操作相关函数文件相关函数编写file.h编写file.c 目录相关函数完善fs/dir.h编写fs/dir.c 路径解析相关函数实现文件检索功能修改fs.h继续完善fs.c makefile 结语 …...

k8s v1.26 实战csi-nfs 部署

一 前言 使用自开发的一键k8s基础环境部署后&#xff0c;存储需要解决&#xff0c;就是测试环境故选择nfs比较简单&#xff0c;翻阅很多网上资料感觉都不是很全面&#xff0c;结合网上资料折腾了一天&#xff0c;总算是完成了csi-nfs部署。其实之前也部署过&#xff0c;经过一…...

测试集群的功能-执行wordcount程序

具体的操作步骤如下&#xff1a; 确保hadoop是正确运行的。hdfs和yarn都正常启动了。在集群根目录下创建wcinput目录&#xff0c;并在它的下面上传两个文本文件word1.txt, word2.txt&#xff0c;其中保存了要测试的单词信息。在任意一台设备中&#xff0c;进入到hadoop的主目录…...

聊一聊Electron中Chromium多进程架构

Chromium 多进程架构概述 Chromium 的多进程架构是其核心设计之一&#xff0c;旨在提高浏览器的稳定性、安全性和性能。Chromium 将不同的功能模块分配到独立的进程中&#xff0c;每个进程相互隔离&#xff0c;避免了单进程架构中一个模块的崩溃导致整个浏览器崩溃的问题。 在…...

虹科技术 | 简化汽车零部件测试:LIN/CAN总线设备的按键触发功能实现

汽车零部件测试领域对操作的便捷性要求越来越高&#xff0c;虹科Baby-LIN-RC系列产品为这一需求提供了完美的解决方案。从基础的按键设置到高级的Shift键应用&#xff0c;本文将一步步引导您了解虹科Baby-LIN-RC系列产品的智能控制之道。 虹科Baby-LIN-3-RC 想象一下&#xff0…...

前端开发避坑指南:React 代理配置常见问题与解决方案

前端开发避坑指南:React 代理配置常见问题与解决方案 一、为什么需要配置代理?二、使用 create-react-app 默认配置代理三、使用 http-proxy-middleware 配置复杂代理四、高级代理配置五、生产环境中的代理配置一、为什么需要配置代理? React 应用在开发过程中经常需要与后端…...

43、Server.UrlEncode、HttpUtility.UrlDecode的区别?

Server.UrlEncode 和 HttpUtility.UrlDecode 是 .NET 中用于处理 URL 编码/解码的两个不同方法&#xff0c;主要区别在于所属命名空间、使用场景和具体行为。以下是详细对比&#xff1a; 1. 所属类库与命名空间 Server.UrlEncode 属于 System.Web.HttpServerUtility 类。通常…...

Azure 应用的托管身份与服务主体

Microsoft Entra ID -- 前称 Azure Active Directory -- 提供强大的身份验证和授权功能。托管身份和服务主体通过限制凭据暴露的风险来帮助确保对 Azure 资源的访问安全。 托管身份为Azure原生应用程序自动管理身份&#xff0c;而服务主体则非常适合需要访问Azure资源的外部应…...

音频特征工具Librosa包的使用

深入探索Mamba模型架构与应用 - 商品搜索 - 京东 DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 要使用深度学习与语音特征进行抽取&#xff0c;首先需要准备能够对语音特征进行解析的工具。 Librosa是一个用于音频、音乐分析与处理的Python工具包&#x…...

Mapreduce初使用

&#xff08;一&#xff09;MapReduce的定义 MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序&#xff0c;并发运行在一个…...

Samtec助力电视广播行业

【摘要前言】 现代广播电视技术最有趣的方面之一就是界限的模糊。过去&#xff0c;音频和视频是通过射频电缆传输的模拟技术采集的&#xff0c;而现在&#xff0c;数字世界已经取代了模拟技术。物理胶片和磁带已让位于数字存储设备和流媒体。 在这个过程中&#xff0c;连接器…...

根据输入的数据渲染柱形图

背景&#xff1a;根据不同季度的销售额&#xff0c;生成对应的柱形图&#xff0c;直观的看出差异 效果&#xff1a; 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatibl…...