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

连接云-边-端,构建火山引擎边缘云网技术体系

近日,火山引擎边缘云网络产品研发负责人韩伟在LiveVideoStack Con 2023上海站围绕边缘云海量分布式节点和上百T的网络规模,结合边缘云快速发展期间遇到的各种问题和挑战,分享了火山引擎边缘云网的全球基础设施,融合开放的云网技术体系以及未来火山引擎边缘云网的发展展望

迄今为止,云计算已经发展了近二十年,成为了事实上的社会基础设施。5G时代到来后,消费互联网开始不断向产业互联网延伸,涌现了物联网、车联网等大流量、低延迟、高并发的场景。原有云端的架构难以满足新场景下产生的各种需求,这促进了算力持续下沉,数据落至边缘。随着边缘云在不同场景的渗透,云中心和边缘结合的基础架构将成为新一代的基础设施,边缘云会加速进入成熟期。

韩伟表示:边缘云快速发展,需要网络的完美支撑。只要网络出去,算力就能出去,这也是火山引擎边缘云所持续突破的目标,即让连接和计算无处不在。如何构建一张融合开放的网络来连接算力、数据、场景甚至多云?以下将分享火山引擎边缘云网络技术体系建设路径。

-1-

火山引擎边缘云网基础设施建设

首先是建设全球云网的基础设施,火山引擎在2020年开始大力建设边缘云的资源底座,目标是提供全球统一的资源及技术底座支撑业务的快速发展。截至今日,已经覆盖了50+国家,1300+节点,全网的带宽储备达到110Tbps+。

此外,火山引擎选取了一些优质的区域节点,在不同的节点之间通过专线进行互联,同时还覆盖了不同国家和地域的跨域专线,通过节点互联,结合海量的分布式节点,构建了一张全球的骨干网络,很好地满足了业务的快速发展。基于这张全球骨干网络,向上支撑了内容分发网络、联网与加速相关的产品体系、以及安全防护一体的整个边缘云网的产品矩阵。

图片

这张网络具备以下几点特征:

  • 首先,超大的规模与弹性。上文提到骨干网络有海量的分布式节点,整体储备带宽达到110Tbps+,此外,火山引擎边缘云在不同节点选取了高性能硬件,并基于此构建了整个边缘云的云原生操作系统。经历抖音的春晚、双十一、世界杯以及内部业务突发情况的锤炼。目前,边缘云基础设施在具备一定规模的同时还具备了较好的弹性。

  • 第二,骨干网络的打通。包括跨域专线、区域节点互联,真正做到了基础设施层面的全球一张网,为上层业务的互联互通打下了基础。

  • 第三,安全可靠。火山引擎边缘云基于业务诉求,选取部分节点建设了高防的清洗中心。不同的节点具备云原生的DDoS和WAF防护能力,从而为上层业务保驾护航。

  • 最后,节约成本。抖音规模已经非常大,火山引擎边缘云将抖音的业务规模对基础设施的资源需求和ToB做了并池,使其在更大范围内复用,极大优化了成本。

此外,火山引擎边缘云在边缘云网体系以及边缘计算节点体系中搭建了运维和管理的相关平台,降低运维成本的同时提升了运维效率。

-2-

构建火山引擎边缘云网的技术体系

火山引擎边缘云网解决方案

图片

边缘云网的解决方案已经连接了云、边、端,从下向上首先是整个网络的基础设施。

火山引擎边缘云拥有海量分布式节点,并在线路较好的资源节点做了专线的资源覆盖。整体在基础网络层搭建了一张全球骨干网络,合规跨境上则覆盖了东南亚/中日/中韩/中欧等主要区域。为了更好地使用这张基础物理网络,火山引擎边缘云在此之上抽象出了边缘互联服务,能够结合边缘节点的公网带宽、专线容量进行整体的调度容灾,从而为上层业务提供更好的复用能力。

除了结合网络基础设施的底座之外,火山引擎边缘云还推出了边缘联网的产品体系,覆盖了SD-WAN+产品,边缘接入产品、跨境加速以及边缘计算节点网络相关能力;通过SD-WAN+,能够在端侧支持VPN、移动APP及CPE设备的接入。在边缘接入侧,通过专线的接入能力,能够解决企业上云相关场景;通过边缘节点间联网能力,可以连接不同的计算节点,最终形成一张由分布式节点构成的具备业务自治能力的云上网络。

基于这个边缘联网的产品体系,火山引擎边缘云构建了覆盖3-4-7层、连接了云/边/端的网络加速体系,分为三个产品:第一个是全球加速,面向4层加速相关场景;第二个是DCDN,支持一站式动静态混合网络加速服务,第三个是面向游戏相关场景的GNA。GNA在APP上会有加速和诊断的能力,再结合云上的路径择优、网络调度,能够为游戏加速行业的客户提供更好的服务体验。左侧是边缘计算节点,边缘计算节点的商业化会对网络提出云化的需求。火山引擎边缘云研发了满足边缘计算节点发展相关需求所必需的产品能力,包括VPC、负载均衡、NAT、EIP。不同的边缘计算节点之间能够通过边缘联网的整个体系互联互通,连接到一起。

火山引擎边缘云网技术体系


图为边缘云网技术体系

最下层的基础设施有以下特征:覆盖全球的边缘节点,目前火山引擎的规模比较庞大,带宽储备比较充足;覆盖全球的骨干网络,包括国内和海外,具备一定的专线资源覆盖;优质线路,在选取节点的同时对线路的选取也有比较高的要求,火山引擎边缘云提供了优质的单线及三线带宽资源;丰富的硬件形态,针对不同节点的容量诉求及节点的规划,我们提供丰富的硬件形态,能够满足不同场景需求。

基础设施之上是技术层。首先,网络转发平台提供EVS、EGW、TTGW三个转发平面。其中EVS是主机网络,支撑虚拟机和容器的算力资源,提供网络隔离、网络限速及安全组等能力。EGW是融合网关,边缘节点是异构的,有海量的分布式节点,我们把很多网络能力融合到一个融合网关中,它是整个边缘云To B的网络和安全的流量入口以及安全支点。TTGW是核心网关,整个集团的所有流量的公网入口都基于此构建,它同时承载了高防的流量入口。基于以上三个不同场景功能组件的诉求,我们在底层抽象出了一个网络转发框架,以解决设备异构问题,提供软硬一体的转发能力。此外,网络转发框架中沉淀了通用的性能优化相关能力,能够为上层不同数据面的组件提供更好的复用。其次是基础云安全,我们协同安全团队提供原生防护能力、主机安全以及高级网络威胁检测能力。

在边缘云上,有CDN、DCDN、GA和GNA等不同的网络加速场景,其中很多能力具备一定的通用性,于是火山引擎边缘云抽象出了网络加速平台。未来,网络加速平台还会对外开放,它将具备以下能力:第一,多维调度能力,能够基于成本、质量、容灾,提供不同维度的调度能力,供各个业务选择;第二,通过自研的私有协议更好地优化传输体验,同时在传输优化方面开展了较多探索工作,提升了整个传输的性能。此外,在数据压缩上包括头部压缩及报文压缩,能够有效降低数据传输的负载。在路径探测方面,包括端探测及转发探测进行了有机的融合,能够更快速地发现并定位整个数据转发路径中的各种问题,从而快速恢复。

整个边缘云网体系中的产品非常多,为了简化配置平面的复杂度,我们将其抽象为北向的业务编排,南向的设备管理以及通用的技术服务

在北向,可以继续抽象为面向业务的核心控制层,如VPC、SD-WAN、EIC边缘互联。这里北向主要面向用户配置,包括控制台及OpenAPI层,有许多业务自身的语义,需要元数据存储,进行元数据编排,形成底层能够理解的基础配置平面。

第二层面向设备,所有的配置下发需要连接设备、管理设备、探测设备。其中,面向设备有许多通用能力,我们构建了高性能的配置下发通道,并提供设备的水位管理,配置管理能力,通用的配置序列化通道;在资源调度层面,提供跨集群资源调度能力。举个例子,在多Group场景下,比如一个配置应该落在哪个Group,需要根据配置水位及实际水位的情况,做全局调度优化;我们会在通用管控层抽象出通用的框架能力,从而满足各个业务方的需求。基础服务层也是一层抽象,其中有很多抽象出的原子的能力,能够被各个业务复用,包括任务调度、动态配置下发,如增量全量的配置下发、配置对账、一致性巡检,这些都能够在动态配置层被屏蔽。此外是针对南向的配置,编排之后的数据存储。

右边是结合网络运维及产品研发需求搭建的智能网络平台,主要面向运维、产品、售后、运营及研发等不同角色对网络平台的需求。基于此平台,做了变更的白屏化、自动化、告警、巡检、大盘展示、水位管理。面向产品售后提供部分问题根因分析能力,如一键诊断能力。

网络的前台面向用户,而上述能力的采集、聚合、清洗则在中台完成。对于这个智能网络平台,未来我们希望能够将一部分能力赋能客户,比如用户使用了云上的许多资源,它的管理如网络拓扑管理比较复杂,那么通过网络拓扑的可视化、网络路径的分析能够帮助用户更好地管理网络。其次,当用户配置比较多时,经常会出现错误配置的情况,或者配上后健康检查不通,但用户发现不了,那么便可以通过一键诊断能力,在用户配置完成后,结合其配置做预检查,发现问题后给用户提示。

综合以上的能力,边缘云网技术体系便能够很好地支撑计算服务及网络服务。

火山引擎边缘云网的技术特征


结合上文提到的产品体系及技术体系,这张网络的特点如下:

  • 云网一体,多点协同:GNA产品在游戏端的APP上有SDK部署,而SD-WAN+在端侧有CPE,APP及VPN等不同端的接入能力,基于端的连接及管理能力,我们能够更好地和云上协同。同时,边缘智能一体机会在近场、现场的边缘部署。围绕边缘的分布式节点,我们会有许多互联及加速相关需求。目前这张网络的基座已经具备了通用加速和通用互联能力,此外,我们围绕边缘和中心的协同,在回源加速、带宽降本方面做了很多优化。静态带宽能够为更多业务所复用,云边互通能够支持公网及内网的互通。

  • 融合网络,更高性价比:边缘的网络相比中心会更加复杂,线路资源也更多样化,包括小运营商,单线、多线公网带宽,及回源专线、跨境专线。对于如此复杂的网络,我们需要在更多维度进行调度及融合,给业务提供更极致的性价比,其中必需的是基于成本、质量、延迟的全局调度。

  • 小型云化,灵活部署:边缘云的节点比较多,异构比较复杂,不同节点的容量也各不相同,对成本灵活度的要求也随之提高。为了满足不同节点对网络的差异化需求,对外体现相同的服务界面和产品界面,我们把很多网络能力融合到同一个网关中,这是 All in one 的策略。比如公网入口、安全防护、跨域互联、专线接入都通过融合网关构建。其次,网络组件非常多,上文提到许多产品是由较多的技术组件组成,为了解决灵活性的需求,我们支持裸金属、虚拟机、容器的灵活部署,同时在不同的节点上,虚拟机、容器、网络、存储也具备按需混合部署能力。通过这一系列的灵活部署能够更好地满足分布式云的小型云化需求。

  • 超大规模,全球覆盖:目前,火山引擎的全球节点达到1300+,网络带宽达到100Tbps,无论是线路选择、节点互联、跨域覆盖,都形成了一张全球优质的加速网络。

  • 软硬一体,高性能转发:边缘云分布式节点比较多,而且大小容量差异性非常大。在边缘会有部分大容量节点及大流量场景,包括核心机房业务,我们支持P4导流网关,单机能跑3.2T流量,可以级联到不同的软件转发能力上,通过Overlay的灵活调度和封装解决网络转发在全网的灵活弹性伸缩能力。其次,集团场景如今日头条、TikTok、抖音对核心的负载均衡提出了更高的要求,基于软硬一体的技术 目前我们单机已经能跑到800G带宽。最后,EVS主机网络在边缘也会面临着更大的挑战,主要是边缘机型的差异化,网卡的差异化,我们按照产品需求及规划,在部分机型及场景下进行了网卡Offload的优化。

  • 全面上云,稳定可靠:边缘云的资源池是高度统一的,设备、带宽、专线都统一到了相同的资源池。面向不同的计算、网络、存储相关场景,我们在同一个资源池做复用和调度,从而更好地提升资源的利用率和复用比。第二点是内外统一,大家看到的边缘云上所有的产品,无论是界面还是服务都与内部高度统一,我们将许多内部的业务跑到了标准的To B产品上,可以更好地打磨产品体系。目前,CDN、DCDN、GA等产品已经全面上到边缘计算节点上,因此,火山引擎边缘云是经过大规模验证的,安全可靠的一朵云。

-3-

展望未来:网络先行,驱动业务发展

在边缘云快速发展的过程中,韩伟对火山引擎边缘云网络有了更多的思考——网络先行,驱动业务发展。

传输可视,数据驱动的网络智能平台

图片

从定位来看,网络连接了算力、数据及不同的场景,所以各个产品和业务对它都有非常多的诉求。但网络经常遇到各种各样的问题,如网络不通、丢包、速度慢,出现问题时候很难精确定位。在边缘云上,这个问题会放大。边缘云不同节点之间的规模差异较大,分布式节点较多,很多的场景,需要互相联动,节点之间还要互联,所以业务依赖比较重,转发路径比较长。作为云计算的厂商来讲,上面一定会有各种各样的租户,承载的租户又非常多。所以整个网络的服务,其实面向了业务,面向了售后,面向了客户,挑战非常大。

站在我们的角度来看,私网是相对容易可控的,所以目标是能直接定位问题。对于公网,有一段是不可控的,所以在可控的范围内定位问题,在不可控的范围内做到能很快地定界,即判断是私网的问题,还是公网的问题。

基于这样的背景,我们想去把网络的分层,做一个传输的刻画。

  • 首先是网络层,面向3层,有很多的业务基于3层做网络的互联互通,我们会在整个网络体系里增加很多的埋点,会对报文做染色,记录走了云上的哪些组件、产品、软件等,我们通过软件定义网络的思想,会给这个报文去打标,当它丢掉后,能够知道它的源端、目标在哪里,路径是什么样子的,判断出它在哪个路径的哪个点上丢了包。通过路径覆盖的能力,再结合场景的覆盖,可以把很多的场景枚举出来,当场景出现问题时,埋点能够及时启动,就可以快速地定位问题。

    此外,我们还建设了比较完善的异常发现体系,在告警、监控、巡检、丢包方面,增加了比较细粒度的数据采集,希望能先于客户先发现问题,有更多时间来快速修复它。

    最后是可用性探测,云上的实例数量非常多,出了故障之后,我们需要快速判断清楚它的影响面,所以会对云上的所有资源做一些低频的可用性验证。比如DC故障之后,很容易看到哪些可用率发生了大规模下降,从而更好地看到影响面。

  • 在传输层,上文提到的产品中很多是基于7层应用代理转发的。在客户端到代理这一侧,其实是一个连接,代理到后端的终端节点之间,是另一个连接,中间是一个请求。站在请求的角度来看,我们没有办法把客户端包括服务端的连接,连接在一起,因为中间被代理截断了,所以看不到整体。出现问题后,只能去查日志分段定位,看一下到底是请求等待的时间太长,还是建连或响应的时间太长。我们希望不管是基于kernel还是用户态的协议栈,都能够刻画出整个传输过程,比如首包时延,响应的时间,整个建连包括请求等待的时间,然后在用户态抽象出客户端的连接和服务端的连接,这样在连接层面能看到从客户端到真实服务端之间的链路。在请求的维度,也可以把它关联到一起,这样当一个请求慢了之后,能辨别是连接层面还是应用软件本身发生了问题。

  • 在应用层,结合日志分析系统,可以研发异常发现的能力,比如状态码、请求的响应时间,包括请求的地域来源、目标资源,能够做很多的聚合,比如哪些资源有问题,哪些地域有问题,通过异常发现,获取业务分布,帮助用户量化体验。

在结合网络层、传输层、应用层后,能够高效直接地定位许多网络上的问题。基于这样的思考,我们会推出一个网络智能的平台,前面提到的是站在运维运营角度,而这里是指在网络传输,包括网络的一些疑难杂症维度开展更多工作;针对离线和实时数据的一些分析,以及机器学习相关的处理后,火山引擎边缘云在网络大盘上,在更多场景下,把可视化异常诊断的能力做到更好。

网络开放,助力云上生态

图片

网络从场景上会连接算力、连接数据、连接场景,云上的各种产品和场景对网络是强依赖的。而边缘云的发展,目前更多的发力点还是在IAAS和PAAS这一层。所以如果让云上的产品包括能力更加多元化,网络也需要更开放。

当下的网络更多是做了一些基础相关的能力,比如计算节点对网络云化的需求,资源商品化的需求;以及在网络基础能力之上,我们在PAAS层做了一部分网络加速,游戏加速,SD-WAN组网相关的需求,这些能力聚焦的点还是在IAAS和PAAS上。

再看用户需求场景,云发展到后面一定是生态,我们需要协同更多的产业伙伴去共建这个生态,才能有更好的发展。很多的产品厂商,比如安全的厂商,在传统领域可能做了十几二十多年,安全设备很复杂,能力很强,技术也很深,但是以前主要市场在线下IDC,到云上后,可能会做一些云化的相关场景部署,在云上卖镜像卖给用户,目前还是让用户自己解决部署问题。所以如果传统厂商能更好地上云并给客户提供服务,对云是非常好的补充。

第二就是传统行业的搬站,第一阶段解决的是企业上云,包括云上原生相关的一些场景,里面更多的是互联网相关的厂商,所以可能第一阶段更容易上云。第二个阶段更多的是金融政企相关的传统行业,因为他们对IDC的依赖比较重,所以一般是在后一阶段上云。我们在此阶段发现非常多问题,比如以前在线下的设备厂商,他的组网方案里有很多定制化,而在云上,更多是面向公有云的租户,做一些通用化的诉求,这就存在很多产品的能力匹配度问题。

此外,即使他们上了这朵云,未来可能也会有很多个性化场景的需求,因为在以往的经验里面,他们其实已经享受到这个红利,很多设备厂商愿意帮他们做定制化的场景。再者,很多的金融政企或者其他类似行业客户,他们希望平滑上云,不希望做太多的改造。所以从用户需求场景来看,包括从厂商的定位来看,都需要将这朵云开放出来。而云的开放模式一定是网络先行。

网络开放分为以下维度:

  • 第一,能力构建方面,需要具备网络编排能力,在网络转发路径中可以接入更多应用的提供商和服务商。

  • 第二,接入后要为云上租户提供安全隔离的能力;而且不能让用户感到太多差异化,需要具备透明接入能力。

  • 此外,还需基础配套的运维、监控、日志体系,帮助用户更好地使用及管理好云。

火山引擎边缘云希望未来能够和更多的网络厂商、安全厂商、应用服务商成为合作伙伴。在产品生态、应用生态、服务生态协同促进,共建边缘云市场的明天。

关于火山引擎边缘云:

火山引擎边缘云,以云原生技术为基础底座,融合异构算力和边缘网络,构建在大规模边缘基础设施之上的云计算服务,形成以边缘位置的计算、网络、存储、安全、智能为核心能力的新一代分布式云计算解决方案。

相关文章:

连接云-边-端,构建火山引擎边缘云网技术体系

近日,火山引擎边缘云网络产品研发负责人韩伟在LiveVideoStack Con 2023上海站围绕边缘云海量分布式节点和上百T的网络规模,结合边缘云快速发展期间遇到的各种问题和挑战,分享了火山引擎边缘云网的全球基础设施,融合开放的云网技术…...

系统架构设计师(第二版)学习笔记----系统架构设计师概述

【原文链接】系统架构设计师(第二版)学习笔记----系统架构设计师概述 文章目录 一、架构设计师的定义、职责和任务1.1 架构设计师的定义1.2 架构设计师的任务 二、架构设计师应具备的专业素质2.1 架构设计师应具备的专业知识2.2 架构设计师的知识结构2.3…...

自动化测试:Selenium中的时间等待

在 Selenium 中,时间等待指在测试用例中等待某个操作完成或某个事件发生的时间。Selenium 中提供了多种方式来进行时间等待,包括使用 ExpectedConditions 中的 presence_of_element_located 和 visibility_of_element_located 方法等待元素可见或不可见&…...

vim 替换命令 “:s“

vim 替换命令 ":s" 1. 替换光标所在行的第一个匹配串2. 替换光标所在行全部匹配项3. 替换两行之间每行的第一个匹配项4. 替换两行之间的全部匹配项5. 替换整个文件中的每个匹配串6. 查找整个文件中的每个匹配串并询问是否替换 1. 替换光标所在行的第一个匹配串 命令…...

【golang】调度系列之m

调度系列 调度系列之goroutine 上一篇中介绍了goroutine,最本质的一句话就是goroutine是用户态的任务。我们通常说的goroutine运行其实严格来说并不准确,因为任务只能被执行。那么goroutine是被谁执行呢?是被m执行。 在GMP的架构中&#xff…...

可持久化线段树

可持久化线段树 模板 在某一指定版本的单点查,单点修。 开 m m m 棵线段树,每次修改复制后单点修。时间复杂度 O ( m ( n log ⁡ n ) ) O(m(n\log n)) O(m(nlogn)),空间复杂度 O ( n m ) O(nm) O(nm),不如暴力。 每次修改…...

运行 Node.js 与浏览器 JavaScript

浏览器和 Node.js 都使用 JavaScript 软件语言 - 但字面上的运行时环境是不同的。 Node.js(又名服务器端 JavaScript)与客户端 JavaScript 有许多相似之处。它也有很多差异。 尽管两者都使用 JavaScript 作为软件语言,但我们可以重点关注一些关键差异,这些差异使两者之间…...

File类操作

1. 练习一 在当前模块下的 text 文件夹中创建一个 io.txt 文件 import java.io.File; import java.io.IOException;public class Practice1 {public static void main(String[] args) {File file new File("D:\\kaifamiao");File file1 new File(file, "tex…...

C# 实现电子签名

本项目基于Emgu.CV(C#下OpenCv的封装)开发的,编译器最新版Vs2022,编译环境x86 直接看效果图 1.主页面 2.我们先看手写的方式: 点击确认就到主界面,如下 : 点击自动适配-,再点击生成…...

小米6/6X/米8/米9手机刷入鸿蒙HarmonyOS.4.0系统-刷机包下载-遥遥领先

小米手机除了解锁root权限,刷GSI和第三方ROM也是米粉的一大爱好,这不,在华为发布了HarmonyOS.4.0系统后不久,我们小米用户也成功将自己的手机干山了HarmonyOS.4.0系统。虽然干上去HarmonyOS.4.0系统目前BUG非常多,根本…...

集合框架和泛型二

一、Set接口 1. Set接口概述 java.util.Set 不包含重复元素的集合、不能保证存储的顺序、只允许有一个 null。 public interface Set<E> extends Collection<E>抽象方法&#xff0c;都是继承自 java.util.Collection 接口。 Set 集合的实现类有很多&#xff0c;…...

thinkphp6 入门教程合集(更新中)

thinkphp6 入门&#xff08;1&#xff09;--安装、路由规则、多应用模式 thinkphp6 入门&#xff08;1&#xff09;--安装、路由规则、多应用模式_软件工程小施同学的博客-CSDN博客 thinkphp6 入门&#xff08;2&#xff09;--视图、渲染html页面、赋值 thinkphp6 入门&#…...

openGauss学习笔记-65 openGauss 数据库管理-创建和管理数据库

文章目录 openGauss学习笔记-65 openGauss 数据库管理-创建和管理数据库65.1 前提条件65.2 背景信息65.3 注意事项65.4 操作步骤65.4.1 创建数据库65.4.2 查看数据库65.4.3 修改数据库65.4.4 删除数据库 openGauss学习笔记-65 openGauss 数据库管理-创建和管理数据库 65.1 前提…...

mysql、MHA高可用配置即故障切换

MHA概述 一套优秀的MySQL高可用环境下故障切换和主从复制的软件 MHA的出现就是解决MySQL 单点的问题 MySQL故障过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换 MHA能在故障切换的过程中最大程度上保证数据的一致性以达到真正意义上的高可用 MHA的组成&#xff08;核…...

使用“vue init mpvue/mpvue-quickstart“初始化mpvue项目时出现的错误及解决办法

当使用"vue init mpvue/mpvue-quickstart"初始化 mpvue 项目时出现 "vue-cli Failed to download repo mpvue/mpvue-quickstart: connect ETIMEDOUT IP地址"原因是 github 的 IP 解析失败&#xff0c;连接超时 解决办法&#xff1a;更改最新的 github 的 …...

Linux-Shell整理集合

Shell变量 参考文章&#xff1a; Shell脚本中变量的使用 shell语法之 , ‘ ‘ , {},, ,‘‘,(),$(())四种语法含义 参考文章&#xff1a; shell语法之 , ‘ ‘ , {},, ,‘‘,(),$(())四种语法含义 grep常用用法 Shell awk命令详解 grep 跟awk连着用&#xff1a; 获取某程序的…...

windows环境下node安装教程(超详细)

安装node.js 1、下载node: 下载地址&#xff1a;下载 | Node.js 中文网 node.js的zip包安装时是直接解压缩后就可以了, node.js的msi包是傻瓜式一路next就可以了 选择一中方式就可以 2、解压后的目录,或者mis安装后的目录如下: 3、安装完后&#xff0c;可以在命令行中输入…...

《TCP/IP网络编程》阅读笔记--并发多进程服务端的使用

目录 1--并发服务器端 2--进程 2-1--进程的相关概念 2-2--fork()创建进程 2-3--僵尸进程 2-4--wait()和waitpid()销毁僵尸进程 3--信号处理 3-1--signal()函数 3-2--sigaction()函数 3--3--利用信号处理技术消灭僵尸进程 4--基于多任务的并发服务器 5--分割 TCP 的…...

【C++】day2学习成果:引用、结构体等等。。。

1.封装一个结构体&#xff0c;结构体中包含一个私有数组&#xff0c;用来存放学生的成绩&#xff0c;包含一个私有变量&#xff0c;用来记录学生个数&#xff0c; 提供一个公有成员函数&#xff0c;void setNum(int num)用于设置学生个数 提供一个公有成员函数&#xff1a;void…...

QT 第五天 TCP通信与数据库

一、数据库增删改查 QT core gui sqlgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend on your comp…...

Java程序中常用的设计模式有哪些和该种设计模式解决的痛点

设计模式是大量程序员智慧的结晶&#xff0c;是优秀的代码范式&#xff0c;是以前那些大佬程序员的编程经验总结&#xff0c;非常值得学习。 在软件开发中&#xff0c;有许多常用的设计模式&#xff0c;每种模式都解决了特定类型的问题。以下是一些常见的设计模式及其简要介绍&…...

Android12之解析/proc/pid进程参数(一百六十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

正儿八经的雅思口语盘丝洞大法学习总结(长期修改更新)针对23.9月考生

目录 开篇语 李仙童口语大法 具体体系内容 说道科技产品或者说非传统物品 part2回答八大准则 【part2回答八大准则】&#xff08;一&#xff09; 【part2回答八大准则】&#xff08;二&#xff09; 【part3回答七大准则】&#xff08;一&#xff09; Part 1 核心体系 …...

算法竞赛入门【码蹄集新手村600题】(MT1260-1280)C语言

算法竞赛入门【码蹄集新手村600题】(MT1260-1280&#xff09;C语言 目录MT1260 袋鼠躲猫猫MT1261 留下来的才是幸运数MT1262 约数MT1263 最大的三位约数MT1264 完数MT1265 区间完数MT1266 完数与因子MT1267 亏数MT1268 因数的因数MT1269 区间素数MT1270 素数计算MT1271 三生质数…...

qt连接tcp通信和连接数据库

通过数据库实现学生管理系统 widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//判断数据库对象是否包含了自己使用的数据库 Studemt.dbif(!db.co…...

MySQL Oracle区别

由于SQL Server不常用&#xff0c;所以这里只针对MySQL数据库和Oracle数据库的区别 (1) 对事务的提交 MySQL默认是自动提交&#xff0c;而Oracle默认不自动提交&#xff0c;需要用户手动提交&#xff0c;需要在写commit;指令或者点击commit按钮 (2) 分页查询 MySQL是直接在SQL语…...

Figma实用插件速收藏!精选19个干货插件大公开!

Figma 如今有着大量的插件&#xff0c;在 UI/UX 设计领域&#xff0c;很多工作已经不用真的从零开始做了。用好 Figma 插件&#xff0c;往往能让设计工作事半功倍。不过其中的插件素质差别很大&#xff0c;需要仔细筛选。不过如果你选择了对的插件&#xff0c;合理的设置&#…...

【STM32】FSMC—扩展外部 SRAM 初步使用 1

基于野火指南者《零死角玩转 STM32F103—指南者》的学习 STM32F103系列 FSMC Flexible Static Memory Controller简介 1.详细功能参看《STM32F10x参考手册》&#xff0c;这边是概述 是一个外设&#xff0c;挂载在AHB总线下。 可以用于驱动包括 SRAM、NOR FLASH 以及 NAND FL…...

保姆级教程 --redis启动命令

1、在redis目录 打开命令 windowr 输入cmd 2、输入 redis-server.exe redis.windows.conf 启动redis命令&#xff0c;看是否成功 3、可能会启动失败&#xff0c;报28 Nov 09:30:50.919 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error 4、报错后&am…...

【C++】构造函数分类 ① ( 构造函数分类简介 | 无参构造函数 | 有参构造函数 | 拷贝构造函数 | 代码示例 - 三种类型构造函数定义与调用 )

文章目录 一、构造函数分类1、构造函数分类简介2、构造函数分类代码分析无参构造函数有参构造函数拷贝构造函数 二、代码示例 - 三种类型构造函数定义与调用 一、构造函数分类 1、构造函数分类简介 C 构造函数可以分为以下几类 : 无参构造函数 : 最简单也是默认的构造函数 , 函…...

网站建设一六八互联/东莞搜索优化

本文授权转载自学术头条作者&#xff1a;赵雅琦前段时间&#xff0c;浙江高考满分作文《生活在树上》因为晦涩难懂的内容&#xff0c;刷爆了各种社交媒体。外行人看热闹&#xff0c;内行人看门道&#xff0c;大神们透过现象看本质。一般来说&#xff0c;高考作文可以通过批量化…...

上海公司注册核名查询/黑帽seo教程

为什么80%的码农都做不了架构师&#xff1f;>>> 首先说一下Redis公认的特点&#xff1a; Redis支持数据的持久化&#xff0c;可以将内存中的数据保持在磁盘中&#xff0c;重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据&#xff0c;同…...

wordpress模版做网站/百度百科词条

Word 2013中新功能不少&#xff0c;当然也不能忘记老功能&#xff0c;今天我们要介绍的是带圈字符的输入&#xff0c;不会的朋友赶快擦亮眼睛&#xff0c;跟着小编学习一下&#xff01;①启动Word2013&#xff0c;单击开始--字体选项卡里面的带圈字符按钮。②弹出带圈字符界面&…...

独立网站建设步骤/网站维护一年一般多少钱?

1.增加utf8mb4的支持 SHOW VARIABLES WHERE Variable_name LIKE character% OR Variable_name LIKE collation%; 2.xtrabackup 因为测试环境都是5.7&#xff0c;所以需要升级。 具体步骤 mysql5.7 shell自动安装脚本 2.xtarbackup备份测试库&#xff0c;还原到现在的新安装的库…...

外贸网站布局/谷歌商店官网

文章目录1.判断单链表是否带环为什么快指针走2步&#xff0c;慢指针走1步一定可以相遇如果快指针每次不是走两个节点&#xff0c;是否还会相遇2.找入环点1.判断单链表是否带环 给定一个单链表&#xff0c;如果带环返回true&#xff0c;不带环返回false. 这里设了两个指针&…...

做网站运营好还是SEO好/网站登录入口

怎么设置legacy启动&#xff1f;现在新型电脑都是采用uefi gpt启动模式&#xff0c;以适应win8、win10这些新型操作系统&#xff0c;不过win7之前的系统大多不支持uefi&#xff0c;而是采用legacy启动模式&#xff0c;硬盘分区表是MBR&#xff0c;而不是GPT&#xff0c;如果要在…...