之前,我们在【Security】HTTPS 和 【Security】安全的 HTTP 的演化中介绍了HTTPS的工作原理,HTTPS的一个重要的作用,就是防止中间人攻击(Man-in-the-Middle Attack,MITM)。
然而,不知道你有没有考虑过,作为一个常用的macOS下抓包工具 - Charles,它是如何获取到HTTPS包中明文内容的。
Posted by Wei on 2019-05-31, Last Modified on 2025-08-11
哈希表(Hash table,也叫散列表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数(Hash function),存放元素的数组称做散列表(Hash table)。
Posted by Wei on 2019-05-30, Last Modified on 2025-08-11
在了解赫夫曼树之前,我们首先先介绍一些基础概念。
路径是指在一棵树中,从一个节点到另一个节点之间的分支构成的通路。
Posted by Wei on 2019-05-30, Last Modified on 2023-02-21
在 1972 年,慕尼黑理工大学(Technical University of Munich)的计算机科学家 Rudolf Bayer 创造了**红黑树(Red-Black Tree)**数据结构。
除了包含数据和左右孩子节点之外,红黑树的节点还包含了一项特别的信息 – 颜色。这个颜色只包含两种颜色,即红色和黑色。
在 1962 年,俄罗斯数学家 G. M. Andel’son-Vel-skii 和 E. M. Landis 发明了第一种自平衡二叉查找树,叫做 AVL 树。AVL 树必须维持如下平衡条件,对每个节点 n:节点 n 的左子树的高度与右子树的高度的差至多是 1。
实际上,二叉查找树操作的运行时间与树的高度(Height)是有关系的。一个树的高度指的是从树的根开始所能到达的最长的路径长度。树的高度可被递归性地定义为:
Posted by Wei on 2019-05-29, Last Modified on 2025-08-11
二叉查找树(Binary Search Tree),也称为二叉搜索树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者一颗二叉树的任何节点均满足:
通过观察二叉链表,我们发现,不管二叉树的形态如何,空链域的个数总是多于非空链域的个数。准确的说,有n个结点的二叉链表共有2n个链域,非空链域为n-1个,但其中的空链域却有n+1个。如下图所示。
Posted by Wei on 2019-05-28, Last Modified on 2025-08-11
简单地理解,满足以下两个条件的树就是二叉树:
Posted by Wei on 2019-05-27, Last Modified on 2025-08-11
🐒 Software engineer | 📷 Photographer | 👹 Urban explorer