在前面搞清楚了Sentinel的使用后,大致理了一下Sentinel的責任鏈,搞清楚了這個,基本就已經梳理清楚sentinel-core模塊的大部分內容,順着這條鏈路可以繼續梳理很多東西。 知其然、知其所以然。而閱讀源碼就是最好的知其所以然的方式。這一次找了一些空閑時間,捋了一下它的滑動 ...
要說現在工程師最重要的能力,我覺得工程能力要排第一。 就算現在大廠面試經常要手撕算法,也是更偏向考查代碼工程實現的能力,之前在群里看到這樣的圖片,就覺得很離譜。 算法與工程實現 在 Sentinel Go 中,一個很核心的算法是流控 限流 算法。 流控可能每個人都聽過,但真要手寫一個,還是有些困難。為什么流控算法難寫 以我的感覺是算法和工程實現上存在一定差異,雖然算法好理解,但卻沒法照着實現。 舉 ...
2021-12-20 13:00 1 347 推薦指數:
在前面搞清楚了Sentinel的使用后,大致理了一下Sentinel的責任鏈,搞清楚了這個,基本就已經梳理清楚sentinel-core模塊的大部分內容,順着這條鏈路可以繼續梳理很多東西。 知其然、知其所以然。而閱讀源碼就是最好的知其所以然的方式。這一次找了一些空閑時間,捋了一下它的滑動 ...
大家好呀,打算寫一個 Go 語言組件源碼分析系列,一是為了能學習下 Go 語言,看下別人是怎么寫 Go 的,二是也掌握一個組件。 本次選擇了 Sentinel-Go,一是對 Java 版本的 Sentinel 算是有一些了解,也在生產上落地過,二是感覺他的代碼應該不會太復雜(僅僅是感覺),三是 ...
的傳輸,提高網絡吞吐量。 滑動窗口算法其實和這個是一樣的,只是用的地方場景不一樣,可以根據需要調整 ...
某日事不多,點開sentinel-core代碼學習,想看看qps、rt等是怎么統計的。 點開StatisticSlot類,發現里面是用DefaultNode增加qps,然后嘗試點開 DefaultNode->StatisticNode->ArrayMetric-> ...
滑動窗口算法 滑動窗口算法可以用以解決數組/字符串的子元素問題,它可以將嵌套的循環問題,轉換為單循環問題,降低時間復雜度。 給定一個字符串,請你找出其中不含有重復字符的最長子串的長度。 輸入: s = "abcabcbb" 輸出: 3 解釋: 因為無重復字符的最長子串是 "abc ...
長度的子串都拿出來做自檢,時間復雜度會比較高。 使用滑動窗口的思想,對錯誤信息進行合理利用,可以有效 ...
關於雙指針的方法,可能大家並不陌生,而滑動窗口算法,其實算是雙指針的一種實現方式,主要用於解決子串問題。並且在leetCode上起碼有10道以上的滑動窗口應用題目,難度均在middle和hard。因此,我本文也致力於闡述自己的想法,供大家互相學習。 首先滑動窗口算法,顧名思義,就是要維護 ...
本文詳解「滑動窗口」這種高級雙指針技巧的算法框架,帶你秒殺幾道高難度的子字符串匹配問題。 LeetCode 上至少有 9 道題目可以用此方法高效解決。但是有幾道是 VIP 題目,有幾道題目雖不難但太復雜,所以本文只選擇點贊最高,較為經典的,最能夠講明白的三道題來講解。第一題為了讓讀者掌握算法模板 ...