单调栈的思想与应用
单调栈的思想与应用
前段时间遇到了关于浏览器缓存的问题,当时没有什么想法,后来回来查了一下发现很多东西都接触过,只是没有系统地整理起来,借着这篇博客整理一下。
主要内容是浏览器的强缓存,协商缓存的机制以及对应的HTTP头。
另外以后可能会整理下浏览器的Cache API相关的内容。
昨天是元宵节,leetcode的每日一题也很应景出了一道猜字谜的题目。
既然真正的猜字谜我不擅长,还是来看看这道算法的猜字谜吧。
首先上题目的链接:
https://leetcode-cn.com/problems/number-of-valid-words-for-each-puzzle/
我们可以设计出解决该字谜问题的一个算法流程:
首先我们计算出每一个word 对应的集合 Sw,存放在某一「数据结构」中,便于后续操作中的快速查找;
随后我们依次枚举每一个puzzle,计算出其对应的集合 Sp,并枚举满足要求的子集 S’p。对于每一个 S’p,我们在「数据结构」中查找其出现的次数,那么所有的 S’p出现次数之和就是puzzle 对应的谜底个数。
有了这个方案我们就可以思考如何设计这个数据结构,让我们能快速的存储和查找。
用了这么久的JavaScript,才发现自己对JavaScript的事件循环机制一直有些误解。
第一,事件循环机制不是V8实现的,V8引擎只是负责JavaScript代码的编译,内存分配等。
第二,Chrome的事件循环机制是通过Web API实现的,Node则是libuv。
第三,Node11之前,Node的事件循环的原理与Chrome是不同的。
这个周的每日一题,做算法,要有想象力,要足够充分发掘已知条件。
继续看一下Vue3的迁移文档
今天的leetcode每日一题是一道中等难度的题目,但是题解的各种思路确实是很有新意,在这里记录一下。
每次遇到这种很有想象力的题解,都会让我感到非常快乐,它们只是使用了一些你早已熟练的方法,却能用的非常巧妙。
Vue2时代的全局API全部都是挂载在Vue原型上的,所以任何对全局API的修改都会作用到所有的Vue实例。这可能是我们所不希望的,同时这种修改又是不可逆的。
所以为了应对这种情况,Vue3将全局API改造,引入了APP的概念,每个实例都是一个APP,全局API是作用在APP上的。