从一次业务需求中看节流和防抖 发表于 2019-09-13 背景最近有一个业务需求,需要替换侧边栏的icon,UI那边给了两套png图片,一份是正常的,另一份就是hover的时候显示的icon。而之前的的图标都是以字体的形式使用的,因此直接通过css就能搞定。而这次就需要js来控制图片的展示,这就需要针对事件监听展示不同的图片。初始的时候由于没有加防抖,因此 ... 这是小时哥的第 48 篇原创文章 »
每周算法-红黑树 发表于 2019-09-13 红黑树和AVL树一样,都是二叉搜索树衍化过来的,通过增加了平衡机制,使得BST在最坏的情况下都不会退化为链表。学习红黑树就需要先了解2-3树,2-3树就是说节点要么是2节点,要么是3节点。这种2节点、3节点的定义就是孩子节点的数目可以有多少,可以有两个子节点的节点为2节点,可以有三个子节点的节点为3 ... 这是小时哥的第 47 篇原创文章 »
二维码生成 发表于 2019-09-01 背景最近有个需求是需要在商户后台能够通过上传logo生成自定义的二维码,打开微信中的猫眼小程序。需求拆分来看包含来文件上传、logo图片编辑、生成二维码、以及点击下载,浏览器中能做的也就这些了。当然开始PM说商户上传的logo可以不保存,但是又和PM聊了聊,还是希望能够做的完美一点,自己这边又看了一 ... 这是小时哥的第 46 篇原创文章 »
每周算法-缓存置换算法 发表于 2019-08-31 背景概论在计算机结构中我们知道CPU和内存的速度是严重不匹配的, 如果每一次取数据都是直接向内存中取,那么会造成CPU的大量空转,因此会有一块Cache,叫做高速缓存,而之所以会增加高速缓存,是因为在计算机领域中有一个原理:访问局部性,也叫做局部性原理。 访问局部性(英语:Locality of ... 这是小时哥的第 45 篇原创文章 »
每周算法-AVL树 发表于 2019-08-24 背景之前学习过二叉搜索树BST,顺序的插入数据的时候BST被退化为链表,因此为了防止这种情况的发生,就需要引入一些机制,那就是平衡树。平衡的机制就产生了平衡因子这个概念,它用于表示一个节点的平衡性,如一个节点的平衡因子为1,则表示该节点的左子树和右子树的高度差为1。在这里将平衡因子定义为左子树 - ... 这是小时哥的第 44 篇原创文章 »
每周算法-词频统计的简单实现 发表于 2019-08-18 如何去统计一个文本中的单词数量?需要大体上需要两步,第一就是读取整个文本,第二利用算法建模处理后输出统计结果。看一下用node如何实现 NodeJS读取文本内容123456789101112const readFileToArray = (url) => new Promise((resolv ... 这是小时哥的第 43 篇原创文章 »
每周算法---- 字典树Trie 发表于 2019-08-10 Trie 也叫字典树,读作Tree, 不过为了区分一般会在后面加一个E的音。其作为专门针对字符串的查询搜索,因为一般来说针对搜索可以使用二叉树,其搜索时间复杂度是logN,而如果使用Trie这种数据结构的话,其搜索的时间复杂度就和整个的查询的数量没有关系,而和查询的字符串长度相关,其时间复杂度为O( ... 这是小时哥的第 42 篇原创文章 »
监控平台学习(二) 单页性能监控 发表于 2019-08-10 单页应用的本质想要监控单页应用,就需要先理解单页应用本质到底是怎么回事的?之前的多页应用就是一个URL对应一个页面,每次URL变化的时候就去向server端请求,然后把数据拉过来。由于这样整个页面会刷新,所以体验并不是特别好,这个时候单页应用由此而生。最初当用户点击网站上的导航的时候,我们可以更新U ... 这是小时哥的第 41 篇原创文章 »
每周算法--线段树 发表于 2019-08-03 线段树, segment tree也叫区间树, 它是一颗二叉树,数的每个节点保存一个区间和一个域值。每个非叶子节点都有两个子节点,子节点之间的交集为空,子节点的并集为父节点的区间。线段树并不是一个完全二叉树,而是一个平衡二叉树。何为完全二叉树?也就是说叶子节点只能从左边的位置开始放。而平衡二叉树就是 ... 这是小时哥的第 40 篇原创文章 »
每周算法-并查集 发表于 2019-07-27 并查集熟悉一些的话说就是并查集是为了处理集合中的交集,以及查询的功能。像两个节点是否相交,是否是相通的。通过一个数组来描述一种树的结构关系。数组中的索引是节点,该位置上的值是这个节点的父节点,也就是和它相通的节点。 12345678910class UnionFind { constru ... 这是小时哥的第 39 篇原创文章 »