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

AKS 网络深入探究:Kubenet、Azure-CNI 和 Azure-CNI(overlay)

Kubernetes 网络使您能够配置 Kubernetes 网络内的通信。部署 AKS 集群时,有三种网络模型需要考虑:

  • Kubenet 网络

KubeNet 是 AKS 中的基础网络插件。它可以被形象地比喻成大城市的地铁系统。地铁可能无法直接连接所有可能的地点(例如您的服务),但它能够到达主要区域。然后,对于更具体的连接,您需要乘坐公交车或出租车(类似于网络覆盖或路由)。

使用 KubeNet,每个 AKS 集群都会分配到自己的虚拟网络 (VNet),每个节点(虚拟机)都会从该 VNet 获取一个 IP 地址。然后,Pod 会从单独的子网中分配 IP 地址,而该子网可能无法在您的 VNet 中路由。

KubeNet 的实际用例可能是需要简单易用的 AKS 设置,并且不需要 Pod 拥有单独网络标识的中小型组织。

  • Azure 容器网络接口 (CNI) 网络

另一方面,Azure CNI 的运行方式类似于一个庞大的高速公路网络,每个容器 (Pod) 都有自己的 IP 地址,可以从外部网络访问。这就像城市中的每个家庭都有自己独特的地址,无需任何中间传输——您可以直接驾车前往目的地。

在 Azure CNI 中,每个节点和 Pod 都从 VNet 子网获取一个 IP 地址。这为每个 Pod 赋予了其自己的网络身份,这对于网络策略的创建和实施非常有益。

Azure CNI 的一个典型用例可能是具有复杂网络需求的大型企业。例如,运行多层应用程序的组织需要严格的网络隔离,并为每个服务设置单独的网络身份。

  • ​​Azure 容器网络接口 (CNI) - Overlay 网络

传统的 Azure 容器网络接口 (CNI) 会为每个 Pod 分配一个 VNet IP 地址。它会从每个节点上预先预留的 IP 地址集合或为 Pod 预留的单独子网中分配此 IP 地址。这种方法需要规划 IP 地址,并且可能导致地址耗尽,从而随着应用程序需求的增长,扩展集群变得困难。

使用 Azure CNI Overlay,集群节点将部署到 Azure 虚拟网络 (VNet) 子网中。Pod 将从逻辑上与托管节点的 VNet 不同的私有 CIDR 中分配 IP 地址。集群内的 Pod 和节点流量使用 Overlay 网络。网络地址转换 (NAT) 使用节点的 IP 地址访问集群外部的资源。此解决方案节省了大量 VNet IP 地址,并使您能够将集群扩展至更大的规模。另一个优势是,您可以在不同的 AKS 集群中重用私有 CIDR,从而扩展 Azure Kubernetes 服务 (AKS) 中容器化应用程序可用的 IP 空间。

那么,我们应该为生产环境中的 AKS(Azure Kubernetes 服务)部署选择哪种网络选项呢?让我们来一探究竟。

默认情况下,AKS 集群使用 kubenet,并且 Azure 会为您创建虚拟网络和子网。

无论您使用哪种网络模型,都可以通过以下方式之一进行部署:

  • 创建 AKS 集群时,Azure 平台可以自动创建和配置虚拟网络资源。虚拟网络和子网将在资源组中自动为您创建,并且该资源组也会由我们自己的订阅中的 Azure 资源提供程序自动创建。默认情况下,AKS 将节点资源组命名为 MC_resourcegroupname_clustername_location。
  • 我们可以手动创建和配置虚拟网络资源,并在创建 AKS 集群时连接到这些资源。我们可以在创建 AKS 时配置 Vnet 和子网。
  • 如果我们让 Azure 在创建集群时为集群创建网络资源,Azure 将在托管集群资源组中创建一个虚拟网络,该资源组包含与 AKS 托管集群关联的虚拟机和网络元素。

以下是 Azure 平台在未指定 Vnet 的情况下创建的默认网络资源的详细信息。

  • 此虚拟网络的网络范围为 10.224.0.0/12
  • 然后,在该 Vnet 中,我们将为节点创建子网,其范围为 10.224.0.0/16

Azure 创建的默认 Vnet 和子网


在详细讨论网络模型之前,让我们先了解一些有关 AKS 网络基础知识的知识。

AKS 网络基础知识


节点池 CIDR


系统节点和用户节点所在的网络。在 Azure Kubernetes 服务 (AKS) 中,相同配置的节点会被分组到节点池中。这些节点池中的节点从 VNET 的子网获取 IP 地址。所有节点池必须位于同一虚拟网络中。

对于默认 VNET,所有模型的节点池 CIDR 均为 10.224.0.0/16。

对于 Kubenet 模型,如果我们使用 Azure 自动创建的默认 VNET 和子网,节点将从系统资源组(“MC_*”组)中的 Azure 虚拟网络子网获取 IP 地址。但如果我们使用自己的 VNET 和子网,则集群节点的 IP 地址将从虚拟网络中指定的子网分配。--vnet-subnet-id 子网将为集群节点提供 IP 地址。

az aks create \
-g $RG \
-n kubenet-cluster \
--network-plugin kubenet \
--vnet-subnet-id $KUBENET_SUBNET_ID \


在 Azure CNI 和 CNI-overlay 模型中,集群节点的 IP 地址是从虚拟网络内的指定子网分配的。添加节点池时,请使用 --vnet-subnet-id 引用节点子网。

az aks nodepool add — cluster-name $clusterName -g $resourceGroup -n newnodepool \
— max-pods 250 \
— node-count 2 \
— vnet-subnet-id $nodeSubnetId
- pod-subnet-id $podSubnetId


服务 CIDR


服务 CIDR 用于将 AKS 集群中的内部服务分配给 IP 地址。此虚拟网络上或连接到此虚拟网络的任何网络元素都不应使用此范围。但是,我们可以为多个 AKS 集群重复使用相同的服务 CIDR。请使用 --service-cidr 引用服务 CIDR 范围。

az aks create \
-g $RG \
-n kubenet-cluster \
--network-plugin kubenet \
--vnet-subnet-id $KUBENET_SUBNET_ID \
--pod-cidr "10.100.0.0/16" \
--service-cidr "10.200.0.0/16"


我们可以使用任何满足以下要求的私有地址范围:

  • 不得位于集群的虚拟网络 IP 地址范围内
  • 不得与集群虚拟网络对等的任何其他虚拟网络重叠
  • 不得与任何本地 IP 重叠
  • 不得位于 169.254.0.0/16、172.30.0.0/16、172.31.0.0/16 或 192.0.2.0/24 范围内


Pod CIDR

Pod CIDR 是 Pod 获取其 IP 地址的地址池,通常与节点地址池不同。

对于 kubenet,Pod 会从逻辑上与节点 Azure 虚拟网络子网不同的地址空间接收 IP 地址。Pod 之间无法直接通信。用户定义路由 (UDR) 和 IP 转发用于跨节点 Pod 之间的连接。

使用 Azure CNI,每个 Pod 都会在 IP 子网中接收 IP 地址,并且可以直接与其他 Pod 和服务通信。与 kubenet 不同,发往同一虚拟网络中端点的流量不会被 NAT 到节点的主 IP 地址。虚拟网络内部流量的源地址是 Pod IP。虚拟网络外部的流量仍然会被 NAT 到节点的主 IP 地址。

传统 CNI 的一个缺点是,随着 AKS 集群规模的扩大,Pod IP 地址会耗尽,导致需要在更大的子网中重建整个集群。

Azure CNI 中新增的动态 IP 分配功能解决了这个问题,它通过从独立于 AKS 集群所在子网的子网分配 Pod IP 地址。--pod-subnet-id 用于指定将动态分配给 Pod 的 IP 地址所在的子网。

az aks nodepool add --cluster-name $clusterName -g $resourceGroup -n newnodepool \
--max-pods 250 \
--node-count 2 \
--vnet-subnet-id \
--pod-subnet-id


网络模型


Kubenet


Kubenet 是一个非常基础、简单的网络插件,仅适用于 Linux 系统。它本身并不实现跨节点网络或网络策略等更高级的功能。

  1. 节点从 Azure 虚拟网络子网接收 IP 地址。
  2. Pod 从逻辑上与节点 Azure 虚拟网络子网不同的地址空间接收 IP 地址。
  3. 然后配置网络地址转换 (NAT),以便 Pod 可以访问 Azure 虚拟网络上的资源。
  4. 流量的源 IP 地址将转换为节点的主 IP 地址。
  5. 这种方法减少了您需要在网络空间中为 Pod 预留的 IP 地址数量。

Azure CNI

  • Pod 和集群节点的 IP 地址将从虚拟网络中的指定子网分配。
  • 每个节点都配置了一个主 IP 地址。默认情况下,Azure CNI 会预先配置 30 个额外的 IP 地址,这些地址将分配给在该节点上调度的 Pod。
  • 我们的集群可以与您指定的 IP 地址范围一样大。
  • 配置了 Azure CNI 网络的集群需要额外规划。虚拟网络及其子网的大小必须能够容纳您计划运行的 Pod 数量以及集群的节点数量。
  • 对于与其他 Azure 服务(例如虚拟机)的互通,来自由 Azure CNI 支持的 AKS 的数据包的源地址是 Pod 的 IP 地址。因此,它增加了网络的透明度。
  • 我们无需管理用户定义的 Pod 连接路由。

Azure CNI overlay

  • 使用 Azure CNI 覆盖,集群节点将部署到 Azure 虚拟网络 (VNet) 子网中,而 Pod 将从逻辑上与托管节点的 VNet 不同的私有 CIDR 中分配 IP 地址。
  • 在覆盖网络中,只有 Kubernetes 集群节点会从子网中分配 IP。
  • 在 Azure 网络堆栈中,会为 Pod 的私有 CIDR 空间创建一个单独的路由域,从而创建一个覆盖网络,用于 Pod 之间的直接通信。
  • 与集群外部端点(例如本地和对等 VNet)的通信,通过网络地址转换 (NAB) 使用节点 IP 进行。Azure CNI 将流量的源 IP(Pod 的覆盖 IP)转换为虚拟机的主 IP 地址,从而使 Azure 网络堆栈能够将流量路由到目标。
  • 集群外部的端点无法直接连接到 Pod。您必须将 Pod 的应用程序发布为 Kubernetes 负载均衡器服务,才能使其在 VNet 上可访问。
  • 该解决方案节省了大量的 VNet IP 地址,并使您能够无缝地将集群扩展到非常大的规模。 

 Kubenet 的优势与局限性在于:

  • 减少了在网络空间中为 Pod 预留的 IP 地址数量。
  • 在设计、管理等方面比 Azure CNI 更简单。
  • kubenet 的设计需要额外的跃点,这会略微增加 Pod 通信的延迟。
  • 使用 kubenet 需要路由表和用户自定义路由,这会增加操作的复杂性。
  • 不支持 Azure 网络策略


在以下情况下使用 kubenet:

  • 您的 IP 地址空间有限。
  • 大多数 Pod 通信都在集群内部进行。
  • 您不需要高级 AKS 功能,例如虚拟节点或 Azure 网络策略。


Azure CNI 的优势与局限性在于:

  • 它允许资源的控制和管理分离。
  • Pod 获得完整的虚拟网络连接,并且可以通过其私有 IP 地址从连接的网络直接访问。
  • 需要更多 IP 地址空间。
  • 不同的团队可以管理和保护资源,这有利于安全。来自 Pod 的流量不经过 NAT,与其他资源建立通信的 Pod 可以被识别。使用 Kubenet,数据包的来源始终是节点 IP 地址。
  • 此模型需要更多规划,并且通常会导致 IP 地址耗尽,或者随着应用程序需求的增长,需要在更大的子网中重建集群。
  • 虚拟节点 (vKubelet) 仅适用于 Azure CNI
  • Windows 节点仅适用于 Azure CNI

在以下情况下使用 Azure CNI:

  • 您拥有可用的 IP 地址空间。
  • 集群外部的资源需要直接访问 Pod。
  • 大多数 Pod 通信都是与集群外部的资源进行的。
  • 您不想管理用户定义的 Pod 连接路由。
  • 您需要 AKS 高级功能,例如虚拟节点或 Azure 网络策略。


Azure CNI Overlay 的优势和局限性在于:

  • 此解决方案可节省大量 VNet IP 地址,并使您能够无缝地将集群扩展到非常大的规模。
  • 另一个优势是,Pod 私有 CIDR 可以在不同的 AKS 集群中重复使用,从而真正扩展了 AKS 中容器化应用程序可用的 IP 空间。
  • 支持 Azure 网络策略。
  • 不支持 AKS 高级功能,例如虚拟节点。
  • Overlay 只能在新集群中启用。现有(已部署)集群无法配置为使用 Overlay。


在以下情况下使用overlay:

  • 您希望扩展到大量 Pod,但 VNet 中的 IP 地址空间有限。
  • 大多数 Pod 通信都在集群内部进行。
  • 您不需要高级 AKS 功能,例如虚拟节点 

相关文章:

AKS 网络深入探究:Kubenet、Azure-CNI 和 Azure-CNI(overlay)

Kubernetes 网络使您能够配置 Kubernetes 网络内的通信。部署 AKS 集群时,有三种网络模型需要考虑: Kubenet 网络 KubeNet 是 AKS 中的基础网络插件。它可以被形象地比喻成大城市的地铁系统。地铁可能无法直接连接所有可能的地点(例如您的服…...

angular的cdk组件库

目录 一、虚拟滚动 一、虚拟滚动 <!-- itemSize相当于每个项目的高度为30px --><!-- 需要给虚拟滚动设置宽高&#xff0c;否则无法正常显示 --> <cdk-virtual-scroll-viewport [itemSize]"40" class"view_scroll"><div class"m…...

unity 使用蓝牙通讯(PC版,非安卓)

BlueTooth in pc with unity 最近接到的需求是在unity里面开发蓝牙功能,其实一开始我并不慌,因为据我所知,unity有丰富的插件可以使用,但是问题随之而来 1.unity里面无法直接与蓝牙通讯(后来找到了开启runtime一类的东西,但是我找了半天也没找到在哪里可以打开) 2.引入dll通过d…...

Feign 重试策略调整:优化微服务通信的稳定性

在微服务架构中&#xff0c;服务之间的通信是常见的场景。然而&#xff0c;网络问题、服务不稳定或临时故障都可能导致通信失败。Feign 是一个流行的声明式 REST 客户端&#xff0c;广泛用于微服务间的通信。通过合理调整 Feign 的重试策略&#xff0c;可以显著提高系统的稳定性…...

Nacos源码—5.Nacos配置中心实现分析一

大纲 1.关于Nacos配置中心的几个问题 2.Nacos如何整合SpringBoot读取远程配置 3.Nacos加载读取远程配置数据的源码分析 4.客户端如何感知远程配置数据的变更 5.集群架构下节点间如何同步配置数据 1.关于Nacos配置中心的几个问题 问题一&#xff1a;SpringBoot项目启动时如…...

【spring】Spring、Spring MVC、Spring Boot、Spring Cloud?

这些都是 Spring 家族的重要组成部分&#xff0c;但它们各自定位不同、功能层级不同&#xff0c;可以用一张表格和简要说明来帮你快速理解&#xff1a; 一、四者概念和区别表格 名称功能定位主要用途/核心功能是否依赖其他部分Spring基础框架&#xff08;核心&#xff09;IOC、…...

RDD的处理过程

1. 创建RDD 通过SparkContext的parallelize方法从本地集合创建RDD。 从外部存储&#xff08;如HDFS、本地文件系统&#xff09;加载数据创建RDD。 通过对已有RDD进行转换操作生成新的RDD。 2. 转换操作&#xff08;Transformation&#xff09; 对RDD进行操作&#xff08;如…...

Vue3 中当组件嵌套层级较深导致 ref 无法直接获取子组件实例时,可以通过 provide/inject + 回调函数的方式实现子组件方法传递到父组件

需求&#xff1a;vue3中使用defineExposeref调用子组件方法报错不是一个function 思路&#xff1a;由于组件嵌套层级太深导致ref失效&#xff0c;通过provide/inject 回调函数来实现多层穿透 1. 父组件提供「方法注册函数」 父组件通过 provide 提供一个用于接收子组件方法…...

如何在Ubuntu上安装NVIDIA显卡驱动?

作者&#xff1a;算力魔方创始人/英特尔创新大使刘力 一&#xff0c;前言 对于使用NVIDIA显卡的Ubuntu用户来说&#xff0c;正确安装显卡驱动是获得最佳图形性能的关键。与Windows系统不同&#xff0c;Linux系统通常不会自动安装专有显卡驱动。本文将详细介绍在Ubuntu系统上安…...

Linux 修改bond后网关不生效的问题

1.前言 bond原本是OK的&#xff0c;但是某个同事变更后&#xff0c;发现网关路由存在问题 #查看路由&#xff0c;默认网关信息&#xff0c;发现没有配置的网关信息 ip route show #排查/etc/sysconfig/network-script/下面的ifcfg-* 文件没有问题 1.重启network 服务 systemct…...

chili调试笔记13 工程图模块 mesh渲染 mesh共享边显示实现

把模型投影到工程图要用什么模块当工程图的画板&#xff0c;最后要导出dxf的 three是怎么读取他的3d数据的 mesh不是三角形吗怎么渲染出四边形面的 我想看到三角形的边怎么设置 ai让我干嘛我就干嘛 static getAllEdges(face: { positions: Float32Array; indices: Uint16Array …...

Eclipse 插件开发 5 编辑器

Eclipse 插件开发 5 编辑器 1 编辑器描述2 自定义编辑器2.1 注册插件(plugin.xml)2.2 继承 EditorPart2.3 实现 IEditorInput2.4 打开编辑器 1 编辑器描述 Eclipse 的 UI 基于 Workbench&#xff08;工作台&#xff09;模型&#xff0c;Editor Area 是 Workbench 的核心区域之…...

Java消息队列性能优化实践:从理论到实战

Java消息队列性能优化实践&#xff1a;从理论到实战 1. 引言 在现代分布式系统架构中&#xff0c;消息队列&#xff08;Message Queue&#xff0c;MQ&#xff09;已经成为不可或缺的中间件组件。它不仅能够实现系统间的解耦&#xff0c;还能提供异步通信、流量削峰等重要功能…...

Android学习总结之Binder篇

一、Binder 跨进程通信底层实现 Q1&#xff1a;Binder 如何实现一次完整的跨进程方法调用&#xff1f;请描述内核态与用户态交互流程 高频错误&#xff1a;仅回答 “通过 AIDL 生成代码”&#xff0c;未涉及 Binder 驱动三层协作模型 满分答案&#xff08;附内核交互流程图&a…...

very_easy_sql(SSRF+SQL注入)

题目有一行提示&#xff1a; you are not an inner user, so we can not let you have identify~&#xff08;你不是内部用户&#xff0c;所以我们不能让你进行身份验证&#xff09;联想到可能存在SSRF漏洞&#xff0c;一般情况下&#xff0c;SSRF攻击的目标是外网无法访问的内…...

MCP认证全解析:从零到微软认证专家

MCP认证全解析&#xff1a;从零到微软认证专家 什么是MCP认证&#xff1f; Microsoft Certified Professional&#xff08;MCP&#xff09;是由微软官方颁发的技术认证&#xff0c;旨在验证IT从业者在微软技术栈&#xff08;如Azure、Windows Server、SQL Server等&#xff0…...

leetcode刷题日记——反转链表

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 题目要求将链表中指定位置的部分进行翻转反转的部分&#xff0c;其实可以看做使用头插法插入链表运行如下&#xff1a; struct ListNode* reverseBetween(struct ListNode* head, int left, int right) {struct ListNode te…...

【day04】Fibonacci数列 | 单词搜索 | 杨辉三角

1.Fibonacci数列 题目链接&#xff1a; Fibonacci数列_牛客题霸_牛客网 解题思路&#xff1a; 求斐波那契数列的过程中&#xff0c;判断⼀下&#xff1a;何时n会在两个fib数之间。 #include <bits/stdc.h>using namespace std;#define int long longsigned main() {i…...

win11指定Microsoft Print To PDF的输出路径(电子书djvu转pdf输出路径)

首先&#xff0c;看一张效果图 前面都是废话&#xff0c;解决方法看最后&#xff0c;看最后 Microsoft Print To PDF功能作为Windows操作系统内置的一项便捷工具&#xff0c;为用户提供了将任何可打印内容高效转换为PDF格式的能力。本文深入探讨了Microsoft Print To PDF的工作…...

第3章 数据和C

目录 3.1 示例程序3.2 变量与常量数据3.3 数据&#xff1a;数据类型关键字3.4 C数据类型3.4.1 int类型3.4.2 其它整数类型3.4.3 使用字符&#xff1a;char类型3.4.4 _Bool类型3.4.5 可移植的类型&#xff1a;inttypes.h3.4.6 float、double和long double类型3.4.7 复数和虚数类…...

迁移学习:如何加速模型训练和提高性能

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4-turbo模型生成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认其准…...

Kotlin zip 函数的作用和使用场景

1. zip 函数的作用 zip 是 Kotlin 集合操作中的一个函数&#xff0c;用于将两个集合按照索引一一配对&#xff0c;生成一个新的 List<Pair<T, R>> 集合。 作用&#xff1a;将两个集合的元素按位置组合成键值对&#xff08;Pair&#xff09;。返回值&#xff1a;一…...

通用分布式锁组件

Redisson的分布式锁使用并不复杂&#xff0c;基本步骤包括&#xff1a; 1&#xff09;创建锁对象 2&#xff09;尝试获取锁 3&#xff09;处理业务 4&#xff09;释放锁 但是&#xff0c;除了第3步以外&#xff0c;其它都是非业务代码&#xff0c;对业务的侵入较多&#x…...

FastDFS,分布式文件存储系统,介绍+配置+工具类

FastDFS 什么是分布式文件存储系统 随着文件逐渐增多&#xff0c;单台计算机已经存储不下这么多数据&#xff0c;需要用多台计算机存储不同的数据或进行备份&#xff0c;这样就需要有一个管理系统管理不同的计算机节点&#xff0c;这就是分布式管理系统。 使用分布式管理系统的…...

查询nvidia边缘设备的软硬件版本jetson_release

通过jetson_release命令可查询nvidia边缘设备的软硬件版本 nvidianvidia-desktop:~/leo/test_onnx$ jetson_release Software part of jetson-stats 4.2.12 - (c) 2024, Raffaello Bonghi Model: NVIDIA Orin Nano Developer Kit - Jetpack 5.1.1 [L4T 35.3.1] NV Power Mode[…...

[学习]RTKLib详解:ppp.c与ppp_ar.c

文章目录 RTKLib详解&#xff1a;ppp.c与ppp_ar.cPart A&#xff1a; ppp.c一、整体作用与工作流程二、核心函数说明1. pppos2. res_ppp3. tide_solid4. prectrop5. corrmeas6. udbias_ppp 三、数学原理补充四、代码特点 Part B: ppp_ar.c一、整体作用与工作流程分析二、函数功…...

ntdll!LdrpSnapThunk函数分析之LdrpNameToOrdinal函数返回之后得到函数地址

第一部分&#xff1a; OrdinalNumber LdrpNameToOrdinal( ImportString, ExportDirectory->NumberOfNames, DllBase, NameTableBase, …...

LeetCode 267:回文排列 II —— Swift 解法全解析

文章目录 摘要描述题解答案题解代码分析统计字符频率判断是否可能构成回文构建半边字符数组回溯生成半边排列 示例测试及结果时间复杂度空间复杂度实际使用场景&#xff1a;回文排列在真实项目里能干啥&#xff1f;文本处理、数据清洗类系统游戏开发&#xff1a;名字合法性验证…...

【渗透测试】命令执行漏洞的原理、利用方式、防范措施

文章目录 命令执行漏洞的原理、利用方式、防范措施一、原理**1. 定义与触发条件****2. 攻击链流程图** 二、利用方式**1. 利用手法与分类**(1) 系统命令注入(2) 代码执行漏洞(3) 框架漏洞利用 **2. 案例** 三、防范措施**1. 输入过滤与验证****2. 禁用危险函数****3. 安全开发*…...

旧版谷歌浏览器Chrome v116.0.5845.141下载

63位和32位均有&#xff1a; https://bbs.pcbeta.com/forum.php?modviewthread&tid1978299 https://www.31du.cn/open/google-chrome-v116-0-5845-141.html v116.0.5845.141的win32位版本&#xff1a; https://www.cr173.com/soft/435106.html v116.0.5845.97版本&…...

行业洞察| 当大模型开始协同工作:多智能体系统的崛起与挑战

你有没有想过&#xff0c;如果一群AI智能体拉了个工作群&#xff0c;它们会聊些什么&#xff1f; 程序员AI&#xff1a;“这段代码我来写&#xff01;” 产品经理AI&#xff1a;“需求还没说完呢&#xff01;” 辩论家AI&#xff1a;“我觉得这个方案不行&#xff01;” 吃瓜…...

The Action Replay Process

Preface A commonly used inequality − x > ln ⁡ ( 1 − x ) , 0 < x < 1 -x > \ln(1 - x), \quad 0 < x < 1 −x>ln(1−x),0<x<1 Proof: Let f ( x ) ln ⁡ ( 1 − x ) x f(x) \ln(1 - x) x f(x)ln(1−x)x, for 0 < x < 1 0 < …...

Python基于Django的病人信息管理系统及安全策略分析(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

YOLOv1:开创实时目标检测新纪元

一、引言 在计算机视觉领域&#xff0c;目标检测一直是重要的研究方向&#xff0c;广泛应用于自动驾驶、安防监控、智能机器人等场景。2016年&#xff0c;Joseph Redmon等人提出的YOLO&#xff08;You Only Look Once&#xff09;v1模型&#xff0c;以其端到端、单阶段、实时性…...

【今日三题】跳台阶扩展问题(找规律) / 包含不超过两种字符的最长子串 / 字符串的排列(回溯—全排列)

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 跳台阶扩展问题(找规律)包含不超过两种字符的最长子串(字符串哈希)字符串的排列(回溯—全排列) 跳台阶扩展问题(找规律) 跳台阶扩…...

MySQL 中常见的日志

1. MySQL 中常见的日志有哪些&#xff1f; MySQL 主要包含以下几种日志&#xff1a; 错误日志&#xff08;Error Log&#xff09;&#xff1a;记录 MySQL 服务器的启动和停止过程中的信息&#xff0c;以及运行过程中出现的错误或警告信息。默认情况下&#xff0c;错误日志文件…...

ubuntu nobel + qt5.15.2 设置qss语法识别正确

问题展示 解决步骤 首选项里面的高亮怎么编辑选择都没用。如果已经有generic-highlighter和css.xml&#xff0c;直接修改css.xml文件最直接&#xff01; 在generic-highlighter目录下找到css.xml文件&#xff0c;位置是&#xff1a;/opt/Qt/Tools/QtCreator/share/qtcreator/…...

线程池技术

线程池基本概念 线程池就是在任务还没有到来前&#xff0c;预先创建一定数量的线程放入空闲列表。这些线程都是处于阻塞状态&#xff0c;不消耗CPU&#xff0c;但占用较小的内存空间。 当新任务到来时&#xff0c;缓冲池选择一个空线程&#xff0c;把任务传入此线程中运行&…...

matlab App自动化安装和卸载

这个是文件mlappinstall安装和卸载的使用函数&#xff0c;并且包括运行函数。File must be a toolbox file (*.mlappinstall) Package and Share Apps — Functions matlab.apputil.createCreate or modify app project file interactively using the Package App dialog box…...

MATLAB技巧——命令行输入的绘图,中文是正常的,到了脚本(m文件)里面就变成乱码的解决方法

文章目录 文件编码&#xff08;根本性措施&#xff09;字体设置使用 sprintf 或 text 函数系统语言设置示例代码 使用mlx方法 总结 在 M A T L A B MATLAB MATLAB中&#xff0c;中文字符在命令行和脚本中的显示问题通常与字符编码设置有关。以下是一些可能导致中文乱码的原因及…...

使用OpenCV 和 Dlib 实现人脸融合技术

文章目录 引言一、技术概述二、环境准备三、关键代码解析1. 人脸关键点定义2. 获取人脸掩模3. 计算仿射变换矩阵4. 检测并提取人脸关键点5. 颜色校正 四、完整流程五、效果展示六、总结 引言 本文将介绍如何使用Python、OpenCV和dlib库实现人脸融合技术&#xff0c;将一张人脸…...

Codeforces Round 1022 (Div. 2)

Problem - A - Codeforces 看这数据量&#xff0c;算出每个排列来&#xff0c;是不现实的&#xff0c;需要找找规律 来看找规律代码 #include <bits/stdc.h> using namespace std;int main() {int t;cin >> t;while (t--){int n;cin >> n;vector<int&g…...

uniapp 震动功能实现

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在项目中有时候需要一些功能&#xff0c;比如震动 描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 在移动应用中&#xff0c;震动反馈是提升用户体验的重要方式。uniapp 提供了两种震…...

uniapp 搭配 uCharts

在插件市场导入插件到项目中 <view class"charts-box-main"> <qiun-data-charts type"area" :opts"opts" :chartData"chartData" /> </view> data&#xff08;&#…...

Kubernetes(k8s)学习笔记(八)--KubeSphere定制化安装

1执行下面的命令修改上一篇中yaml文件来实现定制化安装devops kubectl edit cm -n kubesphere-system ks-installer 主要是将devops几个配置由False改为True 然后使用下面的命令查看安装日志 kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l …...

阿里云codeup以及本地gitclone+http

cmd命令行乱码问题、解决 chcp 65001 git代码提交 git add . git commit -m init git push origin master...

Spring Boot 多数据源事务管理

在 Spring Boot 中&#xff0c;当需要操作多个数据源时&#xff0c;事务管理会变得更加复杂。因为默认的 DataSourceTransactionManager 只支持单数据源事务&#xff0c;跨数据源的事务需要使用 分布式事务&#xff08;Distributed Transaction&#xff09; 或 柔性事务&#x…...

4.系统定时器基本定时器

目录 系统定时器 系统定时器&#xff08;systick&#xff09;--内核 系统定时器结构 系统滴答定时器寄存器--内核 定时周期的确定公式 配置滴答定时器 系统定时器应用 应用1.定时器构造时间点任务&#xff0c;解决while循环阻塞问题 应用2.定时器构造精准的ms延时 应…...

lvgl多语言设置

搭建开发环境 安装node.js 安装node.js&#xff0c;点击进入官网地址 安装lv_i18n lv_i18n项目地址&#xff1a;Github&#xff1a;https://github.com/lvgl/lv_i18ngit运行命令安装lv_i18n&#xff1a;npm i lv_i18n -g。测试命令&#xff1a;lv_i18n -h 搭建过程报错 …...

ICode国际青少年编程竞赛—Python—4级训练场—复杂嵌套循环

ICode国际青少年编程竞赛—Python—4级训练场—复杂嵌套循环 icode练习时遇到卡顿没有思路时怎么办&#xff0c;题目也很难找到不会的那道题&#xff5e;针对这个问题&#xff0c;我们开发了通过“步数”、“积木行数”来快速定位到你不会的题目&#xff5e; 题目会持续更新…...