2019-2021 美团技术年货 前端篇为了保证 Flutter 应用能够正常运行,除了最基本的渲染和交互外,我们的嵌入层还 要提供资源管理、事件循环、生命周期同步等平台能力。对于这些能力 Flutter 大多 都在嵌入层的公共部分有抽象类声明,只需要使用鸿蒙 API 重新实现一遍即可。 比如资源管理,引擎提供了 AssetResolver 声明,我们可以使用鸿蒙 Rawfile API 来实现: class HAPAssetMapping Web。 ● Flutter Web 在 PC 侧的复用:与 UED 团队共同制订 PC 与 App 适配规范, 同时基于 Dart2js 和 dart:ui (Web)的强大能力,实现逻辑的抽象,完成组 件、模块的适配,达到提效最大化; ● 跟进 Flutter 官方动向:Flutter 2.0 的发布,稳定了对 Web 的支持,同时默 认采用 Canvaskit 编译模式,此模式下对页面滚动性能有较大提升。但由于 上图可以看出使用成组布局还是悬浮布局是由图层内容决定的,那么就需要算法理解 图层内容了,比如基于 AI 构建样本库,记住所有的角标样式(上面表格中 4 描述的), 下次遇到角标相交时就生成成组布局。考虑到 AI 模型也是对规则的抽象,我们先搭 建一套自定义识别规则。成组布局其位置信息是有规律可循的,例如:角标经常出现 66 > 2021年美团技术年货 在右上角,标签经常出现在左上角,头像经常横向或者纵向交叉等,因此我们针对图0 码力 | 738 页 | 50.29 MB | 1 年前3
JavaScript Promiseの本 v1この章では、JavaScriptにおけるPromiseについて簡単に紹介していきます。 What Is Promise まずPromiseとはそもそもどのようなものでしょうか? Promiseは非同期処理を抽象化したオブジェクトとそれを操作する仕組みのことをいいま す。 詳しくはこれから学んでいくとして、PromiseはJavaScriptで発見された概念ではあり ません。 最初に発見されたのは E言語14におけるもので、 then(function(result){ // 取得成功の処理 }).catch(function(error){ // 取得失敗時の処理 }); promiseオブジェクトを返す 非同期処理を抽象化したpromiseオブジェクトというものを用意し、 そのpromiseオブジェ クトに対して成功時の処理と失敗時の処理の関数を登録するようにして使います。 コールバック関数と比べると何が違うのかを簡単に見ると、 先ほどの複数のXHRの結果をまとめて取得する処理は、 Promise.all を使うとシンプルに 書くことができます。 先ほどの例の getURL はXHRによる通信を抽象化したpromiseオブジェクトを返していま す。 Promise.all に通信を抽象化したpromiseオブジェクトの配列を渡すことで、 全ての 通信が完了(FulFilledまたはRejected)した時に、次の .then を呼び出すことができます。0 码力 | 115 页 | 1.06 MB | 1 年前3
JavaScript Promise迷你书(中文版)Chapter.1 - 什么是Promise 本章将主要对JavaScript中的Promise进行入门级的介绍。 什么是Promise 首先让我们来了解一下到底什么是Promise。 Promise是抽象异步处理对象以及对其进行各种操作的组件。 其详细内容在接下来我们 还会进行介绍,Promise并不是从JavaScript中发祥的概念。 Promise最初被提出是在 E语言12中, 它是基于并列/并行处理设计的一种编程语言。 // 获取文件内容成功时的处理 }).catch(function(error){ // 获取文件内容失败时的处理 }); ---- <1> 返回promise对象 我们可以向这个预设了抽象化异步处理的promise对象, 注册这个promise对象执行成功 时和失败时相应的回调函数。 这和回调函数方式相比有哪些不同之处呢? 在使用promise进行一步处理的时候,我们 必须按照接口规定的方法编写处理代码。 `resolve`、`reject` 方法进行调用 上面我们只是简单的实现了一个 Deferred ,我想你已经看到了它和 Promise 之间的差 异了吧。 如果说Promise是用来对值进行抽象的话,Deferred则是对处理还没有结束的状态或操 作进行抽象化的对象,我们也可以从这一层的区别来理解一下这两者之间的差异。 换句话说,Promise代表了一个对象,这个对象的状态现在还不确定,但是未来一 个时间点它的状态要么0 码力 | 112 页 | 1010.02 KB | 1 年前3
廖雪峰JavaScript教程而且可以像变量一样使用,具有非常强大的抽象能力。 抽象是数学中非常常见的概念。举个例子: 计算数列的和,比如: 1 + 2 + 3 + … + 100 ,写起来十分不方便,于是数学家发明了求和符号∑, 可以把 1 + 2 + 3 + … + 100 记作: 100 ∑n n=1 这种抽象记法非常强大,因为我们看到 ∑ 就可以理解成求和,而不是还原成低级的加法运算。 函数 抽象 3 函数 - 48 而且,这种抽象记法是可扩展的,比如: 100 ∑(n2+1) n=1 还原成加法运算就变成了: (1 x 1 + 1) + (2 x 2 + 1) + (3 x 3 + 1) + … + (100 x 100 + 1) 可见,借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题。 写计算机程序也是一样,函数就是最基本的一种代码抽象的方式。 原文: 9. } 的确可以,但是,从上面的循环代码,我们无法一眼看明白“把f(x)作用在Array的每一个元素并把结 果生成一个新的Array”。 所以, map() 作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的 f(x)=x2,还可以计算任意复杂的函数,比如,把 Array 的所有数字转为字符串: 1. var arr = [1, 2, 3, 40 码力 | 264 页 | 2.81 MB | 10 月前3
JavaScript Promiseの本 v2この章では、JavaScriptにおけるPromiseについて簡単に紹介していきます。 What Is Promise まずPromiseとはそもそもどのようなものでしょうか? Promiseは非同期処理を抽象化したオブジェクトとそれを操作する仕組みのことをいいま す。 詳しくはこれから学んでいくとして、PromiseはJavaScriptで発見された概念ではあり ません。 最初に発見されたのは E言語17におけるもので、 then((result) => { // 取得成功の処理 }).catch((error) => { // 取得失敗時の処理 }); promiseオブジェクトを返す 非同期処理を抽象化したpromiseオブジェクトというものを用意し、 そのpromiseオブジェ クトに対して成功時の処理と失敗時の処理の関数を登録するようにして使います。 コールバック関数と比べると何が違うのかを簡単に見ると、 先ほどの複数のXHRの結果をまとめて取得する処理は、 Promise.all を使うとシンプルに 書くことができます。 先ほどの例の fetchURL はXHRによる通信を抽象化したpromiseオブジェクトを返してい ます。 Promise.all に通信を抽象化したpromiseオブジェクトの配列を渡すことで、 全て の通信が完了(FulfilledまたはRejected)した時に、次の .then を呼び出すことができま0 码力 | 137 页 | 1.17 MB | 1 年前3
Hello 算法 1.0.0b1 JavaScript版3. 复杂度分析重要性 复杂度分析给出一把评价算法效率的“标尺”,告诉我们执行某个算法需要多少时间和空间资源,也让我们可 以开展不同算法之间的效率对比。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度出发,其并不适合作为第一 章内容。但是,当我们讨论某个数据结构或者算法的特点时,难以避免需要分析它的运行速度和空间使用情 况。因此,在展开学习数据结构与算法之前,建 来了极大的难度。 2.2.2. 统计时间增长趋势 「时间复杂度分析」采取了不同的做法,其统计的不是算法运行时间,而是 算法运行时间随着数据量变大时的 增长趋势。 “时间增长趋势”这个概念比较抽象,我们借助一个例子来理解。设输入数据大小为 ? ,给定三个算法 A , B , C 。 ‧ 算法 A 只有 1 个打印操作,算法运行时间不随着 ? 增大而增长。我们称此算法的时间复杂度为「常数阶」。 例如,给定一个包含 ? 个学生的数据库,每个学生有“姓名 name ”和“学号 id ”两项数据,希望实现一个查 询功能:输入一个学号,返回对应的姓名,则可以使用哈希表实现。 Figure 6‑1. 哈希表的抽象表示 6.1.1. 哈希表效率 除了哈希表之外,还可以使用以下数据结构来实现上述查询功能: 1. 无序数组:每个元素为 [学号, 姓名] ; 2. 有序数组:将 1. 中的数组按照学号从小到大排序;0 码力 | 185 页 | 14.70 MB | 1 年前3
ECMAScript规范 第三版 中文版ECMAScript 程序语法结构的定义。 5.1.1 上下文无关文法(Context-Free Grammars) 一个上下文无关文法由许多产生式(productions)组 成。每个产生式都拥有一个抽象符号作为 其左式(left-hand side),被称为非终结 符(nonterminal),以及一个由零个或多个非终结符和终结 符(terminal)组 成的右式(right-hand side 字符串常量,正则表达式常量和注释中。 贯穿此文档的剩余部分,短语"代码点"和单词"字符"将被用于代指 16 位无符号值,用来呈 现单个 UTF-16 的 16 位单元。短语"Unicode 字符"将被用于代指抽象语言学或排版单元,呈现 为单个 Unicode 标量值(可能长于 16 位,将被呈现为多于一个的代码点)。这儿仅代指单个以 Unicode 标量值形式呈现的实体:组合字符得到的字符序列仍是独立的“Unicode 件组成,基 对象(base object)和属 性名(property name)。 本规范使用下面的抽象操作来访问引用的组件。 • GetBase(V)。返回引用 V 的基对象组件。 • GetPropertyName(V)。返回引用 V 的属性名组件。 在本规范中使用这些抽象操作来操作引用。 8.7.1 GetValue(V) 1. 如果 Type(V) 不是引用,返回 V。0 码力 | 58 页 | 563.06 KB | 1 年前3
Hello 算法 1.1.0 JavaScript版们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习 作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 “时间增长趋势”这个概念比较抽象,我们通过一个例子来加以理解。假设输入数据大小为 ? ,给定三个算法 A、B 和 C : 第 2 章 复杂度分析 hello‑algo.com 29 // 算法 A 的时间复杂度:常数阶 function 如在音频、视频播放器中,数据 流可能会被分成多个缓冲块并放入一个环形链表,以便实现无缝播放。 第 4 章 数组与链表 hello‑algo.com 79 4.3 列表 列表(list)是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习 作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 “时间增长趋势”这个概念比较抽象,我们通过一个例子来加以理解。假设输入数据大小为 ? ,给定三个算法 A、B 和 C : 第 2 章 复杂度分析 www.hello‑algo.com 29 // 算法 A 的时间复杂度:常数阶 、视频播放器中,数据 流可能会被分成多个缓冲块并放入一个环形链表,以便实现无缝播放。 第 4 章 数组与链表 www.hello‑algo.com 79 4.3 列表 列表(list)是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0 JavaScript版们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资 源,对比不同算法之间的效率。 复杂度是个数学概念,对于初学者可能比较抽象,学习难度相对较高。从这个角度看,复杂度分析可能不太 适合作为最先介绍的内容。然而,当我们讨论某个数据结构或算法的特点时,难以避免要分析其运行速度和 空间使用情况。 综上所述,建议你在深入学习 作的运行时间,这给预估过程带来了极大的难 度。 2.3.1 统计时间增长趋势 时间复杂度分析统计的不是算法运行时间,而是算法运行时间随着数据量变大时的增长趋势。 “时间增长趋势”这个概念比较抽象,我们通过一个例子来加以理解。假设输入数据大小为 ? ,给定三个算法 A、B 和 C : 第 2 章 复杂度分析 hello‑algo.com 29 // 算法 A 的时间复杂度:常数阶 function 在音频、视频播放器中,数据 流可能会被分成多个缓冲块并放入一个环形链表,以便实现无缝播放。 第 4 章 数组与链表 hello‑algo.com 78 4.3 列表 「列表 list」是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历 等操作,无须使用者考虑容量限制的问题。列表可以基于链表或数组实现。 ‧ 链表天然可以看作一个列表,其支持元素增删查改操作,并且可以灵活动态扩容。0 码力 | 376 页 | 17.57 MB | 1 年前3
共 15 条
- 1
- 2













