GPU 学习笔记三:GPU多机多卡组网和拓扑结构分析(基于数据中心分析)
文章目录
- 一、概述
- 二、数据中心(DC)
- 2.1 数据中心简介
- 2.2 传统数据中心的网络模型
- 2.3 脊叶网络模型(Spine-Leaf)
- 2.4 Facebook的Fabric网络架构
- 三、基于数据中心的多机多卡拓扑
- 3.1 Spine-Leaf 架构网络规模测算方法
- 3.2 NVIDIA多机多卡组网
防止遗忘和后续翻找的麻烦,记录下平时学到和用到的GPU知识,较为琐碎,不考虑连贯性和严谨性,如有欠妥的地方,欢迎指正。
一、概述
上章记录了单机多卡的拓扑结构,同时在计算网络小节中也提到了Spine-Leaf网络拓扑结构,这章会详细介绍这种拓扑结构的由来。
实际上,spine-leaf网络拓扑结构是一种Clos结构,我们称之为“脊叶网络”,由Charles Clos在1950年提出,初衷是为了解决网络电话爆炸式增长这一难题。
本章是基于数据中心来研究这种拓扑结构的,通过对数据中心学习,了解其发展演化历史,了解GPU主机在数据中心中的位置,我们才能清晰的理解如何进行多节点集群组网,才能清晰的理解物理拓扑,才能清晰的进行多卡通信,分布式训练等。
本章只介绍同一数据中心下的多机多卡拓扑结构。关于跨区域的数据中心,不做赘述,有感兴趣的可以自行搜索。
二、数据中心(DC)
2.1 数据中心简介
1)机房
计算机机房、通讯机房、互联网数据中心机房IDC(Internet Data Center)等电子设备机房,统称为“机房”。
机房的重要性不言而喻,我们根据其重要性将机房分为A、B、C三个等级。A级的可靠性要求最高,如果出现问题,将造成重大经济损失和混乱。其次是B级,如果出现问题,将造成较大经济损失和混乱。
一个具有高可靠性的机房,需要具备良好的冷却系统、电力系统、消防系统、安全操作规范,以及防水防尘、抗干扰抗辐射等机制。
废话不多说,先上一个数据中心机房图。
为了保证制冷效果,通常会将10~20个机柜背靠背并排放置在一起,形成一对机柜组,称为一个POD(Performance Optimized Datacenter)。
一个POD中的两排机柜都采用前后通风模式,冷空气从机柜前面板吸入并从后面板排出。
POD中的两排背靠背摆放的机会中间形成“热通道”,相邻的两个POD之间形成“冷通道”。通过机房空调(CRAC)形成一个循环,热空气沿“热通道”流回CRAC,冷空气从前面板吸入POD中。
2)基本单位 POD
注意,该POD与k8s中的pod不是一个概念。
每一对机柜组(POD),都是数据中心中规划的最小业务单位,由交换机、防火墙、LB、服务器等资源集成而成。
POD+接入层+汇聚层,会构成一个下层的二层广播域,我们称之为L2网络。汇聚层以上的网络称之为L3网络。汇聚层交换机是L2和L3层的共同边界。
关于网络拓扑的研究,在下面两节中会详细进行。
2.2 传统数据中心的网络模型
在传统的大型数据中心,采用了层次化的三层网络模型,将复杂的网络问题分解成不同层次的简单问题域。
在三层网络模型中,每一层都负责特定的功能,废话不多说,上拓扑结构图。
1)接入层
作用就是将工作站点(POD)接入到网络中,提供规划网段和带宽、设置网关等网络服务。
从拓扑图中,可知有4个POD,每个POD由4台机器组成,每2台机器组成一个机柜,共2组机柜。
2)汇聚层
作用就是承上启下,连接接入层与核心层,组成三层网络模型。
汇聚层交换机与接入层和核心层都是以full-mesh的形式互联互通。
汇聚层交换机支持“东西向流量”,每组的2个交换机互联互通,与下方网络组成二层广播域,即L2网络。
汇聚层除了提供内容转发,还提供防火墙、SSL卸载、入侵检测、网络分析等服务。
3)核心层
核心层路由交换机作为网络高速交换主干,是整个网络的支撑脊梁(spine)和数据传输通道,为网络中进出数据中心的报文提供高速路由转发,为多个汇聚层提供连接性。
核心层通常为整个网络提供一个弹性的L3网络路由。
4)二层广播域
通常情况下,汇聚交换机是L2和l3网络的边界,汇聚交换机以下是L2网络,以上是L3网络。
每组汇聚交换机都管理一个POD,每个POD都是一个独立的业务单元,总有独立的VLAN网络。服务器在POD内迁移时,不需要修改IP和网关等配置,因为他们都在同一个二层广播域内。
5)数据中心的流量形式
主要分三种:
- 南北向流量:数据中心与外部网络(互联网)的流量。在传统DC中,这种流量占80%,应用通常采用专线部署方式,即将服务部署在多个固定的物理机中,与其他系统物理隔离。
- 东西向流量:DC内服务器之间以及POD之间的流量。
- 跨IDC流量:不同IDC间的流量,如不同数据中心的容灾等
随着分布式技术、云原生技术的广泛应用,如大模型训练可以分布在一个数据中心的上千台服务器中并行计算,导致东西向流量快速增加。
传统的三层网络是为南北向流量占主导地位的数据中心设计的,已经不满足现在的大规模东西向流量需要。
6)传统IDC三层网络模型的优缺点
优点就是实现简单、配置简单、广播控制力强等,被广泛应用于传统DCN。
缺点就是无法满足日益发展的网络需求,现在的数据中心朝着云数据中心转型,虚拟化、云原生技术被广泛使用,由此衍生出了两大缺点:
- 无法支撑虚拟机跨POD迁移。
- POD间的东西向流量无法在二层广播域中无阻塞转发,需要通过核心层转发。
- 不满足大规模东西向流量需求,需要经过不必要汇聚层和核心层转发,大规模的东西向流量会导致连接同一交换机端口的设备争夺带宽,导致时延增加。
7)虚拟机跨POD迁移
虚拟机是物理服务器通过虚拟化技术构建出来的逻辑服务器,称为VM,拥有独立的系统和应用,也有自己的MAC和IP地址。
在生产环境中,我们需要根据容灾可靠性、可服务性等要求,进行虚拟机的动态迁移,迁移过程要求服务不中断,将VM从一台物理服务器迁移到另一台物理服务器。
虚拟机动态迁移过程中,为了保证服务的连续性,不能更改IP,TCP会话保持不能断,这就需要迁移的起始位置和目标位置都必须在同一个二层网络中,这个二层网络就称之为“大二层网络”。
2.3 脊叶网络模型(Spine-Leaf)
Spine-Leaf是Clos结构,一种新的数据中心网络模型,我们称之为“叶脊网络”
。顾名思义,该架构拥有一个脊层spine和一个叶层leaf,包括脊交换机和叶交换机。
相比于传统网络的三层架构,叶脊网络进行了扁平化,变成了两层架构,每个叶交换机都连接到所有脊交换机,脊交换机间不互联,叶交换机间也不互联,他们之间形成full-mesh拓扑。如下图所示:
leaf层:由接入交换机组成,用于连接服务器等设备。
spine层:是网络的骨干,负责将所有的 leaf 连接起来。
fabric中的每个leaf都会连接到每个spine,如果一个spine挂了,数据中心的吞吐性能只会有轻微的下降。
叶交换机:相当于传统三层架构中的接入交换机,作为 TOR(Top Of Rack)直接连接物理服务器。叶交换机之上是L3网络,之下都是个独立的 L2 广播域。如果说两个叶交换机下的服务器需要通信,需要经由脊交换机进行转发。
脊交换机:相当于核心交换机。叶和脊交换机之间通过ECMP(Equal Cost Multi Path)动态选择多条路径。
图:叶交换机,思科Nexus 9396PX
在该模型中,任意两个服务器之间都是3跳可达的:serve<–>leaf<–>spine<–>leaf<–>serve,确保了延迟的可预测。
优缺点
优点:
- 成本低:
南北向流量,可以从叶节点出去,也可从脊节点出去。东西向流量,分布在多条路径上。这样一来,叶脊网络可以使用固定配置的交换机,不需要昂贵的模块化交换机,进而降低成本。- 扁平化:
扁平化设计缩短服务器之间的通信路径,从而降低延迟,可以显著提高应用程序和服务性能。- 低延迟和拥塞避免:
无论源和目的地如何,叶脊网络中的数据流在网络上的跳数都相同,任意两个服务器之间都是Leaf—>Spine—>Leaf三跳可达的。这建立了一条更直接的流量路径,从而提高了性能并减少了瓶颈。- 可拓展性:
当带宽不足时,增加脊交换机数量,可水平扩展带宽。当服务器数量增加时,如果端口密度不足,我们可以添加叶交换机。
例如:
如果某个链路被打满了,扩容过程也很直接:添加一个spine交换机就可以扩展每个 leaf的上行链路,增大了leaf和spine之间的带宽,缓解了链路被打爆的问题。如果接入层的端口数量成为了瓶颈,那就直接添加一个新的leaf,然后将其连接到每个spine并做相应的配置即可。这种易于扩展的特性优化了IT部门扩展网络的过程。leaf层的接入端口和上行链路都没有瓶颈时,这个架构就实现了无阻塞。- 安全性和可用性高:传统的三层网络架构采用STP协议,当一台设备故障时就会重新收敛,影响网络性能甚至发生故障。叶脊架构中,一台设备故障时,不需重新收敛,流量继续在其他正常路径上通过,网络连通性不受影响,带宽也只减少一条路径的带宽,性能影响微乎其微。
通过ECMP进行负载均衡,非常适合使用SDN 等集中式网络管理平台的环境。SDN允许在发生阻塞或链路故障时简化流量的配置,管理和重新分配路由,使得智能负载均衡的全网状拓扑成为一个相对简单的配置和管理方式。
缺点:
- 交换机的增多使得网络规模变大。叶脊网络架构的数据中心需要按客户端的数量,相应比例地增加交换机和网络设备。随着主机的增加,需要大量的叶交换机上行连接到脊交换机。脊交换机和叶交换机直接的互联需要匹配,一般情况下,叶脊交换机之间的合理带宽比例不能超过3:1。
例如,
有48个10Gbps速率的客户端在叶交换机上,总端口容量为 480Gb/s。如果将每个叶交换机的 4 个 40G 上行链路端口连接到 40G 脊交换机,它将具有 160Gb/s 的上行链路容量。该比例为 480:160,即 3:1。数据中心上行链路通常为 40G 或 100G,并且可以随着时间的推移从 40G (Nx 40G) 的起点迁移到 100G (Nx 100G)。重要的是要注意上行链路应始终比下行链路运行得更快,以免端口链路阻塞。
叶脊网络也有明确的布线的要求。因为每个叶节点都必须连接到每个脊交换机,我们需要铺设更多的铜缆或光纤电缆。互连的距离会推高成本。根据相互连接的交换机之间的距离,叶脊架构所需要的高端光模块数量高于传统三层架构数十倍,这会增加整体部署成本。不过也因此带动了光模块市场的增长,尤其是100G、400G这样的高速率光模块。
2.4 Facebook的Fabric网络架构
Facebook从2014年开始对自己原有的数据中心网络架构进行改造,以适应对未来网络流量2-4倍的扩张。
Facebook的下一代数据中心网络——data center fabric网络架构(F4网络),是在原始叶脊网络基础上进行模块化组网,以承载数据中心内部的大规模东西向流量的转发,具有足够的扩展性。
F4架构:
在这种架构中,我们的Spine-Leaf 网络是其中的一个POD, 我们的SPINE是图中的Fabric Switches,我们的leaf是图中的Rack Switches,最上面的Spine Switches把各个POD连通起来。当一个POD的容量已满时,可以增加POD,并用spine将这些POD连通起来,实现了网络的继续扩展。除了前面描述的POD和spine,上图中还有黄色的Edge Plane,这是为数据中心提供南北向流量的模块。它们与spine交换机的连接方式,与前文中简单的的Spine-Leaf 架构一样。并且它们也是可以水平扩展的。
Spine-Leaf 网络架构只是一种网络部署的拓扑方式,具体的实现方法与配置多种多样,有的厂商根据这种拓扑结构定义了特定的网络协议,如思科的Fabric Path等。
目前Fabric网络已经演进到F16架构,将Spine平面增加为16个。单芯片处理能力提升为12.8TBps, 使得Spine交换机由原来的BackPack更新为MiniPark架构,不仅体积更小,所要通过的路径仅需跨越5个芯片。
三、基于数据中心的多机多卡拓扑
3.1 Spine-Leaf 架构网络规模测算方法
脊交换机下行端口数量,决定了叶交换机的数量。而叶交换机上行端口数量,决定了脊交换机的数量。它们共同决定了叶脊网络的规模。接下来我们可以根据交换机的端口数量和带宽,对Spine-Leaf 架构的网络适用的规模进行简单的估计,如下图所示的拓扑:
估算基于以下假设:
- spine数量:16台
- 每个spine的下联端口:48个 × 100G
- spine上联端口:16个 × 100G
- leaf数量:48台
- 每个leaf的下联端口:64个 × 25G
- leaf的上联端口: 16个 × 25G
spine的下联端口数量和LEAF的上联端口数量相同,以充分利用端口,在考虑链路Spine-Leaf 之间的带宽全部跑满的情况下,每个leaf下联的服务器数量最多为:16*100/25=64
。
刚好等于leaf的下联端口数量,总共可支持的服务器数量为:64 * 48 = 3072
。
在上述假设下,一组Spine-Leaf 网络可以支持3072台服务器,需要注意的是,叶脊交换机北向总带宽一般不会和南向总带宽一致,通常大于1:3即可,该例中为400:640。
这相当于一个中大型规模的数据中心,如果仍有扩展的需求该怎么办?根据上述的计算,leaf和spine的下联端口都已经耗尽,在这个网络中已无法增加spine,leaf或服务器。谷歌在此基础上进行了拓展,开发出了五级CLOS架构,即F4。
3.2 NVIDIA多机多卡组网
1)GPU上接Spine-Leaf网络
性能优化参见:NVIDIA Blog Leaf-Spine DC
2)Node间通信方式
详情参见:NVIDIA Blog: Network IO
3)基于spine-leaf的跨轨通信
在传统的多机间GPU通信时,常常将多个节点的GPU网卡连接到对应的Leaf上,通信路径经过spine switch,这种通信方式我们称之为“跨轨通信”。
GPU多机多卡组网拓扑
每个 DGX 系统的 NIC-0 连接到同一叶交换机 (L0),NIC-1 连接到同一叶交换机 (L1),依此类推。这种设计通常称为 Rail-optimized。
4)PXN单轨通信
PXN 利用节点内 GPU 之间的 NVIDIA NVSwitch 连接,首先在与目标相同的轨道上的 GPU 上移动数据,然后在不越轨的情况下将其发送到目标。这实现了消息聚合和网络流量优化。
参见:NVIDIA Blog: Collective Communication
5)英伟达数据中心设计与优化
英伟达数据中心设计
英伟达数据中心拓扑
下节详细介绍nccl和hccl通信。
相关文章:
GPU 学习笔记三:GPU多机多卡组网和拓扑结构分析(基于数据中心分析)
文章目录 一、概述二、数据中心(DC)2.1 数据中心简介2.2 传统数据中心的网络模型2.3 脊叶网络模型(Spine-Leaf)2.4 Facebook的Fabric网络架构 三、基于数据中心的多机多卡拓扑3.1 Spine-Leaf 架构网络规模测算方法3.2 NVIDIA多机多…...
各编程语言处理HTTP状态码的库推荐
Http 状态码用那个库 备注 Spring 的状态码库为 org.springframework.http.HttpStatus Apache 的状态码库为: org.apache.http.HttpStatus 通常这 2 个库都差不多。 如你的项目中已经用了 Spring 的代码的话,那么就用 Spring 的库吧。 不管是那个库…...
【Mac】Python 环境管理工具
一、pyenv 1、安装 (1)安装 brew install pyenv(2)环境配置 查看系统使用 shell 是 bash 还是 zsh bash 配置文件:~/.bash_profile zsh 配置文件:~/.zshrc userMac ~ % echo $SHELL /bin/zsh userMa…...
大语言模型数据流程源码解读(基于llama3模型)
文章目录 前言一、数据进入LlamaForCausalLM(LlamaPreTrainedModel)类二、数据进入LlamaModel(LlamaPreTrainedModel)类1、input_ids的embedding编码2、position_ids位置获取3、causal_mask因果mask构建1、causal_mask调用2、因果mask代码解读(_update_causal_mask)4、hidden_s…...
[蓝桥杯 2015 省 A] 饮料换购
题目描述 乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。 请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么ÿ…...
K8S测试pod内存和CPU资源不足
只设置requests参数 mysql主从pod启动后监控 读压测之后 同时设置limits和requests,只调低内存值 监控 压力测试 同时设置limits和requests,只调低CPU值 初始状态 开始压测 结论 对于CPU,如果pod中服务使用CPU超过设置的limits&…...
rabbitmq 使用注意事项
1,注意开启的端口号,一共四个端口号,1883是mqtt连接的端口号,如果没开,是连接不上的需要手动起mqtt插件。 //开始mqtt插件服务 rabbitmq-plugins enable rabbitmq_mqtt 2,15672端口是http网页登录的管理后…...
<项目代码>YOLOv8 夜间车辆识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
xterm.js 库作用
前言:xterm.js 是一个用于在网页上模拟终端的强大 JavaScript 库。 一、在网页中实现终端模拟 1. 提供类似终端的界面 xterm.js可以在浏览器中创建一个看起来和行为都类似于传统终端的界面。这包括显示命令行提示符、接受用户输入、显示命令输出等。 例如&#…...
在Excel中如何快速筛选非特定颜色
Excel中的自动筛选是个非常强大的工具,不仅可以筛选内容,而且可以筛选颜色,例如筛选A列红色单元格。但是有时希望筛选除了红色之外的单元格(下图右侧所示),其他单元格的填充色不固定,有几种颜色…...
kotlin定时器和主线程定时器
场景 最近要用kotlin写一个每隔一段时间切视频并截图 刷刷的就写出来了,很快啊 timerTask object : TimerTask() {override fun run() {captureWindow()if ((group 1) * 4 > urls.size) {showDialog()timerTask.cancel()timer.cancel()}groupupdatePlayers(…...
vscode不能执行vue命令/ vue : 无法加载文件
问题: 解决: 1. 在Windows应用中找到Windows PowerShell,以管理员运行: 2. 在命令框输入: set-ExecutionPolicy RemoteSigned, 然后输入A即可解决...
1.4 STL C++面试问题
1.4.1 说说STL的基本组成部分 总结 STL 的基本组成部分包括容器、算法、迭代器、函数对象和仿函数和适配器。通过这些组件,STL 提供了高效、灵活和可复用的代码结构,极大地提高了 C 的开发效率和程序的可维护性。STL 的设计思想使得算法和数据结构的使…...
Bash、sh 和 Shell都弄混了?
在Linux和Unix系统中,Bash、sh 和 Shell 都与命令行解释器相关,但它们各自的含义和作用略有不同。以下是它们之间的关系和区别: Shell Shell 是一个通用术语,指的是操作系统中负责解释和执行用户命令的程序。它是用户与操作系统…...
架构师备考专栏-导航页
简介 架构师备考专栏——软考系统架构师考试的学习宝典,集合了全面覆盖架构师考试大纲的精华文章。每篇文章都为本人手输,并校对数遍后发表,在此我保障每篇文章的质量绝对过关。诚邀对架构师软考感兴趣的朋友们收藏此页面,并根据个人所需高效…...
STM32-Cube定时器TIM
一、内部时钟源 1、创建项目 File → New → STM32 project选择STM32F103C8T6单片机,命名TIM 2、配置单片机 1.打开USART1,方便我们与电脑连接查看数据 开启UART1并开启中断。 2、设置时钟源 开启外部高速晶振 将时钟频率设置为72MHz 设置调试模…...
Webpack 是什么? 解决了什么问题? 核心流程是什么?
在前端开发中,Webpack 无疑是一个举足轻重的工具。它作为一个静态资源打包工具,能够帮助开发者将项目中的各种资源高效整合,以便于在浏览器中加载和执行。本文将深入探讨 Webpack 的核心功能、解决的问题以及 Webpack的核心流程。 Webpack是什…...
Jenkins面试整理-Jenkins 的主要用途是什么?
Jenkins 的主要用途 是在软件开发流程中实现自动化,尤其是在持续集成(CI)和持续交付/部署(CD)中。具体来说,Jenkins 的主要用途包括: 1. 持续集成(CI): ● Jenkins 自动从版本控制系统(如 Git、SVN)中拉取代码,自动化地编译、构建和测试代码。 ● 每当开发人员提…...
Linux下使用C/C++进行UDP网络编程
UDP 是User Datagram Protocol 的简称,中文名是用户数据报协议,是一种无连接、不可靠的协议,同样它也是工作在传顺层。它只是简单地实现从一端主机到另一端主机的数据传输功能,这些数据通过 IP 层发送,在网络中传输&am…...
【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!
前言 🌟🌟本期讲解关于TCP协议的重要的机制“连接的建立和断开”~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 …...
无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划
着重介绍通过对三维 PCD 点云进行处理生成 2D 栅格地图 PGM,而后将该 PGM 地图充分运用到无人系统路径规划之中,使得无人机能够依据此规划合理避开飞行路线上可能出现的障碍物。(解决如何使用PGM的问题) Hybrid A*算法 参考博客…...
supermall项目上拉加载bug分析
1.bug分析 bug出现的过程是这样的:better-scroll框架会计算滚动内容的高度(通过BScroll对象的scrollerHeight属性记录滚动内容的高度) 由于内容中的图片资源还未加载成功 就已经完成计算 导致计算结果错误 而计算之后 图片资源随之加载完成 这时候better-scroll框架…...
【linux网络编程】| socket套接字 | 实现UDP协议聊天室
前言:本节内容将带友友们实现一个UDP协议的聊天室。 主要原理是客户端发送数据给服务端。 服务端将数据再转发给所有链接服务端的客户端。 所以, 我们主要就是要实现客户端以及服务端的逻辑代码。 那么, 接下来开始我们的学习吧。 ps:本节内容…...
第二届开放原子大赛-开源工业软件算法集成大赛即将启动!
第二届开放原子大赛-开源工业软件算法集成大赛作为开放原子开源基金会组织举办的开源技术领域专业赛事,聚焦开源底座框架平台建设,通过组件化集成的开发模式,丰富平台功能模块,拓展其应用场景,以此促进工业软件生态的繁…...
PXC集群(Percona XtraDB Cluster )
一、简介 基于Galera Cluster技术的开源分布式数据库解决方案,它允许你在多个MySQL服务器之间创建一个同步的多主复制集群。 特点: * 多主复制架构: PXC集群支持多主复制,每个节点都可以同时读写数据,这使得应用程序可以更灵活地进行负载均衡和高可用性设置。* 同步复制:…...
分布式光伏是什么意思?如何高效管理?
分布式光伏系统是指在用户现场或靠近用电现场配置较小的光伏发电供电系统,以满足特定用户的需求。根据通知,分布式光伏系统主要有以下几类定义: 10kV以下电压等级接入,且单个并网点总装机容量不超过6MW的分布式电源:这…...
提问GPT
1 理解GPT AI模型即采用深度学习技术的人工神经网络。 你不会被AI取代,而是会被熟练运用AI的人取代 1.1 问答或对话是普通用户与这一轮新AI产品的典型交互方式。 GPT生成式预训练转换器 了解当前GPT产品的形式: 通用聊天机器人…...
李飞飞团队新突破:低成本高泛化机器人训练法,零样本迁移成功率90%!
在机器人训练中,如何高效地利用模拟环境一直是研究者们关注的重点问题。 近日,美国斯坦福大学李飞飞教授团队提出了一种突破性的“数字表亲”(digital cousins)概念。这一创新方法既保留了数字孪生的优势,又大大降低了…...
PHP内存马:不死马
内存马概念 内存马是无文件攻击的一种常用手段,利用中间件的进程执行某些恶意代码。首先要讲的是PHP不死马,实质上就是直接用代码弄一个死循环,强占一个 PHP 进程,并不间断的写一个PHP shell,或者执行一段代码。 不死…...
【python】OpenCV—Connected Components
文章目录 1、任务描述2、代码实现3、完整代码4、结果展示5、涉及到的库函数6、参考 1、任务描述 基于 python opencv 的连通分量标记和分析函数,分割车牌中的数字、号码、分隔符 cv2.connectedComponentscv2.connectedComponentsWithStatscv2.connectedComponents…...
c 做网站/关键词搜索技巧
文章目录前言🚀 一、概述🚀 二、事件分析🌈 2.1 邮件投递🌈 2.2 实施诈骗🚀 三、资产分析🌈 3.1 资产特点🌈 3.2 溯源结果前言 微步情报局监测发现多起黑产组织针对国内手机用户的邮件和短信诈骗…...
用jsp做留言板网站/百度搜索大全
版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。 未经允许,不得转载。 一、前言 在 Android 系统中,当运行的 App 被移动到后台的之后,Android 为了保…...
wp网站搬家教程/百度账号快速注册入口
从Java 5 开始引入了静态导入语法(import static)使用静态导入可以使被导入类的静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。package cn.itcast.p6.staticimport;import java.util.*; import static java.uti…...
网页与网站的区别与联系/重庆的seo服务公司
word生成pdf保留书签设置 点击“另存为”选项: 在另存为界面选择保存为pdf,如下,会出现“选项”设置项,点击进入: 在选项中,设置需要的设置,若要将pdf保留word中的标题作为书签,则…...
云南人事考试网官网/如何做网站seo排名优化
题目大意:多组数据,每组数据给一张图,多组询问,每个询问给一个点集,要求删除一个点,使得至少点集中的两个点互不连通,输出方案数 题解:圆方树,发现使得两个点不连通的方案…...
本机做网站/深圳网络优化seo
接口中的数据域只能是public static final,方法只能是public abstract 由于这个原因,这些修饰也可以忽略。 数据域只能是static final的原因: stackoverflow上: An interface can’t have behavior or state because it is int…...