Hello 算法 1.1.0 TypeScript版能力 强的人能够顺利将地雷逐个排掉,而基础不足的人很可能被炸得满头是包,并在挫折中步步退缩。通读教材 也是一种常见做法,但对于面向求职的人来说,毕业论文、投递简历、准备笔试和面试已经消耗了大部分精 力,啃厚重的书往往变成了一项艰巨的挑战。 如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 古 代的计数方法和工具制作步骤等。随着文明的进步,算法逐渐变得更加精细和复杂。从巧夺天工的匠人技艺、 到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 展示了在实际应用中常见的哈希算法。 ‧ MD5 和 SHA‑1 已多次被成功攻击,因此它们被各类安全应用弃用。 ‧ SHA‑2 系列中的 SHA‑256 是最安全的哈希算法之一,仍未出现成功的攻击案例,因此常用在各类安全 应用与协议中。 ‧ SHA‑3 相较 SHA‑2 的实现开销更低、计算效率更高,但目前使用覆盖度不如 SHA‑2 系列。 表 6‑2 常见的哈希算法 MD5 SHA‑10 码力 | 383 页 | 18.49 MB | 1 年前3
Hello 算法 1.2.0 简体中文 TypeScript 版能力 强的人能够顺利将地雷逐个排掉,而基础不足的人很可能被炸得满头是包,并在挫折中步步退缩。通读教材 也是一种常见做法,但对于面向求职的人来说,毕业论文、投递简历、准备笔试和面试已经消耗了大部分精 力,啃厚重的书往往变成了一项艰巨的挑战。 如果你也面临类似的困扰,那么很幸运这本书“找”到了你。本书是我对这个问题给出的答案,即使不是最 优解,也至少是一次积极的尝试。本书虽然不足以让你直接拿到 古 代的计数方法和工具制作步骤等。随着文明的进步,算法逐渐变得更加精细和复杂。从巧夺天工的匠人技艺、 到解放生产力的工业产品、再到宇宙运行的科学规律,几乎每一件平凡或令人惊叹的事物背后,都隐藏着精 妙的算法思想。 同样,数据结构无处不在:大到社会网络,小到地铁线路,许多系统都可以建模为“图”;大到一个国家,小 到一个家庭,社会的主要组织形式呈现出“树”的特征;冬天的衣服就像“栈”,最先穿上的最后才能脱下; 展示了在实际应用中常见的哈希算法。 ‧ MD5 和 SHA‑1 已多次被成功攻击,因此它们被各类安全应用弃用。 ‧ SHA‑2 系列中的 SHA‑256 是最安全的哈希算法之一,仍未出现成功的攻击案例,因此常用在各类安全 应用与协议中。 ‧ SHA‑3 相较 SHA‑2 的实现开销更低、计算效率更高,但目前使用覆盖度不如 SHA‑2 系列。 表 6‑2 常见的哈希算法 MD5 SHA‑10 码力 | 383 页 | 18.49 MB | 10 月前3
TypeScript Handbook(中文版)
现在代码已经用Browserify和tsify捆绑在一起了,我们可以使用Browserify插件为构 建添加一些特性。 Watchify启动Gulp并保持运行状态,当你保存文件时自动编译。 帮你进入到编 辑-保存-刷新浏览器的循环中。 Babel是个十分灵活的编译器,将ES2015及以上版本的代码转换成ES5和 ES3。 你可以添加大量自定义的TypeScript目前不支持的转换器。 Ugl 当在类的构造函数中需要设 置 Object.setPrototypeOf 或 __proto__ 时, new.target 就派上用场了。 在NodeJS v4及更高版本中继承 Error 类就是这样的使用案例。 示例 class CustomError extends Error { constructor(message?: string) { super(message); 可辨识联合(Discriminated Unions) 你可以合并字符串字面量类型,联合类型,类型保护和类型别名来创建一个叫做可 辨识联合的高级模式,它也称做标签联合或代数数据类型。 可辨识联合在函数式编 程很有用处。 一些语言会自动地为你辨识联合;而TypeScript则基于已有的 JavaScript模式。 它具有3个要素: 1. 具有普通的字符串字面量属性—可辨识的特征。 2. 一个类型别名包含了那些类型的联合—联合。0 码力 | 557 页 | 7.48 MB | 1 年前3
TypeScript 4.0 使用手册
会被首先执行。 我们还修改了 default 任务,让它使用 tsify 插件调用 Browserify,而不是 gulp-typescript 。 方便的是,两者传递相同的参数对象到TypeScript编 Gulp - 42 - 本文档使用 书栈网 · BookStack.CN 构建 译器。 调用 bundle 后,我们使用 source (vinyl-source-stream的别名)把输出文件命名 x = require("...") 里面的 ... ,等等)来定位模块的类型信息的。 编译器首先尝试去查找相应路径下的 .ts , .tsx 再或者 .d.ts 。 如果这些文件都找不到,编 译器会查找_外部模块声明_。 回想一下,它们是在 .d.ts 文件里声明的。 myModules.d.ts 1. // In a .d.ts file or .ts file that is 针对每种主要的库的组织模式,在模版一节都有对应的文件。 你可以利用它们帮助你快速上手。 首先,我们先看一下TypeScript声明文件能够表示的库的类型。 这里会简单展示每种类型的库的使 用方式,如何去书写,还有一些真实案例。 识别库的类型是书写声明文件的第一步。 我们将会给出一些提示,关于怎样通过库的_使用方法_及其_ 源码_来识别库的类型。 根据库的文档及组织结构不同,这两种方式可能一个会比另外的那个简单一 些。0 码力 | 683 页 | 6.27 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 TypeScript 版在不同資 料規模下的效率。 時間複雜度 ‧ 時間複雜度用於衡量演算法執行時間隨資料量增長的趨勢,可以有效評估演算法效率,但在某些情況 下可能失效,如在輸入的資料量較小或時間複雜度相同時,無法精確對比演算法效率的優劣。 ‧ 最差時間複雜度使用大 ? 符號表示,對應函式漸近上界,反映當 ? 趨向正無窮時,操作數量 ?(?) 的 增長級別。 ‧ 推算時間複雜度分為兩步,首先統計操作數量,然後判斷漸近上界。 展示了在實際應用中常見的雜湊演 算法。 ‧ MD5 和 SHA‑1 已多次被成功攻擊,因此它們被各類安全應用棄用。 ‧ SHA‑2 系列中的 SHA‑256 是最安全的雜湊演算法之一,仍未出現成功的攻擊案例,因此常用在各類安 全應用與協議中。 ‧ SHA‑3 相較 SHA‑2 的實現開銷更低、計算效率更高,但目前使用覆蓋度不如 SHA‑2 系列。 表 6‑2 常見的雜湊演算法 MD5 SHA‑1 表示下的二元樹的各項基本操作。 那麼,我們能否用陣列來表示二元樹呢?答案是肯定的。 第 7 章 樹 www.hello‑algo.com 147 7.3.1 表示完美二元樹 先分析一個簡單案例。給定一棵完美二元樹,我們將所有節點按照層序走訪的順序儲存在一個陣列中,則每 個節點都對應唯一的陣列索引。 根據層序走訪的特性,我們可以推導出父節點索引與子節點索引之間的“對映公式”:若某節點的索引為0 码力 | 384 页 | 18.80 MB | 10 月前3
TypeScript 多场景设计方案及应用实践
场景切换,代码⼀一致 TS 跨平台的考虑 1、调⽤用⽅方式的不不同 2、数据参数的不不同 3、描述⽂文件的不不同 不不同的平台需要有不不同的的调⽤用⽅方式,由于 typescript 的编 译⽬目录不不同,可以通过构建的阶段将⼊入⼝口⽂文件动态创建进去。 多个平台的⼀一致性考虑 TS 跨平台的考虑 多个平台的⼀一致性考虑 src dist package.json FaaS0 码力 | 95 页 | 8.28 MB | 1 年前3
Hello 算法 1.0.0b5 TypeScript 版展示了在实际应用中常见的哈希算法。 ‧ MD5 和 SHA‑1 已多次被成功攻击,因此它们被各类安全应用弃用。 ‧ SHA‑2 系列中的 SHA‑256 是最安全的哈希算法之一,仍未出现成功的攻击案例,因此常被用在各类安 全应用与协议中。 ‧ SHA‑3 相较 SHA‑2 的实现开销更低、计算效率更高,但目前使用覆盖度不如 SHA‑2 系列。 表 6‑2 常见的哈希算法 MD5 SHA‑1 TreeNode ,节点之间通过指针相连接。在上节中,我们学习了在链 表表示下的二叉树的各项基本操作。 那么,我们能否用数组来表示二叉树呢?答案是肯定的。 7.3.1 表示完美二叉树 先分析一个简单案例。给定一个完美二叉树,我们将所有节点按照层序遍历的顺序存储在一个数组中,则每 个节点都对应唯一的数组索引。 根据层序遍历的特性,我们可以推导出父节点索引与子节点索引之间的“映射公式”:若节点的索引为 7‑31 所示,对于上述失衡二叉树的镜像情况,需要先对 child 执行“右旋”,然后对 node 执行“左旋”。 图 7‑31 先右旋后左旋 5. 旋转的选择 图 7‑32 展示的四种失衡情况与上述案例逐个对应,分别需要采用右旋、左旋、先右后左、先左后右的旋转操 作。 第 7 章 树 hello‑algo.com 161 图 7‑32 AVL 树的四种旋转情况 如下表所示,我们通过判断失衡0 码力 | 378 页 | 30.70 MB | 1 年前3
Hello 算法 1.0.0b1 TypeScript 版第一 章内容。但是,当我们讨论某个数据结构或者算法的特点时,难以避免需要分析它的运行速度和空间使用情 况。因此,在展开学习数据结构与算法之前,建议读者先对复杂度建立起初步的了解,并且能够完成简单案例 的复杂度分析。 2.2. 时间复杂度 2.2.1. 统计算法运行时间 运行时间能够直观且准确地体现出算法的效率水平。如果我们想要 准确预估一段代码的运行时间,该如何做 呢? 1. 首先需要 我们一般使用二叉树的「链表表示」,即存储单位为结点 TreeNode ,结点之间通过指针(引用)相连接。本文 前述示例代码展示了二叉树在链表表示下的各项基本操作。 那能否可以用「数组表示」二叉树呢?答案是肯定的。先来分析一个简单案例,给定一个「完美二叉树」,将结 点按照层序遍历的顺序编号(从 0 开始),那么可以推导得出父结点索引与子结点索引之间的「映射公式」:设 结点的索引为 ? ,则该结点的左子结点索引为 2? + 10 码力 | 186 页 | 14.71 MB | 1 年前3
共 8 条
- 1













