关于函数:体验有奖函数计算-x-通义千问预体验一键部署AI应用赢Airpods

函数计算团队全新上线“函数计算 FC 一键部署 通义千问 预体验、文生图、图生图、图生文、文生文5大经典 AI 场景,让您取得通义千问 30次对话预体验机会,同时简略、高效实现一键部署图像生成、文字生成服务,速成 AIGC 创作家。 体验流动链接:https://developer.aliyun.com/topic/aigc_fc 双重奖品设置,实现体验场景可得社区400积分兑换奖品,还可加入 AI生成图像较量赢取Airpods、阿里云定制蓝牙音箱及阿里云定制清雅杯。 残缺内容请点击下方链接查看: https://developer.aliyun.com/article/1231408?utm_content=g_10... 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

June 14, 2023 · 1 min · jiezi

关于函数:详解合约函数调用中的上下文变化

详解合约函数调用中的上下文变动合约函数调用中的上下文变动是智能合约中一个十分重要且常见的概念。当一个函数被调用时,其所处的上下文环境可能会发生变化,这会对函数的执行产生影响。在本文中,咱们将具体探讨合约函数调用中的上下文变动,并为读者提供一些示例。 什么是合约函数调用中的上下文变动?在智能合约中,每个函数都有本人的变量和状态。而当一个函数被调用时,它的上下文环境就会发生变化。具体来说,上下文环境包含了以下几个方面: 合约地址:即调用该函数的合约地址。调用者地址:即调用该函数的用户地址。gas 限度:即该函数可应用的 gas 限度。msg.value:即该函数所附带的以太币数量。block.number:即以后区块的编号。now:即以后工夫戳。这些变动将间接影响函数的执行后果,并且须要开发人员在编写合约代码时充分考虑。 示例接下来,咱们将通过两个示例来演示合约函数调用中的上下文变动。 示例 1假如咱们有一个简略的合约,其中蕴含了一个 add 函数,用于将两个数字相加并返回后果。该合约的代码如下所示: pragma solidity ^0.8.0;contract SimpleContract { uint256 public result; function add(uint256 a, uint256 b) public { result = a + b; }}当初,咱们想要调用 add 函数,并将数字 10 和 20 相加。假如咱们是来自另一个合约的调用者。那么,咱们须要通过以下代码来实现: pragma solidity ^0.8.0;import "./SimpleContract.sol";contract CallerContract { SimpleContract private simpleContract; constructor(address _simpleContractAddress) { simpleContract = SimpleContract(_simpleContractAddress); } function callAddFunction() public { simpleContract.add(10, 20); }}在下面的代码中,咱们首先导入了 SimpleContract,而后创立了一个名为 CallerContract 的新合约。咱们还定义了一个名为 simpleContract 的公有变量,并在构造函数中初始化。 接下来,咱们编写了一个名为 callAddFunction 的函数,它将调用 simpleContract 中的 add 函数,并传递数字 10 和 20 作为参数。 ...

May 24, 2023 · 2 min · jiezi

关于函数:消息服务-Serverless-函数计算如何助力企业降本提效

背景介绍音讯队列服务(下文均以 Message Service 命名)作为云计算 PaaS 畛域的基础设施之一,其高并发、削峰填谷的个性愈发受到开发者关注。Message Service 对上承接音讯生产者服务的申请,对下连贯消费者服务。提到生产:那就不得不引入两个问题? 如何以低成本、高吞吐、低延时的形式将音讯数据从 Message Service 输送给上游生产服务?如何疾速构建免运维、按需弹性伸缩算力的音讯生产服务?明天就来聊聊如何在阿里云上基于 Serverless 计算服务 + Message Service 构建这样一套零碎。 残缺内容请点击下方链接查看: https://developer.aliyun.com/article/1124852?utm_content=g_10... 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

May 15, 2023 · 1 min · jiezi

关于函数:源码解读PolarDBX中的窗口函数

为什么须要窗口函数?Window是一个罕用且重要的性能,PolarDB-X作为一款分布式数据库,天然也反对了窗口函数。对于业务开发来讲,其能够大大简化业务SQL的设计,比方分组排序功能,如果反对窗口函数,则只需应用排序函数即可,例子如下。 例:我当初有一张表,蕴含学生姓名,学生班级,学生问题,当初请你帮我写一条SQL,实现对每个班级内的同学进行排名的需要? 有窗口函数时: SELECT student_name, class_name, score, DENSE_RANK() OVER (PARTITION BY class_name ORDER BY score DESC) AS rankFROM student_scoresORDER BY class_name, rank ASC;残缺内容请点击下方链接查看: https://developer.aliyun.com/article/1181870?utm_content=g_10... 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

May 12, 2023 · 1 min · jiezi

关于函数:源码解读PolarDBX中的窗口函数

为什么须要窗口函数?Window是一个罕用且重要的性能,PolarDB-X作为一款分布式数据库,天然也反对了窗口函数。对于业务开发来讲,其能够大大简化业务SQL的设计,比方分组排序功能,如果反对窗口函数,则只需应用排序函数即可,例子如下。 例:我当初有一张表,蕴含学生姓名,学生班级,学生问题,当初请你帮我写一条SQL,实现对每个班级内的同学进行排名的需要? 有窗口函数时: SELECT student_name, class_name, score, DENSE_RANK() OVER (PARTITION BY class_name ORDER BY score DESC) AS rankFROM student_scoresORDER BY class_name, rank ASC;残缺内容请点击下方链接查看: https://developer.aliyun.com/article/1181870 版权申明:本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

April 25, 2023 · 1 min · jiezi

关于函数:事件总线-函数计算构建云上最佳事件驱动架构应用

间隔阿里云事件总线(EventBridge)和 Serverless 函数计算(Function Compute,FC)发表全面深度集成曾经过来一年。站在零碎元数据互通,产品深度集成的肩膀上,这一年咱们又走过了哪些历程? 从事件总线到事件流,从基于 CloudEvents 的事件总线触发到更具个性化的事件流触发,函数计算已成为事件总线生态不可或缺的重要组成部分,承载了 EventBridge 零碎架构中越来越多的角色,事件流基础架构的函数 Transform,基于函数计算的多种上游 Sink Connector 投递指标反对,函数作为 EventBridge 端点 API Destination;基于事件总线对立,规范的事件通道能力,和基于函数计算麻利、轻量、弹性的计算能力,咱们将又一次起航摸索云上事件驱动架构的最佳实际。 本文主题围绕事件总线+函数计算,构建云上最佳事件驱动架构利用。心愿通过上面的分享,帮忙大家深刻了解 Serverless 函数计算、EventBridge 事件总线对于构建云上事件驱动架构利用的价值和背地的逻辑、 为什么函数计算是云上事件驱动服务最佳实际?为什么咱们如此须要事件总线服务?随同着这些谜题的解开,最初,让咱们一起理解利用于理论生产的一些 Serverless 事件驱动客户案例。 事件驱动架构的实质Back to the Nature of Event-Driven大家可能会纳闷,事件驱动妇孺皆知,为什么咱们又要从新探讨事件驱动呢?我想这也正是咱们须要探讨它的起因,回归实质,从新起航。 事件驱动可能是一个比拟宽泛的概念,而本文聚焦事件驱动架构的探讨,事件驱动架构作为一种软件设计模式,确实不是一个新的概念,随同着计算机软件架构的演进,它曾经存在了一段很久的工夫,大家对它的探讨也从未进行过,当咱们须要从新探讨一个曾经存在的概念的时候,我想咱们有必要从新回到它最开始的定义,一起摸索那些实质的货色,重新认识它。 下面的这些内容是我从相干的一些材料上摘录的对于事件驱动架构的一些形容,“abstract”,“simple”,“asynchronous”,“message-driven” 这些具备代表性的词汇很好的给予事件驱动架构一个宏观的形容;从事件驱动架构的抽象概念,到它简洁的架构,以及事件驱动架构要达成的目标,和它在理论的零碎架构中所展示的状态。 事件驱动架构基本概念及状态在理解了对于事件驱动架构的一些根本形容之后,咱们须要进一步明确事件驱动架构所波及的一些基本概念和架构状态。依据维基百科形容,事件驱动架构波及的外围概念如下所示: 事件驱动架构根本状态 围绕事件的流转,依据事件驱动架构的概念和根本状态,次要波及以下四个外围局部: Event Producer:负责产生事件,并将产生的事件投递到事件通道;Event Channel:负责接管事件,并将接管的事件长久化存储,投递给订阅该事件的后端解决引擎;Event Processing Engine:负责对于订阅的事件做出响应和解决,依据事件更新零碎状态;Downstream event-driven activity:事件处理实现之后,对于事件处理响应的一种展现。事件驱动架构要达成的目标理解了事件驱动架构的根本状态,架构中事件通道的引入,解耦了事件生产和事件处理这两个最根本的零碎角色,那么这样的架构模型所要达成的最终目标到底是什么? 零碎架构松耦合 事件生产者与事件订阅者在逻辑上是离开的。事件的生成与应用的拆散意味着服务具备互操作性,但能够独立扩缩、更新和部署。 只面向事件的涣散耦合能够缩小零碎依赖项,并容许您以不同的语言和框架实现服务。您无需更改任何一个服务的逻辑,即可增加或移除事件生成方和接管方。您无需编写自定义代码来轮询、过滤和路由事件。 零碎的可伸缩性 基于事件驱动架构的松耦合个性,意味着能够独立对事件生产者,事件通道服务,以及事件处理引擎进行独立的扩缩容;尤其对于后端事件处理引擎,能够依据音讯解决响应 SLA 和后端资源供应进行弹性扩缩容;同时能够基于事件粒度构建不同规格的后端解决服务,实现更细粒度的零碎弹性伸缩。 零碎的可扩展性 零碎的可扩展性,次要体现在当零碎须要减少新的性能,如何疾速的基于现有零碎架构疾速构建反对新的业务逻辑,在事件驱动架构利用中,围绕事件粒度的解决模式,可能人造疾速反对减少新的基于事件的数据流形象。 当零碎中减少新的事件类型的时候,无需调整变更公布整个零碎,只须要关注须要订阅的事件进行事件处理逻辑的开发和部署即可,也能够基于原来的零碎做很少的代码变更即可实现,也能够在业务初期通过独立的服务订阅指定的事件实现特定的业务逻辑反对。 为什么函数计算是云上事件驱动服务最佳实际?在探讨完事件驱动架构根本模型之后,我想对于事件驱动的概念,状态咱们有了对立的意识和了解,接下来咱们进入议题的第二个局部,为什么函数计算是云上事件驱动服务最佳实际? 函数计算简介函数计算 FC 是一款基于事件驱动的全托管计算服务,相干的产品细节能够见官网介绍。作为一款通用的事件驱动型计算服务,接下来我会从三个方面进行具体的介绍。 编程范式 应用函数计算,用户无需洽购与治理服务器等基础设施,只需编写并上传代码。函数计算为你筹备好计算资源,弹性地、牢靠地运行工作,并提供日志查问、性能监控和报警等开箱即用性能,编程范式带来开发的“简略,快捷”。 依照函数粒度进行独立的性能单元开发,疾速调试,疾速的部署上线,省去了大量资源购买,环境搭建的运维工作;同时函数计算是一个事件驱动的模型,事件驱动,意味着用户不须要关注服务产品数据传递的问题,省去了在编写代码中波及的大量服务拜访连贯的逻辑;“事件驱动” + “函数粒度开发” + “免服务器运维”等几个维度特色帮忙函数计算撑持“聚焦业务逻辑麻利开发”的底层逻辑。 ...

January 13, 2023 · 1 min · jiezi

关于函数:鱼传科技函数计算只要用上就会觉得香

深圳鱼传科技有限公司是专一以精准营销和互联网生态产品经营为外围的综合互联网营销推广服务商。通过整合全网优质媒体资源,并联合智能数据模型和 AI 标签算法,向企业提供包含流量矩阵搭建经营、媒介流量采买、投放模型设计、产品营销策划、数据监控剖析、成果经营等多层次服务。作为函数计算的资深用户,鱼传科技的 CTO 和技术负责人跟咱们聊了鱼传科技的 Serverless 旅程。 目前鱼传科技的业务次要基于支付宝小程序进行承载,小程序具备轻量、关上不便、内容能够疾速更新等特点,为了适应市场的疾速变动和多变的客户诉求,对麻利开发提出了更高的要求。鱼传科技的业务特点,还具备访问量稳定大、流量突发预测难等特点,尤其是流动期间拜访突增对小程序后端服务的稳固和弹性也是一个很大的考验。而阿里云函数计算是典型的 Serverless 计算平台,具备极强的弹性能力,能够做到百毫秒弹性扩缩,能够很好的撑持业务弹性扩大。同时对函数计算,用户上传代码即可运行,无需关注和保护服务器,也极大地提高了后端开发效率。 函数计算 FC :https://www.aliyun.com/product/fc? 这些特点使得函数计算成为很多企业撑持小程序/挪动 APP 的优先选择,尤其是有突发流量或者流量稳定较大的业务场景。如下是基于鱼传科技的第一视角出现的 Serverless 落地实际。 简单交互小程序如何应答访问量激增?2018 年底,咱们开始尝试应用函数计算。过后,公司的外围业务是在支付宝上制作一些小程序。“多多有礼”小程序就是在那个时候上线的,“多多有礼”是一款主打互动领奖的小程序,以后曾经积攒了百万日活的规模,是一款十分受用户欢送的产品。然而在 2018 年,“多多有礼”最后上线时,咱们遇到了已有业务零碎难以承载突增流量的难题。那时咱们的业务都跑在服务器下面,为了能抗住高并发流量,咱们筹备了大略三、四台高配服务器做负载平衡,然而在业务并发高峰期,服务崩掉的状况还是常常产生。因为这个小程序波及到的业务逻辑,和利用后端交互比拟多,有很多简单流程,比方打卡、签到、庄园经营等,所以遇到突增流量,单纯减少服务器数量很难扛住。 另外咱们还遇到了资源利用率低的问题。“多多有礼”在初期上线的时候,业务高峰期并发大略在 1000-2000,但业务低峰期可能也就几十,这是因为小程序设计的用户打卡、签到等动作,使得用户量非常容易在早上、早晨,或者某一个特定工夫暴增。在这种状况下咱们再用 ECS 的话,不仅须要依照峰值流量预留足够的 ECS 资源,保护起来也会变的非常复杂,资源利用率很难做下来,费用也会成倍的减少。所以咱们过后十分迫切地想把这个事件从咱们零碎里解耦,如果能简化咱们的运维复杂度,还能引入弹性能力就好了。 通过调研咱们发现过后阿里云,只有函数计算 FC 这款产品具备相应的特点,所以咱们就开始尝试把整个业务都迁到阿里云函数计算上来。通过这 3 年多的应用,咱们把新的利用、能够迁徙的旧利用、外部利用/内部利用等都陆续迁徙上函数计算了。能够这么说,如果函数计算崩了,咱们公司的业务根本也就瘫了。然而通过这 3 年来的应用,发现函数计算的稳定性还是超预期的,比咱们保护应用服务器的时候,业务稳定性和性能都有大幅晋升,当初峰值能够达到数万 QPS、数千函数并发同时稳固运行。而且咱们和函数计算也建设了专门的技术支持群,有任何技术问题,都能很快失去响应,这也是为啥咱们敢把公司所有的业务都基于函数计算来部署的起因。应用函数计算,真正帮忙咱们解决了很多稳定性和性能问题。 “多多有礼”小程序页面 最佳实际再来分享下咱们应用函数计算的一些最佳实际,心愿也能帮忙到其余用户应用函数计算。 1.开发流程咱们公司的次要技术栈是基于 PHP 语言,也会应用一些 Web 框架,像 Lavaral,针对 Web 框架,为了能在函数计算上运行起来,咱们也对框架做了些适配,一个我的项目拆成一个或多个文件,对应多个函数,单个文件有的1万行代码,根底文件一百行左右。然而当初函数计算配合 Serverless Devs 工具反对了多语言 Web 框架的“0”革新迁徙,咱们也在尝试应用。 目前咱们每个开发会独立负责一个函数服务,服务上面每个函数会作为一个小的利用,局部我的项目会跨服务依赖一些性能函数,然而咱们都会尽可能都独立开。函数计算也反对了层性能,前面会用层来部署公共函数、依赖,比方给用户发红包,代码只用写一份。另外对新招进来的开发来讲,函数计算上手门槛还是很低的,不必治理服务器搭环境,能够间接在线编辑代码、部署、测试。 2.流水线和灰度公布咱们本地始终采纳的 SVN 存储代码,SVN 提交代码反对触发 Action,咱们封装了函数计算的 API 接口,能够通过关键字触发函数和服务的公布。为了防止公布影响线上服务,咱们还应用了函数计算的版本和别名的性能。失常线上业务会公布成新的版本,同时把 HTTP 流量入口绑定的 release 别名指向新的版本,这样就实现了公布过程,如果最新的代码呈现问题,能够更改别名的指向,就能达到一键回滚到上个版本。同时咱们也会创立一个测试别名,会先实现版本的测试后,才会把承载现网流量的 release 别名指向到新版本。这样通过别名的能力就辨别出了线上环境和测试环境,十分不便。 3.运维治理对函数计算来讲,根本是不须要关怀资源保护的,像咱们最依赖的弹性能力。然而对于业务运维来讲,监控日志就成了十分要害的伎俩。函数计算集成了 SLS,每次申请都会生成一条日志,能够比拟不便的过滤出谬误日志,对线上问题排查还是比拟不便的。另外函数计算也提供了比拟全的监控视图,咱们最罕用的就是申请量、谬误次数、并发、执行耗时等指标,针对谬误次数也加了告警,这样开发就能够间接兼业务运维,效率成倍增加。 成果比照: 比照之前应用服务器,函数计算的确给咱们带来了很大的便利性,咱们也是最早吃螃蟹的人,根本随同着函数计算一路成长,咱们也非常高兴的看到,函数计算的性能越来越丰盛,体验也越来越好。总结下来: ...

December 14, 2022 · 1 min · jiezi

关于函数:graphicsh函数应该在哪里调用

graphics.h函数介绍graphics.h是TC外面的图形库,如果要用的话应该用TC来编译。具体分为:像素函数、直线和线型函数、多边形函数、填充函数等。然而在咱们应用的编译器vc6.0和visual studio 2022编译器中是不反对graphics.h图形库的,当然vc6.0和visual studio 2022编译器也自带了微软的图形库API(也叫Windows API,它的函数基本上蕴含在了windows.h的头文件中),那么如果咱们要在vc6.0和visual studio 2022中应用graphics图形库怎么办? 解决办法保留好正在做的工作后,临时敞开vs或者vc,下载easyx,运行后重启vs或者vc,即可看到函数失常下载地址https://easyx.cn/ EasyX Graphics Library 是针对 Visual C++ 的收费绘图库,反对 VC6.0 ~ VC2022,简略易用,学习老本极低,应用领域宽泛。目前已有许多大学将 EasyX 利用在教学当中。

May 26, 2022 · 1 min · jiezi

关于函数:gets函数方便使它欢迎安全性使它终被遗弃

前言:鱼与熊掌不可兼得,让gets函数被c11规范委员会究竟狠下心抉择抛弃的,我认为是它函数本身的平安问题,正如马斯洛需要档次实践提到的那样,平安是人的最底层需要档次,比起函数调用的不便,平安更让人感觉重要。本篇博客的结尾,以我写的“单词读取计算”程序一小部分为例,在键盘字符输出中,咱们通常想到的是scanf和gets,gets函数相比于scanf,很好的解决了字符串读取空格即进行的特点,因而在某些场景下显得更为简略易用。 puts("hey ,please inter your word here"); gets_s(txt); ....... ...... puts(wors); puts("Done"); //这里不能用scanf然而,这个长处,也成为了它的毛病,咱们大胆的假如下,如果有一位调皮捣蛋的用户不厌其烦的筹备在咱们的程序输出一本柯林斯那么多的单词 那么状况会怎么,可能的答案是缓冲区溢出(当然如果多余字符只是占用尚未应用的内存,就不会立刻呈现这个问题),如果放在网络安全术语里,那就是缓冲区溢出攻打。 gets函数还有一个典型的毛病,那就是攻击者能够很好的插入威逼代码,从而实现攻打目标。 这也因而c99规范委员会开始倡议不再应用,随后,并在c11规范委员会以更强硬的态度抉择了抛弃。 gets的抛弃天然让咱们一些输出解决变得不不便,因而,咱们抉择了其余相似函数进行取代。 fgets(): 会指定检测大小,但会将超出字符串的局部放入缓冲区,下一次调用时又会呈现; 不会将换行符转为空字符,而是保留换行符并增加空字符’\0’,这会意味着字符串比原应有大1,或者读到遇到的第一个换行符为止。 gets_s()和fgets()的区别: (1)gets_s()只从规范输出中读取数据,所以不须要第3个参数; (2)如果gets_s()读到换行符,会抛弃它而不是存储它;这里和gets()函数简直一样,齐全能够用gets_s()替换gets()。 (3)如果gets_s()读到最大字符数都没有读到换行符或文件结尾,会执行以下几步。首先把指标函数数组中的首字符设置为空字符,读取并抛弃随后的输出直至读到换行符或文件结尾,而后返回空指针。接着,调用依赖实现的“处理函数”(或你抉择的其余函数),可能会停止或退出程序。 应用gets()函数不平安,它会擦除现有数据,存在安全隐患。gets_s()函数很平安,然而,如果并不心愿程序终止或退出,就要晓得如何编写非凡的“处理函数”。 所以,当输出与预期不符时,gets_s()齐全没有fgets()函数不便、灵便。兴许这也是gets_s()只作为C库的可选扩大的起因之一。 s_gets() 自定义函数,要求是:读取整行输出并用空字符代替换行符,或者读取一部分输出,并抛弃其余部分

May 8, 2022 · 1 min · jiezi

关于函数:异步请求积压可视化|如何-1-分钟内快速定位函数计算积压问题

简介:本文分为三个局部:概述中引入了积压问题,并介绍了函数计算异步调用根本链路;并在指标介绍局部具体介绍了指标查看形式,分类解读了不同的指标含意;最初以一个常见的异步申请积压场景为例,介绍如何在 1 分钟内疾速定位积压问题。 为异步调用保驾护航应用函数计算异步调用的开发者最关怀的问题是:调用申请是否在预期的工夫内被解决实现。若没能解决实现,那么在客户眼中就是异步调用申请积压了,然而基于之前函数计算异步调用指标体系,无论是定位积压,还是查看积压,过程都是非常繁琐的。 针对以上问题,函数计算推出了一系列异步调用申请积压相干的指标,可能帮忙用户疾速定位申请积压,向用户展现积压量化值。本文将具体介绍如何通过这些监控指标疾速定位到函数异步调用呈现的积压问题,为各位开发者解说降级后的异步调用指标体系。 在开始之前,先简略介绍下函数计算异步调用。 异步调用是函数计算调用函数的一种形式,通过异步调用你不仅能够确保函数会至多执行一次,还能够保留调用执行过程中的状态转换信息和执行后果,其调用链路如下所示: 用户/事件源发动异步调用申请后会立即返回本次申请 ID,随后函数计算零碎将本次调用的相干信息转换为音讯的格局,放入 MNS 音讯队队列中供零碎内上游模块生产,上游模块会基于解析进去的调用音讯进行函数调用。 调用实现后,如果函数配置了 Destination,则零碎会基于调用后果以及 Destination 内容进行进一步解决,Destination 相干内容介绍请参考异步调用文档: https://help.aliyun.com/docum... 指标降级降级后的函数计算异步调用链路监控指标次要新增了如下几类: 上面咱们将对上述指标进行具体解读。 指标查看目前能够通过函数计算控制台或者 Serverless Devs 工具这两种形式查看函数的监控指标大盘,上面咱们将以控制台为例,领导大家如何查看异步调用链路相干的监控指标,基于 Serverless Devs 的查看形式能够参考: https://github.com/devsapp/fc... 上面介绍的步骤前提是已开明了函数计算服务;且胜利创立了服务以及函数,如果还未进行这些操作,请参考应用控制台创立函数: https://help.aliyun.com/docum... 首先关上函数计算控制台,点击左侧 监控大盘 标签,滑倒底部,能够查看到该地区所有服务的异步调用解决状况以及异步音讯解决均匀延时概览表格: 此时咱们点击任意一个服务名称,进入后,能够看到该服务下所有函数的异步调用解决状况;以及异步音讯解决均匀延时概览表格: 接下来咱们点击任意一个函数名称,进入后能够看到所有函数纬度的监控指标,并以图的模式展现: 至此,咱们曾经学会了这些指标的查看路径。上面持续为各位开发者介绍解读上述异步链路相干指标。 指标解读咱们将依据不同的指标类型对监控指标进行分类解读。 异步调用解决状况异步申请入队 异步调用中,达到函数计算的申请数,当入队申请数大于申请解决实现数时,示意有申请积压,函数解决异步申请的速度小于异步申请发动的速度。请调整函数弹性伸缩(含预留资源)下限,参考: https://help.aliyun.com/docum... 或可钉钉搜寻退出阿里函数计算官网客户群(11721331)分割咱们进行解决。 异步申请解决实现 异步调用中,函数计算解决实现的申请数,异步申请解决实现数量,应始终不大于异步申请入队的数量。 异步申请积压数 曾经达到函数计算的异步申请中,期待解决以及正在解决中的申请对立视为积压申请, 这些申请的数量为异步音讯积压数,当这个值不为 0 时,示意异步调用申请是有积压的。 该指标将异步调用申请积压量化,解决积压数不可见问题,极大进步了异步调用的可观测性,也是本次降级的重要内容之一。 异步申请解决延时均匀解决时延 函数异步调用申请从进入解决队列到开始解决的时延,按指定工夫粒度统计求平均值。当该值高于预期时,表明函数异步调用申请可能存在积压。 “异步申请入队”、“异步申请解决实现” 以及 “均匀解决延时” 这三个指标被搁置在监控大盘的概览图表中,旨在帮忙用户疾速定位到呈现积压的函数,解决积压定位难的问题。 1 分钟定位积压问题在之前的异步调用指标体系下,如果想要定位积压问题,首先须要找到积压函数,此时须要一一函数查看其函数监控指标详情,定位胜利后,也无奈直观看到具体的积压量化值。 降级后的异步调用指标体系可能很好地解决积压问题定位难以及积压量化的问题。上面将围绕积压问题的场景,形容如何应用上述指标疾速定位积压问题。 业务场景问题形容: 小张的业务波及到三个函数,且都是异步调用,某天用户的业务出了问题,每个环节的异步解决时延都增大了。为了疾速定位问题,用户想到了异步链路监控指标,进行了如下定位动作。 定位过程: 首先关上地区级别的监控大盘,抉择指标时间段,查看该地区下各个服务的监控指标; 发现多个服务的异步调用均匀解决延时高于预期,同时其异步申请入队数均大于申请解决实现数,示意这些服务都有肯定水平异步调用音讯积压,且 A-Service 的异步申请入队数量和异步调用申请实现数差异最大,积压最重大,点击 A-Service 查看监控指标: ...

February 18, 2022 · 1 min · jiezi

关于函数:花小钱办大事云函数云开发撬动央视晚会的电商大促弹性架构实践

在 2021 腾讯数字生态大会上,一个「花小钱办小事」的客户胜利案例让客户和开发者们印象粗浅的。这正是基于云函数和云开发的小程序利用实际。 往年,某快消品领导品牌冠名了央视大型节日晚会,在晚会当晚,该客户播种的小程序新增注册用户数达到了预期业务指标,当天的拜访次数达到千万级 ,霎时并发最高每分钟数百万申请,而整个云函数计算资源的应用费用仅几万元。整体耗时安稳,均匀 API 耗时在 20 毫秒以下,保障了此次流动的顺利进行。 在评估了不同的小程序技术选型之后,客户从开发效率、弹性反对、平安等角度抉择了云开发和云函数构建该客户的小程序,其外围业务逻辑如登陆认证、抽奖、问答等。利用云开发提供的公有链路、全链路性能优化、根底平安爱护等劣势,联合云函数弹性伸缩、低运维老本、高性价比的劣势,为本次流动提供了稳固等基础设施反对和先进高效的开发工具,保障流动圆满成功。 01.央视晚会-电商节日大促场景需要剖析该小程序承载着此次流动的用户拉新和转化指标,当主持人口播流动开始,电视屏幕上显示小程序二维码,观众扫码进入流动落地页: 1. 需要特点和痛点 利用生命周期短利用生命周期基于商业模式——节日大促、电商秒杀的利用指标在于短时间内疾速暴发抢占市场,生命周期通常在1周至1个月。 定制化需要高为了与流动指标和产品品牌深度联合,流动页面从设计到交互环节设置十分个性化,须要进行定制化开发。 典型的高并发场景霎时访问量通常是平时的几十倍,须要思考计算、存储、网络和服务依赖等方方面面,如果没有辨认出要害的束缚和危险,甚至会有宕机危险。 2. 计划劣势和价值 全链路性能优化从小程序前端接入层到后端数据库,从内部链路到 VPC 网络,针对客户预估的 QPS 做全链路性能剖析、监控及调优,升高响应工夫、进步零碎吞吐量和整体服务的可用性。 高效的低代码开发工具云开发+微搭低代码平台,反对自定义的组件,赋能小程序服务商晋升小程序构建效率,通过页面利落拽的模式即可实现疾速实现页面构建。 弹性伸缩的云上资源面对霎时高并发资源预留痛点,云函数极致的弹性扩容能力实用于高并发场景,无需预估流量大小,依据流量状况主动进行扩缩容,整个过程无需人工干预。 作为本次央视晚会电商大促的计划架构师,腾讯云 Serverless 专家架构师杨政权示意: “ 弹性伸缩、按量计费的云函数冲破传统 PaaS 产品的瓶颈,通过疾速扩缩容轻松应答霎时高并发的秒杀、大促场景,以稳固、牢靠和高性价比的计算服务撑持业务增长。” 02.云函数 + 云开发 ,应答电商行业大促场景央视晚会的小程序场景,是电商行业的用户营销和节日大促的常见需要。每年大促期间,批发行业线上渠道都面临历史级别的流量挑战,中大型电商平台的峰值调用量可达上千万/分钟,面临高于日常 10-20 倍的流量压力。而日常经营流动中,例如精品秒杀、限时抢购等,电商平台也同样面临大流量高并发、波峰波谷用户流量显著分化的典型场景。 作为底层算力,云函数助力云开发为开发者提供高可用、主动弹性扩缩的后端云服务,蕴含计算、存储、托管等 Serverless 化能力。在腾讯云产品的根底上,依据业务场景须要进行性能的整合与定制,更加贴近小程序 / Web 利用开发需要,帮忙开发者对立构建和治理后端服务和云端资源,防止利用开发过程中繁琐的服务器搭建及运维,让开发者能够专一于业务逻辑的实现,升高开发门槛,进步开发效率。 计划劣势 疾速构建通过微搭低代码 WeDa 简略的「利落拽」疾速实现流动页面搭建,创意想法即刻实现,开发效率进步 3-5 倍以上。 超高并发可疾速拉起 10w 并发实例,稳固反对刹时超高流量涌入。 平安稳固提供微信平安网关、风控、公有链路、鉴权等能力守护平安,杜绝羊毛党,防备歹意攻打。 更低成本流动大促专属资源包服务配置,用完即停,升高外围服务资源投入。 《2021 腾讯数字生态大会 - 花小钱办小事客户胜利案例演讲原文》“云原生 2.0 的技术,也就是 Serverless 的技术,首先咱们看一看行业现状,传统的研发模式,有两个比拟显著的问题: 基本上 40% 左右的用户,他们的 CPU 利用率小于10%,这个数据代表什么含意呢?就是这么多的用户,有90%的CPU是闲置的,这是一个极大的节约。企业研发人员和运维人员的配比大略是 3:1,随着企业规模的一直加大,运维人员的需要越来越多,有很大的人力放在在基础设施的保护下面,这是咱们看到的问题。Serverless 能够很好地解决这两个问题,首先,它是依照用户理论的申请量、理论的使用量进行计费的。当空转的时候,齐全不计费;齐全不须要为空转买单,只须要为本人理论的应用买单。特地是对于 CPU 利用率不高的企业,通过采纳 Serverless 技术,能够极大地升高本人的老本。其次是免运维:所谓的 Serverless 是对用户来说,不须要运维,那么运维工作交给谁呢?运维工作都交给私有云的服务商,由咱们承当运维工作。整个都是自动化的过程,对于用户来讲是免运维,所以客户的运维老本失去了大幅度晋升。 ...

December 28, 2021 · 1 min · jiezi

关于函数:跨越行业绊脚石阿里云函数计算发布-7-大技术突破

作者|望宸 等 Serverless 的实质是通过屏蔽底层的计算资源,来实现业务层开发的专一度和自由度。但越是往上形象,云厂商在底层的实现就越是简单。函数计算将服务进一步拆分到函数的颗粒度,这势必会给开发、运维、交付等带来新的挑战,例如如何对函数进行端云联调、如何对函数进行可观测和调试、如何优化 GB 级别的镜像冷启动?这些以往在服务的颗粒度时,都不是问题的事件,成了 Serverless 大规模落地企业外围生产业务的绊脚石。 2021 云栖大会现场,阿里巴巴研究员、阿里云智能云原生利用平台总经理 丁宇(叔同)重磅公布了函数计算的 7 大技术创新和冲破,减速古代利用架构的变革。 Serverless Devs 2.0:业内首发 Desktop,反对端云联调、多环境部署开源近一年, Serverless 开发者平台 Serverless Devs 2.0 版本正式公布。相比 1.0 ,2.0 在性能、应用体验实现全方位晋升,业内首发桌面客户端 Serverless Desktop,对桌面客户端进行了精密设计兼具美感和实用主义,具备更强的企业级服务能力。 作为业内首个反对支流 Serverless 服务/框架的云原生全生命周期治理的平台,Serverless Devs 致力于为开发者打造 Serverless 利用开发一站式服务,Serverless Devs 2.0 提出多模式调试计划,包含买通线上线下环境;本地对接线上环境并进行调试的端云联调计划、本地间接进行开发态调试的本地调试计划、以及云端运维态调试的在线调试/近程调试计划等。新版本减少多环境部署部署能力,Serverless Devs 2.0 已反对一键部署框架 30 余种,包含 Django,Express,Koa,Egg,Flask,Zblog,Wordpress 等。 业内首发实例级别可观测和调试实例是函数资源最小的可被调度的原子单位,类比容器的 Pod。Serverless 将异构根底资源高度形象,因而“黑盒问题”是 Serverless 大规模遍及的外围落地之痛。业内同类产品均没有透出“实例”概念,也从未在可观测性能中将 CPU、内存等指标透出,但可观测就是开发者的眼睛,没有可观测,何谈高可用呢? 函数计算重磅公布实例级别可观测能力,对函数实例进行实时监控和性能数据采集,并进行可视化展现,为开发者提供函数实例端到端的监控排查门路。通过实例级别指标,您能够查看 CPU 和内存应用状况、实例网络状况和实例内申请数等外围指标信息,让“黑盒”不黑。同时,函数计算将通过凋谢局部实例登录权限,做到既能观测,还能调试。 业内首发固定数量、定时、水位主动伸缩的实例预留策略函数计算冷启动受到多个因素影响:代码和镜像大小、启动容器、语言运行时初始化、过程初始化、执行逻辑等,这依赖用户和云厂商的双向优化。云厂商会主动为每个函数调配最合适的实例数量,并进行平台侧的冷启动优化。但对于某些在线业务时延十分敏感,云厂商无奈代替用户进行更深层的业务优化,如对代码或依赖进行精简、编程语言的抉择、过程的初始化、算法优化等。 业内同类产品广泛是采纳预留固定实例数量的策略,即让用户配置 N 个并发值,除非手动调整,否则在调配了 N 个实例后不会再伸或者缩。这种计划只解决了局部业务高峰期的冷启动延时,但大大增加了运维老本和资源老本,对红包大促等带有不定期峰谷的业务,其实并不敌对。 因而,函数计算率先将局部实例资源的调度权限授予用户,容许用户通过固定数量、定时伸缩、按水位伸缩、混合伸缩等多维度的实例预留策略,来预留适量函数实例,别离满足业务曲线绝对安稳(如 AI/ML 场景)、峰谷时间段明确(如游戏互娱、在线教育、新批发等场景)、突发流量无奈预估(如电商大促、广告等场景)、业务混淆(如 Web 后盾、数据处理等场景)等不同场景的诉求,从而升高冷启动对时延敏感型业务的影响,真正实现弹性和性能兼顾的终极目标。 业内率先推出 GPU 实例函数计算提供弹性实例和性能实例两种实例类型,弹性实例规格从 128 MB 到 3 GB,隔离粒度做到了整个云生态最细,能真正实现普适场景下资源利用率 100%;性能实例规格区间范畴蕴含 4 GB、8 GB、16 GB 和 32 GB。资源下限更高,次要实用于计算密集型场景,如音视频解决、AI 建模和企业级 Java 利用等场景。 ...

October 27, 2021 · 1 min · jiezi

关于函数:直播预约云托管-or-云函数业务如何做好技术选型

云开发者较为相熟的CloudBase云函数和基于容器技术的微信云托管: 别离有哪些劣势? 利用场景有何异同? 如何依据本身业务需要抉择最合适的技术? 本期微信云托管「从入门到精通」系列直播将具体比照和剖析云托管和云函数技术,并解答开发者关怀的常见问题。 直播工夫: 10月13日(周三) 19:00 分享嘉宾: 李冠宇,微信云托管、云开发产品经理、架构师 直播地址: 视频号(横屏观看更清晰)Bilibili https://live.bilibili.com/21571381

October 13, 2021 · 1 min · jiezi

关于函数:MySQL函数

MySQL函数MySQL函数介绍 数学函数字符串函数工夫函数加密函数数学函数留神: 每个函数后面都须要加 : SELECT 。 数学函数 ABS() 返回绝对值 如: (-100) 值 : 100PI() 返回的圆规率 如 (不必写) 值 : 3.1415926CEIL() 向上取整数 如:(3.14) 值 :4 ( 留神第三个是i )FLOOR() 向下取整数 如: (3.14) 值 :3POW(x,y) x的y次方 如(2,3) 值 :8RAND() 随机返回0-1值 如 :() 值 : 0.018137501569592863TRUNCATE(x,y) x保留y位小数 如 :(3.1415926,3) 值 :3.141-- abs() 绝对值SELECT ABS (-100);-- pi() 返回圆 规率SELECT PI();-- SQRT ()返回非正数x的二次方SELECT SQRT(2);-- POW 返回 x的 y 次乘方 须要SELECT POW(2,10);SELECT POWER(2,10)-- CELL() or SELECT CEIL(3.14); -- 向上取整数-- floor()SELECT FLOOR(3.14); -- 向下取整数-- round() 四舍五入取整数 还能够保留小数SELECT ROUND(3.4);SELECT ROUND(3.5);SELECT ROUND(3.7,2)-- pow() x 的 y 次方SELECT POW(2,3);-- random 随机0到1 SELECT RAND();-- truncate() 保留小数 抉择 SELECT TRUNCATE(3.14159265758,3);SELECT TRUNCATE(RAND()* 1000 ,3);字符串函数字符串函数 ...

September 24, 2021 · 2 min · jiezi

关于函数:把递归函数改为非递归的通用套路

这里指的通用套路是把递归执行改为在一个函数中循环执行。出于好奇心想找出一种把递归改为非递归的通用形式,并学习其中的思路。在网上找了几篇文章,联合函数调用栈的了解,感觉本人总结的应该比拟全面了,所以记录下来跟大家交换下。 递归执行和一般嵌套执行的区别先看一段简略的代码,计算阶乘的递归函数: // n! = n * (n - 1) * (n - 2) * ... * 1function getFactorial(n) { if (n === 1) { return 1; } else { return n * getFactorial(n - 1); }}递归调用简略点来说就是函数在执行过程中调用了本身。在下一次调用中如果没达到设定的递归完结条件,这个过程会始终继续上来;当递归条件完结时,调用链条中的函数会一个接一个的返回。如以上的代码,当 n === 1 时,就会触发递归的完结条件。 这里咱们思考一下,递归函数的执行跟一般的函数嵌套执行有什么不同?:thinking: 其实没什么本质区别,递归调用和一般函数嵌套调用的层数一样也是无限的,层数的多少由递归完结条件来决定,无非是递归是本身调用本身(直觉上是代码的执行又回到了后面的行数)。接下咱们康康函数嵌套执行时产生了什么。 计算机是如何嵌套执行函数的?如果你理解计算机执行汇编/机器码的原理就会晓得我接下来可能会说运行时函数调用栈。不过我打算用一种简略的形容来疏导你明确或加深印象。 首先,我先问个问题:一个函数在某一次的执行过程中,是什么货色让这一次执行与另外一次执行是有所差异的? 简略点来说,能够把这个问题了解为函数执行上下文。这个上下文有以下内容: 参数;函数体中定义的变量;返回值;举个函数嵌套执行的栗子,a 函数以后在执行中,这个时候其中有条语句要执行 b 函数,这个时候能够简略了解为计算机做了以下的事件: 保留 a 函数的执行上下文;切换到 b 函数的上下文;代码执行来到了 b 函数的结尾,b 函数执行完并返回值;切换回 a 函数的上下文,继续执行 a 函数残余的代码;这个过程就是运行时函数调用栈,用栈这种数据结构来实现了上下文的切换。 咱们下面说到过递归调用能够类比为一般嵌套调用,无非是这一次的执行上下文切换到了下一次的执行上下文,并且留神还有代码执行的管制(后面说过,递归是又回到了后面行数执行)。通过以上的形容咱们能够失去一些思路,模仿递归,要解决两个次要问题: 模仿函数调用栈,切换执行上下文;管制语句的执行程序,从前面的代码回到后面的代码执行;执行上下文的切换,能够用栈来模仿。那么如何管制语句的执行程序呢?上面来介绍一种 Continuation 技术。 Continuation来看个示例: function test() { console.log(1); console.log(2); console.log(3);}以上的输入是 123,咱们当初要从新封装一个函数,内容一样,然而扭转这三句代码的执行程序,2 输入后持续回到 1,第二次输入 2 时再持续输入 3 并完结,也就是输入 12123。当然,不是要你反复写多余的 console.log 的。 ...

September 17, 2021 · 4 min · jiezi

关于函数:COS数据工作流云函数最佳实践-自定义音视频转码

01 背景音视频作为信息流传中流量占比最大的局部在各行业的业务中都弥足重要,而不同的业务场景中对音视频的解决逻辑可能具备行业的特殊性。 私有云尽管提供大量的视频解决服务供用户抉择,但仍然不能做到全面笼罩用户的非凡流程及定制化需要,应用 COS 工作流解决联合云函数定制逻辑此时就是一个绝佳抉择,帮忙用户疾速创立满足需要的各种音视频解决服务。 02 利用场景疾速接入用户自建转码集群,兼容用户原有业务;反对行业非凡格局与解决逻辑,接入电影、安防等非凡行业;反对用户自定义解决逻辑,满足各场景下定制流程需要;触发工作流批量模板化解决,满足视频网站、教育、社交互联行业常见音视频解决需要;03 计划劣势减速开发:不再须要关注资源运维与组件开销,极大地升高了服务架构搭建的复杂性;升高开销:闲暇时没有资源在运行,函数执行时按申请数和计算资源的运行工夫免费,价格优势显著;高可用、高扩大:依据申请主动平行调整服务资源,领有近乎有限的扩容能力,且罢黜单可用区运行的故障危险;04 配置步骤1.到 COS 控制台存储桶详情,创立工作流,能够自定义过滤后缀过滤规定,创立自定义函数节点。 2.在函数节点弹窗里,点击新建函数,浏览器新标签会关上 SCF 的创立云函数的页面。 3.创立云函数步驟: A. 抉择“COS 数据工作流音视频转码”模板;B. 配置足够的内存、执行超时工夫;C. 该函数模板反对五个环境变量;i. targetBucket:指标存储桶,必填;ii. targetRegion:指标存储桶地区,必填;iii. targetKeyTemplate:指标门路模板,可选,默认$$_transcode.$;vi. ffmpegTemplate:转码命令模板,必填,例如$ -loglevel error -i $ -r 10 -b:a 32k $;v. localTmpPath:长期保留门路,当绑定CFS时能够更改长期门路,可选,默认 /tmp;D. 启用权限配置,绑定蕴含以后存储桶读权限和转码后存储桶写权限的角色,创立运行角色请看文档;E. 点击实现。 如需新建运行角色,能够抉择“云函数”作为角色载体,配置 QcloudCOSFullAccess 权限,或新建角色后自行绑定只蕴含存储桶的权限。 4.回到方才创立工作流的页面,选中刚创立的自定义转码函数,并保留工作流,在工作流列表页开启工作流。 5.上传文件,查看工作流解决胜利后,能够看到上传的视频已胜利转码保留为新的文件。

August 6, 2021 · 1 min · jiezi

关于函数:COS-数据工作流-Serverless云函数自定义处理能力发布

01 背景在工业4.0的浪潮下,智能和数据与物理世界联合越加严密,多元化、灵便、高效的数据处理能力成为各行各业的热点需要。尽管COS曾经预置电商、文创、教育、社交、安防等行业须要的根底数据处理能力,但在非凡流程和定制化需要方面私有云仍然难以做到全方位满足客户需要。 02 数据工作流全新能力出炉:反对自定义云函数COS 数据工作流是一套残缺的端到云到端的数据存储、解决、公布等“一站式”云上智能解决方案。 COS 数据工作流最新减少了自定义函数的解决能力,开发者可增加 Serverless 云函数节点,实现业务具体的定制需要。 Serverless 云函数在COS本身数据处理能力之外,为用户提供更多可能性,满足用户自研定制化需要的同时,让开发者只需专一于外围业务逻辑研发,使生产力失去极大的开释,降本增效。 COS+云函数工作流程 在 COS 工作流+云函数联合的工作模式下,能够解决各行业不同用户的定制化流程痛点,满足大批量的定制化需要。 03 计划劣势低成本:毫秒粒度按量计费,在闲暇时主动缩容,极大节俭服务器老本。与传统本地转码相比,老本能够升高 60% 以上;高并发:依据申请主动调整服务资源,反对上万台计算节点同时扩容,打消并发压力;灵便定制:可依据业务须要,自定义函数的解决逻辑,也可平滑迁徙本地逻辑上云,满足开发者不同场景需要;减速开发:聚焦业务开发,无须要关注资源运维与组件开销,升高服务架构搭建的复杂性与运维老本; 04 最佳实际数据工作流作为一种功能强大、灵便易用的数据处理云上智能解决方案,在不同的场景下有不同的利用计划。依据 COS 用户应用工作流的共性需要,咱们提供了两个应用场景的最佳实际: 最佳实际一:自定义转码 私有云尽管提供大量的视频解决服务供用户抉择,但仍然不能做到全面笼罩用户的非凡流程及定制化需要,应用 COS 工作流解决联合云函数定制逻辑此时就是一个绝佳抉择,帮忙用户疾速创立满足需要的各种音视频解决服务。 操作阐明:创立工作流的自定义函数节点时,抉择“COS 数据工作流音视频转码”,即可实现自定义的转码。 最佳实际二:计算文件校验值 COS 文件上传下载场景下,为保障文件完整性,用户须要计算文件的哈希值。目前 COS 只提供 CRC64 值,当用户须要应用MD5、SHA1、SHA256值校验时 ,可应用工作流联合自定义函数模板。 操作阐明:创立工作流的自定义函数节点时,抉择“计算COS对象的哈希值”,即可主动执行文件哈希值计算。以下截图是计算后的哈希值示例。 往期举荐https://segmentfault.com/a/11...

August 5, 2021 · 1 min · jiezi

关于serverless:独家对话阿里云函数计算负责人不瞋你所不知道的-Serverless

简介: 如果你是一名互联网研发人员,那么极有可能理解并利用过 Serverless 这套技术体系。纵观 Serverless 过来十年,它其实因云而生,也在同时扭转云的计算形式。如果套用技术成熟度曲线来形容的话,那么它曾经走过了萌芽期、认知幻灭期,开始朝着成熟稳固的方向倒退。将来,市场对 Serverless 的接受程度将越来越高。 作者 | 杨丽起源 | 雷锋网(ID:leiphone-sz) Serverless 其实离咱们并没有那么边远。如果你是一名互联网研发人员,那么极有可能理解并利用过 Serverless 这套技术体系。纵观 Serverless 过来十年,它其实因云而生,也在同时扭转云的计算形式。如果套用技术成熟度曲线来形容的话,那么它曾经走过了萌芽期、认知幻灭期,开始朝着成熟稳固的方向倒退。将来,市场对 Serverless 的接受程度将越来越高。 不要诧异,阿里云团队在真正开始构建 Serverless 产品体系的最开始的一两年里,也曾遭逢外部的一些争议。而今,单从阿里团体外部的很多业务线来看,曾经在朝着 Serverless 化的方向倒退了。 日前,阿里云凭借函数计算产品能力寰球第一的劣势,入选 Forrester 2021 年第一季度 FaaS 平台评估报告,成为比肩亚马逊成为寰球前三的 FaaS 领导者。这也是首次有国内科技公司进入 FaaS 领导者象限。 在与雷锋网的访谈中,阿里云 Serverless 负责人不瞋阐释了 Serverless 的演进历程、引入 Serverless 面临的难点与挑战、以及无关云原生的趋势预判。 “肯定要想明确做这件事的终局是什么,包含产品体系的定位,对开发者、对服务商的价值等等这些问题。这要求咱们一直通过实际和意识的深入,让这些问题的答复可能逐步清晰起来。这也是咱们这么多年实际积攒的贵重教训。”不瞋指出。 只管企业的实际还存在种种纳闷和挑战,但 Serverless 实际上离咱们并没有那么边远。举一个最近的例子,新冠疫情让近程办公、在线教育、在线游戏的利用需要短期内减少。业务规模的爆发式增长,对每一个需要的响应须要更加及时,这对利用架构的弹性,对底层计算的速度,对研发效率的晋升等,都要求业务减速向新技术架构演进。 而不瞋的现实就是,帮忙更宽泛的客户实现向新技术架构的平滑迁徙,让 Serverless 渗透到所有的云利用中。 不瞋作为阿里云 Serverless 产品体系的负责人,也是国内 Serverless 的晚期实践者。以下将出现是对这次访谈的残缺总结。 Serverless 的定义 在探讨之前,咱们先明确 Serverless 的定义,确保大家对 Serverless 的认知是统一的。 当初 Serverless 越来越热,无论是工业界还是学术界,都将 Serverless 视为云计算倒退的下一阶段。Serverless 有很多种表述,其中伯克利大学的定义绝对谨严一些。 ...

April 22, 2021 · 2 min · jiezi

关于神经网络:基于深度神经网络的噪声标签学习

摘要:介绍带噪学习畛域前沿办法,解决不完满场景下的神经网络优化策略,旨在晋升模型性能。本文分享自华为云社区《Learning from Noisy Labels with Deep Neural Networks》,原文作者:猜沟。 Introduction:神经网络的胜利建设在大量的洁净数据和很深的网络模型根底上。然而在事实场景中数据和模型往往不会特地现实,比方数据层面有误标记的状况,像小狗被标注成狼,而且理论的业务场景考究时效性,神经网络的层数不能特地深。咱们尝试一直迭代数据和模型缺点状况下神经网络的无效训练方法,通过noisy label learning技术,解决网络训练过程中noisy data的问题,该技术曾经在团队理论业务场景中落地,通过从损失函数、网络结构、模型正则化、损失函数调整、样本抉择、标签纠正等多个模块的优化,不局限于全监督、半监督和自监督学习办法,晋升整个模型的鲁棒性 Framework: 【Robust Loss Function】次要是从损失函数去批改,外围思路是当数据整体是洁净的时候,传统的穿插熵损失函数学习到大量的负样本,能够晋升模型的鲁棒性;当数据噪声比拟大时,CE会被噪声数据带跑偏,咱们要批改损失函数使其在训练中每个样本的权重都是一样重要的,因而不难想到采纳GCE Loss,管制超参数,联合了CE Loss和MAE Loss A. Ghosh, H. Kumar, and P. Sastry,“Robust loss functions under label noise for deep neural networks,” in Proc. AAAI, 2017Generalized Cross Entropy Loss for Training Deep Neural Networks with Noisy Labels, NeurlPS 2018另外,还有从KL散度想法借鉴过去的,作者认为在计算熵的时候,原始q, p代表的实在数据分布和预测值在较为洁净的数据上没有问题,然而在噪声比拟大的数据上,可能q并不能代表实在数据分布,相同的是不是p能够示意实在数据分布,因而提出基于对称的穿插熵损失函数(Symmetric cross entropy )Y. Wang, X. Ma, Z. Chen, Y. Luo, J. Yi, and J. Bailey, “Symmetric cross entropy for robust learning with noisy labels,” in Proc. ICCV, 2019, pp. 322–330【Robust Architecture】这一部分次要通过借鉴奇妙的网络结构,在模型训练过程中,通过模型对数据进行筛选,抉择一批较为洁净的数据,逐渐晋升模型的鲁棒性。首先要介绍的就是coteaching framework,首先是基于两个模型互相筛选数据输出给对方计算loss,传递给对方网络的数据是每个min-batch外面loss最低的一些数据,随着epoch减少,数据量有所变动,另外每一轮epoch完结,会shuffle数据,保证数据不会被永恒忘记 ...

April 14, 2021 · 1 min · jiezi

关于函数:函数计算助力高德地图平稳支撑亿级流量高峰

简介: 2020 年的“十一出行节”期间,高德地图发明了记录 ——截止 2020 年 10 月 1 日 13 时 27 分 27 秒,高德地图当日沉闷用户冲破 1 亿,比 2019 年 10 月 1 日提前 3 时 41 分达成此记录。 期间,Serverless 作为其中一个核心技术场景,安稳扛住了流量高峰期的考验。值得一提的是,由 Serverless 撑持的业务在流量高峰期的体现非常优良,每分钟函数调用量靠近两百万次。这再次验证了 Serverless 根底技术的价值,进一步拓展了技术场景。 客户介绍2020 年的“十一出行节”期间,高德地图发明了记录 ——截止 2020 年 10 月 1 日 13 时 27 分 27 秒,高德地图当日沉闷用户冲破 1 亿,比 2019 年 10 月 1 日提前 3 时 41 分达成此记录。 期间,Serverless 作为其中一个核心技术场景,安稳扛住了流量高峰期的考验。值得一提的是,由 Serverless 撑持的业务在流量高峰期的体现非常优良,每分钟函数调用量靠近两百万次。这再次验证了 Serverless 根底技术的价值,进一步拓展了技术场景。 客户痛点自主出行是高德地图的外围业务,波及到用户出行相干的性能诉求,承载了高德地图 APP 内最大的用户流量。自主出行外围业务中利用 Node FaaS 的局部场景包含主图场景页、路线布局页和导航完结页等。 ...

April 9, 2021 · 1 min · jiezi

关于函数:冷启动延时缩短5080阿里云函数计算发布冷启动加速技术

简介: 近日,阿里云函数计算重磅公布冷启动减速技术,将本来属于开发者的镜像优化累赘转由函数计算承当,进一步帮忙开发者进步生产效率,专一业务翻新。该技术源于阿里团体超大规模和场景高度简单的容器环境,对镜像存储、减速技术有深厚的积攒,并杰出地承当了3年双十一,双十二,春节等大促秒杀场景的严苛的挑战。 容器镜像因其颠覆式翻新成为云原生时代利用部署格局的事实标准。头部云厂商 FaaS (Function-as-a-Service) 服务如阿里云函数计算、AWS Lambda 也相继在2020年反对应用容器镜像部署函数,全面拥抱容器生态。自公布以来,开发者陆续将机器学习、音视频解决、事件驱动离线数据处理、前端自动化等多个场景应用镜像疾速无服务器化,提高效率、降低成本。然而,冷启动始终是 Serverless 无奈绕开的问题。容器镜像须要将数据通过网络近程下载并解压,对于GB级别的镜像,拉取工夫可能高达分钟级别,主观上放大了冷启动副作用,妨碍实时利用的 Serverless 演进。 函数计算冷启动减速性能近日,阿里云函数计算重磅公布冷启动减速技术,将本来属于开发者的镜像优化累赘转由函数计算承当,进一步帮忙开发者进步生产效率,专一业务翻新。该技术源于阿里团体超大规模和场景高度简单的容器环境,对镜像存储、减速技术有深厚的积攒,并杰出地承当了3年双十一,双十二,春节等大促秒杀场景的严苛的挑战。据悉,函数计算已将该技术上线至:杭州、北京、上海、美东、美西等 region。 减速成果咱们在抉择了外部生产环境和开源社区的工作负载,笼罩机器学习、人工智能、前端自动化、Web 利用等7种镜像大小、IO 拜访模式、启动命令的不同组合作为 benchmark,部署在 FC 北京区域。如下图所示,函数计算开启镜像减速性能后减速广泛超过 50%,对于机器学习场景中常见的臃肿镜像(如多个团队共享根底镜像, ml-small-import, ml-large-import, ai-cat-or-dog)减速成果更为显著(约 70%-86%),镜像越大优化空间往往越高。 性能特点FC 镜像减速具备以下特点:应用简略:只需在函数上开启镜像减速,函数计算会主动制作减速镜像和缓存,转换实现后(5分钟以内),函数主动采纳减速镜像缓存。专一业务翻新:开发者无需破费工夫刻意精简优化镜像大小或严格辨别 Serverless 和 Serverfull 利用镜像的构建形式,FC 负责依照利用理论应用数据拉取和解压。减速收费,应用门槛低:镜像减速开启不产生额定费用,也不须要开发者额定购买或降级任何其余服务。事实上因为镜像拉取工夫变短,相应的申请费用也随之升高。极速弹性、缩容到 0、事件触发:FaaS 联合容器镜像曾经极大简化了利用迁徙至 Serverless,减速性能进一步解锁了实时、准实时工作负载,已经须要分钟级别的容器启动当初能够几秒内疾速启动,真正实现缩容到0。将来布局此次函数计算公布的冷启动减速技术,通过按需读取和更高效的解压技术在不同场景下减速 50%-80%,即便 GB 级别的镜像也能够在几秒内实现端到端启动。减速性能联合函数计算极致弹性和事件触发的特点,解锁了更多对实时要求高的工作负载。容器利用能够更容易地享受 Serverless 个性,真正做到缩容到0以及疾速大规模扩容。FC 在将来会继续优化冷启动各个环节提供极致弹性,承当更多用户责任,使开发者专一业务翻新。 附录:试验场景数据 原文链接本文为阿里云原创内容,未经容许不得转载。

March 31, 2021 · 1 min · jiezi

关于函数:启动延时缩短-5080函数计算发布镜像加速功能

简介: 容器镜像因其颠覆式翻新成为云原生时代利用部署格局的事实标准。头部云厂商 FaaS (Function-as-a-Service) 服务如阿里云函数计算、AWS Lambda 也相继在 2020 年反对应用容器镜像部署函数,全面拥抱容器生态。 作者 | Shuai Chang  阿里云云原生 Serverless 团队高级技术专家起源 | 阿里巴巴云原生公众号 体验文档:镜像拉取减速文档 FaaS 和容器容器镜像因其颠覆式翻新成为云原生时代利用部署格局的事实标准。头部云厂商 FaaS (Function-as-a-Service) 服务如阿里云函数计算、AWS Lambda 也相继在 2020 年反对应用容器镜像部署函数,全面拥抱容器生态。自公布以来,开发者陆续将机器学习、音视频解决、事件驱动离线数据处理、前端自动化等多个场景应用镜像疾速无服务器化,提高效率、降低成本。然而,冷启动始终是 Serverless 无奈绕开的问题。容器镜像须要将数据通过网络近程下载并解压,对于 GB 级别的镜像,拉取工夫可能高达分钟级别,主观上放大了冷启动副作用,妨碍实时利用的 Serverless 演进。 函数计算镜像减速性能传统的镜像拉取减速强调"开发者负责",如精简镜像,正当调配镜像层,multi-stage 构建,应用工具(如 docker-slim)去除不须要的数据,遵循构建最佳实际等。这些工作不仅减轻了用户累赘,减速成果无限,且有运行时稳定性危险。阿里团体超大规模和场景高度简单的容器环境,对镜像存储、减速技术有深厚的积攒,杰出地承当了 3 年双十一、双十二、春节等大促秒杀场景的严苛的挑战。阿里云 Serverless 同容器镜像、存储等服务深度单干,将外部翻新在函数计算输入:杭州、北京、上海、美东、美西正式公布了镜像减速性能。该性能将本来属于开发者的镜像优化累赘转由函数计算承当,进一步帮忙开发者进步生产效率,专一业务翻新。 减速成果咱们在抉择了外部生产环境和开源社区的工作负载,笼罩机器学习、人工智能、前端自动化、Web 利用等 7 种镜像大小、IO 拜访模式、启动命令的不同组合作为 benchmark,部署在 FC 北京区域。如下图所示,函数计算开启镜像减速性能后减速广泛超过 50%,对于机器学习场景中常见的臃肿镜像(如多个团队共享根底镜像, ml-small-import, ml-large-import, ai-cat-or-dog)减速成果更为显著(约 70%-86%),镜像越大优化空间往往越高。 应用形式镜像减速能够通过控制台、CLI 工具或是 FC SDK 开启,具体步骤参考镜像拉取减速文档。 形式一:在函数计算控制台函数配置下抉择“开启镜像减速”。  形式二:应用 Funcraft 工具部署。在已有的 CustomContainerConfig 配置下增加 AccelerationType: Default 如需敞开则配置 AccelerationType: ...

March 23, 2021 · 1 min · jiezi

关于函数:Serverless-可观测性的过去现在与未来

简介: 函数计算可观测性经历了 1.0 -> 2.0 的倒退,从闭门造车的可观测倒退成开源的可观测,从平台的可观测倒退为开发者的可观测,从FaaS Only 的可观测演进成了云原生的可观测。 作者:夏莞 背景Serverless 将成为下一个十年云的默认编程范式随着 Serverless 概念的进一步遍及,开发者逐步从张望状态进入尝试阶段,越来越多的企业用户开始将业务迁徙到 Serverless 平台。在阿里团体外部,淘宝、飞猪、闲鱼、高德、语雀等外围性能稳步落地,在阿里团体内部,新浪微博、世纪联华、石墨文档、TPLink、蓝墨云班课等各行各业的企业也纷纷解锁 Serverless 应用的不同场景。Serverless 正在成为成为下一个十年云的默认编程范式。 更多案例请参考 函数计算用户案例 Serverless 降本增效免运维的个性为开发者带来了实打实的益处:基于函数计算的 Serverless 计划为蓝墨节俭了 60% 左右的 IT 老本,为石墨文档节约了 58% 的服务器老本;晋升码隆科技的开发效率,实现两周内性能上线;安稳撑持负载的波峰波谷相差 5 倍以上的新浪微博,每天轻松解决数十亿申请。 广告工夫:欢送退出云原生Serverless 团队(函数计算,Serverless工作流,Serverless利用引擎),以公共云、团体、开源社区三位一体的形式打造业界当先的Serverless 产品体系。职位需要见 JD,招聘长期有效,有趣味的同学能够分割本文作者或 @Chang, Shuai(shuai.chang)。 可观测性成为 Serverless 倒退的绊脚石?随着 Serverless 的深刻应用,开发者逐步发现 Serverless 架构下的问题定位比传统利用更加艰难,次要起因如下: 组件散布化:Serverless 架构的利用往往粘合多个云服务,申请须要流经多款云产品,一旦端到端延时变长或体现不合乎预期,问题定位十分复杂,须要顺次去各个产品侧逐渐排查。调度黑盒化:Serverless 平台承当着申请调度、资源分配的责任,实时弹性扩容会带来不可避免的冷启动,Serverless 的资源伸缩是无需开发者参加也不受开发者管制的。冷启动会影响端对端延时,这次申请有没有遇到冷启动,冷启动的工夫都耗费在哪些步骤,有没有可优化的空间都是开发者急于晓得的问题。执行环境黑盒化:开发者习惯于在本人的机器上执行本人的代码,出了问题登录机器查看异样现场,查看执行环境的 CPU/内存/IO 状况。面对 Serverless 利用,机器不是本人的,登也登不上,看也看不了,开发者眼前一片乌黑。产品非标化:在 Serverless 场景下,开发者无法控制执行环境,无奈装置探针,无奈应用开源的三方监控平台,考察问题的形式不得不产生扭转,传统的考察问题教训无奈施展,十分不棘手。函数计算是阿里云的 Serverless 产品,在过来的一年,函数计算团队为了更好地答复以上问题做了很多致力。 本文次要介绍函数计算在可观测性上的尝试与函数计算可观测性现状。 Serverless 下可观测性可观测性是通过内部体现判断零碎外部状态的掂量形式。--维基百科 在利用开发中,可观测性帮忙咱们判断零碎外部的健康状况。在零碎安稳运行时,帮忙咱们评估危险,预测可能呈现的问题。当零碎呈现问题时,帮忙咱们疾速定位问题,及时止损。 一个好的可观测性零碎要帮忙用户尽可能快地发现问题、定位问题并且端到端地解决问题。 在 Serverless 这种免运维的平台体系中,可观测性是开发者的眼睛,没有可观测,何谈高可用? 可观测性 1.0 图1:可观测性根底 可观测性次要蕴含三个局部:日志、指标、链路追踪。 ...

March 18, 2021 · 2 min · jiezi

关于函数:前端面试每日-31-第661天

明天的知识点 (2021.02.05) —— 第661天 (我也要出题)[html] 写html代码时,怎么才减速写代码的速度呢?你有什么办法?[css] 应用css制作一个圣诞树[js] 请应用js实现一个有限累加的函数[软技能] 来这面试前你有做过哪些筹备吗?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

February 5, 2021 · 1 min · jiezi

关于函数:代码-or-指令浅析ARM架构下的函数的调用过程

摘要:linux程序运行的状态以及如何推导调用栈。1、背景常识1、ARM64寄存器介绍: 2、STP指令详解(ARMV8手册): 咱们先看一下指令格局(64bit),以及指令对于存放机执行后果的影响 类型1、STP <Xt1>, <Xt2>, [<Xn|SP>], #<imm> 将Xt1和Xt2存入Xn|SP对应的地址内存中,而后,将Xn|SP的地址变更为Xn|SP + imm偏移量的新地址 类型2、STP <Xt1>, <Xt2>, [<Xn|SP>, #<imm>]! 将Xt1和Xt2存入Xn|SP的地址自加imm对应的地址内存中,而后,将Xn|SP的地址变更为Xn|SP + imm的offset偏移量后的新地址 类型3、STP <Xt1>, <Xt2>, [<Xn|SP>{, #<imm>}] 将Xt1和Xt2存入Xn|SP的地址自加imm对应的地址内存中 手册中有三种操作码,咱们只探讨程序中波及的后两种 Pseudocode如下: Shared decode for all encodings integer n = UInt(Rn); integer t = UInt(Rt); integer t2 = UInt(Rt2); if L:opc<0> == '01' || opc == '11' then UNDEFINED; integer scale = 2 + UInt(opc<1>); integer datasize = 8 << scale; bits(64) offset = LSL(SignExtend(imm7, 64), scale); ...

January 28, 2021 · 3 min · jiezi

关于函数:其他类成员构造函数属性索引器析构函数

讲了底层实现,咱们持续讲语法。 从语法的角度,当运行new Student()生成对象的时候,实际上是调用了Student类中的 构造函数(constructor) 构造函数是在类中,和类名雷同的、像办法一样能够带参数,但没有返回的,用于创立类的实例的……飞哥,等等,你等等,你说的这玩意儿在哪里呢?我在Student类里看不到啊! Good question!带着脑子听课,才是正确的姿态。 实际上,如果一个类没有显式的申明任何构造函数,默认就自带一个无参的无内容的构造函数。所以你看不到,然而飞哥能够把它写进去给你瞅一眼: internal class Student { //无参构造函数 public /没有返回/ Student(/能够有参数/) //和类同名 { //像办法一样,也能够有内容 } } 咱们挨着讲,首先,想一想,为什么构造函数没有返回?如果办法没有返回值,还要给个void,构造函数是咋回事?其实构造函数是有返回值的,它必然返回以后类的一个实例(对象)!这是不可更改的铁律,所以,C#在语法设计的时候就罗唆省略之,既节俭了代码输出,有能够和办法进行辨别,赞一个!^_^ 接下来,既然能够有参数,有能够有内容,咱们加上试试: class Student { public Student(string name) //有参构造函数 { Console.WriteLine($"你好!{name}同学,源栈欢送你……"); } } 构造函数有参数了,调用的时候就得给参数: Student ywq = new Student("于维谦"); 演示: 同时你会发现再也不能应用new Student()调用无参的构造函数了。这是因为:一旦申明了任何构造函数,之前默认自带的无参构造函数隐没。 如果你还想保留无参构造函数,须要在类中显式申明。即一个类中能够有多个参数不同的构造函数,如下所示: internal class Student { public Student() {} public Student(string name){} public Student(string name, int age){} } 调用的时候,按办法重载规定进行匹配。 演示: 给构造函数传参干嘛呢?它通常用于给字段赋值,就像这样: private string name; public Student(string name) { this.name = name; //增加this辨别字段name和参数name } ...

December 27, 2020 · 2 min · jiezi

关于函数:前端面试每日-31-第492天

明天的知识点 (2020.08.20) —— 第492天 (我也要出题)[html] 应用canvas时你有遇到过哪些坑?是如何解决的?[css] 你最喜爱的是哪个css个性?为什么?[js] 实现一个函数sum, 满足以下需要:[软技能] https是如何保障数据传输的平安的?《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

August 20, 2020 · 1 min · jiezi