1. KMP
kmp代码
kmp图解
char *str = “bacbababadababacambabacaddababacasdsd”;
char *ptr = “ababaca”;
对于目标字符串ptr,ababaca,长度是7,所以next[0],next[1],next[2],next[3],next[4],next[5],next[6]分别计算的是
a,ab,aba,abab,ababa,ababac,ababaca的相同的最长前缀和最长后缀的长度。由于a,ab,aba,abab,ababa,ababac,ababaca的相同的最长前缀和最长后缀是“”,“”,“a”,“ab”,“aba”,“”,“a”,所以next数组的值是[-1,-1,0,1,2,-1,0],这里-1表示不存在,0表示存在长度为1,2表示存在长度为3。这是为了和代码相对应。
2. LRU & LFU & FIFO
LRU:Least Recent Use,最近最久未使用
LFU:Least Frequent Use,最近最少使用。该策略为每一个分页添加一个计数器,用来计算当前页总共访问次数。