Hello 算法 1.2.0 简体中文 TypeScript 版
本项目旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,内容清晰易懂、学习曲线平滑,引导初学者探索数据结构与算法的知识地图。 ‧ 源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。 ‧ 提倡读者互助学习,欢迎大家在评论区提出问题与分享见解,在交流讨论中共同进步。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已 空间占用尽量少,以节省计算机内存。 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 我认为学算法(以及其他基础科目)的意义不是在于在工作中从零实现它,而是基于学到的知识,在解决问 题时能够作出专业的反应和判断,从而提升工作的整体质量。举一个简单例子,每种编程语言都内置了排序 函数: ‧ 如果我们没有学过数据结构与算法,那么给定任何数据,我们可能都塞给这个排序函数去做了。运行顺 畅、性能不错,看上去并没有什么问题。 ‧ 但如果学过算法,我们就会知道内置排序函数的时间复杂度是 ?(? log ?)0 码力 | 383 页 | 18.49 MB | 9 月前3Hello 算法 1.1.0 TypeScript版
hello‑algo.com 14 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 数据结构设计是一个充满权衡的过程。如果想在某方面取得提升,往往需要在另一方面作出妥协。下面举两 个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 的方法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大的局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能。比如在某台计算机中,算法 A 的运行 时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方 在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo.com 19 ‧ 它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。 Tip 如果你仍对复杂度的概念感到困惑,无须担心,我们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资 源,对比不同算法之间的效率。0 码力 | 383 页 | 18.49 MB | 1 年前3Hello 算法 1.0.0b5 TypeScript 版
hello‑algo.com 13 ‧ 数据操作尽可能快速,涵盖数据访问、添加、删除、更新等。 ‧ 提供简洁的数据表示和逻辑信息,以便使得算法高效运行。 数据结构设计是一个充满权衡的过程。如果想要在某方面取得提升,往往需要在另一方面作出妥协。下面举 两个例子。 ‧ 链表相较于数组,在数据添加和删除操作上更加便捷,但牺牲了数据访问速度。 ‧ 图相较于链表,提供了更丰富的逻辑信息,但需要占用更大的内存空间。 接的方法 是找一台计算机,运行这两个算法,并监控记录它们的运行时间和内存占用情况。这种评估方式能够反映真 实情况,但也存在较大局限性。 一方面,难以排除测试环境的干扰因素。硬件配置会影响算法的性能表现。比如在某台计算机中,算法 A 的 运行时间比算法 B 短;但在另一台配置不同的计算机中,我们可能得到相反的测试结果。这意味着我们需要 在各种机器上进行测试,统计平均效率,而这是不现实的。 在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo.com 18 ‧ 它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。 � 如果你仍对复杂度的概念感到困惑,无须担心,我们会在后续章节中详细介绍。 复杂度分析为我们提供了一把评估算法效率的“标尺”,使我们可以衡量执行某个算法所需的时间和空间资 源,对比不同算法之间的效率。0 码力 | 378 页 | 30.70 MB | 1 年前3Hello 算法 1.0.0b1 TypeScript 版
具有可行性,可在有限步骤、有限时间、有限内存空间下完成。 ‧ 独立于编程语言,即可用多种语言实现。 1.2.2. 数据结构定义 「数据结构 Data Structure」是在计算机中组织与存储数据的方式。为了提高数据存储和操作性能,数据结构 的设计原则有: ‧ 空间占用尽可能小,节省计算机内存。 ‧ 数据操作尽量快,包括数据访问、添加、删除、更新等。 1. 引言 hello‑algo.com 10 ‧ 提供简洁的数据表示和逻辑信息,以便算法高效运行。 的最直接的方式,就是找一台计算机,把两个算法都完整跑一遍,并监控记录运行时间和内存占用情况。这种 评估方式能够反映真实情况,但是也存在很大的硬伤。 难以排除测试环境的干扰因素。硬件配置会影响到算法的性能表现。例如,在某台计算机中,算法 A 比算法 B 运行时间更短;但换到另一台配置不同的计算机中,可能会得到相反的测试结果。这意味着我们需要在各种机 器上展开测试,而这是不现实的。 展开完整测试非 少空间,而是给出一种“趋势性 分析”; 复杂度分析克服了实际测试方法的弊端。一是独立于测试环境,分析结果适用于所有运行平台。二是可以体现 不同数据量下的算法效率,尤其是可以反映大数据量下的算法性能。 如果感觉对复杂度分析的概念一知半解,无需担心,后续章节会展开介绍。 2.1.3. 复杂度分析重要性 复杂度分析给出一把评价算法效率的“标尺”,告诉我们执行某个算法需要多少时间和空间资源,也让我们可0 码力 | 186 页 | 14.71 MB | 1 年前3TypeScript 4.0 使用手册
编译器会检测是否每个模块都会在生成的JavaScript中用到。 如果一个模块标识符只在类型注解部 分使用,并且完全没有在表达式中使用时,就不会生成 require 这个模块的代码。 省略掉没有用到 的引用对性能提升是很有益的,并同时提供了选择性加载模块的能力。 这种模式的核心是 import id = require("...") 语句可以让我们访问模块导出的类型。 模块加载 器会被动态调用(通过 require 口之间的顺序是后来的接口重载出现在靠前位置。 这个规则有一个例外是当出现特殊的函数签名时。 如果签名里有一个参数的类型是_单一_的字符串字 面量(比如,不是字符串字面量的联合类型),那么它将会被提升到重载列表的最顶端。 比如,下面的接口会合并到一起: 声明合并 - 242 - 本文档使用 书栈网 · BookStack.CN 构建 1. interface Document { 2. 建出错了,那么接下来的构建会很慢。 这是因为当启用了 --noEmitOnError 时,前一次失败构建的 信息不会被缓存到 .tsbuildinfo 文件中。 TypeScript 4.0对此做出了一些改变,极大地提升了这种情况下的编译速度,改善了应用 -- build 模式的场景(包含 --incremental 和 --noEmitOnError )。 更多详情请参考PR。 TypeScript 40 码力 | 683 页 | 6.27 MB | 1 年前3TypeScript Handbook(中文版)
return true; } else { return false; } x = 0; // 错误: 检测到不可及的代码. } 这个特性能捕获的一个更常见的错误是在 return 语句后添加换行: TypeScript Handbook(中文版) 163 TypeScript 1.8 function f() { return 'world'; // OK x[0] = false; // Error, boolean is not string or number let 声明 在JavaScript里, var 声明会被“提升”到所在作用域的顶端。这可能会引发一些让 人不解的bugs: console.log(x); // meant to write 'y' here /* later in the same block true; // Error, boolean不是number或string TypeScript Handbook(中文版) 219 TypeScript 1.3 TypeScript 1.1 改进性能 1.1版本的编译器速度比所有之前发布的版本快4倍。阅读这篇博客里的有关图表 更好的模块可见性规则 TypeScript现在只在使用 --declaration 标记时才严格强制模块里类型的可见0 码力 | 557 页 | 7.48 MB | 1 年前3Hello 算法 1.2.0 繁体中文 TypeScript 版
本專案旨在建立一本開源、免費、對新手友好的資料結構與演算法入門教程。 ‧ 全書採用動畫圖解,內容清晰易懂、學習曲線平滑,引導初學者探索資料結構與演算法的知識地圖。 ‧ 源程式碼可一鍵執行,幫助讀者在練習中提升程式設計技能,瞭解演算法工作原理和資料結構底層實 現。 ‧ 提倡讀者互助學習,歡迎大家在評論區提出問題與分享見解,在交流討論中共同進步。 0.1.1 讀者物件 若你是演算法初學者,從未接觸過 空間佔用儘量少,以節省計算機記憶體。 ‧ 資料操作儘可能快速,涵蓋資料訪問、新增、刪除、更新等。 ‧ 提供簡潔的資料表示和邏輯資訊,以便演算法高效執行。 資料結構設計是一個充滿權衡的過程。如果想在某方面取得提升,往往需要在另一方面作出妥協。下面舉兩 個例子。 ‧ 鏈結串列相較於陣列,在資料新增和刪除操作上更加便捷,但犧牲了資料訪問速度。 ‧ 圖相較於鏈結串列,提供了更豐富的邏輯資訊,但需要佔用更大的記憶體空間。 如果把具體的工作技能比作是武功的“招式”的話,那麼基礎科目應該更像是“內功”。 我認為學演算法(以及其他基礎科目)的意義不是在於在工作中從零實現它,而是基於學到的知識,在解決 問題時能夠作出專業的反應和判斷,從而提升工作的整體質量。舉一個簡單例子,每種程式語言都內建了排 序函式: ‧ 如果我們沒有學過資料結構與演算法,那麼給定任何資料,我們可能都塞給這個排序函式去做了。執行 順暢、效能不錯,看上去並沒有什麼問題。0 码力 | 384 页 | 18.80 MB | 9 月前3TypeScript 多场景设计方案及应用实践
loadController,load系列列的 保留留 Egg.js 的能⼒力力同时做出提升 TS 和 Egg.js 解耦 保留留 Egg.js 的能⼒力力同时做出提升 TS 和 Egg.js 解耦 保留留 Egg.js 的能⼒力力同时做出提升 TS 和 Egg.js 解耦 保留留 Egg.js 的能⼒力力同时做出提升 TS 和⽬目录解耦 做完了了之后,我们发现了了,加载模式的⾃自动 化,通过扫描完全不不需要⽬目录约定。0 码力 | 95 页 | 8.28 MB | 1 年前3
共 8 条
- 1