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

Docker Swarm全解析:实现微服务高可用与故障转移的秘密武器

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

🏅个人专栏:《Docker入门到精通》 《k8s入门到实战》🏅

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

目录

一、基本概念和介绍

1、Docker Swarm 是什么,它与 Docker 的关系

2、Docker Swarm 的架构和工作原理

3、 docker swarm 和k8s的区别

3.1、设计和架构 

3.2、功能和扩展性

 3.3、部署和管理

3.4、社区和生态

二、安装和配置

1、安装 Docker Engine

2、初始化Swarm集群

3、添加节点到Swarm集群

4、网络设置

三、服务管理

1、创建服务

2、扩展服务

3、缩减服务 

 4、删除服务

四、节点管理 

1、查看节点状态

 2、添加新节点

3、从集群中删除节点

 五、网络管理

1、Swarm网络模型

2、创建网络

 3、将服务连接到网络

六、负载均衡和高可用性

1、Swarm如何提供负载均衡和高可用性

2、如何设计服务和网络以实现负载均衡和故障转移


一、基本概念和介绍

1、Docker Swarm 是什么,它与 Docker 的关系

Docker Swarm 是 Docker 官方提供的容器编排和集群管理工具,用于管理多个 Docker 主机上的容器化应用程序。它使得用户可以轻松地创建、部署和管理分布式应用程序,同时提供高可用性、伸缩性和容错性。

与单个 Docker 容器相比,Docker Swarm 可以管理多个 Docker 主机上的容器,有关Docker的详细介绍,请参考Docker的诞生背景与设计初衷这篇文章。

Docker  Swarm具有以下功能与特性:

  1. 容器编排: Docker Swarm 可以根据用户定义的规则和策略,在多个 Docker 主机上自动部署和管理容器,实现容器的自动化编排。
  2. 服务发现: Docker Swarm 提供了内置的服务发现机制,允许容器之间相互通信和发现,无需手动配置 IP 地址或端口映射。
  3. 负载均衡: Docker Swarm 支持负载均衡功能,可以将流量均匀地分配到多个容器实例之间,提高应用程序的性能和可用性。
  4. 伸缩性: Docker Swarm 允许根据实际需求动态地扩展或缩减容器实例的数量,以应对流量的变化和负载的增减。
  5. 容错性: Docker Swarm 提供了容器的高可用性和容错性机制,可以自动重新启动失败的容器实例,并确保应用程序的持续可用性。

Docker Swarm 是 Docker 公司推出的一个独立项目,作为 Docker 生态系统的一部分,与 Docker Engine(Docker 容器运行时)密切相关。通过 Docker Engine API,Docker Swarm 可以与 Docker 主机进行通信和交互,实现容器的管理和编排。

Docker Swarm 是 Docker 公司为了满足容器化应用程序在生产环境中的需求而开发的一个容器编排和集群管理工具,旨在简化容器化应用程序的部署、管理和扩展。

2、Docker Swarm 的架构和工作原理

架构:

  1. Manager 节点: Swarm 集群中的一个或多个节点被指定为 Manager 节点,负责集群的管理和控制。Manager 节点维护集群的状态信息、调度容器、处理用户请求等任务。
  2. Worker 节点: Worker 节点是 Swarm 集群中的工作节点,负责运行容器实例。Worker 节点接收来自 Manager 节点的任务分配,并执行相应的容器操作。
  3. Raft 协议: Swarm 使用 Raft 一致性算法来维护集群的状态一致性。Raft 协议用于选举 Manager 节点的 Leader,并确保 Manager 节点之间的状态信息同步。

工作原理: 

  1. 节点加入: 新的节点可以通过加入 Swarm 集群来成为 Swarm 的一部分。节点加入过程中,Manager 节点将会指派其角色(Manager 或 Worker)并分配相应的任务。
  2. 服务定义: 用户通过定义服务来描述容器化应用程序的架构和配置。服务可以包含容器映像、部署配置、网络配置等信息。
  3. 调度策略: Manager 节点根据用户定义的服务和调度策略,在集群中选择合适的节点来部署容器实例。调度策略可以是全局调度(在所有节点上运行)或约束调度(根据节点的标签或资源限制进行调度)。
  4. 容器编排: Manager 节点负责对容器进行编排和管理,包括创建、启动、停止、重启容器实例等操作。它还负责监控容器的状态,并在需要时进行故障恢复和自动扩展。
  5. 服务发现和负载均衡: Swarm 提供了内置的服务发现和负载均衡机制,允许容器之间相互通信和发现,无需手动配置 IP 地址或端口映射。Swarm 还支持负载均衡,可以将流量均匀地分配到多个容器实例之间。
  6. 自动扩展和容错: Swarm 允许根据实际需求动态地扩展或缩减容器实例的数量,以应对流量的变化和负载的增减。它还提供了容器的高可用性和容错性机制,可以自动重新启动失败的容器实例,并确保应用程序的持续可用性。

3、 docker swarm 和k8s的区别

Docker Swarm 和 Kubernetes(通常简称为 k8s)是两种不同的容器编排平台,它们有一些相似之处,但也有很多不同点。

3.1、设计和架构 

  • Docker Swarm: Docker Swarm 是 Docker 公司提供的官方容器编排工具,旨在简化容器集群的管理和部署。它是 Docker 引擎的一部分,与 Docker Engine 集成度高,更易于上手和部署。
  • Kubernetes: Kubernetes 是由 Google 开源的容器编排平台,是一个更为复杂和强大的系统,可以用于自动化部署、扩展和管理容器化应用程序。它具有更丰富的功能和更复杂的架构,适用于大型和复杂的容器集群。

3.2、功能和扩展性

  • Docker Swarm: Docker Swarm 提供了一组基本的容器编排功能,包括服务发现、负载均衡、自动扩展和滚动更新等。它的设计相对简单,适合于小型和中型规模的容器集群。
  • Kubernetes: Kubernetes 提供了更丰富和灵活的功能,包括自动伸缩、服务发现、负载均衡、容错和滚动更新等。它支持更复杂的应用场景和更大规模的容器集群,适合于企业级和生产环境的部署。

 3.3、部署和管理

  • Docker Swarm: Docker Swarm 的部署和管理相对简单,适合于小型团队和初学者。它与 Docker Engine 集成度高,易于使用和维护。
  • Kubernetes: Kubernetes 的部署和管理相对复杂,需要更多的配置和学习成本。但它提供了更强大的功能和更灵活的扩展性,适合于大型团队和复杂的生产环境。

3.4、社区和生态

  • Docker Swarm: Docker Swarm 的社区相对较小,但作为 Docker 公司的官方产品,得到了广泛的支持和关注。
  • Kubernetes: Kubernetes 的社区非常活跃,拥有庞大的用户群体和丰富的生态系统。它被广泛应用于各种行业和领域,得到了众多厂商和组织的支持和贡献。

二、安装和配置

环境:

1、安装 Docker Engine

※这是运行 Docker Swarm 的基础

如果未安装docker,请参考在CentOS系统中轻松安装和配置Docker指南这篇文章,这里不再过多赘述。

2、初始化Swarm集群

[root@swarm ~]# docker swarm init --advertise-addr 192.168.40.120

docker swarm init:这个命令初始化了一个新的 Docker Swarm 集群,并将当前节点设置为 Swarm 的 Manager 节点。

--advertise-addr 192.168.40.120:这个参数指定了节点的广播地址,即其他节点和服务将使用此地址与当前节点通信。在一个多节点的 Swarm 集群中,节点需要知道如何与其他节点进行通信,广播地址就是用来实现这个目的的。

查看集群当前状态

[root@swarm ~]# docker node ls

3、添加节点到Swarm集群

在两台node节点上执行 

[root@node2 ~]# docker swarm join --token SWMTKN-1-395np33k9100m0dr34i2bua1giph6udkj2ziai7ca3kfi4efne-7zp1gxjtvuhd2480m0v9f9nkh 192.168.40.120:2377

※ token和IP要填写自己的,千万不要复制笔者的

回到swarm节点查看集群状态

[root@swarm ~]# docker node ls

4、网络设置

  • 使用 Docker 内置网络: Docker Swarm 集群默认使用 Docker 内置的 overlay 网络模式来连接容器。可以使用 docker network create 命令创建自定义的 overlay 网络,然后在服务配置中指定使用该网络。
  • 自定义网络: 使用第三方的网络插件来创建自定义的网络,例如 Calico、Weave 等。这些插件可以提供更丰富的网络功能和管理选项。
  • 网络策略: 配置网络策略来限制容器之间的通信,例如使用标签和网络策略来限制容器访问特定的网络服务或资源。

三、服务管理

1、创建服务

在swarm节点上执行

[root@swarm ~]# docker service create --name my-service --replicas 1 -p 80:80 nginx:latest

--name my-service:指定服务的名称为 my-service。
--replicas 3:指定要启动的副本数量为 3 个,即在 Swarm 集群中启动 3 个相同的容器实例。
-p 80:80:将容器内部的 80 端口映射到主机的 80 端口,以便外部可以访问服务。
nginx:latest:指定容器映像为 nginx,并使用最新的版本。
执行该命令后,Docker Swarm 将会在集群中启动一个名为 my-service 的 Nginx 容器实例 

查看服务

[root@swarm ~]# docker service ls

查看更详细的信息

[root@swarm ~]# docker service inspect --pretty my-service 

2、扩展服务

在Swarm节点执行

[root@swarm ~]# docker service scale my-service=3

my-service 是要扩展的服务的名称,而 3 则是希望该服务的副本数量达到的目标值。

3、缩减服务 

[root@swarm ~]# docker service scale my-service=1

 4、删除服务

[root@swarm ~]# docker service rm my-service

四、节点管理 

1、查看节点状态

[root@swarm ~]# docker node ls

# 这个命令将列出 Swarm 集群中的所有节点,并显示它们的状态、角色、节点 ID、主机名、版本等信息。

 2、添加新节点

要将新节点添加到 Docker Swarm 集群中,首先需要准备好要加入的新节点,并确保它们满足集群的要求和配置

  1. 在新节点上安装 Docker Engine,确保版本与 Swarm 集群中的其他节点兼容。
  2. 加入 Swarm 集群, 在新节点上执行 docker swarm join 命令,将新节点加入到 Swarm 集群中。你需要知道 Swarm 集群的地址和令牌。
docker swarm join --token <TOKEN> <SWARM_MANAGER_IP>:2377
  • <TOKEN> 是用于加入 Swarm 集群的令牌,你可以通过 docker swarm join-token worker 或 docker swarm join-token manager 在集群中的任意节点上获取。
  • <SWARM_MANAGER_IP> 是 Swarm 集群中任一 Manager 节点的 IP 地址 。

3、从集群中删除节点

要从 Docker Swarm 集群中删除节点,需要执行以下步骤

  1. 查看节点列表: 首先,使用 docker node ls 命令查看当前 Swarm 集群中的节点列表,确定要删除的节点的 ID 或名称。
  2. 标记节点不可用(可选): 如果要删除的节点还在运行服务,可以使用 docker node update --availability drain <NODE_ID> 命令将节点标记为不可用。这将使 Swarm 在删除节点之前从该节点上迁移服务到其他节点上。
  3. 从集群中删除节点: 使用 docker node rm <NODE_ID> 命令将节点从 Swarm 集群中删除。请注意,删除节点会使该节点上的服务停止运行,并且服务可能会在其他节点上重新分配。

删除节点上运行的服务

[root@swarm ~]# docker node update --availability drain iy4blmqepvldb4un4yr7kwedx

 从集群删除节点

[root@swarm ~]# docker node rm iy4blmqepvldb4un4yr7kwedx --force

 五、网络管理

1、Swarm网络模型

Docker Swarm 使用了与 Docker Engine 相似的网络模型,但也有一些特定的方面与其不同。下面是 Docker Swarm 的网络模型的一些关键特点:

1. Overlay 网络

  • 默认网络模式: Docker Swarm 使用 overlay 网络模式作为默认的网络模式,这允许容器在整个 Swarm 集群中无缝通信。
  • 跨主机通信: Overlay 网络允许不同主机上的容器之间直接通信,无需显式端口映射或特殊配置。

2. 路由 Mesh

  • 路由 Mesh: Swarm 集群中的每个节点都维护着一个路由 Mesh,这个 Mesh 允许容器之间的跨节点通信。
  • 动态路由: 路由 Mesh 动态地更新和维护路由表,确保容器之间的通信能够顺利进行。

3. 内置服务发现和负载均衡

  • 内置服务发现: Swarm 提供内置的服务发现机制,使得容器可以通过服务名称而不是 IP 地址进行访问。
  • 内置负载均衡: Swarm 还提供了内置的负载均衡机制,可以将流量均匀地分配到多个容器实例之间。

4. 虚拟网络与子网划分

  • 虚拟网络: Swarm 允许创建虚拟网络,以便将容器划分到不同的逻辑网络中,以实现更好的隔离和管理。
  • 子网划分: 虚拟网络可以划分为多个子网,用于组织和管理容器的 IP 地址分配。

5. 外部连接和插件

  • 外部连接: Swarm 可以与外部网络连接,允许容器访问外部服务和资源。
  • 插件架构: Swarm 的网络模型支持插件架构,允许集成第三方网络插件,以满足特定的网络需求和场景。

2、创建网络

要在 Docker Swarm 中创建网络,可以使用 docker network create 命令

docker network create --driver overlay <NETWORK_NAME>

--driver overlay:指定网络驱动为 overlay,这是 Swarm 默认的网络驱动,用于实现跨主机的容器通信。

<NETWORK_NAME>:指定要创建的网络的名称。

 创建一个名为 my-network 的网络

[root@swarm ~]# docker network create --driver overlay my-network

查看网络

[root@swarm ~]# docker network ls 

 查看我们刚刚创建的网络的详细信息

[root@swarm ~]# docker network inspect my-network

 3、将服务连接到网络

[root@swarm ~]# docker service create --name my-service --network my-network nginx:latest

 --name my-service:指定服务的名称为 my-service。
--network my-network:指定要连接的网络名称为 my-network。
<IMAGE>:指定要使用的容器镜像。

六、负载均衡和高可用性

1、Swarm如何提供负载均衡和高可用性

负载均衡:

  1. 服务发现: Docker Swarm 提供内置的服务发现机制,允许容器通过服务名称而不是 IP 地址进行访问。这使得容器可以在不同节点之间动态部署和移动,而不需要手动配置服务地址。
  2. 内置负载均衡器: Swarm 自动在服务背后启动负载均衡器,它将流量分配给运行服务的所有节点上的容器。这使得服务能够平滑地处理流量,无需额外的配置。
  3. 服务副本: 通过在多个节点上运行服务的副本,Swarm 可以将流量均匀地分配到这些副本之间,以提高服务的可用性和吞吐量。 

高可用性:

  1. 故障恢复: 当容器或节点发生故障时,Docker Swarm 会自动重新调度容器到可用的节点上,以确保服务的持续运行和可用性。
  2. 服务健康检查: Swarm 具有内置的服务健康检查机制,可以定期检查服务的健康状态。当服务健康状态异常时,Swarm 将自动重新启动容器或进行故障恢复操作。
  3. 节点管理: Swarm 允许集群中的节点动态加入和离开,同时提供了节点健康检查和自动缩放的功能。这使得集群可以根据需求自动调整和优化资源分配,以应对负载和故障。

2、如何设计服务和网络以实现负载均衡和故障转移

服务设计:

  1. 多副本部署: 在 Docker Swarm 中,通过创建多个副本来部署服务,确保服务的高可用性和负载均衡。你可以使用 --replicas 参数指定服务的副本数量。
  2. 健康检查: 配置服务的健康检查机制,使得 Swarm 能够定期检查服务的健康状态。如果某个副本的健康状态异常,Swarm 将会自动进行故障转移,重新调度容器到其他健康的节点上。
  3. 负载均衡器: 在服务前端引入负载均衡器,例如使用 Swarm 内置的负载均衡机制或者外部负载均衡器,以均匀地分配流量到各个服务副本中。

网络设计:

  1. Overlay 网络: 使用 Docker Swarm 中的 overlay 网络模式,实现跨节点的容器通信。这样,服务的不同副本可以跨节点之间进行通信,无需手动配置。
  2. 服务发现: 利用 Swarm 内置的服务发现机制,通过服务名称而不是 IP 地址来访问服务。这样,无论服务在集群中的哪个节点上运行,客户端都可以通过服务名称来访问服务。
  3. 网络安全: 确保网络安全,使用合适的网络策略和防火墙规则,限制对服务的访问,以防止未经授权的访问和攻击。

故障转移:

  1. 节点管理: 使用 Swarm 的节点管理功能,动态监控节点的健康状态,及时检测和处理节点的故障。当节点发生故障时,Swarm 将自动重新调度容器到其他健康的节点上。
  2. 服务监控和日志: 配置服务监控和日志系统,实时监控服务的运行状态和日志信息。这样,可以及时发现和解决服务的异常情况,提高服务的可靠性和稳定性。

🎗️🎗️🎗️以上仅是我对Docker Swarm的个人观点与见解,如果您有任何不同的看法或建议,我非常欢迎在评论区与我分享和讨论。

🚩🚩🚩对于希望深入了解Docker技术的朋友们,我诚挚地邀请您关注我的Docker专栏Docker从零到精通:实战指南。我会定期更新和分享Docker领域的最新知识、技术动态和前沿实践,希望能为您的Docker学习之旅提供有价值的参考和指导。

❤️❤️❤️最后,请允许我衷心感谢您的阅读和对本专栏的支持!您的鼓励是我持续创作的最大动力。希望我们能在Docker的学习道路上共同进步,共创辉煌!!!

相关文章:

Docker Swarm全解析:实现微服务高可用与故障转移的秘密武器

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Docker入门到精通》 《k8s入门到实战》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、基本概念和介绍 1、Docker Swarm 是什么&#xff0c;它与 …...

编码规范(前端)

文章目录 1. 文档说明1.1 编制说明1.2 名词解释 2.前端研发规范2.1 HTML编码规范2.1.1 文档类型2.1.2 语言2.1.3 元数据2.1.4 资源加载2.1.5 页面标题2.1.6 编码风格2.1.7 标签2.1.8 属性2.1.9 语义化 2.2 CSS编码规范2.2.1 文件引用2.2.2 命名-组成元素 知识点 1. 文档说明 1…...

【JavaEE进阶】部署Web项目到Linux服务器

文章目录 &#x1f343;前言&#x1f340;什么是部署&#x1f332;环境配置&#x1f6a9;数据准备&#x1f6a9;程序配置⽂件修改 &#x1f384;构建项目并打包&#x1f38b;上传Jar包到服务器,并运行&#x1f6a9;上传Jar包&#x1f6a9;运行程序&#x1f6a9;开放端口号 &…...

就业班 2401--3.1 Linux Day9--文件查找和压缩

一、文件查找与打包压缩 grep: 文件内容过滤 [rootqfedu.com ~]# grep root /etc/passwd #从/etc/passwd文件中过滤root字段 grep ^root root$ root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 查找命令 [rootqfedu.com ~]# which ls ali…...

「滚雪球学Java」:JDBC(章节汇总)

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…...

RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构

💡本篇内容:RT-DETR改进RepVGG结构:简单但功能强大的卷积神经网络架构 💡🚀🚀🚀本博客 改进源代码改进 适用于 RT-DETR 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,RT-DETR专属 应部分读者要求,新增一篇RepVGG 论文理论部分 + 原…...

C#进阶高级语法之LINQ :Lambda 表达式

C# 中的 LINQ (Language Integrated Query) 提供了一种声明性的数据查询和操作方法&#xff0c;它允许开发人员对集合、数据库等数据源进行查询和操作&#xff0c;而不需要编写复杂的循环和手动编码。Lambda 表达式与 LINQ 紧密相关&#xff0c;它提供了一种简洁的方式来定义匿…...

react hook: useCallback

useCallback的主要使用场景在于优化性能&#xff0c;并确保当传递回调函数给子组件时&#xff0c;子组件不会因为父组件的重渲染而重新创建函数。 使用场景 1.当你需要将回调函数传递给子组件时&#xff0c;使用useCallback可以确保子组件在重新渲染时不会不必要地重新创建函数…...

java面试(jvm)

JVM内存模型 细分Eden&#xff1a; java类加载过程&#xff1f;双亲委派机制&#xff1f;一个对象从加载到JVM&#xff0c;再到被GC清除过程&#xff1f; JAVA类加载器&#xff1a;AppClassLoader - ExtClassLoader - BootStrapClassLoader。每种类加载器都有他自己的加载目录…...

自动化测试摸索:python+selenium+pytest(持续更新.....)

一、环境搭建 1、python 安装 下载链接&#xff1a;Python Releases for Windows | Python.org 自己选择合适的版本下载 当下载完毕时&#xff0c;找到该安装程序&#xff1a;python-3.12.2-amd64.exe文件&#xff0c;双击启动安装向导。 为了防止C:盘文件因系统故障或者无…...

C++惯用法之RAII思想: 资源管理

C编程技巧专栏&#xff1a;http://t.csdnimg.cn/eolY7 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移资源管理权(移动语义) 4.RAII的优势和挑战 5.总…...

矢量图是什么,有哪些格式的文件

矢量图是一种图形设计中常用的图像类型&#xff0c;与我们日常见到的光栅图像&#xff08;如JPEG、PNG等&#xff09;有本质的区别。矢量图基于数学方程和几何元素&#xff08;如点、线、曲线和形状&#xff09;来表示图像&#xff0c;而不是像光栅图那样通过像素阵列来表示。这…...

Linux 设置快捷命令

以ll命令为例&#xff1a; 在 Linux 系统上&#xff0c;ll 命令通常不是一个独立的程序&#xff0c;而是 ls 命令的一个别名。 这个别名通常在用户的 shell 配置文件中定义&#xff0c;比如 .bashrc 或 .bash_aliases 文件中。 要在 Debian 上启用 ll 命令&#xff0c;你可以按…...

SpringCloudFeign远程调用

文章目录 1. Feign 是什么2. Feign 的使用2.1 引入依赖2.2 写接口2.3 服务调用方2.4 启动测试 3. Feign 日志配置4. Feign 使用优化5. 注意包扫描问题 1. Feign 是什么 Feign 是一个声明式、模板化的 HTTP 客户端&#xff0c;它是由 Netflix 开发并开源的。Feign 极大地简化了…...

Java中List、Set、Map三种集合之间的区别

Java中List、Set、Map三种集合之间的区别 1. List2. Set3. Map 在Java中&#xff0c;List、Set和Map是三种常见的集合类型&#xff0c;它们之间也有一些重要的区别&#xff1a; 1. List List是有序集合&#xff0c;可以存储重复元素。List的实现类常见有ArrayList、LinkedLis…...

SpringMVC之DispatcherServlet组件

目录 一、SpringMVC的核心处理流程二、DispatcherServlet1、init()方法2、doDispatch()方法3、AbstractAnnotationConfigDispatcherServletInitializer类 一、SpringMVC的核心处理流程 请求到达 DispatcherServlet DispatcherServlet 的请求处理&#xff1a; DispatcherServlet…...

抢商家、夺用户、比低价,抖音、快手、小红书“奇招尽出”

随着流量红利逐渐消退&#xff0c;国内电商平台之间互相内卷已成为了行业常态&#xff0c;而无论是在该领域深耕已久的淘宝、京东、拼多多等电商巨头&#xff0c;还是新跨界而来的抖音、快手、小红书等电商新秀都在不断地进行创新&#xff0c;以便为商家提供更好的服务&#xf…...

ChatGPT引领的AI面试攻略系列:AI全栈工程师篇

系列文章目录 AI全栈工程师&#xff08;本文&#xff09; 文章目录 系列文章目录一、前言二、面试题1. 基础理论与数据处理2. 机器学习3. 深度学习4. 大模型与迁移学习5. 计算机视觉6. 自然语言处理&#xff08;NLP&#xff09;7. 多模态学习8. AI生成内容&#xff08;AIGC&am…...

上位机图像处理和嵌入式模块部署(qmacvisual配置)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们谈到了qmacvisual的编译、验证码、用户登录以及流程的编辑&#xff0c;这部分都是基础工作。事实上&#xff0c;除了这些内容之外&#xf…...

EXPLAIN PLAN FOR:在Oracle中生成执行计划

目录 案例 解析 Operation类型 在Oracle中&#xff0c;可以使用 EXPLAIN PLAN FOR 命令来生成执行计划&#xff0c;然后通过 SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY(PLAN_TABLE))来查看执行计划。需要注意的是&#xff0c;这两个命令需要在同一个窗口下运…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...