【容器云架构】确定容器网络calico最佳网络选项

news2025/1/12 8:52:06

大图


了解 Calico 支持的不同网络选项,以便您可以根据需要选择最佳选项。

价值


Calico 灵活的模块化架构支持广泛的部署选项,因此您可以选择适合您特定环境和需求的最佳网络方法。这包括使用各种 CNI 和 IPAM 插件以及底层网络类型以非覆盖或覆盖模式运行的能力,无论是否使用 BGP。

概念


如果您想全面了解可供您选择的网络,我们建议您确保熟悉并理解以下概念。如果您想跳过学习并直接获得选择和建议,您可以跳到网络选项。

Kubernetes 网络基础知识


Kubernetes 网络模型定义了一个“平面”网络,其中:

  • 每个 pod 都有自己的 IP 地址。

  • 任何节点上的 Pod 都可以在没有 NAT 的情况下与所有其他节点上的所有 Pod 通信。


这创建了一个干净、向后兼容的模型,从端口分配、命名、服务发现、负载平衡、应用程序配置和迁移的角度来看,Pod 可以被视为虚拟机或物理主机。可以使用网络策略来定义网络分段,以限制这些基本网络功能内的流量。

在此模型中,支持不同的网络方法和环境具有很大的灵活性。网络实现的具体细节取决于所使用的 CNI、网络和云提供商插件的组合。

CNI 插件


CNI(容器网络接口)是一个标准 API,它允许不同的网络实现插入 Kubernetes。每当创建或销毁 pod 时,Kubernetes 都会调用 API。有两种类型的 CNI 插件:

  • CNI 网络插件:负责在 Kubernetes pod 网络中添加或删除 pod。这包括创建/删除每个 pod 的网络接口以及将其连接/断开与网络实现的其余部分的连接。

  • CNI IPAM 插件:负责在创建或删除 Pod 时为其分配和释放 IP 地址。根据插件的不同,这可能包括为每个节点分配一个或多个 IP 地址 (CIDR) 范围,或从底层公共云网络获取 IP 地址以分配给 Pod。


云提供商集成


Kubernetes 云提供商集成是特定于云的控制器,可以配置底层云网络以帮助提供 Kubernetes 网络。根据云提供商的不同,这可能包括自动将路由编程到底层云网络中,以便它本机知道如何路由 pod 流量。

Kubenet


Kubenet 是一个非常基础的网络插件,内置在 Kubernetes 中。它不实现跨节点网络或网络策略。它通常与云提供商集成一起使用,在云提供商网络中设置路由以在节点之间或在单节点环境中进行通信。 Kubenet 与 Calico 不兼容。

覆盖网络(Overlay networks)


覆盖网络是分层在另一个网络之上的网络。在 Kubernetes 的上下文中,覆盖网络可用于处理底层网络之上节点之间的 pod 到 pod 流量,该网络不知道 pod IP 地址或哪些 pod 在哪些节点上运行。覆盖网络通过将底层网络不知道如何处理的网络数据包(例如使用 pod IP 地址)封装在底层网络知道如何处理的外部数据包(例如节点 IP 地址)中来工作。用于封装的两种常见网络协议是 VXLAN 和 IP-in-IP。

使用覆盖网络的主要优点

是它减少了对底层网络的依赖。例如,您可以在几乎任何底层网络之上运行 VXLAN 覆盖,而无需与底层网络集成或对底层网络进行任何更改。

使用覆盖网络的主要缺点是:

  • 轻微的性能影响。封装数据包的过程占用少量 CPU,数据包中用于编码封装(VXLAN 或 IP-in-IP 标头)所需的额外字节减少了可以发送的内部数据包的最大大小,进而可以意味着需要为相同数量的总数据发送更多数据包。

  • pod IP 地址不可在集群外路由。更多关于这下面!


跨子网覆盖


除了标准的 VXLAN 或 IP-in-IP 覆盖外,Calico 还支持 VXLAN 和 IP-in-IP 的“跨子网”模式。在这种模式下,在每个子网中,底层网络充当 L2 网络。在单个子网内发送的数据包不会被封装,因此您可以获得非覆盖网络的性能。跨子网发送的数据包被封装,就像普通的覆盖网络一样,减少了对底层网络的依赖(无需与底层网络集成或对底层网络进行任何更改)。

就像标准覆盖网络一样,底层网络不知道 pod IP 地址,并且 pod IP 地址不能在集群外路由。

集群外的 Pod IP 可路由性


不同 Kubernetes 网络实现的一个重要区别特征是 pod IP 地址是否可通过更广泛的网络在集群外部路由。

不可路由

如果 pod IP 地址在集群外部不可路由,那么当 pod 尝试建立到集群外部 IP 地址的网络连接时,Kubernetes 使用一种称为 SNAT(源网络地址转换)的技术来更改源 IP从 pod 的 IP 地址到托管 pod 的节点的 IP 地址。连接上的任何返回数据包都会自动映射回 pod IP 地址。因此 pod 不知道 SNAT 正在发生,连接的目的地将节点视为连接的源,而底层更广泛的网络永远不会看到 pod IP 地址。

对于相反方向的连接,集群外部的东西需要连接到一个 pod,这只能通过 Kubernetes 服务或 Kubernetes 入口来完成。集群之外的任何东西都不能直接连接到 Pod IP 地址,因为更广泛的网络不知道如何将数据包路由到 Pod IP 地址。

可路由

如果 pod IP 地址可在集群外部路由,则 pod 可以在没有 SNAT 的情况下连接到外部世界,而外部世界可以直接连接到 pod,而无需通过 Kubernetes 服务或 Kubernetes 入口。

可在集群外路由的 Pod IP 地址的优点是:

  • 为出站连接避免 SNAT 对于与现有更广泛的安全要求集成可能是必不可少的。它还可以简化操作日志的调试和可理解性。

  • 如果您有专门的工作负载,这意味着某些 pod 需要无需通过 Kubernetes 服务或 Kubernetes 入口即可直接访问,那么可路由的 pod IP 在操作上可能比使用主机联网 pod 的替代方案更简单。

可在集群外路由的 Pod IP 地址的主要缺点是 Pod IP 在更广泛的网络中必须是唯一的。例如,如果运行多个集群,您将需要为每个集群中的 Pod 使用不同的 IP 地址范围 (CIDR)。当大规模运行时,或者如果企业对 IP 地址空间有其他重要的现有需求,这反过来又会导致 IP 地址范围耗尽的挑战。

什么决定了可路由性?

如果您为集群使用覆盖网络,则 pod IP 通常无法在集群外部路由。

如果您不使用覆盖网络,那么 pod IP 是否可在集群外路由取决于正在使用的 CNI 插件、云提供商集成或(对于本地)BGP 与物理网络对等的组合。

BGP


BGP(边界网关协议)是一种基于标准的网络协议,用于在网络中共享路由。它是互联网的基本组成部分之一,具有出色的扩展特性。

Calico 内置了对 BGP 的支持。在本地部署中,这允许 Calico 与物理网络(通常与架顶式路由器)对等以交换路由,从而形成一个非覆盖网络,其中 pod IP 地址可在更广泛的网络中路由,就像附加的任何其他工作负载一样到网络。

关于Calico  网络


Calico 灵活的网络模块化架构包括以下内容。

Calico CNI 网络插件

Calico CNI 网络插件使用一对虚拟以太网设备(veth pair)将 pod 连接到主机网络命名空间的 L3 路由。这种 L3 架构避免了许多其他 Kubernetes 网络解决方案中的额外 L2 桥的不必要的复杂性和性能开销。

Calico CNI IPAM 插件

Calico CNI IPAM 插件从一个或多个可配置的 IP 地址范围内为 Pod 分配 IP 地址,并根据需要为每个节点动态分配小块 IP。结果是与许多其他 CNI IPAM 插件相比,IP 地址空间使用效率更高,包括用于许多网络解决方案的主机本地 IPAM 插件。

覆盖网络模式

Calico 可以提供 VXLAN 或 IP-in-IP 覆盖网络,包括仅跨子网模式。

非覆盖网络模式

Calico 可以提供在任何底层 L2 网络或 L3 网络之上运行的非覆盖网络,该网络要么是具有适当云提供商集成的公共云网络,要么是支持 BGP 的网络(通常是具有标准 Top-of 的本地网络-机架路由器)。

网络策略执行

Calico 的网络策略执行引擎实现了 Kubernetes 网络策略的全部功能,以及 Calico 网络策略的扩展功能。这与 Calico 的内置网络模式或任何其他 Calico 兼容的网络插件和云提供商集成结合使用。

Calico 兼容的 CNI 插件和云提供商集成


除了 Calico CNI 插件和内置网络模式,Calico 还兼容许多第三方 CNI 插件和云提供商集成。

亚马逊 VPC CNI

Amazon VPC CNI 插件从底层 AWS VPC 分配 pod IP,并使用 AWS 弹性网络接口提供 VPC 原生 pod 网络(可在集群外路由的 pod IP)。它是 Amazon EKS 中使用的默认网络,使用 Calico 执行网络策略。

Azure CNI

Azure CNI 插件从底层 Azure VNET 分配 pod IP 配置 Azure 虚拟网络以提供 VNET 本机 pod 网络(可在群集外部路由的 pod IP)。它是 Microsoft AKS 中使用的默认网络,使用 Calico 执行网络策略。

Azure 云提供者 (Azure cloud provider)

Azure 云提供商集成可用作 Azure CNI 插件的替代方案。它使用主机本地 IPAM CNI 插件来分配 pod IP,并使用相应的路由对底层 Azure VNET 子网进行编程。Pod IP 只能在 VNET 子网内路由(这通常等同于它们在集群外不可路由)。

谷歌云提供者(Google cloud provider)

Google 云提供商集成使用主机本地 IPAM CNI 插件来分配 pod IP,并对 Google 云网络 Alias IP 范围进行编程,以在 Google Cloud 上提供 VPC 原生 pod 网络(可在集群外路由的 pod IP)。它是 Google Kubernetes Engine (GKE) 的默认设置,使用 Calico 执行网络策略。

主机本地 IPAM

主机本地 CNI IPAM 插件是一个常用的 IP 地址管理 CNI 插件,它为每个节点分配一个固定大小的 IP 地址范围(CIDR),然后从该范围内分配 pod IP 地址。默认地址范围大小为 256 个 IP 地址 (a /24),但其中两个 IP 地址保留用于特殊目的,未分配给 pod。主机本地 CNI IPAM 插件的简单性使其易于理解,但与 Calico CNI IPAM 插件相比,IP 地址空间使用效率较低。

Flannel

Flannel 使用从主机本地 IPAM CNI 插件获取的静态每个节点 CIDR 路由 pod 流量。Flannel 提供了许多网络后端,但主要用于其 VXLAN 覆盖后端。Calico CNI 和 Calico 网络策略可以与 flannel 和主机本地 IPAM 插件相结合,为 VXLAN 网络提供策略执行。这种组合有时被称为“运河”。

注意:Calico 现在内置了对 VXLAN 的支持,为了简单起见,我们通常建议优先使用 Calico+Flannel 组合。

网络选项


本地


Calico on-prem 最常见的网络设置是使用 BGP 与物理网络(通常是架顶路由器)对等的非覆盖模式,以使 pod IP 可在集群外部路由。(当然,如果需要,您可以配置本地网络的其余部分以限制集群外部 pod IP 路由的范围。)此设置提供了丰富的高级 Calico 功能,包括广告 Kubernetes 服务 IP 的能力(集群 IP 或外部 IP),以及在 pod、命名空间或节点级别控制 IP 地址管理的能力,以支持与现有企业网络和安全要求集成的广泛可能性。

PolicyIPAMCNIOverlayRouting
CalicoCalicoCalicoNoBGP

如果无法将 BGP 对等连接到物理网络,如果集群位于单个 L2 网络中,您也可以运行非覆盖模式,Calico 只是在集群中的节点之间对等 BGP。尽管这不是严格意义上的覆盖网络,但 Pod IP 不能在集群外路由,因为更广泛的网络没有 Pod IP 的路由。

PolicyIPAMCNIOverlayRouting
CalicoCalicoCalicoNoBGP

或者,您可以在 VXLAN 或 IP-in-IP 覆盖模式下运行 Calico,并使用跨子网覆盖模式来优化每个 L2 子网内的性能。

受到推崇的:

PolicyIPAMCNICross-subnetRouting
CalicoCalicoCalicoVXLANCalico 

选择性的

PolicyIPAMCNICross-subnetRouting
CalicoCalicoCalicoIPIPBGP

AWS


如果您希望 pod IP 地址可在集群外部路由,则必须使用 Amazon VPC CNI 插件。这是 EKS 的默认网络模式,Calico 用于网络策略。Pod IP 地址从底层 VPC 分配,每个节点的最大 Pod 数量取决于实例类型。

PolicyIPAMCNIOverlayRouting
CalicoAWSAWSNoVPC Native

如果您希望避免对特定云提供商的依赖,或者由于 IP 地址范围耗尽的挑战而从底层 VPC 分配 pod IP 存在问题,或者如果 Amazon VPC CNI 插件支持的每个节点的最大 pod 数量不足以 根据您的需要,我们建议在跨子网覆盖模式下使用 Calico 网络。Pod IP 不能在集群外部路由,但您可以将集群扩展到 Kubernetes 的限制,而不依赖于底层云网络。

PolicyIPAMCNICross-subnetRouting
CalicoCalicoCalicoVXLANBGP

您可以在这段简短的视频中了解有关 AWS 上的 Kubernetes 网络的更多信息,包括上述每个选项如何在幕后工作:您需要了解的有关 AWS 上的 Kubernetes 网络的所有信息。

Azure 


如果您希望 pod IP 地址可在集群外路由,则必须使用 Azure CNI 插件。这由 AKS 支持,Calico 用于网络策略。Pod IP 地址是从底层 VNET 分配的。

PolicyIPAMCNIOverlayRouting
CalicoAzureAzureNoVPC Native

如果要使用 AKS,但由于 IP 地址范围耗尽的挑战,从底层 VNET 分配 pod IP 存在问题,则可以将 Calico 与 Azure 云提供商集成结合使用。这使用主机本地 IPAM 为每个节点分配 /24,并在集群的底层 VNET 子网中为这些 /24 编程路由。Pod IP 在集群/VNET 子网之外不可路由,因此如果需要,可以跨多个集群使用相同的 Pod IP 地址范围 (CIDR)。

注意:这在一些 AKS 文档中被称为 kubenet + Calico,但它实际上是带有 Azure 云提供商的 Calico CNI,并且不使用 kubenet 插件。

PolicyIPAMCNIOverlayRouting
CalicoHost LocalAzureNoVPC Native

如果您不使用 AKS,并且希望避免依赖特定的云提供商或由于 IP 地址范围耗尽的挑战而从底层 VNET 分配 pod IP 存在问题,我们建议在跨子网覆盖模式下使用 Calico 网络。Pod IP 不能在集群外部路由,但您可以将集群扩展到 Kubernetes 的限制,而不依赖于底层云网络。

PolicyIPAMCNICross-subnetRouting
CalicoCalicoCalicoVXLANCalico

您可以在此短视频中了解有关 Azure 上 Kubernetes 网络的更多信息,包括上述每个选项如何在幕后工作:您需要了解的有关 Azure 上 Kubernetes 网络的所有信息。

谷歌云


如果您希望 pod IP 地址可在集群外路由,则必须将 Google 云提供商集成与主机本地 IPAM CNI 插件结合使用。这由 GKE 支持,Calico 用于网络策略。Pod IP 地址从底层 VPC 分配,对应的 Alias IP 地址自动分配给节点。

PolicyIPAMCNIOverlayRouting
CalicoHost LocalCalicoNoVPC Native

如果您希望避免对特定云提供商的依赖,或者由于 IP 地址范围耗尽的挑战而从底层 VPC 分配 pod IP 存在问题,我们建议在覆盖模式下使用 Calico 网络。由于谷歌云网络是纯L3网络,不支持跨子网模式。Pod IP 不能在集群外部路由,但您可以将集群扩展到 Kubernetes 的限制,而不依赖于底层云网络。

受到推崇的:

PolicyIPAMCNICross-subnetRouting
CalicoCalicoCalicoVXLANCalico 

选择性的

PolicyIPAMCNICross-subnetRouting
CalicoCalicoCalicoIPIPBGP

您可以在这段简短的视频中了解有关 Google Cloud 上的 Kubernetes 网络的更多信息,包括上述每个选项如何在幕后工作:您需要了解的有关 Google Cloud 上的 Kubernetes 网络的所有信息。

IBM 云


如果您使用的是 IBM Cloud,那么我们建议使用 IKS,它内置了 Calico 以提供跨子网 IP-in-IP 覆盖。除了为 pod 提供网络策略外,IKS 还使用 Calico 网络策略来保护集群内的主机节点。

PolicyIPAMCNICross-subnetRouting
CalicoCalicoCalicoIPIPBGP

任何地方


上面的环境列表显然并不详尽。理解本指南中的概念和解释有望帮助您找出适合您环境的方法。如果您仍然不确定,您可以通过 Calico 用户的 Slack 或 Discourse 论坛寻求建议。请记住,如果您想开始使用,几乎可以在任何环境中以 VXLAN 覆盖模式运行 Calico,而不必过于担心不同的选项。

PolicyIPAMCNICross-subnetRouting
CalicoCalicoCalicoVXLANCalico 
本文 :https://architect.pub/projectcalico-determine-best-networking-option
讨论:知识星球【首席架构师圈】或者加微信小号【ca_cto】或者加QQ群【792862318】
公众号

【jiagoushipro】
【超级架构师】
精彩图文详解架构方法论,架构实践,技术原理,技术趋势。
我们在等你,赶快扫描关注吧。
a599456d6e16e60220f13f11354705ac.jpeg
微信小号

【ca_cea】
50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化.

61e23794b065d26b3e3f52a76cd212fd.jpeg

QQ群

【285069459】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。
加QQ群,有珍贵的报告和干货资料分享。

b43938f357aa855209e8e5ae090fbd61.jpeg

视频号【超级架构师】
1分钟快速了解架构相关的基本概念,模型,方法,经验。
每天1分钟,架构心中熟。

0a746deb5851574f80f1a56faf4a0120.jpeg

知识星球【首席架构师圈】向大咖提问,近距离接触,或者获得私密资料分享。

a0d12a99f988cb1c437c9c736d7a7cbc.jpeg

喜马拉雅【超级架构师】路上或者车上了解最新黑科技资讯,架构心得。【智能时刻,架构君和你聊黑科技】
知识星球认识更多朋友,职场和技术闲聊。知识星球【职场和技术】
领英Harryhttps://www.linkedin.com/in/architect-harry/
领英群组领英架构群组
https://www.linkedin.com/groups/14209750/
微博‍‍【超级架构师】智能时刻‍
哔哩哔哩【超级架构师】

6d2a3a330aeccdbc6e4915cb71cb96d9.jpeg

抖音【cea_cio】超级架构师

8de3423ee4fd952c6e0a6872b6f41f6a.jpeg

快手【cea_cio_cto】超级架构师

83147a986f42bf8672820d329b353a62.jpeg

小红书【cea_csa_cto】超级架构师

3cf6b3707663196a082d6a618f3ba062.jpeg

网站CIO(首席信息官)https://cio.ceo
网站CIO,CTO和CDOhttps://cioctocdo.com
网站架构师实战分享https://architect.pub   
网站程序员云开发分享https://pgmr.cloud
网站首席架构师社区https://jiagoushi.pro
网站应用开发和开发平台https://apaas.dev
网站开发信息网https://xinxi.dev
网站超级架构师https://jiagou.dev
网站企业技术培训https://peixun.dev
网站程序员宝典https://pgmr.pub    
网站开发者闲谈https://blog.developer.chat
网站CPO宝典https://cpo.work
网站首席安全官https://cso.pub    ‍
网站CIO酷https://cio.cool
网站CDO信息https://cdo.fyi
网站CXO信息https://cxo.pub

谢谢大家关注,转发,点赞和点在看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线性回归模型一二三

文章目录 什么是线性回归线性回归的求解一元线性回归(最小二乘法)多元线性回归 衍生求解梯度下降智能搜索算法求解(PSO)简要分析 线性回归与简单神经网络联系类比推导反向传播 总结 什么是线性回归 线性回归的基本假设是&#xf…

Java JUC并发编程调优

前言 1、JUC是指有关 java.util.concurrent包以及其子包,这些包都是有关线程操作的包 2、HTTPS服务请求中,WEB服务只负责创建主线程来接收外部的HTTPS请求,如果不做任何处理,默认业务逻辑是通过主线程来做的,如果业务…

预训练大语言模型的三种微调技术总结:fine-tuning、parameter-efficient fine-tuning和prompt-tuning

预训练大模型,尤其是大语言模型已经是当前最火热的AI技术。2018年Google发布BERT模型(BERT在DataLearner官方模型卡信息:https://www.datalearner.com/ai-models/pretrained-models/BERT )的时候,大家还没有意识到本轮…

国际植物命名数据库(International Plant Names Index)

功能介绍 https://www.ipni.org/ 是国际植物命名数据库(International Plant Names Index)的官方网站。国际植物命名数据库是一个全球性的植物命名和分类资源,旨在提供植物命名信息的权威来源。以下是该网站的一些特点和功能: 植…

wmvcore.dll丢失怎么弄?解决wmvcore.dll丢失问题

wmvcore.dll是Windows Media Player中的一个重要组件,它负责处理视频和音频文件的编码和解码。如果您在使用Windows Media Player或其他媒体播放器时遇到了wmvcore.dll丢失的问题,那么您可能无法播放视频或音频文件。在这种情况下,您可以使用…

干货|接口测试必备技能-常见接口协议解析

【摘要】 服务与服务之间传递数据包,往往会因为不同的应用场景,使用不同的通讯协议进行传递。比如网站的访问,常常会使用 HTTP 协议进行传递,文件传输使用 FTP,邮件传递使用 SMTP。上述的三种类型的协议都处于网络模型…

电流环参数自整定及其原理

前言 电流环参数自整定是通过程序计算电流环PI调节器增益以实现环路响应仅受用户设定PI调节器带宽影响,而和电机本身参数无关的目的。 本文分析电流环参数自整定背后的原理,并通过仿真进行验证。 1、永磁同步电机dq轴数学模型 本文提到的电流环参数自…

【论文总结】Creating a Secure Underlay for the Internet

为互联网创建一个安全的底层 摘要: 对手可以利用跨域路由漏洞拦截通信并破坏关键互联网应用的安全性。与此同时,部署诸如边界网关安全协议(BGPsec)和下一代网络上的可扩展性、控制和隔离(SCION)等安全路由…

38 KVM管理设备-管理虚拟机USB

文章目录 38 KVM管理设备-管理虚拟机USB38.1 配置USB控制器38.1.1 概述38.1.2 注意事项38.1.3 配置方法 38.2 配置USB直通设备38.2.1 概述38.2.2 注意事项38.2.3 配置说明38.2.4 配置方法 38 KVM管理设备-管理虚拟机USB 为了方便在虚拟机内部使用USBkey设备、USB海量存储设备等…

蓝桥杯单片机基础模板一:动态数码管显示

蓝桥杯单片机有一些基础模块的写法,他是没有一定的公式模板的。 好比动态数码管扫描显示,原理就是快速地 传输段选和位选。 但因为电路上添加了74HC573芯片,导致了我们移植别处 51单片机的动态扫描代码 会出现诸多问题,比如闪烁…

期末学习总结模板

期末学习总结精选篇1 转眼间研究生的生活已经有一学期了,感觉才参加复试没多久,回头想想,这一年过的真快,因为生病,耽误了很多时间,收获太少,遗憾太多。 本学期的收获: 1、暑假里看了…

Elasticsearch文件存储

分析Elasticsearch Index文件是如何存储的? 主要是想看一下FST文件是以什么粒度创建的? 首先通过kibana找一个索引的shard,此处咱们就以logstash-2023.05.30索引为例 查看下shard分布情况 GET /_cat/shards/logstash-2023.05.30?vindex …

AtCoder Beginner Contest 303——A-E题讲解

蒟蒻来讲题,还望大家喜。若哪有问题,大家尽可提! Hello, 大家好哇!本初中生蒟蒻讲解一下AtCoder Beginner Contest 303这场比赛的A-E题! A - Similar String 原题 Problem Statement Two characters x x x and y…

Python IDLE介绍

目录 IDE(集成开发环境)是什么 Python IDLE使用方法详解 Python IDLE常用快捷键 IDE(集成开发环境)是什么 IDE 是 Integrated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员…

一、Fuzzing速成之AFL实战

文章目录 一、Fuzzing基本知识1、什么是Fuzzing?2、Fuzzing运行流程 二、Fuzzing实战1、下载AFL压缩包2、安装AFL3、Fuzzing 一、Fuzzing基本知识 1、什么是Fuzzing? 维基百科将模糊测试定义为:     模糊测试 (fuzz testing, fuzzing)…

【Python 文本挖掘】零基础也能轻松掌握的学习路线与参考资料

Python文本挖掘是利用Python语言和相关文本挖掘工具对大量文本数据进行分析和挖掘的过程。Python在文本挖掘方面广泛应用于自然语言处理、情感分析、主题建模、关键词提取等领域。 学习Python文本挖掘需要掌握Python编程基础、数据分析和可视化、自然语言处理、机器学习等知识…

Flutter:功能型组件(3)- 拖拽组件、缩放平移组件

拖拽组件 拖拽组件包含 Draggable、LongPressDraggable 和 DragTarget。 Draggable、LongPressDraggable 为可拖拽的组件,LongPressDraggable 继承自Draggable,因此用法和 Draggable 完全一样,唯一的区别就是 LongPressDraggable 触发拖动的…

nginx添加nginx-sticky-module模块步骤

nginx-sticky-module模块是nginx实现负载均衡的一种方案,和ip_hash负载均衡算法会有区别的 ip_hash 根据客户端ip将请求分配到不同的服务器上.sticky 根据服务器个客户端的cookie,客户端再次请求是会带上此cookie,nginx会把有次cookie的请求转发到颁发cookie的服务器上. 安装…

AI工具合集!一共600+覆盖全行业,除了ChatGPT,那你也会喜欢这些其他的AI工具

如果你喜欢ChatGPT,那你也会喜欢这些其他的AI工具。 AI正在改变我们的工作方式,我不想错过充分利用它的机会,所以我尝试了一系列AI工具来节省时间,提高我的工作效率。 这里有个集合了600ai工具的合集包。 序号AI工具名称AI分类A…

I.MX RT1170加密启动详解(4):OTFAD XIP加密运行代码

本节将介绍基于AES加密的OTFAD引擎,它可以在不影响AES-128-CTR性能的情况下实时解密数据。OTFAD包括对AES密钥展开机制的完整硬件支持,它可以解密最多4个唯一的AES上下文。每个上下文都有一个用户定义的128位的Image Encryption Key(IEK)、一个64位的计数…