notes

算法复杂度

June 3, 2022
algo-analysis

Time complexity # 时间复杂度 算法执行所需的操作数,而不是实际的运行时间 当输入 n 足够大时,低阶项可以被舍弃 RAM # Random Access Machine 单处理器 指令按序处理,无并发操作 仅包含常用指令,每个指令的执行占用常量操作时间 Average case # 对 size n 的 平均 输入,算法执行所需的操作数,(平均运行时间) 通常要用到概率分析的方法,取决于输入的分布,如果没有合理的输入分布,我们不能用概率去分析 Worst case # 对 size n 的任意输入,算法执行所需的最大操作数,即运行时间的 上界 (上限) 使算法执行时间最长的输入,例如对插入排序而言,待排序数组是已经反向排序好的 最常用 Best case # 使算法执行时间最短的输入,例如对插入排序而言,待排序数组是已经正向排序好的 \( \Theta \) notation # \( \Theta(g(n)) = \{f(n): \exists c_1, c_{2}, n_{0} \in \mathbb{R^{+}} , \forall n_{0} \leq n, 0 \leq c_{1}g(n) \leq f(n) \leq c_{2}g(n) \} \) ...

正则表达式

June 3, 2022
js

Character Class # 字符类 字符 含义 \d 数字 \D 非数字 \s 空格,换行符,制表符 \S 非 \s \w 拉丁字母,数字,下划线 _ \W 非 \w . 除 \n 外的任意字符; 如果有 s flag,则为任意字符 Quantifiers # 量词,用于针对其前面的字符的数量的修饰 字符 含义 {n} n个 + 1或多,[1, +\(\infty\) ) * 0或多,[0, +\(\infty\) ) ? ...

异步

June 3, 2022
js

Reactor Pattern # 异步的底层原理 # 操作系统的 api Callback # Generator # 被调用时返回一个 generator 对象,函数体不会立即执行, 通过 generator 对象控制函数体的执行 function* f() function *g() function * h() // 三种声明方式都可以, 第一种比较好 // as the star * denotes that it’s a generator function, it describes the kind, not the name, so it should stick with the function keyword Promise1 # Promise 对象表示异步操作的最终完成结果以及其值(或异常) 状态 # pending ...

常用数学符号

June 3, 2022
math

SETS # 符号 含义 \(\mathbb{N}\) 自然数 \(\mathbb{Z}\) 整数 \(\mathbb{Z^+}\) 正整数 \(\mathbb{Q}\) 有理数 \(\mathbb{R}\) 实数

归纳和递归

June 1, 2022
math

数学归纳和递归 # 数学归纳 # 证明:当 \( n \in \mathbb{Z^+} \) 时,\(P(n)\) 成立。 基础条件: 证明 \(P(1)\) 成立 归纳条件: 证明对 \(\forall k \in \mathbb{Z^+} \), \(P(k) \rightarrow P(k+1) \) 成立 即可证原命题成立 推理公式: \( (P(1) \land \forall k (P(k) \rightarrow P(k+1))) \rightarrow \forall n P(n) \),\(n,k \in \mathbb{Z^+}\) 递归 #

June 1, 2022
data-structure

定义 # 树: 连接的 无向 无环图 Path # 路径: 节点和边的序列 路径长度; 路径里 边 的数量 Depth # 节点深度: 从根节点到当前节点的 路径 长度 Level # 节点层级:节点 depth + 1, (很少用) 树的层级:节点层级的最大值 Height # 节点高度: 从当前节点到 叶节点 的 最长 路径 长度 树的高度: 根节点的高度 Width # 树在深度 d 的宽度: 树在深度 d 的节点数量 树的宽度: 所有深度的最大宽 Binary Tree # 二叉树 Balanced # 平衡树的高度为 \(O(log n)\) Height-Balanced # 高度平衡,对任意节点而言,其子树的高度差 最多 为 1,空子树的高度为 -1 ...

如何证明

June 1, 2022
math

Proof method # 证明方法 Theorem # 定理: 可证明为真的语句 (事实,真相) Axioms # 公理: 假定为 true 的语句 (statements) Lemma # 引理,辅助定理 Proof # 证明 p true, q 为 true Direct proof # 直接证明 if p true, p -> q true, q true Contraposition # ~q -> ~p Contradiction # 矛盾法

命题逻辑

June 1, 2022
math

Proposition Logic # Proposition # 命题: 描述性语句,要么真,要么假 Conditional Statements # 条件语句 if p, then q, i.e. \(p \rightarrow q\) 推理规则 # 例如: 假设 p 为 true 时 p 能推出 q,那么 q 为 true 即: \((p\land(p \rightarrow q)) \rightarrow q\) p \(p \rightarrow q\) (条件语句) \(\therefore q\) Argument Form # 推理方式,论证方式

计算机网络

June 1, 2022
network

三次握手 # client 发送 syn(Synchronize Sequence Number)到 server,表示想要建立 tcp 连接 Server 发送(syn+ ack) client 发送 ack 给 server,连接建立 四次挥手 # client 发送 FIN server 接收到 FIN,发送 ack server 发送 FIN client 发送 ack 网络分层 # TCP/IP 模型 # 应用层 传输层 网络层 链路层 OSI 模型 # 应用层 展示层 会话层 传输层 网络层 链接层 物理层 HTTP 1.1 # 缺点: ...