2019-2021 美团技术年货 前端篇没有在实际业务中上线,属于技术层面比较前期的探索。接下来本文会通过原理和部 分实现细节的介绍,分享我们在移植和开发过程中的一些经验。希望能对大家有所启 发或者帮助。 背景知识和基础概念介绍 在适配开始之前,我们要明确好先做哪些事情。先来回顾一下 Flutter 的三层结构: 在 Flutter 的架构设计中,最上层为框架层,使用 Dart 语言开发,面向 Flutter 业务 的开发者;中间层为引擎层,使用 蒙原生提供的平台能力,重新实 前端 < 3 现一遍 Flutter 嵌入层。 对于 Flutter 嵌入层的适配,Flutter 官方有一份不算详细的指南,实际操作起来成本 很高。由于鸿蒙的业务开发语言仍然可用 Java,在很多基础概念上与 Android 也有 相似之处(如下表所示),我们可以从 Android 的实现入手,完成对鸿蒙的移植。 Flutter 在鸿蒙上的适配 如前文所述,要完成 Flutter Multiple Devices 前端 < 13 总结和展望 通过上述的构建和适配工作,我们以极小的开发成本实现了 Flutter 在鸿蒙系统上的 移植,基于 Flutter 开发的上层业务几乎不做任何修改就可以在鸿蒙系统上原生运行, 为迎接鸿蒙系统后续的大规模推广也提前做好了技术储备。 当然,故事到这里并没有结束。在最基本的运行和交互能力之上,我们更需要关注 Flutter0 码力 | 738 页 | 50.29 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版;而如果给定的数据是固定 位数的整数(例如学号),那么我们就可以用效率更高的“基数排序”来做,将时间复杂度降为 ?(??) , 其中 ? 为位数。当数据体量很大时,节省出来的运行时间就能创造较大价值(成本降低、体验变好等)。 在工程领域中,大量问题是难以达到最优解的,许多问题只是被“差不多”地解决了。问题的难易程度一方 面取决于问题本身的性质,另一方面也取决于观测问题的人的知识储备。人的知识越完备、经验越多,分析 除节点后,AVL 树不 会退化,从而使得各种操作的时间复杂度保持在 ?(log ?) 级别。换句话说,在需要频繁进行增删查改操作 的场景中,AVL 树能始终保持高效的数据操作性能,具有很好的应用价值。 7.5.1 AVL 树常见术语 AVL 树既是二叉搜索树,也是平衡二叉树,同时满足这两类二叉树的所有性质,因此是一种平衡二叉搜索树 (balanced binary search tree)。 点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 ‧ 0‑1 背包问题:给定一组物品和一个背包,每个物品有一定的价值和重量,要求在背包容量限制内,选 择物品使得总价值最大。 ‧ 旅行商问题:在一个图中,从一个点出发,访问所有其他点恰好一次后返回起点,求最短路径。 ‧ 最大团问题:给定一个无向图,找到最大的完全子图,即子图中的任意两个顶点之间都有边相连。0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.1.0 JavaScript版除节点后,AVL 树不 会退化,从而使得各种操作的时间复杂度保持在 ?(log ?) 级别。换句话说,在需要频繁进行增删查改操作 的场景中,AVL 树能始终保持高效的数据操作性能,具有很好的应用价值。 7.5.1 AVL 树常见术语 AVL 树既是二叉搜索树,也是平衡二叉树,同时满足这两类二叉树的所有性质,因此是一种平衡二叉搜索树 (balanced binary search tree)。 点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 ‧ 0‑1 背包问题:给定一组物品和一个背包,每个物品有一定的价值和重量,要求在背包容量限制内,选 择物品使得总价值最大。 ‧ 旅行商问题:在一个图中,从一个点出发,访问所有其他点恰好一次后返回起点,求最短路径。 ‧ 最大团问题:给定一个无向图,找到最大的完全子图,即子图中的任意两个顶点之间都有边相连。 给定 ? 个物品,第 ? 个物品的重量为 ???[? − 1]、价值为 ???[? − 1] ,和一个容量为 ??? 的背包。每 个物品只能选择一次,问在限定背包容量下能放入物品的最大价值。 观察图 14‑17 ,由于物品编号 ? 从 1 开始计数,数组索引从 0 开始计数,因此物品 ? 对应重量 ???[? − 1] 和 价值 ???[? − 1] 。 第 14 章 动态规划 hello‑algo0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.0.0b5 JavaScript版除节点后,AVL 树 不会退化,从而使得各种操作的时间复杂度保持在 ?(log ?) 级别。换句话说,在需要频繁进行增删查改操 作的场景中,AVL 树能始终保持高效的数据操作性能,具有很好的应用价值。 第 7 章 树 hello‑algo.com 155 7.5.1 AVL 树常见术语 AVL 树既是二叉搜索树也是平衡二叉树,同时满足这两类二叉树的所有性质,因此也被称为「平衡二叉搜索 树 点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 ‧ 0‑1 背包问题:给定一组物品和一个背包,每个物品有一定的价值和重量,要求在背包容量限制内,选 择物品使得总价值最大。 ‧ 旅行商问题:在一个图中,从一个点出发,访问所有其他点恰好一次后返回起点,求最短路径。 ‧ 最大团问题:给定一个无向图,找到最大的完全子图,即子图中的任意两个顶点之间都有边相连。 给定 ? 个物品,第 ? 个物品的重量为 ???[? − 1]、价值为 ???[? − 1] ,和一个容量为 ??? 的 背包。每个物品只能选择一次,问在不超过背包容量下能放入物品的最大价值。 观察图 14‑17 ,由于物品编号 ? 从 1 开始计数,数组索引从 0 开始计数,因此物品 ? 对应重量 ???[? − 1] 和 价值 ???[? − 1] 。 第 14 章 动态规划 hello‑algo0 码力 | 375 页 | 30.68 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版除节点后,AVL 树 不会退化,从而使得各种操作的时间复杂度保持在 ?(log ?) 级别。换句话说,在需要频繁进行增删查改操 作的场景中,AVL 树能始终保持高效的数据操作性能,具有很好的应用价值。 7.5.1 AVL 树常见术语 AVL 树既是二叉搜索树,也是平衡二叉树,同时满足这两类二叉树的所有性质,因此也被称为「平衡二叉搜 索树 balanced binary search tree」。 点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 ‧ 0‑1 背包问题:给定一组物品和一个背包,每个物品有一定的价值和重量,要求在背包容量限制内,选 择物品使得总价值最大。 第 13 章 回溯 hello‑algo.com 282 ‧ 旅行商问题:在一个图中,从一个点出发,访问所有其他点恰好一次后返回起点,求最短路径。 ‧ 最大团 给定 ? 个物品,第 ? 个物品的重量为 ???[? − 1]、价值为 ???[? − 1] ,和一个容量为 ??? 的 背包。每个物品只能选择一次,问在限定背包容量下能放入物品的最大价值。 观察图 14‑17 ,由于物品编号 ? 从 1 开始计数,数组索引从 0 开始计数,因此物品 ? 对应重量 ???[? − 1] 和 价值 ???[? − 1] 。 第 14 章 动态规划 hello‑algo0 码力 | 376 页 | 17.57 MB | 1 年前3
廖雪峰JavaScript教程难以确认文档内容知识点是否错漏。如果 您在阅读文档获取知识的时候,发现文档内容有不恰当的地方,请向我们反馈,让我们共同携手,将知 识准确、高效且有效地传递给每一个人。 同时,如果您在日常工作、生活和学习中遇到有价值有营养的知识文档,欢迎分享到 书栈 (BookStack.CN) ,为知识的传承献上您的一份力量! 如果当前文档生成时间太久,请到 书栈(BookStack.CN) 获取最新的文档,以跟上知识更新换 在 fs 模块中,提供同步方法是为了方便使用。那我们到底是应该用异步方法还是同步方法呢? 由于Node环境执行的JavaScript代码是服务器端代码,所以,绝大部分需要在服务器运行期反复执行 业务逻辑的代码,必须使用异步代码,否则,同步代码在执行时期,服务器将停止响应,因为 JavaScript只有一个执行线程。 服务器启动时如果需要读取配置文件,或者结束时需要写入到状态文件时,可以使用同步代码,因为这0 码力 | 264 页 | 2.81 MB | 10 月前3
阮一峰 JavaScript 教程文档内容知识点是否错漏。如果您在阅读文档获取知识的时候,发现文 档内容有不恰当的地方,请向我们反馈,让我们共同携手,将知识准 确、高效且有效地传递给每一个人。 同时,如果您在日常生活、工作和学习中遇到有价值有营养的知识 文档,欢迎分享到 书栈(BookStack.CN) ,为知识的传承献上您的 一份力量! 如果当前文档生成时间太久,请到 书栈(BookStack.CN) 获取 最新的文档,以跟上知识更新换代的步伐。 码越来越庞大,越来越复杂。网页越来越像桌面程序,需要一个团队分 工协作、进度管理、单元测试等等……开发者必须使用软件工程的方法, 管理网页的业务逻辑。 JavaScript 模块化编程,已经成为一个迫切的需求。理想情况下, 开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模 块。 :”污染”了全局变量,无法保证不与其他模块发生变量名冲突,而且模 块成员之间看不出直接关系。0 码力 | 540 页 | 3.32 MB | 10 月前3
Hello 算法 1.0.0b1 JavaScript版执行算法,从而将生活中的问题搬运到计算机中, 更加高效地解决各式各样的复杂问题。 � 读到这里,如果你感到对数据结构、算法、数组、二分查找等此类概念一知半解,那么就太好 了!因为这正是本书存在的价值,接下来,本书将会一步步地引导你进入数据结构与算法的知 识殿堂。 1.2. 算法是什么 1.2.1. 算法定义 「算法 Algorithm」是在有限时间内解决特定问题的一组指令或操作步骤。算法具有以下特性: 后,AVL 树仍然 不会发生退化,进而使得各种操作的时间复杂度均能保持在 ?(log ?) 级别。 换言之,在频繁增删查改的使用场景中,AVL 树可始终保持很高的数据增删查改效率,具有很好的应用价值。 7. 树 hello‑algo.com 111 7.4.1. AVL 树常见术语 「AVL 树」既是「二叉搜索树」又是「平衡二叉树」,同时满足这两种二叉树的所有性质,因此又被称为「平衡 二叉搜索树」。0 码力 | 185 页 | 14.70 MB | 1 年前3
前端开发者指南(2017)技术(HTML、CSS、DOM、JavaScript)和以这些技术为根基直接构 建而成的开源技术。书中引用和讨论的材料要么就是同类翘楚,要么就是解决问题的流行方 案。 本书不是一本囊括所有前端可用资源的综合纲领。其价值在于为恰好够用的分类信息搜罗简 洁、聚焦且符合时宜的甄选内容,以免在特别话题下钻了牛角尖。 预期本书每年都迭代一次内容。 本书分为三部分。 第一部分:前端实践 第一部分概述了前端工程实践。0 码力 | 164 页 | 6.43 MB | 1 年前3
JavaScript Promise迷你书(中文版)se丰富的实现方式之外,还涉及到了在出现错误时 的对应方法以及 Promise中的反模式53 等内容。 这两个类库的文档写得都很友好,即使我们不使用这两个类库,阅读一下它们的文档 也具有一定的参考价值。 总结 本小节介绍了Promise的实现类库中的 Polyfill 和扩展类库这两种。 Promise的实现类库种类繁多,到底选择哪个来使用完全看自己的喜好了。 但是由于这些类库实现的 Promise0 码力 | 112 页 | 1010.02 KB | 1 年前3
共 10 条
- 1













