2019-10 中旬

# 2019-10-20: 什么是 SSL

好好想想先 😌
  • 一句话
    • TODO

# 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 中间件

好好想想先 😌

# 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 响应.

# 2019-10-14: 什么是尾调用优化和尾递归优化?

好好想想先 😌
  • 参考链接

  • 一句话

    • 尾调用
      • 指某个函数的最后一步是调用另一个函数
      • 函数调用会在内存形成一个"调用记录",又称"调用帧"(call frame),保存调用位置和内部变量等信息。尾调用由于是函数的最后一步操作,所以不需要保留外层函数的调用记录,因为调用位置、内部变量等信息都不会再用到了,只要直接用内层函数的调用记录,取代外层函数的调用记录就可以了。
    • 尾递归
      • 函数调用自身,称为递归。如果尾调用自身,就称为尾递归。
    • ES6 的尾调用优化只在严格模式下开启,正常模式是无效的。这是因为在正常模式下,函数内部有两个变量,可以跟踪函数的调用栈。
      • arguments:返回调用时函数的参数。
      • func.caller:返回调用当前函数的那个函数。

# 2019-10-13: Node 中 module.exportsexports 的区别

好好想想先 😌

# 2019-10-12: 理解 Javascript 的变量提升

好好想想先 😌

# 2019-10-11: js 最大数是多大,大数计算的方法,BigInt 类型

好好想想先 😌