重磅解读 | 阿里云 云网络领域关键技术创新
云布道师

10 月 31 日,杭州·云栖大会,阿里云技术主论坛带来了一场关于阿里云主力产品与技术创新的深度解读,阿里云网络产品线负责人祝顺民带来《云智创新,网络随行》的主题发言,针对阿里云飞天洛神云网络(下文简称洛神网络)领域产品服务创新以及背后的技术积累进行了深度解读,不少背后的创新技术系首次重磅披露。
在伴随阿里云十数年的发展历程中,云网络一直作为基础的连接底座,飞天云操作系统的核心组件,如影随形的服务客户;
阿里云网络始终围绕着企业大规模上云,云原生化等不断发展的需求,致力于让网络无感知的为上云企业提供高可靠、高性能、高弹性、智能的连接服务,包括:
通过打造软硬深度协同的高性能网络接入技术,满足不断变化的算力连接需求(ECS、容器、AI等),让性能可以满足任意场景和任意应用负载的规模;
通过自研的全新主动式重路由技术 ZooRoute,实现秒级重路由路径调整,让跨域网络故障收敛时间限制在 1s 以内,减少对业务影响;
通过动态感知的自适应弹性技术,让云网络服务自动适配业务增长和突发,无需提前预测业务流量和规划网络规格,更加聚焦业务本身的创新;
通过意图感知的高精度网络运维工具集,让云网络管理实现 “全场景深度观测,网络风险主动预警,故障一键诊断”,实现用网管网的更简单;
如下是现场全文(约6000字):
大家好,很荣幸在这里跟大家汇报一下过去一年多,阿里云网络领域的产品和技术创新进展;我的主题是云智创新,网络随行,持续构建高可靠、高性能、高弹性、智能的云上连接基座。
云网络技术演进之路
云网络伴随着云计算的发展经历了几个阶段:在最初云计算刚被大家接受的时候,用户思考的主要是如何将现有云下的架构迁移到云上,也就是把传统的架构迁移到云上;此时用户最关注的是能不能在云上构建一张跟云下一样互相隔离、私有的网络,这个阶段对云上网络的需求体现在 VPC 带来的基础的网络安全隔离,这是云网络的 1.0 阶段。
随着云计算被越来越多的用户广泛接受,用户也开始把越来越多的应用在云上部署,规模越来越大,包括开展全球化的业务。在这个阶段,对云网络的需求主要体现在要提供高性能、大规模、全球化的连接能力,这是云网络的 2.0 阶段。
随着云计算的落地越来越成熟,云成为天然或者默认被使用的业务部署方式,很多用户的业务直接在云上展开,这个时候用户通过云原生的创新架构来部署业务,例如用 K8S 来构建业务系统。这个阶段,对网络的需求体现在要实现高可靠、超高性能、超高并发的弹性以及智能化,这是云网络的 3.0 阶段。
网络相对比较复杂,网络的对象特别多,对象和对象之间的协议特别多,连接的时候状态也特别多,这三个多就使得网络成为一个特别复杂的技术区域;其实飞天洛神云网络从 2017 年开始就提出一个理念,希望让网络更加简单一些,因此飞天洛神云网络一直致力于打造更加简单易用的云网络服务。
洛神网络技术创新之道
飞天洛神云网络,是整个云计算的连接基石,是飞天云操作系统的核心组件;基于这套架构,云网络为阿里云用户提供了丰富的云网络产品;而从技术角度来看,如何支撑高性能,如何实现高可靠,高弹性和智能,背后的技术创新就是今天要分享的主题。
高性能网络接入:软硬深度协同的高性能转发技术
首先,如何构建高性能的网络
网络的数据包转发技术是数据面的核心技术,数据包转发的实现方式有两种:一种是通过 CPU 去实现,这种方式优点非常多,比如灵活,功能可以做得非常复杂,或者说丰富,编码的效率也很高;但是这种方式也有一个明显的缺点,性能一般,不能做到非常高的转发能力;另外一种方式是通过硬件芯片实现,它的性能可以做得很高,但是受限于芯片的资源规模,它的灵活度和功能的复杂度就相对较弱。
这两者通常是矛盾的,大家自然会想到,能否采用软件硬件平衡的方法来实现一个网络数据面的转发?这个方法是可行的,但是通常会碰到一个问题,头重脚轻:我们可以对已经建立连接的数据包实现非常高性能的转发,但是对新建连接的性能、连接状态的更新,连接的删除等处理就会比较差。那么怎么解决这个问题?
阿里云网络实现了一种软硬深度协同的高性能转发技术
- 首先,阿里云网络在硬件里面实现了多个网络微处理单元,这些微处理单元通过对数据包的预处理,完成对数据包处理过程的加速以及对查表的加速,实现对转发性能的大幅提升;
- 另外,阿里云网络还实现了一个软件微内核,这个微内核实现了内存的管理、无中断的管理、对数据包的高性能转发,使得软件处理数据包的性能大幅提升;
- 但是仅仅实现这两个方面还是不够的,因为还是存在前面提到的头重脚轻的问题,阿里云网络通过软硬深度协同的流水线编排技术来解决这个问题,通过将一条数据流打散,切成更多的
pipeline,然后通过编排的方法,实现转发性能和新建性能的提升。通过这一项技术,阿里云网络将整个计算节点的数据包的转发性能提升了
30%,新建连接性能提升了 67%,真正实现高性能的网络接入。
高性能网络接入:基于 VPC 的高性能高密度容器网络技术
云原生的架构已经被大家天然地接受了,因为它可以非常高效、敏捷地来进行开发,但是容器/云原生的架构也给网络带来很大的挑战,因为云网络一开始,是为虚拟机计算提供服务的,而容器对网卡的创建性能要求非常高。过去,我们在整个控制链路上,在整个虚拟化层,在整个内核这一层都没有面临这么大的挑战,面向容器急需优化。
另外一个容器带来的挑战是 ENI 的密度问题,原来一台计算节点虚拟机的数量是数百,现在容器的密度是数千,所以对云网络的挑战非常大。
我们通过基于 VPC 的高性能高密度的容器网络技术来解决这两个挑战。
首先,全新推出了 VPC CNI, 它可以和 K8S 无缝融合。
其次,推出 ENI 网卡高速插拔技术,针对前面提到的 ENI 创建的速度问题,阿里云网络从整个云网络的控制面,从整个虚拟化层,从整个内核创建 NetDev 设备的效率上面进行大幅的优化,从而提升 ENI 创建的性能。
最后,推出路由表优化等内存压缩技术,整个数据包的处理过程中,涉及到非常多的表项,需要查找路由表、session 表、安全组/ACL 表等等,密度受到内存限制。怎么解决这个问题?阿里云网络的应对方法是对内存进行压缩,这不是简单地删除某个字段,而是将相关表项的实现、存储和查找的结构、算法全部重新实现。
在 VPC 的高性能高密度的容器网络技术支撑之下,整个 ENI 新建性能提升到了 900/s,ENI 的密度提升到了单计算节点 4,000 个 ENI,这个提升非常显著,很好地适配云原生高密接入场景。
高性能网络接入:高性能AI网络技术
另一方面,随着 AI 的快速发展,尤其是在过去一年的时间内,AI应用的规模急剧增加,这里面大模型的训练,推理对GPU,GPU对网络都带来了非常多的挑战,网络如何支撑好在训练过程中对网络带宽的需求,这是一个非常大的挑战。
第一,如何提供超大的带宽;超大的带宽体现在当我们之前的网络还停留在 25G 的时候,AI 的带宽已经从 25G->50G->100G->200G,现在已经发展到 400G,这个带宽的提升是非常迅速的,这个就要求我们能够提供非常庞大的带宽。
另外一个,如何提供稳定的带宽;因为训练时间的长短,对 GPU 的消耗(GPU是昂贵的资源)的影响至关重要,而对 GPU 的消耗涉及到成本的问题,所以整个训练过程中希望网络是稳定的,稳定的大带宽,不要出现抖动,一旦发生抖动(比如网络断或者大时延导致训练业务超时),可能意味着训练任务要回退或重新开始,这是对计算资源的极大浪费,也是对成本的巨大浪费。
所以,AI 对网络的挑战体现在两个方面,一个是超大的带宽,第二个是稳定的超大带宽。为了解决这两个问题,阿里云网络研发了基于 VPC 多路径转发和高敏高精拥塞控制的 AI 网络技术。

首先,推出多路径转发技术。面对超大的带宽,传统的网络交换技术无法很好应对;传统的网络交换技术的处理流程是,一条五元组的流只能走在网络的一条路径上,即使有空闲的路径也无法做负载,这就会引发一个思考,为什么其他路径空闲却不能使用?而恰恰 AI 的训练对连接数的要求不多。这意味着原来传统的网络架构实际上是潜在面临很大的挑战的。
为了解决这个问题,阿里云网络实现了一种多路径的转发技术,把一条流只能走一个路径,变为一条流可以走多个路径。而这个转发技术跟传统的路由交换技术是违背的,因此要达到此目的,你就要先解决另外两个问题:第一个问题,发送端的乱序问题;第二个问题,接收端的乱序/保序问题,所以我们的多路径转发技术背后,其实有乱序和保序的能力在保障。
其次,推出高敏高精随路检测技术,网络总会出现抖动,光纤会坏、板卡会坏,这些因素都会给网络带来不确定性。为了解决这个不确定性的问题,我们做了一个非常高敏高精的随路检测技术,通过这个技术,我们可以非常快速地发现网络故障,然后将一条流里面的一路数据包切到另外一条路径上来规避业务抖动。
通过前面的技术实现,阿里云网络将带宽的利用率提升了 60%,AI 网络里面如果出现抖动,我们发现故障到恢复故障的时间缩短到小于 1s,这就极大地保证了网络传输的确定性,减少 AI 训练反复重新计算的发生,也可极大地节约 GPU 训练资源和成本。
高可靠的网络连接:全新自研的主动式重路由技术
大家知道,当你的业务需要多地域部署,尤其跨国部署的时候,你一定需要用到长传链路。而长传链路本质上是一根光纤通过波分设备切割出来的一个二层链路,这个链路经常会碰到一个问题——光衰的问题,光衰会引发临界的问题,临界导致链路时好时坏,持续的时间短的几秒钟,长的几分钟。还有一个是市政的施工也会引发光纤的割接,而割接的时候也会出现类似的问题。
所以,在长传链路上,看起来光衰、抖动、割接都是正常不过的事情,因为它一定会发生;但是一旦发生超过 3 秒,就会对 TCP 连接带来影响,进而导致业务超时,业务超时会出现网络故障告警。
所以连接抖动的不可预测(因为不受控制),以及真的发生问题后能不能规避,能不能快速地去解决这个故障,这些都是对网络的挑战。
为了解决这个问题,我们设计了一种全新的主动式重路由技术 ZooRoute。

通过这个技术,
第一,我们实现了一个高精度的异常检测能力。
第二个,我们实现了多因子分级的最优路径决策。同AI网络的实现类似,一条流有唯一的确定性的路径。出现问题的时候,我们知道这条长传链路出现问题了,该技术会把它切到另外一条路径上,所以一样也会用到多路径相关的技术。
最后也是最关键的,能不能在最短的时间里面去实现发现和切换,ZooRoute 可以实现秒级重路由调整,极大缩短故障收敛时间。
通过这种主动式的重路由技术,阿里云网络将跨地域的长传网络(CEN产品)的SLA从原来的 99.95% 提升到 99.995%。正是借助于 ZooRoute 技术,将故障的收敛时间缩短到 1s 以内(而没有用 BGP 去收敛,因为 BGP 超时收敛至少需要几十秒时间,而超过 3 秒钟时间对用户就是不可能接受的,业务就会受影响)。ZooRoute 上线后,对全网用户开启,我们发现阿里云一个月发生的 7000 多次长传链路的抖动,对业务带来的影响可忽略。
高弹性应用连接:动态感知的自适应弹性技术
另一个方面就是高弹性,弹性对基础设施的诉求是什么?对网络意味着什么?设想一下,用户在云上面部署业务,从刚开始的业务上线,到业务的推广,然后到业务的上量,这有一个缓慢的持续的增长的过程,但这个增长的过程,伴随着网络服务的实例和规格。
以前,你总要用户回答一个问题,业务流量最高会跑到多少。但我认为这是对用户的一个灵魂拷问,用户也不可能完全准确地预知到底能跑到多少。预估高了会造成资源浪费,预估低了会造成业务受损,所以我认为规格没有意义,有太多限制,所以阿里云网络在面对这个挑战的时候,思考的第一个点就是能不能把规格去掉,第二个点,能不能实现随着业务的增长而增长。
另外,业务还有一种情况,短暂的瞬时的抖动,你能不能忍受?为什么这是一个挑战?因为常态业务正常的增长,它的时间周期会拉的比较长,而抖动是瞬时的。你能不能根据瞬时的情况去快速的调整后台控制的资源,快速的拉起资源去适应用户的增长?其实很难,因为一定要经过几秒钟才能适应这种情况,而一旦达到几秒钟,你的业务就会受损,这也是一个矛盾。怎么解决这两个挑战?
洛神网络使用了一种动态感知的自适应弹性技术
第一个,针对业务正常的增长,我们实现了一个多维度的实时感知能力,我们会对带宽新建、并发实时地进行监测,基于它的增长实时调整我们后台的资源。比如用户有一个实例随着业务不断增长,我们就开始扩大资源供给,为用户提供更大的服务能力,这种技术可以适应前面提到的正常的业务增长。
但是业务的瞬时抖动很难,因为整个控制链路的回馈需要数秒时间。怎么解决这个问题?
第二个,针对微突发的用户的网络实例,我们会提供一定的 credit 的动态调控技术,常态化为用户准备好一定的 buffer,这样就可以解决好微突发的问题。
所以,今天洛神网络的产品——ALB、NLB、NAT 网关、GA 等都开始提供这个自适应能力,用户不再需要去提前定义自己的一个规格。第二个,我们的 NLB 产品可以让用户享受到 0~1Tbps 的弹性带宽,而且是可以在一分钟内实现。我们的 TR 也是给到用户一个 0 到 50G 的一个单实例的带宽弹性,这个是一个非常大的弹性,这意味着绝大部分用户可以忘掉你峰值到底多大,只需要关注业务增长规划;根据你的业务增长,我们可以随时提供足够的弹性。
智能网络运维:意图感知的高精度网络运维技术
最后一个是智能网络运维
正如开始讲到的,网络对象很多,对象和对象之间的协议很多,数据包的状态很多,导致网络特别复杂。网络复杂体现在两个方面:一个是建设网络的时候,拓扑的复杂性,链路的合理选择问题;另外一个更复杂的点是建好网络后,管网用网更难,因为你需要实时地知道你的网络有没有问题,这就是网络异常发现难。
第二个是发生问题之后,你要知道是不是你的问题,如果是你的问题,你的哪一个对象出了问题。
我们实现了一种基于意图感知的高精度的网络运维技术,从三个方面来解决这两个挑战:
第一,状态的感知:不管有没有问题,常态化地对这张网络的连通性和运行状态进行感知。
第二个,风险的预警:一旦实时感知的数据通过分析之后发现异常,阿里云网络将主动给用户推送告警,让用户知道出了什么问题。这些问题可能是用户的问题,也可能是阿里云后台的问题。我们把这些都暴露给用户,让用户可以区分到底是哪一层的问题。用户在自己的运维体系里面的基础设施除了网络,还有计算、存储、安全、云原生等,每一层可能都会出现问题,这些数据的提供就是帮助用户快速地判断是哪一层的问题。
最后一个,故障的诊断:如果定位是网络的问题,怎么进一步知道到底网络出了什么问题,这里涉及到一个故障快速诊断的问题。
通过这三个方面的技术创新,极大提升了洛神网络的运维能力:
第一,深度观测能力大幅提升,阿里云网络智能服务对全网全场景(公网、专线、VPC、跨域)进行覆盖,提供 57 个观测项,让用户常态地观测云上网络的运行状态。
第二,提供 13 类网络故障类型的主动通知,主动预警,主动把告警推给用户,让用户判断哪一层出了问题以及进行下一步动作。
第三,智能网络运维服务提供 148 个网络诊断项,让用户可以秒级定位,一键诊断,判断到底是网络的哪个节点出了问题,哪个路径出了问题。通过这种方式,网络的稳定性和运维效率都得到大幅度提升,网络本身也进入深度可观测的状态。
洛神网络始终坚持技术深耕 以创新普惠千百行业
阿里云网络从 2017 年开始就提了一个理念,让网络更简单。而我们一直在思考的问题就是,把网络的复杂性留给我们自己,把简单的网络交给我们的客户。因此,阿里云网络持续地围绕着高性能,高可靠,高弹性、智能进行技术的深耕,支撑云网络简单易用的产品能力,提升用户的使用体验。
到今天为止,阿里云网络已经服务于全球 400 多万客户,我们的整个技术和产品也获得了产业界和第三方权威机构的认可。
未来,我们还将持续地按照“让网络更简单”这个理念去深耕我们的技术,为客户提供更好的云网络服务。
-> 关注阿里云开发者社区-云网络子社区,获取云栖大会云网络相关Session资料
相关文章:
重磅解读 | 阿里云 云网络领域关键技术创新
云布道师 10 月 31 日,杭州云栖大会,阿里云技术主论坛带来了一场关于阿里云主力产品与技术创新的深度解读,阿里云网络产品线负责人祝顺民带来《云智创新,网络随行》的主题发言,针对阿里云飞天洛神云网络(下…...
【蓝桥杯省赛真题45】Scratch九宫格游戏 蓝桥杯scratch图形化编程 中小学生蓝桥杯省赛真题讲解
目录 scratch九宫格游戏 一、题目要求 编程实现 二、案例分析 1、角色分析...
物联网AI MicroPython学习之语法 ADC数模模块
学物联网,来万物简单IoT物联网!! ADC 介绍 模块功能: ADC数模转换模块 ADC功能在ESP32引脚32-39上可用,使用默认配置时,ADC引脚上的输入电压必须介于0.0v和1.0v之间(任何高于1.0v的值都将读为4095&#x…...
详解Python中哈希表的使用。站在开发者角度,与大家一起探究哈希的世界。
文章目录 1. 前言2. 哈希表2.1 哈希函数2.2 哈希算法2.3 常见哈希算法2.4 哈希冲突 3.总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面…...
详解python淘宝秒杀抢购脚本程序实现
文章目录 前言一、官网下载火狐浏览器二、下载geckodriver,并解压到火狐浏览器文件夹根目录三、添加火狐浏览器根目录到系统环境变量四、下载并安装python及pycharm开发工具五、进入淘宝六、使用Pycharm运行脚本,新建python文件,将代码复制到…...
使用ChatGPT创建Makefile构建系统:使用Make运行Docker
使用ChatGPT创建Makefile构建系统:使用Make运行Docker 芯语芯愿(知乎/纷传/CSDN/);小石头的芯语芯愿(微信公众号) 开发高效现代的构建系统对于满足开发周期需求至关重要。原先,嵌入式开发者一…...
算法设计与分析复习--分支界限法
文章目录 上一篇分支界限法性质装载问题0-1背包问题单源最短路问题最大团问题下一篇 上一篇 算法设计与分析复习–回溯法(二) 分支界限法性质 分支界限法是按广度优先策略或最小耗费优先遍历问题的解空间树。 搜索解空间: 子集树排列树 …...
Https攻击怎么防御
随着互联网技术的发展,网站所遭受的网络攻击频率也在不断上升。某种程度上,我们可以说互联网上的每个网站都容易遭受安全攻击。因为网络攻击者最主要的动机是求财。无论你运营的是电子商务项目还是简单的小型商业网站,潜在攻击的风险就在那里…...
网络知识学习(笔记二)
ios模型规定的网络模型一共有7层,但是实际使用过程中,4层的TCP/IP模型是经常使用的,网络知识学习笔记里面也是基于4层TCP/IP模型进行分析的,前面已经讲了:(1)物理层,(2&a…...
万字解析设计模式之组合模式、亨元模式
一、组合模式 1.1概述 组合模式是一种结构型设计模式,它允许将对象组合成树形结构,以表示“部分-整体”的层次结构。组合模式使得客户端可以一致地对待单个对象和对象组合,从而将复杂的层次结构展现为一个统一的树形结构。 在组合模式中&…...
HTTP之常见问答
1:HTTP/1.1 如何优化? :尽量避免发送 HTTP 请求;通过缓存技术,使用请求的 Etag 参数来处理判断缓存过期等问题,类似304状态码就是告诉客户端,缓存有效还能继续使用 :在需要发送 HTTP…...
java伪共享问题
参考文章 https://blog.csdn.net/qq_45443475/article/details/131417090 产生原因 cpu 与内核数据交换的单位是 cache 行,多核 cpu 的高速缓存在对同一个变量进行修改时由于缓存一致性协议导致对应的缓存失效。 缓存行的大小 cpu 架构有关系,如果是 …...
【Ubuntu】Ubuntu arm64 部署 Blazor Server 应用
部署步骤 发布安装运行环境:dotnet-sdk(必装)、aspnetcore-runtime、dotnet-runtime安装证书设置环境变量:临时变量、当前用户永久变量、所有用户的永久变量运行:终端运行、后台运行 基本情况 开发系统环境 系统&am…...
Android加固为何重要?很多人不学
为什么要加固? APP加固是对APP代码逻辑的一种保护。原理是将应用文件进行某种形式的转换,包括不限于隐藏,混淆,加密等操作,进一步保护软件的利益不受损坏。总结主要有以下三方面预期效果: 1.防篡改&#x…...
【C/PTA】函数专项练习(一)
本文结合PTA专项练习带领读者掌握函数,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 目录 6-1 输出星期名6-2 三整数最大值6-3 数据排序6-4 多项式求值 6-1 输出星期名 请编写函数,根据星期数输出对应的星期名。 函数原…...
SUDS: Scalable Urban Dynamic Scenes
SUDS: Scalable Urban Dynamic Scenes:可扩展的城市动态场景 创新点 1.将场景分解为三个单独的哈希表数据结构,以高效地编码静态、动态和远场辐射场 2.利用无标签的目标信号,包括RGB图像、稀疏LiDAR、现成的自监督2D描述符,以及…...
蓝桥杯算法双周赛心得——迷宫逃脱(记忆化搜索)
大家好,我是晴天学长,非常经典实用的记忆化搜索题,当然也可以用dp做,我也会发dp的题解,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .迷宫逃脱 迷官逃脱…...
nodejs+vue线上生活超市购物商城系统w2c42
超市管理系统的开发流程包括对超市管理系统的需求分析,软件的设计建模以及编写程序实现系统所需功能这三个阶段。对超市管理系统的需求分析。在这个阶段,通过查阅书籍,走访商场搜集相关资料,了解经营者对软件功能的具体所需和建议…...
飞翔的小鸟
运行游戏如下: 碰到柱子就结束游戏 App GameApp类 package App;import main.GameFrame;public class GameApp {public static void main(String[] args) {//游戏的入口new GameFrame();} } main Barrier 类 package main;import util.Constant; import util.Ga…...
浅析OKR的敏捷性
前言 OKR对于工作的提升有着一定的不可替代的作用。特别在敏捷方面。 OKR的敏捷性 OKR(Objectives and Key Results)是一种目标设定框架,它的敏捷性主要体现在以下几个方面: 公开透明 OKR要求完全公开透明,让每个员…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
