0%
数据结构与算法-树
本文字数:
15k
阅读时长 ≈
25 分钟
《学习JavaScript数据结构与算法(第3版)》
树是一种分层数据的抽象模型。
一个树结构包含一系列存在父子关系的节点。每个节点都有一个父节点(除了顶部的第一个节点)以及零个或多个子节点:
树的每个元素都叫做节点,节点分为内部节点(有子节点的节点)和外部节点(叶节点,无子节点的节点)。
数据结构与算法-递归
本文字数:
2.8k
阅读时长 ≈
5 分钟
数据结构与算法-字典和散列表
本文字数:
16k
阅读时长 ≈
27 分钟
数据结构与算法-队列
本文字数:
4.7k
阅读时长 ≈
8 分钟
《学习JavaScript数据结构与算法(第3版)》
队列是遵循先进先出(FIFO,也称为先来先服务)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。
队列数据结构
export default class Queue {
constructor() {
this.count = 0; // 用来控制队列的大小
this.lowestCount = 0; // 队列的第一个元素
this.items = {}; // 使用对象存储元素
}
// 向队列尾部添加一个新的项
enqueue(element) {
// 将新元素加到队列中
this.items[this.count] = element;
this.count++;
}
// 移除队列的第一项(即排在队列最前面的项)并返回被移除的元素
dequeue() {
if (this.isEmpty()) {
return undefined;
}
const result = this.items[this.lowestCount];
// 删除第一项元素
delete this.items[this.lowestCount];
this.lowestCount++; // 队头元素往后移
return result;
}
// 返回队列钟第一个元素,最先被添加,也将是最先被移除的元素。队列不做任何变动(不移除元素,值返回元素信息)
peek() {
if (this.isEmpty()) {
return undefined;
}
return this.items[this.lowestCount];
}
// 队列是否为空
isEmpty() {
return this.size() === 0;
}
// 清除队列
clear() {
this.items = {};
this.count = 0;
this.lowestCount = 0;
}
// 返回队列包含的元素个数
size() {
return this.count - this.lowestCount;
}
// 队列输出
toString() {
if (this.isEmpty()) {
return '';
}
let objString = `${this.items[this.lowestCount]}`;
for (let i = this.lowestCount + 1; i < this.count; i++) {
objString = `${objString},${this.items[i]}`;
}
return objString;
}
}
双端队列
计算机网络-WebSocket
本文字数:
497
阅读时长 ≈
1 分钟
即Web浏览器与Web服务器之间全双工通信标准
是一种自然的全双工、双向、单套接字(Socket)连接
主要是为了解决 Ajax
和 Comet
里 XMLHttpRequest
附带的缺陷。
WebSocket
是异步的,可以用作高级协议的传输层。
WebSocket
是消息协议、聊天、服务器通知、管道和多路复用协议、自定义协议、紧凑二进制协议和用于与互联网服务器互操作的其他标准协议的很好基础。
Cookie、Session、Token、JWT
本文字数:
3.4k
阅读时长 ≈
6 分钟
计算机网络-HTTP系列
本文字数:
7.4k
阅读时长 ≈
12 分钟
计算机网络基础理论
本文字数:
435
阅读时长 ≈
1 分钟
工具函数系列-随机数
随机数:Math.random()
函数返回一个浮点数, 伪随机数在范围[0, 1)
指定长度随机字符串
const chars = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z' ]
function generateMixed(n) {
let res = ''
for (let i = 0; i < n; i++) {
res += chars[Math.ceil(Math.random() * 35)]
}
return res
}
(min, max)
function random(lower, upper) {
return Math.ceil(Math.random() * (upper - lower)) + lower + 1;
}