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

Docker组件详解:核心技术与架构分析

Docker详解:核心技术与架构分析

Docker作为一种容器化技术,已经彻底改变了软件的开发、交付和部署方式。要充分理解和利用Docker的强大功能,我们需要深入了解其核心组件以及它们如何协同工作。本文将详细介绍Docker的主要组件、架构设计以及它们之间的关系。

1. Docker架构概览

Docker采用客户端-服务器(C/S)架构,主要由以下几部分组成:

  • Docker客户端(Docker Client)
  • Docker服务器(Docker Daemon)
  • Docker镜像(Docker Images)
  • Docker容器(Docker Containers)
  • Docker注册表(Docker Registry)
  • Docker组件(Docker Components)

这种架构设计使Docker能够分离客户端和服务端功能,实现跨平台操作。用户通过Docker客户端发送命令,Docker守护进程接收并执行这些命令,管理Docker对象,如镜像、容器、网络和数据卷。

2. Docker Engine

Docker Engine是Docker的核心组件,它是一个轻量级的容器化技术,用于构建和运行容器。

2.1 Docker Engine的组成部分

Docker Engine由以下几个主要部分组成:

a) Docker守护进程(dockerd)

Docker守护进程是一个长期运行的程序,负责构建、运行和分发Docker容器。它监听Docker API请求并管理Docker对象,如镜像、容器、网络和数据卷。守护进程可以与其他守护进程通信以管理Docker服务。

# 查看Docker守护进程状态
systemctl status docker
b) Docker客户端(docker)

Docker客户端是用户与Docker交互的主要方式。用户通过命令行界面(CLI)发送命令,这些命令使用Docker API发送到Docker守护进程。客户端可以与多个守护进程通信,实现远程操作。

# 查看Docker客户端版本
docker version
c) Docker API

Docker API是一个RESTful API,它允许Docker客户端和其他程序与Docker守护进程通信。通过这个API,其他程序可以控制Docker守护进程并使用其功能。

d) Docker对象

Docker对象是Docker生态系统中的基本实体,包括:

  • 镜像
  • 容器
  • 网络
  • 插件

2.2 Docker Engine的工作原理

  1. 构建:用户通过Docker客户端发送构建命令,Docker守护进程使用Dockerfile构建镜像。
  2. 分发:用户可以将构建好的镜像推送到Docker Hub或私有注册表。
  3. 运行:用户可以使用Docker客户端运行容器,Docker守护进程负责容器的生命周期管理。

3. Docker三剑客

"Docker三剑客"是Docker生态系统中的三个核心工具,它们共同提供了容器的构建、多容器应用的编排和集群管理能力。

3.1 Docker Compose

Docker Compose是一个用于定义和运行多容器Docker应用的工具。使用YAML文件来配置应用程序的服务,然后通过一个命令创建并启动所有服务。

工作原理:
  1. docker-compose.yml文件中定义应用程序的服务、网络和卷。
  2. 使用docker-compose up命令启动所有服务。
  3. Docker Compose自动创建一个默认网络,并将所有服务连接到这个网络。
典型使用场景:
  • 开发环境
  • 自动化测试环境
  • 单机部署多容器应用
示例docker-compose.yml文件:
version: '3'
services:web:image: nginx:latestports:- "80:80"volumes:- ./html:/usr/share/nginx/htmldepends_on:- dbdb:image: mysql:5.7volumes:- db_data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: exampleMYSQL_DATABASE: app
volumes:db_data:
常用命令:
# 启动所有服务
docker-compose up -d# 停止所有服务
docker-compose down# 查看服务状态
docker-compose ps# 查看服务日志
docker-compose logs

3.2 Docker Swarm

Docker Swarm是Docker的原生集群管理工具,它将多个Docker主机组成一个虚拟Docker主机,提供容器编排、负载均衡、服务发现等功能。

工作原理:
  1. 初始化Swarm集群,创建管理节点(Manager Node)和工作节点(Worker Node)。
  2. 管理节点负责集群管理和编排决策,工作节点负责运行容器。
  3. 使用服务(Service)概念来部署和扩展应用。
Swarm模式的核心概念:
  • 节点(Node):参与Swarm集群的Docker主机。
  • 服务(Service):在Swarm中运行的任务的定义。
  • 任务(Task):调度到Swarm节点的最小工作单元。
与Kubernetes的比较:
特性Docker SwarmKubernetes
易用性简单,学习曲线平缓复杂,学习曲线陡峭
功能基本的容器编排功能丰富而全面的功能
扩展性适合中小规模部署适合大规模生产环境
社区支持相对较小庞大而活跃
常用命令:
# 初始化Swarm集群
docker swarm init --advertise-addr <MANAGER-IP># 添加工作节点
docker swarm join --token <TOKEN> <MANAGER-IP>:2377# 部署服务
docker service create --name nginx --replicas 3 -p 80:80 nginx# 扩展服务
docker service scale nginx=5# 查看服务
docker service ls

3.3 Docker Machine (已弃用)

Docker Machine曾是Docker三剑客之一,用于在各种平台上自动创建Docker主机。但随着Docker Desktop和云原生工具的发展,Docker Machine已被官方弃用。现在,用户通常使用Docker Desktop、云提供商的工具或Kubernetes来管理Docker环境。

4. Docker网络

Docker网络是Docker生态系统的重要组成部分,它支持容器之间以及容器与外部网络的通信。

4.1 网络驱动类型

Docker支持多种网络驱动类型,每种类型适用于不同的网络场景:

a) 桥接网络(Bridge)

默认的网络驱动,适用于独立容器在同一Docker主机上运行并需要通信的场景。

# 创建桥接网络
docker network create --driver bridge my-bridge-network
b) 主机网络(Host)

移除容器与Docker主机之间的网络隔离,容器直接使用主机的网络。

# 使用主机网络运行容器
docker run --network host nginx
c) 覆盖网络(Overlay)

允许不同Docker主机上的容器相互通信,适用于Docker Swarm服务。

# 创建覆盖网络
docker network create --driver overlay my-overlay-network
d) Macvlan网络

允许为容器分配MAC地址,使其在网络上显示为物理设备。

# 创建Macvlan网络
docker network create --driver macvlan \--subnet=192.168.0.0/24 \--gateway=192.168.0.1 \-o parent=eth0 my-macvlan-network
e) 无网络(None)

完全禁用容器的网络栈,容器不能通过网络访问外部或被外部访问。

# 使用无网络运行容器
docker run --network none nginx

4.2 网络管理命令

# 列出网络
docker network ls# 检查网络
docker network inspect my-network# 连接容器到网络
docker network connect my-network my-container# 断开容器与网络的连接
docker network disconnect my-network my-container# 删除网络
docker network rm my-network

5. Docker数据管理

Docker提供了多种数据管理方式,以持久化容器生成的数据。

5.1 数据卷(Volumes)

数据卷是Docker管理的持久化数据存储,它们独立于容器的生命周期,可以在多个容器之间共享。

# 创建数据卷
docker volume create my-volume# 使用数据卷运行容器
docker run -v my-volume:/data nginx

5.2 绑定挂载(Bind Mounts)

绑定挂载可以将主机文件系统上的目录或文件挂载到容器中,适用于开发环境。

# 使用绑定挂载运行容器
docker run -v /host/path:/container/path nginx

5.3 临时文件系统(tmpfs)

tmpfs挂载将数据存储在主机内存中,适用于临时数据存储。

# 使用tmpfs运行容器
docker run --tmpfs /tmp nginx

6. Docker安全

Docker提供了多种安全机制,以保护容器和主机的安全。

6.1 命名空间(Namespaces)

Docker使用Linux命名空间来提供容器隔离。主要的命名空间包括:

  • PID命名空间:进程隔离
  • NET命名空间:网络隔离
  • IPC命名空间:进程间通信隔离
  • MNT命名空间:文件系统挂载点隔离
  • UTS命名空间:主机名和域名隔离

6.2 控制组(Control Groups)

Docker使用cgroups限制容器对主机资源的访问,如CPU、内存、磁盘I/O等。

# 限制容器使用的资源
docker run --memory=512m --cpu-shares=512 nginx

6.3 内容信任(Content Trust)

Docker提供内容信任机制,确保只运行经过签名的镜像。

# 启用内容信任
export DOCKER_CONTENT_TRUST=1

7. Docker高级功能

7.1 多阶段构建(Multi-stage Builds)

多阶段构建允许在同一个Dockerfile中使用多个FROM指令,每个指令可以使用不同的基础镜像,从而减小最终镜像的大小。

# 构建阶段
FROM golang:1.17 AS build
WORKDIR /app
COPY . .
RUN go build -o main .# 最终阶段
FROM alpine:latest
WORKDIR /app
COPY --from=build /app/main .
CMD ["./main"]

7.2 健康检查(Healthcheck)

Docker提供健康检查机制,以监控容器内应用程序的健康状态。

HEALTHCHECK --interval=5s --timeout=3s \CMD curl -f http://localhost/ || exit 1

7.3 容器编排与服务发现

容器编排工具(如Docker Swarm和Kubernetes)提供服务发现功能,使容器能够自动发现和连接到其他服务。

8. Docker生态系统与工具

8.1 Docker Hub

Docker Hub是Docker官方的公共容器镜像注册表,包含大量官方和社区贡献的镜像。

8.2 Docker Desktop

Docker Desktop是一种用于在Windows和macOS上运行Docker的桌面应用程序,提供了GUI界面和优化的容器运行时。

8.3 Docker Buildx

Docker Buildx是一个Docker CLI插件,提供了增强的构建功能,如多架构构建和构建缓存。

# 使用Buildx构建多架构镜像
docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest .

8.4 Docker Scan

Docker Scan是一个安全扫描工具,用于检测Docker镜像中的安全漏洞。

# 扫描镜像
docker scan myimage:latest

9. Docker最佳实践

9.1 镜像构建最佳实践

  • 使用官方基础镜像
  • 使用多阶段构建减小镜像大小
  • 合并RUN指令减少层数
  • 使用.dockerignore排除不必要的文件
  • 不要使用latest标签,使用明确的版本标签

9.2 容器运行最佳实践

  • 不要在容器中运行多个进程
  • 使用只读文件系统提高安全性
  • 限制容器资源使用
  • 使用非root用户运行容器
  • 定期更新基础镜像

9.3 网络安全最佳实践

  • 使用用户定义网络而不是链接
  • 不要将敏感端口暴露给公共网络
  • 使用TLS加密Docker守护进程通信
  • 实施网络分段和隔离策略

10. 结语

Docker的组件架构设计使其成为一个功能强大而灵活的容器化平台。通过深入了解Docker的核心组件及其工作原理,开发人员和运维人员可以更有效地利用Docker来构建、部署和管理容器化应用。随着容器技术的不断发展,Docker继续演进并适应现代应用程序开发和部署的需求。

Docker已经成为容器化领域的标准,但它只是云原生生态系统的一部分。随着Kubernetes等容器编排平台的崛起,Docker的角色也在不断演变。无论如何,理解Docker的组件和架构是进入容器化和云原生世界的重要一步。

参考资料

  • Docker官方文档
  • Docker GitHub仓库
  • Docker三剑客详解
  • Docker网络详解
  • Docker安全最佳实践

相关文章:

Docker组件详解:核心技术与架构分析

Docker详解&#xff1a;核心技术与架构分析 Docker作为一种容器化技术&#xff0c;已经彻底改变了软件的开发、交付和部署方式。要充分理解和利用Docker的强大功能&#xff0c;我们需要深入了解其核心组件以及它们如何协同工作。本文将详细介绍Docker的主要组件、架构设计以及…...

uni-app,小程序中的addPhoneContact,保存联系人到手机通讯录

文章目录 方法详解简介 基本语法参数说明基础用法使用示例平台差异说明注意事项最佳实践 方法详解 简介 addPhoneContact是uni-app框架提供的一个实用API&#xff0c;用于向系统通讯录添加联系人信息。这个方法在需要将应用内的联系人信息快速保存到用户设备通讯录的场景下非…...

uniapp小程序轮播图高度自适应优化详解

在微信小程序开发过程中&#xff0c;轮播图组件(swiper)是常用的UI元素&#xff0c;但在实际应用中经常遇到高度不匹配导致的空白问题。本文详细记录了一次轮播图高度优化的完整过程&#xff0c;特别是针对固定宽高比图片的精确适配方案。 问题背景 在开发"零工市场&quo…...

赛季7靶场 - Environment

本系列仅说明靶场的攻击思路&#xff0c;不会给出任何的详细代码执行步骤&#xff0c;因为个人觉得找到合适的工具以实现攻击思路的能力也非常重要。 1.Nmap扫描发现80和22端口 2.访问80端口&#xff0c;使用katana查看js代码&#xff0c;快速发现laravel框架。 【*】希望知道…...

JVM——即时编译

分层编译模式&#xff1a;动态平衡启动速度与执行效率 分层编译是现代JVM&#xff08;如HotSpot、GraalVM&#xff09;实现高性能的核心策略之一&#xff0c;其核心思想是根据代码的执行热度动态选择不同的编译层次&#xff0c;实现启动速度与运行效率的最佳平衡。以HotSpot虚…...

武汉火影数字|数字科技馆打造:开启科技探索新大门

足不出户&#xff0c;就能畅游科技的奇幻世界&#xff0c;你相信吗&#xff1f;数字科技馆就能帮你实现&#xff01;在这个数字化的时代&#xff0c;数字科技馆如同一颗璀璨的新星&#xff0c;照亮了我们探索科学的道路。 那么&#xff0c;数字科技馆究竟是什么呢&#xff1f; …...

升级 Azure Kubernetes 服务群集的关键注意事项

升级 Azure Kubernetes 服务 (AKS) 集群不仅是为了保持最新状态&#xff0c;更是为了保护您的工作负载、提升性能并降低运营风险。但如果操作不当&#xff0c;可能会导致停机、工作负载中断&#xff0c;甚至访问问题。 在本指南中&#xff0c;我们将介绍&#xff1a; 生产环境…...

数据类型详解(布尔值、整型、浮点型、字符串等)-《Go语言实战指南》

Go语言是一门静态强类型语言&#xff0c;所有变量在编译时必须明确其数据类型。本章将详细介绍Go的基础数据类型&#xff0c;帮助你理解并正确使用它们。 一、数据类型分类总览 Go 的基础数据类型可以分为以下几类&#xff1a; 类型分类代表类型示例布尔类型booltrue, false整…...

单片机-STM32部分:9-1、触控检测芯片

飞书文档https://x509p6c8to.feishu.cn/wiki/ILBsw4EaQiWaUukWrxEcO4XZnXc 传统物理按键 原理 玻璃盖板下通过一个触摸PAD连接到触摸芯片中&#xff0c;触摸PAD可以用PCB铜箔、金属片、平顶圆柱弹簧、导电棉、导电油墨、导电橡胶、导电玻璃的ITO层等。 当有人体手指靠近触摸按…...

从 JMS 到 ActiveMQ:API 设计与扩展机制分析(二)

&#xff08;三&#xff09;消息结构与 API 操作 JMS 消息结构&#xff1a;JMS 消息主要由消息头&#xff08;Header&#xff09;、属性&#xff08;Properties&#xff09;和消息体&#xff08;Body&#xff09;三部分组成。消息头包含了许多预定义的字段&#xff0c;用于标识…...

CSS display: none

在 CSS 中&#xff0c;display: none; 是一个用于控制元素显示与隐藏的属性值&#xff0c;其核心作用是完全从文档流中移除元素&#xff0c;使元素在页面中不占据任何空间&#xff0c;也不会被渲染。以下是详细解释&#xff1a; 核心作用 隐藏元素&#xff1a;使元素在页面中…...

vison transformer vit 论文阅读

An Image is Worth 16x16 Words 20年的论文看成10年的哈斯我了 [2010.11929] 一张图像胜过 16x16 个单词&#xff1a;用于大规模图像识别的转换器 --- [2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 为什么transformer好训练&am…...

dropout层

从你提供的图片来看&#xff0c;里面讨论了 Dropout 层&#xff0c;让我为你解释一下它的工作原理和作用。 Dropout 层是什么&#xff1f; Dropout 是一种常用的正则化技术&#xff0c;用于避免神经网络的 过拟合&#xff08;overfitting&#xff09;。过拟合是指模型在训练数…...

openssl中BIO的使用

BIO是OpenSSL的一个重要的结构和概念&#xff0c;是对数据IO与传递处理的一种类型抽象和功能封装&#xff0c;这里所说的数据IO与传递的“介质”包括&#xff1a;内存、文件、日志、标准设备、网络socket等&#xff0c;“处理”包括简单、加/解密、摘要、ssl协议下的读/写等的数…...

电动汽车充电设施可调能力聚合评估与预测

电动汽车充电设施可调能力聚合评估与预测 项目概述 本项目基于论文《大规模电动汽车充换电设施可调能力聚合评估与预测》(鲍志远&#xff0c;胡泽春)&#xff0c;实现了电动汽车充电设施可调能力的聚合评估与预测方法。 主要文件 real_data_model.m: 使用真实数据实现LSTM线…...

Git clone时出现SSL certificate problem unable to get local issuer certificate

正确解决方法 git config --global http.sslVerify false错误解决方法&#xff1a;&#xff08;主要是看错了嘿嘿&#xff0c;但是如果是 OpenSSL SSL_read: Connection was reset, errno 10054 Failed to connect to github.com port 443: Timed out 原…...

requests库

模拟请求获取网页源代码 如下 import requestsr requests.get(https://spa1.scrape.center/page/1) print(r.text) 源码如下 GET请求 示例网站为 https://httpbin.org import requests r requests.get(https://httpbin.org/) print(r.text) 所显示的结果如下 {"a…...

基于springboot的海洋环保知识分享系统的设计与实现

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过上千套毕业设计程序&#xff0c;没有什么华丽的语言&#xff0…...

安科瑞ADL3000-E-A/KC三相交流电能表CE认证导轨表

1 概述 ADL3000-E-A 是一款为供电系统、工矿企业以及公用事业单位设计的智能电表&#xff0c;用于计算耗电量并管理用电需求。它具备高精度、体积小以及安装简便的特点。它将所有电气参数的测量与综合电能计量及管理功能集成在一起&#xff0c;可提供过去 12 个月的各类数据&a…...

红黑树算法笔记

文章目录 红黑树 (Red-Black Tree) 学习笔记0. 节点结构与哨兵节点1. 什么是红黑树&#xff1f;2. 红黑树的五个核心性质3. 为什么需要红黑树&#xff1f;4. 红黑树的基本操作a. 查找 (Search)b. 插入 (Insert)c. 删除 (Delete) 5. 维护平衡的关键操作a. 变色 (Recoloring)b. 旋…...

【Axios】解决Axios下载二进制文件返回空对象的问题

【Axios】解决Axios下载二进制文件返回空对象的问题 问题背景 在一个基于Vue 3的项目中,我们使用Axios下载Excel文件,但遇到了一个奇怪的问题:文件能成功下载下来,但打开时显示内容为[object Object]无法使用。 当我们执行下载代码: const response = await downloadT…...

2.MySQL数据库操作

一.MySQL数据库介绍 数据库目前标准指令集是SQL&#xff0c;即结构化查询语言。SQL语言主要由以下几部分组成 DDL&#xff08;数据定义语言&#xff09;&#xff1a;用来建立数据库、数据库对象和定义字段&#xff0c;如create、alter、drop。 DML&#xff08;数据操纵语言&…...

01.three官方示例+编辑器+AI快速学习webgl_animation_keyframes

实例&#xff1a;examples/webgl_animation_keyframes.html 在这里插入图片描述 重点关注&#xff1a; AnimationMixer&#xff1a;管理模型的所有动画AnimationClip&#xff1a;表示一个完整的动画ClipAction&#xff1a;控制动画的播放状态&#xff08;播放、暂停、速度等&am…...

在 Spring Boot 中实现动态线程池的全面指南

动态线程池是一种线程池管理方案&#xff0c;允许在运行时根据业务需求动态调整线程池参数&#xff08;如核心线程数、最大线程数、队列容量等&#xff09;&#xff0c;以优化资源利用率和系统性能。在 Spring Boot 中&#xff0c;动态线程池可以通过 Java 的 ThreadPoolExecut…...

餐饮行业新风口:上门厨师服务系统的技术实现路径

上门做饭正在成为下一个万亿级风口&#xff01;当外卖平台被预制菜攻陷&#xff0c;当年轻人对着料理包无可奈何&#xff0c;一个全新的餐饮模式正在悄然崛起。 我们的市场调研显示&#xff0c;83%的消费者无法分辨外卖是否使用预制菜&#xff0c;76%的年轻人愿意为透明烹饪过程…...

odoo-049 Pycharm 中 git stash 后有pyc 文件,如何删除pyc文件

文章目录 问题描述解决思路正确的去除 git 跟踪 pyc文件的做法 问题描述 查看本地 stash 列表 stash 后有很多 pyc 文件都被 git 追踪了&#xff0c;这样不合理&#xff0c;而且等 unstash 的时候就会有问题 解决思路 尝试方法&#xff1a; 递归地删除指定文件夹及其子目录中…...

线程同步机制

synchronized 实现线程同步的关键字&#xff0c;用来防止多个线程同时访问某个代码块或方法&#xff0c;避免并发冲突和数据不一致。通过持有一把唯一的对象锁&#xff0c;谁拿到了谁就能执行&#xff0c;谁没拿到只能等待锁释放。 1. 修饰实例方法&#xff08;锁当前实例&…...

YOLO目标检测算法

文章目录 前言一、目标检测算法简介1、传统目标检测算法&#xff08;1&#xff09;R-CNN算法简介&#xff08;2&#xff09;Fast R-CNN算法简介&#xff08;3&#xff09;Faster R-CNN算法简介 2、目标检测中的算法设计范式&#xff08;1&#xff09;one-stage&#xff08;2&am…...

【官方题解】StarryCoding 入门教育赛 2 | acm | 蓝桥杯 | 新手入门

比赛传送门&#xff1a; 本场比赛开始时题面存在一些问题&#xff0c;私密马赛&#xff01; A.池化【入门教育赛】 根据题目所给公式计算即可。 #include "bits/stdc.h"signed main() {int t; std::cin >> t;while (t --) {int l, k, s, p; std::cin >&…...

《让歌声跨越山海:Flutter借助Agora SDK实现高质量连麦合唱》

对于Flutter开发者而言&#xff0c;借助Agora SDK实现这一功能&#xff0c;不仅能为用户带来前所未有的社交体验&#xff0c;更是在激烈的市场竞争中脱颖而出的关键。 Agora SDK作为实时通信领域的佼佼者&#xff0c;拥有一系列令人瞩目的特性&#xff0c;使其成为实现高质量连…...

1.3.2 linux音频PulseAudio详细介绍

PulseAudio 是一个在 Linux 及其他类 Unix 操作系统中广泛使用的声音服务器&#xff08;Sound Server&#xff09;&#xff0c;它为不同的音频应用程序提供了一种中间层&#xff0c;以方便管理和控制音频流。下面将详细介绍 PulseAudio 的相关内容&#xff0c;包括其基本概念、…...

8.1.Kubernetes进阶

目录 一、Kubernetes核心原理深度解析 架构设计精髓 • 控制平面组件&#xff08;API Server、etcd、Controller Manager、Scheduler&#xff09;协作流程 • 数据平面&#xff08;kubelet、容器运行时、CNI/CSI插件&#xff09;核心工作机制 API对象与声明式模型 • CRD&…...

electron 结合 react(cra创建的) 创建桌面应用和打包桌面应用

我说一下 react 结合 electron 如果打包和使用&#xff0c;以及其中可能会遇到的问题&#xff0c;这里只做简单功能的演示 我们先通过 cra 创建一个 react 项目&#xff0c;然后安装相关依赖&#xff0c;之后启动 npx create-react-app react_electron cd react_electron np…...

C++23 views::chunk_by (P2443R1) 详解

文章目录 引言C23 范围库概述范围视图&#xff08;Range Views&#xff09;范围算法&#xff08;Range Algorithms&#xff09;范围适配器&#xff08;Range Adapters&#xff09; std::views::chunk_by 介绍基本概念特性使用场景 示例代码简单示例自定义谓词示例 总结 引言 在…...

MySQL核心内容【持续更新中】

MySQL核心内容 文章目录 MySQL核心内容1.MySQL核心内容目录2.MySQL知识面扩展3.MySQL安装4.MySQL配置目录介绍Mysql配置远程ip连接 5.MySQL基础1.MySQL数据类型1.数值类型2.字符串类型3.日期和时间类型4.enum和set 2.MySQL运算符1.算数运算符2.逻辑运算符3.比较运算符 3.MySQL完…...

【高级IO】多路转接之单线程Reactor

这里写目录标题 一.Epoll的两种工作模式二.单线程Reactor1.Connection模块2.Reactor服务器模块2.1初始化Init2.2启动循环服务器Loop2.3事件派发Dispatcher2.4连接管理器Accepter2.5事件管理器Receiver2.6发送管理器Sender 3.上层业务模块定制协议业务处理 代码 一.Epoll的两种工…...

基于设备指纹识别的反爬虫技术:给设备办 “身份证”

传统的封禁 IP、验证码等反爬虫手段已逐渐失效&#xff0c;基于设备指纹识别的反爬虫技术应运而生&#xff0c;成为守护数据安全的新防线。它如同给每个设备办一张独一无二的 “身份证”&#xff0c;精准区分正常用户与爬虫工具。 一、基础参数采集&#xff1a;构建设备指纹的…...

公开模型一切,优于DeepSeek-R1,英伟达开源Llama-Nemotron家族

在大模型飞速发展的今天&#xff0c;推理能力作为衡量模型智能的关键指标&#xff0c;更是各家 AI 企业竞相追逐的焦点。 但近年来&#xff0c;推理效率已成为模型部署和性能的关键限制因素。 基于此&#xff0c;英伟达推出了 Llama-Nemotron 系列模型&#xff08;基于 Meta …...

CI/CD面试题及答案

一、CI/CD 基础概念 1. 什么是 CI/CD&#xff1f;CI 和 CD 的区别是什么&#xff1f; 答案&#xff1a; CI&#xff08;持续集成&#xff09;&#xff1a;开发人员提交代码后&#xff0c;自动构建并运行测试&#xff0c;确保代码集成无冲突。CD&#xff08;持续交付 / 部署&am…...

解决 Ubuntu DNS 无法解析问题(适用于虚拟机 长期使用)

解决 Ubuntu DNS 无法解析问题 在使用 Ubuntu 虚拟机&#xff08;尤其是在国内&#xff09;时&#xff0c;经常会遇到这样的错误&#xff1a; Temporary failure resolving cn.archive.ubuntu.com但是此时又能成功 ping 通 IP&#xff0c;这说明网络是正常的&#xff0c;问题…...

如何通过C# 获取Excel单元格的数据类型

在处理 Excel 文件时&#xff0c;了解单元格的数据类型有助于我们正确地解析和处理数据。Free Spire.XLS 是一款功能强大且免费的.NET 组件&#xff0c;支持高效地操作 Excel 文件&#xff0c;包括读取单元格类型。本文将详细介绍如何使用 Free Spire.XLS 来获取 Excel 单元格的…...

Spring Boot初级教程:从零搭建企业级Java应用

一、Spring Boot是什么?为什么学它? 定义:Spring Boot是Spring框架的轻量级快速开发工具,基于“约定优于配置”原则,简化Spring应用的搭建与部署。核心优势: 零配置起步:内置Tomcat/Jetty,无需手动部署Web服务器。自动装配:自动扫描依赖、注入Bean,减少XML/注解冗余代…...

IBM BAW(原BPM升级版)使用教程第六讲

一、事件&#xff1a;Undercover Agent 在 IBM Business Automation Workflow (BAW) 中&#xff0c;Undercover Agent (UCA) 是一个非常独特和强大的概念&#xff0c;旨在实现跨流程或系统的事件处理和触发机制。Undercover Agent 主要用于 事件驱动的流程自动化&#xff0c;它…...

[250509] x-cmd 发布 v0.5.11 beta:x ping 优化、AI 模型新增支持和语言变量调整

目录 X-CMD 发布 v0.5.11 beta&#x1f4c3;Changelog&#x1f9e9; ping&#x1f9e9; openai&#x1f9e9; gemini&#x1f9e9; asdf&#x1f9e9; mac✅ 升级指南 X-CMD 发布 v0.5.11 beta &#x1f4c3;Changelog &#x1f9e9; ping 调整 x ping 默认参数为 bing.com&a…...

Web前端VSCode如何解决打开html页面中文乱码的问题(方法2)

Web前端—VSCode如何解决打开html页面中文乱码的问题&#xff08;方法2&#xff09; 1.打开VScode后&#xff0c;依次点击 文件 >> 首选项 >> 设置 2.打开设置后&#xff0c;依次点击 文本编辑器 >> 文件&#xff08;或在搜索框直接搜索“files.autoGuessEnc…...

打造专属AI好友:小智AI聊天机器人详解

打造专属AI好友&#xff1a;小智AI聊天机器人详解 在当下的科技热潮中&#xff0c;AI正迅速改变着我们的生活&#xff0c;成为了科技领域的新宠。而今&#xff0c;借助开源项目的力量&#xff0c;你可以亲手打造一个智能小助手——小智AI聊天机器人。它不仅是一个技术探索的窗…...

Spring,SpringMVC,SpringBoot,SpringCloud的区别

Spring Spring 是一个基础框架&#xff0c;为 Java 应用提供了 IoC&#xff08;控制反转&#xff09;和 AOP&#xff08;面向切面编程&#xff09;功能。其主要特点如下&#xff1a; IoC 容器&#xff1a;借助依赖注入&#xff0c;降低了组件间的耦合度。AOP 支持&#xff1a…...

从投入产出、效率、上手难易度等角度综合对比 pytest 和 unittest 框架

对于选择python作为测试脚本开发的同学来说&#xff0c;pytest和python unittest是必需了解的两个框架。那么他们有什么区别&#xff1f;我们该怎么选&#xff1f;让我们一起来了解一下吧&#xff01; 我们从投入产出、效率、上手难易度等角度综合对比 pytest 和 unittest 框架…...

无人机电池储存与操作指南

一、正确储存方式 1. 储存电量 保持电池在 40%-60% 电量&#xff08;单片电压约3.8V-3.85V&#xff09;存放&#xff0c;避免满电或空电长期储存。 满电存放会加速电解液分解&#xff0c;导致鼓包&#xff1b;**空电**存放可能引发过放&#xff08;电压低于3.0V/片会永久…...

CSS实现图片垂直居中方法

html <div class"footer border-top-row"><div class"footer-row"><span class"footer-row-col01">制单人&#xff1a;{{ printData[pageIndex - 1].rkMaster.makerName}}<img :src"getPersonSignImgSrc(printData[pa…...