Algebraic Effects & React

前言这几年网上已经有非常的多文章在探讨 React 这次的大手笔, 正好借在 Bench 这段时间里能通过 React18 的源码看看到底做了哪些改变, 主要是对时间切片和调度方面比较感兴趣 接着就git clone -> setup 源码 -> 添加beakPoint 一顿操作猛如虎, 然后发现 e...

细说HTTP变化史

HTTP 发展至今已经发生了太多的变化, 平常工作中其实并不会注意这些变化, 甚至说根本不关心… 但在前端的工作中却与它密切相关,从通信到性能优化等等. 下面就来聊聊 HTTP HTTP主角 HTTP(超文本传输协议), 它的作用就是利用网络将服务端的超文本信息传输给客户端的一种协议. 建立在 TCP 之上, 所...

可靠的TCP传输协议

提到 TCP 协议大家印象最深刻的应该就是”可靠性”这三个字了, 因此为了保证”可靠性”真的是用了好多机制来保证😂 . 不知道当初设计 TCP 的大佬们看到现在的 QUIC 协议会不会觉得好气 那么为了实现可靠性, TCP 到底做了哪些事呢? 主要要是通过 数据序列号 / 确认应答 / 流量控制 / 拥塞控制 ...

傻傻分不清之作用域/执行上下文

工作两三年中, 偶然听同事们在讨论作用域 balabala.. 仔细回想一下好像自己也不太能说清他俩的区别到底是啥, 于是进行了一波回炉重造 从万物之源编译 JS开始JS 编译一共会经历四个阶段: 词法分析/语法分析/预编译/代码执行, 大致描述一下这四个阶段在做什么: 词法分析: 将符号流转为记号流, 将代码...

网络摄像机直播

对于网络摄像机做视频预览这块, 本身其实是非常陌生的, 当时接到这个需求也是相当的头疼(对于当时一年经验不到的我来说).当时我们的应用场景是: 多路网络摄像机通过局域网连接, PC 端能够实时预览监控画面并且画质达到720p, 延迟不能超过10秒, 多个摄像机能够切换查看. 由于后端只提供一个 RTSP 的直播协...

Babel生态

对于 babel 的使用, 一直停留在与 webpack 结合使用, 以及在 Vue 开发环境下脚手架又是开箱即用. 导致很多 babel 的包, 我都不清楚他们是干什么的. 比如 babel-register/ babel-runtime/ helpers/ 各种 presets 以及 transform-ru...

跨域

跨域这块是前后端分离必经的一条路, 这次好好整理一下关于跨域方面知识. 什么是跨域?跨域是受同源策略的影响而导致的, 指一个源下的资源试图操作另一个源下的资源. 那么, 什么又是同源策略呢?就是限制从一个源的资源如何与另一个源的资源交互, 用于隔离潜在的恶意文件, 保证文件的安全性. 所谓的同源是指: 协议/域...

Promise 分析及实现

Promise 是 ES6中中收录的异步操作封装, 通常在回调/ 事件/ 消息等异步操作中有显著的优势, 让我们在更方便的操作异步也让代码更加清晰.包括 ES7中的 Async/Await 也是对异步操作的封装, 不过 Async 更像是 Generator 的语法糖. 基础实现学习剖析 Promise 之基础篇...

《图解 HTTP》(上)

Web使用HTTP(HyperText Transfer Protocal) 超文本传输协议作为规范, 完成从客户端到服务端的一系列流程. 可以说 Web 是在 HTTP 协议上通信的. 1.0 网络基础TCP/IP通常我们使用的网络是在 TCP/IP 协议族的基础上运行的, 而 HTTP 是属于 TCP/IP ...

声明提升

在说声明提升之前, 首先应该了解三个概念性的东西, 执行上下文(Execution Context)/ 变量对象(Variable Object)和活动对象(Activation Object), 这三个概念是在 ES3 中出现的. 执行上下文(Execution Context)执行上下文也可以说是 js 代...