Web Worker
工作者线程
Web Worker 赋予了浏览器中的 JavaScript 多线程并发执行任务的能力。
传统的多线程模型(例如:POSIX 线程或者 Java 线程)不适合 JavaScript,因为像 DOM 这样的 API 会出现问题。
而这也正是工作者线程的价值所在:允许把主线程的工作转嫁给独立的实体,而不会改变现有的单线程模型。
Web 工作者线程规范中定义了三种主要的工作者线程:
专用工作者线程:通常简称为 Web Worker,脚本可以单独创建一个 JavaScript 线程执行委托的任务
共享工作者线程:与专用工作者线程非常相似,主要区别是共享工作者线程可以被多个不同的上下文使用
服务工作者线:与专用工作者线程和共享工作者线程截然不同。它的主要用途是拦截、重定向和修改页面发出的请求
专用工作者线程
专用工作者线程可以称为后台脚本,JavaScript 线程的各个方面,包括生命周期管理、代码路径和输入/输出,都由初始化线程时提供的脚本来控制。
创建
通过 Worker 构造函数创建专用 Worker 线程,构造函数返回一个 Worker 实例,通过该实例 ...
二叉堆
堆
在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。
堆可以实现优先队列(priority queue),有地方发也被称为优先队列,尽管名为优先队列,但堆并不是队列。
堆也是一种树状的数据结构,常见的堆实现:
二叉堆
多叉堆
索引堆
……
基本接口
123456789interface Heap<T> { size: number; isEmpty(): boolean; clear(): void; add(ele: T): void; peek(): T | null; removeTop(): T | null; replace(ele: T): T | null;}
二叉堆
堆的一个经典的实现是完全二叉树,这样实现的堆成为二叉堆。由于是完全二叉树,可以利用数组来作为底层实现的数据结构。
和二叉树类似,任意一个节点的子堆也是一个二叉堆,二叉堆的子节点不区分大小。
最大堆: ...
Web文件处理
Blob
Blob 表示一个不可变、原始数据的类文件对象,是 JavaScript 对不可修改二进制数据的封装类型。
构造函数:
1new Blob(blobParts[, options]);
blobParts:是一个由 ArrayBuffer, ArrayBufferView, Blob, string 等构成的数组,这些都是 blob 的内容。string 会被编码为 UTF-8。
options:
type:默认值为 "",内容的 MIME 类型
endings:用于指定包含行结束符 \n 的字符串如何被写入,默认值为"transparent"
native:行结束符会被更改为适合宿主操作系统文件系统的换行符
transparent:保持 blob 中保存的结束符不变
Blob 的只读属性:
size:数据大小
type:数据 MIME 类型
Blob 的方法:
slice([start[, end[, contentType]]]):返回一个新的 Blob 对象,包含了源 Blob 对象中指定范围内的数据
st ...
迭代器和生成器
迭代器
在 javaScript 中,如果一个对象具有 next 方法,并且该方法返回一个对象,格式如下:
1{ value: 值, done: 是否迭代完成 }
则认为该对象是一个迭代器
next 方法用于得到下一个数据
value 下一个数据的值
done 是否迭代完成
Iterator 接口
迭代器创建函数: 用于创建一个迭代器
ES6 规定,默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性,该方法是一个迭代器创建函数
原生具备 Iterator 接口的数据结构
Array、Map、Set、String、arguments 等原生类型
NodeList
调用 Iterator 接口的地方
展开运算符(除了对象的展开)本质上是调用的是 Iterator 接口
数组和 set 的解构本质上调用的也是 Iterator 接口
部署了 Symbol.iterator 接口,即可被 for...of 循环所遍历
yield* 后面跟的是一个可遍历的结构,它会调用该结构的 Iterator 接口
Arra ...
关于像素
像素
一个像素由红绿蓝三个像点组成,通过空间混色法显示颜色
点距:相邻同种颜色像点的距离
点距可以用来描述像素,点距越小,等距离的像素越多,显示越好。
分辨率
分辨率一般分为屏幕分辨率和图像分辨率。
屏幕分辨率
屏幕分辨率指一个屏幕具体由多少个像素点组成。
例如:iPhone XSMax 的分辨率为 2688x1242,这表示手机分别在垂直和水平上所具有的像素点数为 2688 和 1242。
我们经常见到用 K 和 P 这个单位来形容屏幕:
P 代表的就是屏幕纵向的像素个数, 1080P 即纵向有 1080 个像素,分辨率为 1920X1080 的屏幕就属于 1080P 屏幕。
K 代表屏幕横向有几个 1024 个像素,一般来讲横向像素超过 2048 就属于 2K 屏,横向像素超过 4096 就属于 4K 屏。
我们平时所说的高清屏其实就是屏幕的物理分辨率达到或超过 1920X1080 的屏幕。
图像分辨率
图片分辨率一般指的是一张图片含有的像素数。
例如:一张图片的分辨率为 800x400,这表示图片分别在垂直和水平上所具有的像素点数为 800 和 400。
同一尺寸的图片, ...









