摘要: diffing算法是React实现增量渲染的关键。当state或props更新时,render()函数被调用来渲染新的组件。React需要一种方法来高效地渲染,即尽可能复用组件,而不是推倒重来。 树上编辑距离算法(太复杂了看不懂)提供了一种在O(n³)复杂度(n是树上元素个数)内得到所需的最少状态转 阅读全文
posted @ 2022-03-10 03:30 stan_marsh 阅读(105) 评论(0) 推荐(0)
摘要: 基数树是一种压缩前缀树:当一个节点没有兄弟节点时,将它与父节点合并,以解决前缀树中经常出现的分支退化为链表的问题。 不过,狭义上基数树来源于Linux pagecache数据结构。在文件索引结构体(inode)中的address_space字段记录了该文件所使用的页缓存。address_space使 阅读全文
posted @ 2022-02-21 05:05 stan_marsh 阅读(535) 评论(0) 推荐(0)
摘要: go终于出泛型了,整个烂活玩玩,体验一下,总体感觉还是有点别扭,主要有两处不完善 // hashmap.go package hashmap import ( "bytes" "encoding/gob" "fmt" "hash/fnv" "reflect" ) type HashMap[K com 阅读全文
posted @ 2022-01-22 07:03 stan_marsh 阅读(127) 评论(0) 推荐(0)
摘要: 后缀数组(suffixarray)用来解决一系列与字符串模式匹配相关的问题。因为我比较菜,也不是ACMer,因此本文主要用来给自己扫盲,非常简单 先介绍几个概念: sa: 后缀数组。将原字符串(长度为n)的所有n个后缀按字典序排名,sa[i]=k表示排名为i的后缀在原字符串中的起始下标为k。简记:s 阅读全文
posted @ 2021-12-25 23:05 stan_marsh 阅读(315) 评论(0) 推荐(0)
摘要: 基于GMP模型的调度器是go实现其引以为傲的用户态线程的核心。本文就以GMP调度器为核心分析一下调度流程,顺便分析一下定时器Timer的实现,它和调度器息息相关。 本文的大纲如下: 1.GMP的关键数据结构 2.goroutine的生命周期 3.系统线程的生命周期 4.触发shedule()的时机 阅读全文
posted @ 2021-11-16 04:37 stan_marsh 阅读(583) 评论(0) 推荐(0)