在前面搞清楚了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 题目,有几道题目虽不难但太复杂,所以本文只选择点赞最高,较为经典的,最能够讲明白的三道题来讲解。第一题为了让读者掌握算法模板 ...