1. 程式人生 > 實用技巧 >通過jdk自制https證書並配置到nginx中

通過jdk自制https證書並配置到nginx中

演算法步驟:

一.求next陣列:

雙指標假設從0開始,如果前後一樣就讓next[j]的值變成已經匹配好的數目i+1。

如果不一樣則前指標不斷動歸跳已經算出來的next如果能繼續匹配就繼續,直到如果跳到開頭還是和末尾匹配不上就讓末尾j++。

二.主串和模式串匹配:

雙指標一個j指向主串t一個i指向模式串s,如果一樣就同時向後,之後有2種情況。

一種是模式串全部匹配成功,判斷條件為i==lens。

另一種是失配,模式串不斷跳next,能繼續匹配就繼續,跳到開頭都匹配不上就主串j++。

std::function<void(char*,int,int*)> getnext = [&](char
* s, int len, int nxt[]) { int i = 0, j = 1; while (j < len) { if (s[i] == s[j]) nxt[j] = i+1,i++,j++; else if (i == 0) j++; else i = nxt[i-1]; } }; std::function<void(char*,int,char*,int,int*)> kmp = [&](char* s, int lens, char* t, int lent, int nxt[]) { int i = 0, j =0
; while (j < lent) { if (s[i] == t[j]) i++, j++; else if (i == 0) j++; else i = nxt[i-1]; if (i == lens) { /*do something*/ } } };