# TCP 与 UDP 的区别 特性 UDP TCP 是否连接 无连接 面向连接 是否可靠 不可靠传输,不使用流量控制和拥塞控制 可靠传输(数据顺序和正确性),使用流量控制和拥塞控制 传输方式 面向报文 面向字节流 # TCP 的拥塞控制 慢启动(慢开始) 在开始发送的时候设置 cwnd = 1(cwnd 指的是拥塞窗口) 思路:开始的时候不要发送大量数据,而是先测试一下网络的拥塞程度,由小到大增加拥塞窗口的大小(每次乘 2)。 为了防止 cwnd 增长过大引起网络拥塞,设置一个慢开始门限 (ssthresh 状态变量) 拥塞窗口 < 慢开始门限 拥塞窗口 =...

# 概述 React Server Components 允许服务器和客户端(浏览器)协作渲染您的 React 应用程序。考虑为您的页面渲染的典型 React 元素树,它通常由不同的 React 组件组成,这些组件渲染更多的 React 组件。RSC 使得此树中的某些组件可以由服务器渲染,而某些组件可以由浏览器渲染 RSC 跟 SSR 是两个不同的概念,使用 RSC 并不需要 SSR # 好处 更接近数据源 某些情况下不需要下载某些 npm 包 # RSC 做了什么 服务器将根组件序列化为 JSON(RSC payload) HTML...

在 React 的 useState hook 中我们可以传递函数或者其 state 对应的类型。 以下是他们的区别: # 当传递的参数是 state 对应的类型的时候 123456const [state, setState] = useState(0);// state => 0setState(1);// state => 0setState(2)// state => 0 这种方式在 React18 里面会被批量化处理,实际只会触发一次 dispatch,同时在当时的环境中 state 一直都是 0,直到下次 commitRoot 完成 #...

本文介绍 react18 updateReducer 内部实现的细节 注意!!!: 本章只讨论 state 类型的 hooks # 前置知识 在介绍实现细节前, 先弄清楚几个概念 Hook 123456789export type Hook = {| memoizedState: any, // 存当前hook的状态 useState返回的数组的第一个参数 baseState: any, // 在优先级管理会用到 下面会介绍 baseQueue: Update<any, any> | null, // 同样的 在优先级管理会用到 下面会介绍...

关于 react useEffect 的一些逻辑梳理 # 初始化阶段 调用 mountEffect, 设置 fiberFlags mountEffect 调用 mountWorkInProgrsss 把当前 effect hook 加到 currentlyRenderingFiber.memoizedState 此时直到 commitRoot 阶段 effect.destory 还是 undefinded commitRoot 异步调用刷新 PassiveEffect, 执行 useEffect 传递的回调, 同时把回调的返回值设置为 effect.destory # 更新阶段 调用...

# 介绍 React 基于浏览器的事件机制自身实现了一套事件机制,包括事件注册、事件的合成、事件冒泡、事件派发等。 React 为了性能会在容器监听所有事件(事件委托机制),当事件发生时会先触发原生事件再触发合成事件最后触发容器的原生事件: 原生事件:子元素 DOM 事件监听! 原生事件:父元素 DOM 事件监听! React 事件:子元素事件监听! React 事件:父元素事件监听! 原生事件:容器 DOM 事件监听! #...

# 安装 安装并查看 lerna 版本 1npx lerna -v # 创建项目并初始化 lerna 项目 123mkdir new-lerna-democd new-lerna-demolerna init # 创建 a 包 1lerna create a 一路回车,将 packages/a/package.json 的 name 字段改成 @gamejoye/a,设置 type 为 “module”,修改 packages/a/lib/a.js 的内容为 ESM 模块的形式 # 为 a 包添加依赖 给 a 包添加依赖,这里以 loadsh 为例子 1npm i lodash -w...

# 如何使用 git rebase 与 git merge 都有相同的作用,都是将一个分支的提交合并到另一分支上,但是在原理上却不相同 git merge 将 feature 分支合并到当前分支 1git merge feature G 节点是 master 和 feature 所在的节点 git rebase 将 master 分支变基到当前分支 1git rebase master C 节点是 master 所在的节点 E’节点是 feature 所在的节点 # 总结 merge 通常用在 master 分支合并 feature 分支 rebase 用于创建干净的线性...

# 1. 客户端发起请求 用户在浏览器中输入网址(https://),浏览器向服务器发送一个请求,要求建立安全连接。这一步称为 ClientHello。 请求中包含客户端支持的 TLS/SSL 版本、加密套件(可用于通信的加密算法)、以及一个随机数( Client Random )。 # 2. 服务器响应 服务器收到请求后,选择双方都支持的最高版本的 TLS/SSL 以及一个加密套件,并将其发送给客户端。这个过程称为 ServerHello。 服务器还发送自己的数字证书(由受信任的证书颁发机构 CA 签发),包含服务器的公钥以及服务器的身份信息,并附带一个随机数( Server...