ARTS | 0x003

Algorithm

Leetcode 300 Longest Increasing Subsequence

经典题目 先要构建LIS的子问题,最简单的dp接法是O(n^2),每次轮询前面每个dp结果,判断哪个dp[j] + 1最大就是当前的dp值,转化公式 dp[i] = max(dp[i], dp[j..] + 1)

var lengthOfLIS = function(nums) {
    
    if(!nums.length) return 0
    let dp = new Array(nums.length).fill(1), result = 1;
    for(let i = 0;i < nums.length; i++) {
        for(let j = 0; j < i; j++) {
             if(nums[i] > nums[j]) {
                 dp[i] = Math.max(dp[j] + 1 , dp[i])
             }
        }
        result = Math.max(dp[i], result);
    }
    
    
    return result;
};

Review

Migrating your REST APIs to HTTP/2: Why and How?

作者介绍我们为什么应该升级HTTP/1.1到2

2比1增加了什么,相比1.x使用换行text的方式传输,2.0新增了binary frame层,避免1.x体积大容易出错的问题,HTTP/2分成header frame和data frame,分别承载http头和数据.

作者认为的关键好处:

  1. Binary processing 相比HTTP/1.x文字parser能够有多种,2.0只有一种parser,对于大小写,空白行这些方面
  2. Multiplexing(并行传输) 相比1.x每次只能一个个请求返回,这样会造成队列和阻塞TCP链接,客户端也需要猜测请求的前后顺序,2.0使用了binary之后,能做到同时的并行传输,客户端只需要一个链接就能拿到不带阻塞带顺序的responses,
  3. Header Compression 请求头压缩,2.0使用了HPACK技术对请求头进行了压缩,随着头部越来越大的现代请求,头部压缩非常必要
  4. Server Push 服务器推送 在1.x时代,服务器只能对过来的请求进行一个response,但是2.0对于1个请求可以进行多个response,所以在对奇怪进行返回的时候,server能对client推送更多信息,类似在请求html的时候,可以不用通过渲染之后在请求js和css进行同步传输

Tip && Share

对Vue框架进行了仔细研读,并且开始动手实现了一个简单框架,其中最重要的基础是defineProperty方法,整体来说分为好几步:

代码

·