2019-11 下旬
- 创建于:2019-11-21
- 更新于:2023-03-16

# 2019-11-29: 什么是 HashTable ? 如何解决冲突 ✅
好好想想先 😌
- 一种键值对数据结构
# 2019-11-28: Websocket 怎么实现长连接? ✅
好好想想先 😌
参考链接
一句话
- 基于 http
- 101 switch protocol
- Websocket 只需要一次 HTTP 握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了 HTTP 的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了接线员要反复解析 HTTP 协议,还要查看 identity info 的信息。
- 基于 http
# 2019-11-27: js 执行分为几个阶段,每个阶段分别做了什么 ✅
好好想想先 😌
参考链接
一句话
- 语法分析阶段
- 分析该 js 脚本代码块的语法是否正确,如果出现不正确,则向外抛出一个语法错误(SyntaxError),停止该 js 代码块的执行,然后继续查找并加载下一个代码块;如果语法正确,则进入预编译阶段。
- 变量提升在此阶段完成
- 预编译阶段
- 创建执行上下文
- 建立作用域
- 执行阶段
- 语法分析阶段
# 2019-11-26: 什么是 WebAssembly,应用场景有哪些 ✅
好好想想先 😌
参考链接
一句话
- 在网页上运行 C/C++ RUST 语言
- AssemblyScript
- 优点
- 体积小:由于浏览器运行时只加载编译成的字节码,一样的逻辑比用字符串描述的 JS 文件体积要小很多;
- 加载快:由于文件体积小,再加上无需解释执行,WebAssembly 能更快的加载并实例化,减少运行前的等待时间;
- 场景
- AutoCAD web 版
- Google Earth
# 2019-11-25: Object.is 和 === 的区别 ✅
好好想想先 😌
参考链接
一句话
- 两者基本相同
- Object.is(NaN, NaN) // true
- NaN === NaN // false
- Object.is(0, +0) // true
- Object.is(0, -0) // false
# 2019-11-24: 什么是 QUIC 协议,基本原理是什么 ✅
好好想想先 😌
参考链接
一句话
- Quic 全称 quick udp internet connection,“快速 UDP 互联网连接”
- 减少了 TCP 三次握手及 TLS 握手时间。
- 改进的拥塞控制。
- 避免队头阻塞的多路复用。
- 连接迁移。
- 前向冗余纠错。
- Quic 全称 quick udp internet connection,“快速 UDP 互联网连接”
# 2019-11-23: 什么是 TCP 拥塞,拥塞控制 ✅
好好想想先 😌
参考链接
一句话
- 当网络极度拥堵时,如果没有拥塞控制,发送方会继续发送大量的网络数据包,而这些数据包因为网络阻塞而延时、丢失,触发了 TCP 重传,重传使得网络更加阻塞,整个网络将会陷入不可用的状态。
- 解决办法
- 慢启动
- 拥塞避免
- 拥塞发生
- 快速恢复
# 2019-11-22: 什么是 CSP(内容安全策略)✅
好好想想先 😌
参考链接
一句话
- 通过 HTTP 头信息的 Content-Security-Policy 的字段
- 通过网页的<meta>标签