2019-2021 美团技术年货 前端篇程中,大多是以源码的方式进 行开发,所以我们将实验对象设置为基于全源码编译的流程。 废话不多说,我们来看看它的实际使用效果! 总 的 来 说, 以 美 团 和 大 众 点 评 的 全 源 码 编 译 流 程 为 实 验 对 象 的 前 提 下,co- coapods-hmap-prebuilt 插件能将总链路提升 45% 以上的速度,在 Xcode 打包 环节上能提升 50% 以上的速度,是不是有点动心了? 杂,核心点就是将文件查找和读取等 IO 操作编变成了内存读取操作,但结合实际的 业务场景,我们发现它的收益是十分可观的。 或许这是在提醒我们,要永远对技术保持一颗好奇的心! 其实,利用 Clang Module 技术也可以解决本文一开始提到的几个问题,但它并不在 这篇文章的讨论范围中,如果你对 Clang Module 或者对 Swift 与 Objective-C 混 编感兴趣,欢迎阅读参考文档中的 《从预编译的角度理解 《从预编译的角度理解 Swift 与 Objective-C 及混 编机制》一文,以了解更多的详细信息。 参考文档 ● Apple - WWDC 2018 Behind the Scenes of the Xcode Build Process ● Apple 的 HeaderMap.cpp 源码 前端 < 107 作者 思琦,笔名 SketchK,美团 iOS 工程师,目前负责移动端0 码力 | 738 页 | 50.29 MB | 1 年前3
Hello 算法 1.1.0 JavaScript版能力 强的人能够顺利将地雷逐个排掉,而基础不足的人很可能被炸得满头是包,并在挫折中步步退缩。通读教材 也是一种常见做法,但对于面向求职的人来说,毕业论文、投递简历、准备笔试和面试已经消耗了大部分精 力,啃厚重的书往往变成了一项艰巨的挑战。 如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 古 代的计数方法和工具制作步骤等。随着文明的进步,算法逐渐变得更加精细和复杂。从巧夺天工的匠人技艺、 到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 展示了在实际应用中常见的哈希算法。 ‧ MD5 和 SHA‑1 已多次被成功攻击,因此它们被各类安全应用弃用。 ‧ SHA‑2 系列中的 SHA‑256 是最安全的哈希算法之一,仍未出现成功的攻击案例,因此常用在各类安全 应用与协议中。 ‧ SHA‑3 相较 SHA‑2 的实现开销更低、计算效率更高,但目前使用覆盖度不如 SHA‑2 系列。 表 6‑2 常见的哈希算法 MD5 SHA‑10 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版能力 强的人能够顺利将地雷逐个排掉,而基础不足的人很可能被炸得满头是包,并在挫折中步步退缩。通读教材 也是一种常见做法,但对于面向求职的人来说,毕业论文、投递简历、准备笔试和面试已经消耗了大部分精 力,啃厚重的书往往变成了一项艰巨的挑战。 如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 古 代的计数方法和工具制作步骤等。随着文明的进步,算法逐渐变得更加精细和复杂。从巧夺天工的匠人技艺、 到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 展示了在实际应用中常见的哈希算法。 ‧ MD5 和 SHA‑1 已多次被成功攻击,因此它们被各类安全应用弃用。 ‧ SHA‑2 系列中的 SHA‑256 是最安全的哈希算法之一,仍未出现成功的攻击案例,因此常用在各类安全 应用与协议中。 ‧ SHA‑3 相较 SHA‑2 的实现开销更低、计算效率更高,但目前使用覆盖度不如 SHA‑2 系列。 表 6‑2 常见的哈希算法 MD5 SHA‑10 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0 JavaScript版能力 强的人能够顺利将地雷逐个排掉,而基础不足的人很可能被炸得满头是包,并在挫折中步步退缩。通读教材 也是一种常见做法,但对于面向求职的人来说,毕业论文、投递简历、准备笔试和面试已经消耗了大部分精 力,啃厚重的书往往变成了一项艰巨的挑战。 如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 展示了在实际应用中常见的哈希算法。 ‧ MD5 和 SHA‑1 已多次被成功攻击,因此它们被各类安全应用弃用。 ‧ SHA‑2 系列中的 SHA‑256 是最安全的哈希算法之一,仍未出现成功的攻击案例,因此常用在各类安全 应用与协议中。 ‧ SHA‑3 相较 SHA‑2 的实现开销更低、计算效率更高,但目前使用覆盖度不如 SHA‑2 系列。 表 6‑2 常见的哈希算法 MD5 SHA‑1 在链表表示下,二叉树的存储单元为节点 TreeNode ,节点之间通过指针相连接。上一节介绍了链表表示下的 二叉树的各项基本操作。 那么,我们能否用数组来表示二叉树呢?答案是肯定的。 7.3.1 表示完美二叉树 先分析一个简单案例。给定一棵完美二叉树,我们将所有节点按照层序遍历的顺序存储在一个数组中,则每 个节点都对应唯一的数组索引。 根据层序遍历的特性,我们可以推导出父节点索引与子节点索引之间的“映射公式”:若某节点的索引为0 码力 | 376 页 | 17.57 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 JavaScript 版在不同資 料規模下的效率。 時間複雜度 ‧ 時間複雜度用於衡量演算法執行時間隨資料量增長的趨勢,可以有效評估演算法效率,但在某些情況 下可能失效,如在輸入的資料量較小或時間複雜度相同時,無法精確對比演算法效率的優劣。 ‧ 最差時間複雜度使用大 ? 符號表示,對應函式漸近上界,反映當 ? 趨向正無窮時,操作數量 ?(?) 的 增長級別。 ‧ 推算時間複雜度分為兩步,首先統計操作數量,然後判斷漸近上界。 展示了在實際應用中常見的雜湊演 算法。 ‧ MD5 和 SHA‑1 已多次被成功攻擊,因此它們被各類安全應用棄用。 ‧ SHA‑2 系列中的 SHA‑256 是最安全的雜湊演算法之一,仍未出現成功的攻擊案例,因此常用在各類安 全應用與協議中。 ‧ SHA‑3 相較 SHA‑2 的實現開銷更低、計算效率更高,但目前使用覆蓋度不如 SHA‑2 系列。 表 6‑2 常見的雜湊演算法 MD5 SHA‑1 TreeNode ,節點之間透過指標相連線。上一節介紹了鏈結串列 表示下的二元樹的各項基本操作。 那麼,我們能否用陣列來表示二元樹呢?答案是肯定的。 7.3.1 表示完美二元樹 先分析一個簡單案例。給定一棵完美二元樹,我們將所有節點按照層序走訪的順序儲存在一個陣列中,則每 個節點都對應唯一的陣列索引。 根據層序走訪的特性,我們可以推導出父節點索引與子節點索引之間的“對映公式”:若某節點的索引為0 码力 | 379 页 | 18.78 MB | 10 月前3
JavaScript 正则表达式迷你书 老姚 - v1.19 1.4. 多选分支 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5. 案例分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5.1. 匹配 16 进制颜色值 19 2.3. 位置的特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4. 相关案例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4.1. 不匹配任何东西的正则 32 3.4. 非捕获括号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.5. 相关案例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.5.1. 字符串 trim 方法模拟0 码力 | 89 页 | 3.42 MB | 11 月前3
JavaScript 正则表达式迷你书 老姚 - v1.09 1.4. 多选分支 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5. 案例分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5.1. 匹配 16 进制颜色值 19 2.3. 位置的特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4. 相关案例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.4.1. 不匹配任何东西的正则 32 3.4. 非捕获括号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.5. 相关案例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.5.1. 字符串 trim 方法模拟0 码力 | 89 页 | 3.42 MB | 11 月前3
阮一峰 《ECMAScript 6入门》 第三版yield; } }; 上面的 Generator 实现与 ES5 实现对比,可以看到少了用来保存状态的外部变 量 ticking ,这样就更简洁,更安全(状态不会被非法篡改)、更符合函数式编 程的思想,在写法上也更优雅。Generator 之所以可以不用外部变量保存状态,是 因为它本身就包含了一个状态信息,即目前是否处于暂停态。 Generator与协程 Generator 函数的语法 编程风格 622 读懂 ECMAScript 规格 概述 规格文件是计算机语言的官方标准,详细描述语法规则和实现方法。 一般来说,没有必要阅读规格,除非你要写编译器。因为规格写得非常抽象和精 炼,又缺乏实例,不容易理解,而且对于解决实际的应用问题,帮助不大。但是, 如果你遇到疑难的语法问题,实在找不到答案,这时可以去查看规格文件,了解语 言标准是怎么说的。规格是解决问题的“最后一招”。0 码力 | 679 页 | 2.66 MB | 1 年前3
廖雪峰JavaScript教程母应当大写,而普通函数首字母应当小写,这样,一些语法检查工具如jslint将可以帮你检测到漏写 的 new 。 最后,我们还可以编写一个 createStudent() 函数,在内部封装所有的 new 操作。一个常用的编 程模式像这样: 1. function Student(props) { 2. this.name = props.name || '匿名'; // 默认值为'匿名' 3. this 正如jQuery统一了不同浏览器之间的DOM操作的差异,让我们可以简单地对DOM进行操作, underscore则提供了一套完善的函数式编程的接口,让我们更方便地在JavaScript中实现函数式编 程。 jQuery在加载时,会把自身绑定到唯一的全局变量 $ 上,underscore与其类似,会把自身绑定到 唯一的全局变量 _ 上,这也是为啥它的名字叫underscore的原因。 用underscore实现 读取到的String。当读取发生错误时, err 参数代表一个错误对象, data 为 undefined 。这 也是Node.js标准的回调函数:第一个参数代表错误信息,第二个参数代表结果。后面我们还会经常编 写这种回调函数。 由于 err 是否为 null 就是判断是否出错的标志,所以通常的判断逻辑总是: 1. if (err) { 2. // 出错了 3. } else { 40 码力 | 264 页 | 2.81 MB | 10 月前3
前端开发者指南(2017)第一步 [阅读] 创建 JavaScript 代码块 [阅读] JavaScript Enlightenment [阅读] JavaScript 对象基础 [阅读] JavaScript 编程精解 [阅读] 一般学习: Speaking JavaScript [阅读] 你不知道的 JS: 入门 [阅读] 你不知道的 JS: 类型和语法 [阅读] 你不知道的 JS: 作用域和闭包 [阅读]0 码力 | 164 页 | 6.43 MB | 1 年前3
共 16 条
- 1
- 2













