2019-10 中旬
- 创建于:2019-10-11
- 更新于:2023-03-16

# 2019-10-19: 简述 TCP/IP 协议 ✅
好好想想先 😌
参考链接
一句话
- TCP 属于传输层协议,IP 属于网络层协议
- TCP/IP 协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是 Internet 的核心协议。
- 基于 TCP/IP 的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。
# 2019-10-18: 浅比较和深比较的区别 ✅
好好想想先 😌
参考链接
一句话
- 浅比较 - 对比一层
# 2019-10-17: redux 中间件原理,如何手写一个 redux 中间件 ✅
好好想想先 😌
参考链接
一句话
function createThunkMiddleware(extraArgument) { return ({ dispatch, getState }) => (next) => (action) => { if (typeof action === 'function') { return action(dispatch, getState, extraArgument) } return next(action) } }
# 2019-10-16: jsonp 原理,手写 jsonp ✅
好好想想先 😌
参考链接
一句话
- 客户端利用 script 标签可以跨域请求资源的性质,向网页中动态插入 script 标签,来向服务端请求数据。
- 服务端会解析请求的 url,至少拿到一个回调函数(比如 callback=myCallback)参数,之后将数据放入其中返回给客户端。
- 仅仅支持 get 类型的方式
# 2019-10-15: 浏览器的强缓存和协商缓存有什么区别?什么场景下用强缓存?什么场景用协商缓存? ✅
好好想想先 😌
参考链接
一句话
- Cache-Control(强缓存) - 优先于其它规则
- max-age: 缓存资源, 但是在指定时间(单位为秒)后缓存过期
- no-cache: 相当于 max-age:0,must-revalidate 即资源被缓存, 但是缓存立刻过期, 同时下次访问时强制验证资源有效性
- Expires - 到期时间
- 协商缓存
- ETag
- 实体标签, 服务器资源的唯一标识符, 浏览器可以根据 ETag 值缓存数据, 节省带宽. 如果资源已经改变, etag 可以帮助防止同步更新资源的相互覆盖. ETag 优先级比 Last-Modified 高.
- 根据上次响应中的 ETag_value, 自动往 request header 中添加 If-None-Match 字段. 服务器收到请求后, 拿 If-None-Match 字段的值与资源的 ETag 值进行比较, 若相同, 则命中协商缓存, 返回 304 响应.
- 根据上次响应中的 Last-Modified_value, 自动往 request header 中添加 If-Modified-Since 字段. 服务器收到请求后, 拿 If-Modified-Since 字段的值与资源的 Last-Modified 值进行比较, 若相同, 则命中协商缓存, 返回 304 响应.
- ETag
- Cache-Control(强缓存) - 优先于其它规则
# 2019-10-14: 什么是尾调用优化和尾递归优化? ✅
好好想想先 😌
参考链接
一句话
- 尾调用
- 指某个函数的最后一步是调用另一个函数
- 函数调用会在内存形成一个"调用记录",又称"调用帧"(call frame),保存调用位置和内部变量等信息。尾调用由于是函数的最后一步操作,所以不需要保留外层函数的调用记录,因为调用位置、内部变量等信息都不会再用到了,只要直接用内层函数的调用记录,取代外层函数的调用记录就可以了。
- 尾递归
- 函数调用自身,称为递归。如果尾调用自身,就称为尾递归。
- ES6 的尾调用优化只在严格模式下开启,正常模式是无效的。这是因为在正常模式下,函数内部有两个变量,可以跟踪函数的调用栈。
- arguments:返回调用时函数的参数。
- func.caller:返回调用当前函数的那个函数。
- 尾调用
# 2019-10-13: Node 中 module.exports 和 exports 的区别 ✅
好好想想先 😌
参考链接
一句话
- 两者没有区别
exports不能直接赋值module.exports可以直接赋值- 推荐多使用
module.exports
# 2019-10-12: 理解 Javascript 的变量提升 ✅
好好想想先 😌
参考链接
一句话
- var 提升,function 提升
# 2019-10-11: js 最大数是多大,大数计算的方法,BigInt 类型 ✅
好好想想先 😌
参考链接
一句话
Number.MAX_SAFE_INTEGER: 2^53 - 1 (IEEE754 双精度)- 大数相加:拆分成单个后相加