Hello 算法 1.1.0 TypeScript版ASCII 码是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美国 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。 ‧ 长度不可变:数组在初始化后长度就固定了,扩容数组需要将所有数据复制到新数组,开销很大。 ‧ 空间浪费:如果数组分配的大小超过实际所需,那么多余的空间就被浪费了。 的成本是硬盘的几十倍,这使得它难以在消费者市场普及。 ‧ 缓存的大容量和高速度难以兼得。随着 L1、L2、L3 缓存的容量逐步增大,其物理尺寸会变大,与 CPU 核心之间的物理距离会变远,从而导致数据传输时间增加,元素访问延迟变高。在当前技术下,多层级 的缓存结构是容量、速度和成本之间的最佳平衡点。 图 4‑9 计算机存储系统 第 4 章 数组与链表 hello‑algo.com 85 Note 计算机的存储层0 码力 | 383 页 | 18.49 MB | 1 年前3
Hello 算法 1.2.0 简体中文 TypeScript 版ASCII 码是最早出现的字符集,其全称为 American Standard Code for Information Interchange(美国 标准信息交换代码)。它使用 7 位二进制数(一个字节的低 7 位)表示一个字符,最多能够表示 128 个不同的 字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、数字 0 ~ 9、一些标点符号,以及一些控制字符(如 换行符和制表符)。 图 ‧ 缓存局部性:当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下局限性。 ‧ 插入与删除效率低:当数组中元素较多时,插入与删除操作需要移动大量的元素。 ‧ 长度不可变:数组在初始化后长度就固定了,扩容数组需要将所有数据复制到新数组,开销很大。 ‧ 空间浪费:如果数组分配的大小超过实际所需,那么多余的空间就被浪费了。 的成本是硬盘的几十倍,这使得它难以在消费者市场普及。 ‧ 缓存的大容量和高速度难以兼得。随着 L1、L2、L3 缓存的容量逐步增大,其物理尺寸会变大,与 CPU 核心之间的物理距离会变远,从而导致数据传输时间增加,元素访问延迟变高。在当前技术下,多层级 的缓存结构是容量、速度和成本之间的最佳平衡点。 图 4‑9 计算机存储系统 第 4 章 数组与链表 www.hello‑algo.com 85 Tip 计算机的0 码力 | 383 页 | 18.49 MB | 10 月前3
TypeScript 4.0 使用手册
上面的类型意思是,若 T 能够赋值给 U ,那么类型是 X ,否则为 Y 。 有条件的类型 T extends U ? X : Y 或者_解析_为 X ,或者_解析_为 Y ,再或者_延迟_解 析,因为它可能依赖一个或多个类型变量。 若 T 或 U 包含类型参数,那么是否解析 为 X 或 Y 或推迟,取决于类型系统是否有足够的信息来确定 T 总是可以赋值给 U 。 下面是一些类型可以被立即解析的例子: DynamicPriorityPolling 介绍的那样) UseFsEventsOnParentDirectory 此选项通过 fs.watch (使用系统文件事件)监视文件的父目 录,因此CPU占用率低但也会降低精度 默认 (无指定值) 如果环境变量 TSC_NONPOLLING_WATCHER 设置为 true ,监 视文件的父目录(如同 UseFsEventsOnParentDirectory : 以固定的时间间隔,检查文件的更改 priorityPollingInterval : 以固定的时间间隔,检查文件的更改,但是使用 「heuristics」检查某些类型的文件的频率比其他文件低(heuristics 怎么翻?) dynamicPriorityPolling : 使用动态队列,在该队列中,较少检查不经常修改的文件 useFsEvents (默认): 尝试使用操作系统/文件系统原生事件来监听文件更改0 码力 | 683 页 | 6.27 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 TypeScript 版碼是最早出現的字符集,其全稱為 American Standard Code for Information Interchange(美國 標準資訊交換程式碼)。它使用 7 位二進位制數(一個位元組的低 7 位)表示一個字元,最多能夠表示 128 個 不同的字元。如圖 3‑6 所示,ASCII 碼包括英文字母的大小寫、數字 0 ~ 9、一些標點符號,以及一些控制字 元(如換行符和製表符)。 圖 ‧ 快取區域性:當訪問陣列元素時,計算機不僅會載入它,還會快取其周圍的其他資料,從而藉助高速快 取來提升後續操作的執行速度。 連續空間儲存是一把雙刃劍,其存在以下侷限性。 ‧ 插入與刪除效率低:當陣列中元素較多時,插入與刪除操作需要移動大量的元素。 ‧ 長度不可變:陣列在初始化後長度就固定了,擴容陣列需要將所有資料複製到新陣列,開銷很大。 ‧ 空間浪費:如果陣列分配的大小超過實際所需,那麼多餘的空間就被浪費了。 所示,假設我們想在相鄰的兩個節點 n0 和 n1 之間插入一個新節 點 P ,則只需改變兩個節點引用(指標)即可,時間複雜度為 ?(1) 。 相比之下,在陣列中插入元素的時間複雜度為 ?(?) ,在大資料量下的效率較低。 圖 4‑6 鏈結串列插入節點示例 第 4 章 陣列與鏈結串列 www.hello‑algo.com 75 // === File: linked_list.ts === /* 在鏈結串列的節點0 码力 | 384 页 | 18.80 MB | 10 月前3
Hello 算法 1.0.0b5 TypeScript 版计算机就可以通过查表完成 二进制数到字符的转换。 3.4.1 ASCII 字符集 「ASCII 码」是最早出现的字符集,全称为“美国标准信息交换代码”。它使用 7 位二进制数(即一个字节的 低 7 位)表示一个字符,最多能够表示 128 个不同的字符。如图 3‑6 所示,ASCII 码包括英文字母的大小写、 数字 0 ~ 9、一些标点符号,以及一些控制字符(如换行符和制表符)。 图 3‑6 ‧ 缓存局部性: 当访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓 存来提升后续操作的执行速度。 连续空间存储是一把双刃剑,其存在以下缺点。 ‧ 插入与删除效率低: 当数组中元素较多时,插入与删除操作需要移动大量的元素。 ‧ 长度不可变: 数组在初始化后长度就固定了,扩容数组需要将所有数据复制到新数组,开销很大。 ‧ 空间浪费: 如果数组分配的大小超过了实际所需,那么多余的空间就被浪费了。 存中的两种存储方式:连续空间存储和 离散空间存储。两者的特点呈现出互补的特性。 ‧ 数组支持随机访问、占用内存较少;但插入和删除元素效率低,且初始化后长度不可变。 ‧ 链表通过更改引用(指针)实现高效的节点插入与删除,且可以灵活调整长度;但节点访问效率低、占 用内存较多。常见的链表类型包括单向链表、循环链表、双向链表。 ‧ 动态数组,又称列表,是基于数组实现的一种数据结构。它保留了数组的优势,同时可以灵活调整长0 码力 | 378 页 | 30.70 MB | 1 年前3
Hello 算法 1.0.0b1 TypeScript 版= n0.next; const n1 = P.next; n0.next = n1; } 4. 数组与链表 hello‑algo.com 51 4.2.2. 链表缺点 链表访问结点效率低。上节提到,数组可以在 ?(1) 时间下访问任意元素,但链表无法直接访问任意结点。这 是因为计算机需要从头结点出发,一个一个地向后遍历到目标结点。例如,倘若想要访问链表索引为 index (即第 index // 将索引 1 处的元素更新为 0 在列表中添加、插入、删除元素。相对于数组,列表可以自由地添加与删除元素。在列表尾部添加元素的时间 复杂度为 ?(1) ,但是插入与删除元素的效率仍与数组一样低,时间复杂度为 ?(?) 。 // === File: list.ts === /* 清空列表 */ list.length = 0; /* 尾部添加元素 */ list.push(1); 方式,即连续空间存储和离散 空间存储。两者的优点与缺点呈现出此消彼长的关系。 ‧ 数组支持随机访问、内存空间占用小;但插入与删除元素效率低,且初始化后长度不可变。 ‧ 链表可通过更改指针实现高效的结点插入与删除,并且可以灵活地修改长度;但结点访问效率低、占用 内存多。常见的链表类型有单向链表、循环链表、双向链表。 ‧ 列表又称动态数组,是基于数组实现的一种数据结构,其保存了数组的优势,且可以灵活改变长度。列0 码力 | 186 页 | 14.71 MB | 1 年前3
TypeScript的发展历程Type ●JS+类型标注 ●工具相对完善 ●上手容易 ●与TS设计相似* 比较 类型系统 难度 工具链 CoffeeScript 动态 低 差 BuckleScript 很强 高 较好 FlowType 强 较低 较好 TypeScript 强 低 很好 TS发展史 ●简单易用,不求完美 ●原汁原味,贴合JS ●从简单到强大 TS发展史 Pre 1.0 ●简单 ●无泛型 var0 码力 | 64 页 | 6.17 MB | 1 年前3
Programming TypeScript一个特殊的程序(编译器)解析,转换成抽象句法树(abstract syntax tree, AS ). AST 是去掉了空白、注释和缩进用的制表符或空格之后的数据结构。 编译器把 AST 转换成一种字节码(bytecode) 的低(底?)层表示。 字节码再传给运行时程序计算,最终得到结果。 ● 综上 1. 把程序解析成AST 2. 把AST编译成字节码 3. 运行时计算字节码 TS 的特殊之处在于,它不直接编译成字节码,而是编译成JS代码0 码力 | 3 页 | 202.08 KB | 1 年前3
TypeScript Handbook(中文版)
TypeScript 2.4 动态导入表达式 动态的 import 表达式是一个新特性,它属于ECMAScript的一部分,允许用户在 程序的任何位置异步地请求某个模块。 这意味着你可以有条件地延迟加载其它模块和库。 例如下面这个 async 函数,它 仅在需要的时候才导入工具库: async function getZipFile(name: string, files: File[]):0 码力 | 557 页 | 7.48 MB | 1 年前3
共 9 条
- 1













