Hello 算法 1.1.0 JavaScript版将“Hello 算法”中的所有字符都 编码为 2 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 一个错误的字节开始解析文本,字节头部的 10 能够帮助系统快速判断出异常。 之所以将 10 当作校验符,是因为在 UTF‑8 编码规则下,不可能有字符的最高两位是 10 。这个结论可以用 反证法来证明:假设一个字符的最高两位是 10 ,说明该字符的长度为 1 ,对应 ASCII 码。而 ASCII 码的最 高位应该是 0 ,与假设矛盾。 图 3‑8 UTF‑8 编码示例 除了 UTF‑8 之外,常见的编码方式还包括以下两种。 我们主要探究贪心选择性质的判断方法。虽然它的描述看上去比较简单,但实际上对于许多问题,证明贪心 选择性质并非易事。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 Quote 有一篇论文给出了一个 ?(?3) 时间复杂度的算法0 码力 | 379 页 | 18.46 MB | 1 年前3
Hello 算法 1.2.0 简体中文 JavaScript 版将“Hello 算法”中的所有字符都 编码为 2 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 一个错误的字节开始解析文本,字节头部的 10 能够帮助系统快速判断出异常。 之所以将 10 当作校验符,是因为在 UTF‑8 编码规则下,不可能有字符的最高两位是 10 。这个结论可以用 反证法来证明:假设一个字符的最高两位是 10 ,说明该字符的长度为 1 ,对应 ASCII 码。而 ASCII 码的最 高位应该是 0 ,与假设矛盾。 图 3‑8 UTF‑8 编码示例 除了 UTF‑8 之外,常见的编码方式还包括以下两种。 我们主要探究贪心选择性质的判断方法。虽然它的描述看上去比较简单,但实际上对于许多问题,证明贪心 选择性质并非易事。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 Quote 有一篇论文给出了一个 ?(?3) 时间复杂度的算法0 码力 | 379 页 | 18.47 MB | 10 月前3
Hello 算法 1.0.0b5 JavaScript版,将“Hello 算法”中的所有字符 都编码为 2 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复出这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需要 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下大小的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 一个错误的字节开始解析文本,字节头部的 10 能够帮助系统快速的判断出异常。 之所以将 10 当作校验符,是因为在 UTF‑8 编码规则下,不可能有字符的最高两位是 10 。这个结论可以用 反证法来证明:假设一个字符的最高两位是 10 ,说明该字符的长度为 1 ,对应 ASCII 码。而 ASCII 码的最 高位应该是 0 ,与假设矛盾。 图 3‑8 UTF‑8 编码示例 除了 UTF‑8 之外,常见的编码方式还包括以下两种。 我们主要探究贪心选择性质的判断方法。虽然它的描述看上去比较简单,但实际上对于许多问题,证明贪心 选择性质不是一件易事。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 第 15 章 贪心 hello‑algo.com 351 �0 码力 | 375 页 | 30.68 MB | 1 年前3
Hello 算法 1.0.0 JavaScript版将“Hello 算法”中的所有字符都 编码为 2 字节长度。这样系统就可以每隔 2 字节解析一个字符,恢复这个短语的内容了。 图 3‑7 Unicode 编码示例 然而 ASCII 码已经向我们证明,编码英文只需 1 字节。若采用上述方案,英文文本占用空间的大小将会是 ASCII 编码下的两倍,非常浪费内存空间。因此,我们需要一种更加高效的 Unicode 编码方法。 3.4.4 UTF‑8 一个错误的字节开始解析文本,字节头部的 10 能够帮助系统快速判断出异常。 之所以将 10 当作校验符,是因为在 UTF‑8 编码规则下,不可能有字符的最高两位是 10 。这个结论可以用 反证法来证明:假设一个字符的最高两位是 10 ,说明该字符的长度为 1 ,对应 ASCII 码。而 ASCII 码的最 高位应该是 0 ,与假设矛盾。 图 3‑8 UTF‑8 编码示例 除了 UTF‑8 之外,常见的编码方式还包括以下两种。 我们主要探究贪心选择性质的判断方法。虽然它的描述看上去比较简单,但实际上对于许多问题,证明贪心 选择性质并非易事。 例如零钱兑换问题,我们虽然能够容易地举出反例,对贪心选择性质进行证伪,但证实的难度较大。如果问: 满足什么条件的硬币组合可以使用贪心算法求解?我们往往只能凭借直觉或举例子来给出一个模棱两可的答 案,而难以给出严谨的数学证明。 � 有一篇论文给出了一个 ?(?3) 时间复杂度的算法,用于判断一个硬币组合能否使用贪心算法0 码力 | 376 页 | 17.57 MB | 1 年前3
阮一峰 《ECMAScript 6入门》 第三版及字符串。 数组 数组原生具备 iterator 接口(即默认部署了 Symbol.iterator 属 性), for...of 循环本质上就是调用这个接口产生的遍历器,可以用下面的代码 证明。 const arr = ['red', 'green', 'blue']; for(let v of arr) { console.log(v); // red green blue call(e) 这种写法,让普通对象 e 具 有 Error 对象的实例属性。但是, Error.call() 完全忽略传入的第一个参数, 而是返回一个新对象, e 本身没有任何变化。这证明了 Error.call(e) 这种写 法,无法继承原生构造函数。 ES6 允许继承原生构造函数定义子类,因为 ES6 是先新建父类的实例对 象 this ,然后再用子类的构造函数修饰 this show(); // main.js import './x'; import './y'; 现在执行 main.js ,输出的是 1 。 $ babel-node main.js 1 这就证明了 x.js 和 y.js 加载的都是 C 的同一个实例。 Node 加载 概述 Node 对 ES6 模块的处理比较麻烦,因为它有自己的 CommonJS 模块格式,与 ES6 模块0 码力 | 679 页 | 2.66 MB | 1 年前3
廖雪峰JavaScript教程表示。但是,在JavaScript中,还有一个和 null 类似 的 undefined ,它表示“未定义”。 JavaScript的设计者希望用 null 表示一个空的值,而 undefined 表示值未定义。事实证明,这 并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用 null 。 undefined 仅仅在 判断函数参数是否传递的情况下有用。 数组是一组按顺序排列的集合,集合的每个值 two); 31. 32. // 计算数字5 = 2 + 3: 33. var five = add(two, three); 34. 35. // 你说它是3就是3,你说它是5就是5,你怎么证明? 36. 37. // 呵呵,看这里: 38. 39. // 给3传一个函数,会打印3次: 40. (three(function () { 41. console.log('print0 码力 | 264 页 | 2.81 MB | 10 月前3
JavaScript Promise迷你书(中文版)== catchPromise);// => true JavaScript Promise 迷你书(中文版) 31 === 是严格相等比较运算符,我们可以看出这三个对象都是互不相同的,这也就证明 了 then 和 catch 都返回了和调用者不同的promise对象。 Figure 6. 我们在对Promise进行扩展的时候需要牢牢记住这一点,否则稍不留神就有可能对错误 的promise对象进行了处理。0 码力 | 112 页 | 1010.02 KB | 1 年前3
阮一峰 JavaScript 教程的性能优势体现在以下方面。 (1)灵活的语法,表达力强。 JavaScript 既支持类似 C 语言清晰的过程式编程,也支持灵活的 函数式编程,可以用来写并发处理(concurrent)。这些语法特性已 经被证明非常强大,可以用于许多场合,尤其适用异步编程。 JavaScript 的所有值都是对象,这为程序员提供了灵活性和便利 性。因为你可以很方便地、按照需要随时创造数据结构,不用进行麻烦 的预定义。 prototype 对象上面)。最后那 行 instanceof 表达式,用来比较一个对象是否为某个构造函数的实 对象的继承 - 457 - 本文档使用 书栈(BookStack.CN) 构建 例,结果就是证明 mine 为 Array 的实例, instanceof 运算符的详细 解释详见后文。 上面代码还出现了原型对象的 contructor 属性,这个属性的含义下一 节就来解释。 prototype0 码力 | 540 页 | 3.32 MB | 10 月前3
2019-2021 美团技术年货 前端篇总结 ● Aimeituan 独立编译配置从 5 ~ 10 分钟(同事反馈从修改配置到同步完成的 耗时)降低到 45s 左右,优化了 80% ~ 90%。 ● 在经过了几个版本的实践证明,自动化检测 PR 合入是有必要的,而且能够有 效降低开发人为失误导致漏提交代码发生的概率。 ● 每天早上同步 Aimeituan 的 Release 分支,及时周知负责人同步结果,减少 人工 ShallowSize 之和。 JVM 在进行 GC 的时候会进行可达性分析,当一个对象到 GC Roots 没有任何 引用链相连(用图论的话来说,就是从 GC Roots 到这个对象不可达)时,则证明此 对象是可回收的。 Github 上有一个开源项目 HAHA 库,用于自动解析和分析 Java 内存快照文件 (即 HPROF 文件)。下面是 HAHA 库的分析步骤: 前端 < 567 Android Studio 中 打开,发现裁剪再恢复的 HPROF 文件打开后,只是看不到对象中的基础数据类型 值,而整个的结构、对象的分布以及引用链路等与原始 HPROF 文件是完全一致的。 事实证明裁剪方案不会影响后续对堆内存的链路分析。 方案融合 由于目前裁剪方案在部分机型上(主要是 Android 7.X 系统)不起作用,所以在 Probe 中同时使用了这两种方案,对两种方案进行了融合。即通过一次0 码力 | 738 页 | 50.29 MB | 1 年前3
共 9 条
- 1













