Serverless 的前世今生

2023-11-20

作者:阿里云用户组

从云计算到 Serverless 架构

大家好,我是阿里云 Serverless 产品经理刘宇,很高兴可以和大家一起探索 Serverless 架构的前世今生。

在这里插入图片描述

从云计算到云原生再到 Serverless 架构,技术飞速发展的轨迹都有一定规律可循,那么 Serverless 架构为何而来,因何而生呢?

云计算的诞生

从世界第一台通用计算机 ENIAC 开始,计算机科学与技术的发展就从未停止过前进的脚步,近些年来,更是日新月异。有不断突破和创新的人工智能领域,有 5G 带来更多机会的物联网领域,还有不断走进寻常百姓家的云计算。

在这里插入图片描述

在图中可以看到三个关键词,这是 2003 年到 2006 年间,谷歌发表了三篇重要的论文,这些文章指明了 HDFS(分布式文件系统),MapReduce(并行计算)和 Hbase(分布式数据库)的技术基础以及未来机会,正式奠定了云计算的发展方向。关于这三个文章,或者这三个技术点,也有人曾说“因为它们,云计算才正式拉开帷幕”。

云计算发展是飞速的,也是有目共睹的;但是随着云计算的进程,另一个名词诞生并迅速占领了“风口大旗”,被大众更为广泛地关注,那就是——云原生。

通过对云计算与云原生的文字组成结构分析,可以看到云原生实际上就是在云与计算之间,加了一个 Native,所以可以认为,云计算的飞速发展,无论是从技术迭代还是从概念升级,最终产生了如今耳熟能详的:云原生计算

云计算是什么?其实早在 1961 年云计算的雏形概念就已经诞生了,在麻省理工学院百周年纪念典礼上,约翰·麦卡锡,也就是 1971 年图灵奖获得者,第一次提出了一个概念,这个概念后来被喻为是云计算的“最初的、超前的”遐想模型。它翻译大意为:“计算机在未来,将变成一种公共资源,会像生活中的水、电、煤气一样,被每一个人使用。”时间到了 1996 年,云计算这个词被正式提出;而到了 2009 年,UC Berkeley(加利福尼亚大学伯克利分校)更是在发布的论文中,对云计算进行了较为细致描述,它说云计算是一个即将实现的古老梦想,是计算作为基础设施这一长久以来梦想的新称谓,它在正快速变为商业现实。同时在该文章中,也明确地为云计算做了定义:云计算包含互联网上的应用服务,以及在数据中心提供这些服务的软硬件设施。

云原生的火热

在这里插入图片描述

时至今日,云原生技术的发展同样迅猛,那么什么是云原生呢?在文章“什么是真正的云原生”中,给出了一个非常明确的解释:因云而生的软件、硬件、架构,就是真正的云原生;因云而生的技术,就是云原生技术。确实如此,出生于云,成长在云,因云而生,就是云原生。

那么云原生都包括哪些东西呢?耳熟能详的技术,加上云原生三个词,就都是云原生相关技术了,例如:数据库,云原生数据库;网络,云原生网络等。在 CNCF Landscape 中,可以看到云原生基金会对云原生产品维度的一个描述,包括了数据库、流、消息、包括容器镜像、包括 servicemesh、包括网关、包括K8S、当然,这里还包括一个非常热门的词汇:Serverless

Serverless 架构的出现

在很多时候 Serverless 架构被称为是一种粘合剂,它将云原生的其他很多产品和用户的业务进行了链接,同时又提供了极其诱人技术红利,为此也被很多项目,业务所选择。那么什么是 Serverless 架构?

通过 Serverless 的结构,不难发现其所要传递的心智,Server 指的是服务器,Less 表示的是更少的精力,所以 Serverless 架构所传递的心智是:把更专业的事情交给更专业的人,开发者能够较少地关注服务器等底层相关内容,把更多的精力放在更具价值的业务逻辑之上。

在这里插入图片描述

2009 年,UC Berkeley 发表了一篇关于云计算的文章,在文章中,UC Berkeley 为云计算做出了明确的定义,同时也提出了包括服务的可用性,数据安全性和可审计性等在内的十项云计算所面临的各种困难和挑战,并断言云计算将会引领未来的十年。

2019 年,恰好时隔十年,UC Berkeley 再次发文,不仅从多角度说明了什么是 Serverless 架构,例如从结构角度,肯定了 Serverless 是 FaaS 与 BaaS 的结合;从特性角度,对于被认为是 Serverless 架构的产品或者服务需要具备按量付费和弹性伸缩的特点;并非常激进地表示 Serverless 将会成为云时代默认的计算范式,将会取代 Serverful 计算,由此也意味着服务器 - 客户端模式的终结。

在这里插入图片描述

从 IaaS,到 PaaS,再到 Serverless,云计算的发展,越来越清晰,也越来越明确,去服务器化也越来越明显。

在这里插入图片描述

无论此时我们说云原生,还是 Serverless 架构,云的概念确实是在不断地升级,云的技术也在不断地迭代,而这一切的改变其实都是为了效能提升,为了安全提升,为了成本降低,生产力驱动。

什么是 Serverless 架构?

尽管对于 Serverless 架构的定义,并没有一个非常明确的表述,但是 Serverless 是 FaaS 与 BaaS 的组合这种说法,却被很多人所接受。所谓的 FaaS 就是函数即服务,而 BaaS 则指的是后端即服务,两者搭配,共同成为 Serverless 架构不可获取的部分,为开发者提供降本提效的技术红利。

诚然,CNCF 云原生基金会在 Serverless 白皮书中,肯定了 Serverless 是 FaaS 与 BaaS 的结合这种说法;而 UC 伯克利在论文中,肯定这种说法的同时,也从特性角度指出,对于被认为是 Serverless 架构的产品或者服务,还需要具备按量付费和弹性伸缩等特点,但是这也都是 2019 年的“描述”了。

时至今日,Serverless 架构已经完成了“自我更新与迭代”。在信通院发布的 Serverless 的白皮书中,明确指出 Serverless 架构计算平台包括了函数纬度和应用纬度两种形态,而随着时间的发展,阿里云领先性地推出了 Serverless 应用引擎(SAE),以应用为维度进行 Serverless 化的平台,换句话说,它其实可以是应用 Serverless 化的最佳实践。

在这里插入图片描述

至此,Serverless 架构的组成已经逐渐明确:

  • 从结构角度,Serverless 是计算平台与 BaaS 产品的结合。计算平台包括了事件触发的函数计算,也包括了应用 Serverless 化的最佳实践 Serverless 应用引擎。BaaS 层面则包括了 Api 网管,CDN,对象存储,数据库等一系列的云服务。

  • 从特性角度,就像 UC Berkeley 所说,对于被认为是 Serverless 架构的产品或者服务,还需要具备按量付费和弹性伸缩等特点。

Serverless 架构和传统架构的区别

在这里插入图片描述

作为云时代新的计算范式,Serverless 架构本身属于一种天然的分布式架构,其工作原理较于传统架构虽没有翻天覆地的变化,但也是有细微的不同。

如图所示,传统架构下,开发者开发完成应用之后,还需要购买虚拟机服务,初始运行环境,安装需要的软件(例如 MySQL 等数据库软件,Nginx 等服务器软件等),完成环境的准备之后,还需要上传开发好的业务代码,启动该应用,此时用户才可以通过网络请求,成功的访问到目标应用。但是,如果应用的请求量过大或者过小时,开发者 or 运维人员,还需要针对实际的请求数量进行相关资源的扩充或缩容,并在负载均衡&反向代理模块增加相对应的策略,以确保扩缩容操作的及时生效;同时,在做这些操作的时候还要保证线上用户不会受到影响。

而在 Serverless 架构下,整个应用发布的过程和工作的原理,将会发生一定的变化:

当开发者开发完整业务代码之后,只需要部署或更新到对应的 FaaS 平台即可,完成之后根据真实的业务需求,进行相关的触发器配置,例如为了对外提供 Web 应用服务,可以配置 HTTP 触发器等,此时用户就可以通过网络,访问到开发者所发布的应用。在这个过程中,开发者不需要再额外关注服务器的购买,运维等相关的操作,也无需对一些软件的安装,应用资源的扩缩容进行额外的精力支出;开发者所需要关注的仅仅是自身的业务逻辑,至于在传统架构下需要安装配的各种服务器软件等,都变成了配置项交给云厂商来管理;同样,传统架构下需要根据服务器的利用,而进行资源的扩缩行为,也全都自动化地交给云厂商来实现。

在这里插入图片描述

传统意义上的弹性伸缩,指的是当项目的容量规划与实际集群负载间出现矛盾时,即当现有集群的资源无法承载压力时,通过调整集群的规模或者进一步分配相对应的资源,以保障业务的稳定性。当集群负载较低时,系统可以尽量降低集群的资源配置从而减少闲置资源的浪费,以进一步节约成本开销。但是在 Serverless 架构下,弹性伸缩被进一步泛化,即在用户侧的表现,取消了项目本身容量规划的过程,而是完全由平台调度决定资源的增加与缩减。

在 UC Berkeley 的文章中,对 Serverless 架构特点与优势的描述,有这样的表达:“代码的执行不再需要手动分配资源。不需要为服务的运行指定需要的资源(比如使用几台机器、多大的带宽、多大的磁盘等),只需要提供一份代码,剩下的交由 Serverless 平台去处理就行了。当前阶段的实现平台分配资源时还需要用户方提供一些策略,例如单个实例的规格和最大并发数,单实例的最大 CPU 使用率。理想的情况是通过某些学习算法来进行完全自动的自适应分配”,其实作者在此处所描述的“完全自动的自适应分配”指的就是 Serverless 架构的弹性伸缩的特点。

Serverless 架构下的弹性伸缩指的是,Serverless 架构可以根据业务流量波动,自动进行资源的分配和销毁,并最大程度化地平衡稳定性、高性能、提升资源利用率。即当开发者完成业务逻辑的开发,把业务代码部署到 Serverless 平台之后,平台通常并不会立即分配计算资源,而是将业务代码与配置等相关内容进行持久化,当流量请求到来时,Serverless 平台会根据真实流量以及配置情况,自动的进行实例的启动,反之也会自动的进行实例的缩减,甚至在某些时候实例的个数可以缩减到 0,即平台并未分配资源给对应函数。

Serverless 架构的核心技术红利的:弹性伸缩能力,在一定程度上也代表着提升资源利用率,朝着绿色计算方向不断前进的过程。

在上图弹性伸缩部分:左侧是传统云主机架构下流量与机器负载示意图,右侧是 Serverless 架构弹性模式下流量与负载的示意图,在这两个图中,橙色面积部分表示的是用户侧所感知的资源负载能力,蓝色的折线表示的是某网站在某天的流量走势图。通过这两张图对比,不难发现,传统云主机架构下,需要人工进行资源的增加与缩减,变化的粒度是主机级别,所以实现性受到严重考验,粒度过粗仍然没办法有效地平衡资源浪费与性能稳定之间的关系。

在图中,蓝色线以上的橙色面积,是被浪费掉的资源;右侧是 Serverless 架构弹性模式下流量与负载的示意图,在这个图中可以清晰地看到负载能力始终在和流量是匹配的,即并不需要像左侧传统云主机架构,需要在技术人员的人为干预下应对流量的波峰波谷;这一切的弹性能力(包括扩容和缩容),均由云厂商提供;这种模式下所带来的好处一方面是降低业务运维人员的压力,以及降低其工作复杂度,另一方面可以看到在用户侧的感知是,真实的资源消耗与所需的资源消耗是成正相关的,可以极大程度的降低资源浪费的情况,在一定程度上也是符合绿色计算思想的。

所谓的按量付费是一种先使用后付费的计费方式,通过按量付费,用户无需提前购买大量资源,而是可以根据资源的使用量进行后付费。即便非 Serverless 架构的产品或者服务,也具备一定的按量付费能力,例如云主机等产品均有按量付费的选项。但是之所以 Serverless 架构可以将按量付费作为一种技术红利,其很大的一部分原因在于它按量付费的粒度会更细,在用户侧的资源利用率表现为近乎 100%(实际上资源利用率是没有达到 100%,仅仅指代的是在请求粒度下,用户侧在 Serverless 架构下的一种感知)。

以某网站为例,在白天时资源利用率相对较高,夜晚时间段资源利用率相对较低,但是一旦购买了服务器等资源,实际上无论当天流量多少,费用都是持续支出的过程;即便采用按量付费的模型,也会因为计费粒度过粗,而没办法最大可能性地提升资源利用率。按照《福布斯》杂志的统计,在商业和企业数据中心的典型服务器仅提供 5%~15%的平均最大处理能力的输出,这无疑也证明了传统服务器的资源使用率过低和浪费过多的情况。

而 Serverless 架构的出现,可以让用户委托服务提供商管理服务器、数据库和应用程序甚至逻辑,这样的做法一方面减少了用户自己维护的麻烦,另一方面用户可以根据自己实际使用函数的粒度进行成本的支付。对于服务商而言,他们可以将更多的闲置资源进行额外的处理,从成本的角度、“绿色”计算的角度来说,都是非常不错的。而从另一个角度,尽管 Serverless 架构的按量付费模型也是按照资源使用量进行收费的,但是计费粒度更为细腻:

  • 请求次数角度:Serverless 架构的计费粒度是请求级别的,而传统的云主机等架构的计费粒度是实例级别的(往往这种实例级别的所支持的请求个数远远大于 1);

  • 计费时间角度:Serverless 架构的计费时间通常为秒级(但是现在阿里云支持毫秒级计费或者是百毫秒级计费)而对于传统的云主机架构,计费时间粒度往往是小时级;

在上图中按量部分,是该网站的某天的流量图,图中的蓝色的折线为一个网站在某天的流量走势:通过对“传统云主机架构流量与费用支出示意”与“Serverless 架构弹性模式下费用支出示意图“进行对比,不难发现,左侧的传统云主机架构下流量与费用支出示意图,通常业务在上线之前是需要进行资源使用量评估的,当该网站的资源使用量评估之后,购买了一台可以承受每小时最大 1300PV 的服务器,那么在一整天的时间内,这台服务器所提供的算力总量为橙色面积,所需的费用也是橙色面积对应算力的费用;但是我们明显可以看到,真正有效的资源使用与费用支出仅仅是流量曲线下面的面积,而流量曲线上方的橙色面积部分则为资源损耗与额外的支出部分;而右侧的 Serverless 架构弹性模式下费用支出示意图,费用支出和流量基本是成正比的,即当流量处于一个较低水位时,对应的资源使用量是相对较少的,同样对应的费用支出也是相对较少的;当流量处于一个比较高的数值时,借助 Serverless 架构的弹性伸缩能力与按量付费能力,资源使用量和费用支出将会成正相关增长;在整个过程中,能够清晰看到并未像左侧传统云主机架构下流量与费用支出示意图,产生明显的资源浪费与额外的成本支出。

视频应用、社交应用等场景下,用户上传的图片、音视频往往总量大、频率高,对处理系统的实时性和并发能力都有较高的要求。例如:对于用户上传的图片,可以使用多个函数对其分别处理,包括图片的压缩、格式转换、鉴黄鉴恐等,以满足不同场景下的需求。例如:

在这里插入图片描述

除此之外,Serverless 还可以在实时文件处理,实时流处理、机器学习、IOT 后端、移动应用后端、web 应用程序等多种场景下发挥作用:

在这里插入图片描述

全球领先的 Serverless 平台

阿里云是国内较早一批提供 Serverless 服务的厂商,在过去的几年实践中,也取得了优异的成绩。包括不限于,2021 年 Q1,Forrester 评测中,阿里云的 Serverless 产品能力位居中国第一;CNCF 2020 年云原生调研报告中,阿里云 Serverless 市场份额是国内第一;信通院 2020 年中国云原生用户调研报告中,阿里云 Serverless 用户占比同样国内第一。

在这里插入图片描述

阿里云 Serverless 产品和服务,之所以可以得到广大开发者的认可,其根本原因是阿里云 Serverless 架构安全、技术稳定领先的基础上,还有着以用户为核心的态度。

阿里云 Serverless 产品布局

在这里插入图片描述

从上图中,可以看到在最底层是计算平台和 BaaS 产品层。计算产品部分,有事件驱动的—— 函数计算 FC,也有应用 Serverless 化的最佳实践——Serverless 应用引擎 SAE;在 BaaS 服务联动部分,有不同层面的服务,数据库,网络,消息等,而这些产品也正在不断的 Serverless 化,从云到云原生再到 Serverless 化;在上层有开发者工具和应用中心,为广大开发者提供前后端一体化、WebAPI 以及数据库处理、AI推理等一系列的 All On Serverless 解决方案和场景。

让 Serverless 更简单:Serverless Devs

在这里插入图片描述

在生态层面,阿里云 Serverless 团队开源了无厂商锁定工具——Serverless Devs,秉承着让 Serverless 更简单,可以在 Serverless 应用全生命周期发挥作用的态度,Serverless Devs 不仅仅在底层规范模型上,推动信通院一同发布 Serverless 工具链模型,也在工具层面捐赠项目到 CNCF Sandbox,成为了全球首个 CNCF Serverless Tools 中的 Sandbox 项目。

综上所述,做 Serverless 架构,我们是认真的,也是专业的。做感动的产品,做好用的工具,做有责任感的工作,做踏实又创新的内容,感谢大家对阿里云 Serverless 架构的关注。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Serverless 的前世今生 的相关文章

  • 阿里云添加二级域名

    阿里云添加二级域名 1 申请配置域名 1 1 购买域名 1 2 登录到阿里云服务器控制台 进入云解析DNS页面 1 3 点击 域名解析 1 4 点击 添加记录 1 5 进行txt校验 1 6 添加记录
  • AWS向量数据库Amazon OpenSearch Service使用测评

    前言 在大模型盛行的当今 选择适宜的数据库显得尤为重要 因为你需要面对海量训练数据 快速的检索至关紧要 以及对于存储的要求也是至关重要的 对于海量的数据查询和存储是需要巨大的算力支持 向量数据库常用在一些图像文本或者视频的生成中进行训练 快
  • 干货下载丨不分业态、不关注核心需求,怎么做得好项目管理?!

    项目管理 装备制造业的破局利刃 对于装备制造行业而言 每一笔订单都是 非标定制 小批量制造 这种特性决定了其行业企业普遍存在 新品开发周期长 生产效率低 质量不稳定 交货期不稳定 成本预算难控制 非标品报价慢 等问题 如何提升企业的管理水平
  • 中国首家!腾讯云入选Gartner®视频平台服务市场指南代表厂商

    近日 Gartner正式发布 Market Guide for Video Platform Services 视频平台服务市场指南 下称 指南 凭借领先的音视频技术和产品组合优势 腾讯云成为中国首家且唯一入选的代表厂商 腾讯云VPS一站式
  • k8s集群内部署nexus

    一 前言 在k8s集群中部署nexus服务需要使用到pv pvc服务来存储nexus的数据 需要使用service服务来提供对外访问nexus服务的端口 需要使用deployment服务来管理nexus服务 接下来就是用这些服务来在k8s集
  • 第六章--- 实现微服务:匹配系统(下)

    0 写在前面 这一章终于完了 但是收尾工作真的好难呀QAQ 可能是我初学的缘故 有些JAVA方面的特性不是很清楚 只能依葫芦画瓢地模仿着用 特别是JAVA的注解 感觉好多但又不是很懂其中的原理 只知道要在某个时候用某个注解 我真是有够菜的
  • Kubernetes 简介

    1 Kubernetes简介 一个容器管理应用 提高容器化服务的部署和管理效率 2 容器部署 2 1 传统部署形式 应用共用服务器环境 对于底层资源 文件目录 JDK 网络带宽等 存在弹性争夺 冲突等问题 容易导致应用性能不稳定 服务器环境
  • k8s集群使用calico网络组件

    一 前言 k8s的网络组件可以使用flannel或者calico两种 flannel的配置比较简单 但是性能还是calico会更高一点 所以现在来介绍以下calico网络组件的部署 二 部署 k8s集群版本对calico的版本也有对应要求
  • 终于找到了最新版的Zookeeper入门级教程,建议收藏!

    小熊学Java https javaxiaobear cn 1 分布式一致性 1 CAP 理论 CAP 理论指出对于一个分布式计算系统来说 不可能同时满足以下三点 一致性 在分布式环境中 一致性是指数据在多个副本之间是否能够保持一致的特性
  • 销毁通过 Serverless 创建的资源而不销毁 Lambda 端点

    我在 serverless yml 文件中定义了以下资源 为我所有不同的发展阶段创建资源非常有用 resources Resources uploadBucket Type AWS S3 Bucket Properties BucketNa
  • CloudPulse:一款针对AWS云环境的SSL证书搜索与分析引擎

    关于CloudPulse CloudPulse是一款针对AWS云环境的SSL证书搜索与分析引擎 广大研究人员可以使用该工具简化并增强针对SSL证书数据的检索和分析过程 在网络侦查阶段 我们往往需要收集与目标相关的信息 并为目标创建一个专用文
  • 如何将 CloudWatch Lambda Insights 添加到无服务器配置?

    如何将 CloudWatch Lambda Insights 添加到无服务器配置 我不想手动执行此操作 因此我希望这是一个选项 我添加了这样的跟踪 tracing lambda true 但这仅启用 AWS X ray 而不启用其他选项 我
  • 阿里云服务器地域怎么选择?哪个地域好?

    阿里云服务器地域和可用区怎么选择 地域是指云服务器所在物理数据中心的位置 地域选择就近选择 访客距离地域所在城市越近网络延迟越低 速度就越快 可用区是指同一个地域下 网络和电力相互独立的区域 可用区之间可以做到故障隔离 将应用部署到不同可用
  • DIY 云成本优化的5大挑战

    外星人 黑暗骑士 帝国反击战 在 Incredibuild 如果有一样东西我们喜欢 那就是我们的话题永远有续集 我们将针对云端优化推出一个更深入的续集 但这一次我们谈论的是云成本优化 采用 DIY 的方式 如果你还不确定什么是云端优化 请查
  • K8S中的Secret创建和使用

    天行健 君子以自强不息 地势坤 君子以厚德载物 每个人都有惰性 但不断学习是好好生活的根本 共勉 文章均为学习整理笔记 分享记录为主 如有错误请指正 共同学习进步 文章目录 创建secret 1 kubectl命令创建 2 yaml文件创建
  • 如何使用 Spring Cloud Function 公开多个函数端点?

    我有一个基本的Spring云函数具有两个声明函数 小写 和 大写 的应用程序 如果我像平常一样创建应用程序 SpringBootApplication并将两个函数注释为 Beans 功能豆 一切正常 这两个函数都通过单独的 HTTP 端点公
  • Kubernetes (十三) 存储——持久卷-动静态分配

    一 简介 二 NFS持久化存储步骤 静态分配 1 集群外主机用上次nfsdata共享目录中创建用来测试的pv 1 3 目录 用来对三个静态pv 2 创建pv的应用文件 vim pv yaml apiVersion v1 kind Persi
  • “无服务器-离线:找不到路由。”在离线模式下运行 AWS Lambda 函数

    这个问题几乎与无服务器离线未获取路由 https stackoverflow com questions 55130796 serverless offline not getting route 但由于这个问题没有得到答复 我再次询问 我
  • 我可以使用 AWS API Gateway 作为 S3 网站的反向代理吗?

    我在 AWS S3 上有一个无服务器网站 但 S3 有一个我想克服的限制 它不允许我拥有友好的 URL 例如 我想替换网址 www mywebsite com user html login daniel 对于这个 URL 友好 www m
  • 如何使用 AWS Lambda 安装 Git?

    我在代码提交存储库中有代码 我正在编写一个 lambda 函数来为代码提交存储库的每个签入 事件 构建代码 我无法安装 git 因此无法克隆存储库 我该怎么办呢 正如其他人提到的 在 lambda 上安装 git 要么非常困难 要么完全不可

随机推荐

  • Vs2019 社区版 内网登录

    问题概述 1 Vistual Studio Community 是免费版 但需要登陆授权 2 由于办公使用的是内网 也是使用离线下载方法安装的 因此无法联网登陆 解决方法 1 外网打开Vistual Studio Community 201
  • 第二十一章 webpack5原理loader概述

    简介 loader其实是一个函数 用来帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块 loader的分类以及执行顺序 1 分类 pre 前置loader normal 普通loader inline 内联load
  • 编译型语言和解释型语言各自的特点和区别,Python的解释器

    编译型语言和解释型语言各自的特点和区别 Python的解释器 编译型语言 将源代码通过编译器编译生成可执行文件 机器指令 再由机器运行机器码 解释型语言 通过解释器逐行解释每一句源代码 打个比方 编译型相当于用中英文词典 翻译器 将一本英文
  • Vue如何封装组件

    要封装一个 Vue 组件 可以按照以下步骤进行操作 创建一个新的 Vue 单文件组件 vue 文件 并命名为你的组件名 例如 MyComponent vue 在组件文件中 使用
  • 关于python传参引发的一些思考

    人总有不会的 遇到一些问题深究下去必定有所收获 这个问题是在我写python爬虫项目的时候的疑问 可能是我太菜了 以前没学透彻 也可能是上学期学Java的时候按值传递的特点给搞混了 因为当时在用多线程的生产者消费者问题处理资源队列 参考别人
  • task_5 - 副本

    Task01 Task06树模型与集成学习笔记整理 1 Task01 信息论基础 决策树分类思想 用树的节点代表样本集合 通过某些判定条件来对节点内的样本进行分配 将它们划分到当前节点下的子节点 这样决策树希望各个子节点中类别的纯度之和应高
  • 内存文件系统提升磁盘性能瓶颈

    author skate time 2011 08 22 提升磁盘性能瓶颈 linux的内存文件系统 ramdisk ramfs tmpfs ramdisk 是块设备 在使用它们之前必须用选择文件系统将其格式化 并且调整文件系统大小比较麻烦
  • 【廖雪峰python进阶笔记】模块

    1 导入模块 要使用一个模块 我们必须首先导入该模块 Python使用import语句导入一个模块 例如 导入系统自带的模块 math import math 你可以认为math就是一个指向已导入模块的变量 通过该变量 我们可以访问math
  • Python Pandas导出Hbase数据到dataframe

    Python导出Hbase数据的思路 使用happybase连接Hbase 使用table scan 扫数据 将得到的数据整理为dataframe格式 将从Hbase中得到的byte类型的数据转为str类型的数据 示例代码 import h
  • 数据结构之哈希(C++实现)

    数据结构之哈希 C 1 哈希概念 顺序结构以及平衡树中 元素关键码与存储位置之间没有对应关系 因此在查找一个元素的时候 要经过关键码多次比较 顺序表查找的时间复杂度为O N 而平衡树中树的高度为O log 2 N 搜索的效率取决于搜索过程中
  • Mybatis

    文章目录 前言 业务逻辑 使用Mybatis实现 使用Mybatis plus实现 前言 工作的时候 遇到了需要将一个数据库的一些数据插入或更新到另一个数据库 一开始使用insert into TABLE col1 col2 VALUES
  • 全国大学生计算机技能应用大赛Java模拟题

    全国大学生计算机技能应用大赛Java模拟题 竞赛官网 http www cnccac com 单选题 1 以下哪个不是java的垃圾回收算法 A 标记清除算法 B 空间分配算法 C 标记整理算法 D 分代回收算法 2 下列名称在java语言
  • cocos 基础动作加上简单特效

    使用文理缓存创建精灵 cc Director getInstance getTextureCache addImage WechatIMG3 png localsp cc Sprite createWithTexture cc Direct
  • Error inflating class androidx.constraintlayout.widget.ConstraintLayout

    今天下载了android studio 3 3 1体验体验新版本来着 没想到新建项目直接来了个这个 android view InflateException Binary XML file line 2 Error inflating c
  • 常见的距离算法和相似度(相关系数)计算方法

    摘要 1 常见的距离算法 1 1欧几里得距离 Euclidean Distance 以及欧式距离的标准化 Standardized Euclidean distance 1 2马哈拉诺比斯距离 Mahalanobis Distance 1
  • vue3 ---- 递归组件生成menu菜单 && 路由守卫鉴权

    目录 递归组件 el menu 父组件 子组件 路由 Vue路由守卫实现登录鉴权 全局守卫 路由独享的守卫 组件内的守卫 完整的导航解析流程 菜单权限 按钮权限 对于一些有规律的DOM结构 如果我们再一遍遍的编写同样的代码 显然代码是比较繁
  • IDEA切换分支导致项目异常, 部分类爆红问题解决

    关于idea切换分支导致项目异常爆红的方式解决两种办法 1 maven 并没有及时刷新 所以 当我们第一时间出现这个问题的时候 首选是刷新maven 如图所示 2 如果刷新mavne 还是没有解决idea 项目爆红的情况的话 那我们就需要考
  • 计算机不能创建用户,Windows10系统无法创建新用户该怎么办?

    由于工作需要 需要对同一台计算机创建多个用户帐户 Windows7操作系统创建新用户的方法很简单 简单几步就能够轻松完成创建 参照Windows7操作系统创建新用户的步骤 发现并不适用于Windows10操作系统 系统会提示需要登录Micr
  • CocosCreator波浪Shader

    waveEffect effect Copyright c 2017 2020 Xiamen Yaji Software Co Ltd CCEffect techniques passes vert sprite vs vert frag
  • Serverless 的前世今生

    作者 阿里云用户组 从云计算到 Serverless 架构 大家好 我是阿里云 Serverless 产品经理刘宇 很高兴可以和大家一起探索 Serverless 架构的前世今生 从云计算到云原生再到 Serverless 架构 技术飞速发