TCP的粘包问题
四层网络模型 四层网络模型每层各司其职,消息在进入每一层时都会多加一个报头,每多一个报头可以理解为数据报多戴一顶帽子。这个报头上面记录着消息从哪来,到哪去,以及消息多长等信息。比如,mac头部记录的是硬件的唯一地址,IP头记录的是从哪来和到哪去,传输层头记录到是到达目的主机后具体去哪个进程。 为什么要将数据切片?把网络比喻为一个水管,是有一定的粗细的,这个粗细由网络接口层(数据链路层)提供给网络
单调队列结构
为啥要发明「单调队列」这种结构呢,主要是为了解决下面这个场景: 给你一个数组 window,已知其最值为 A,如果给 window 中添加一个数 B,那么比较一下 A 和 B 就可以立即算出新的最值;但如果要从 window 数组中减少一个数,就不能直接得到最值了,因为如果减少的这个数恰好是 A,就需要遍历 window 中的所有元素重新寻找新的最值。 LeetCode 139.滑动窗口最大值 1
单调栈
单调栈模板123456789101112131415161718int[] calculateGreaterElement(int[] nums) { int n = nums.length; // 存放答案的数组 int[] res = new int[n]; Stack<Integer> s = new Stack<>(); /
Guava令牌桶
Guava 令牌桶Guava 是 Google 提供的一个开源 Java 库,RateLimiter 是 Guava 中实现令牌桶限流机制的核心工具。Guava 的令牌桶实现基于 RateLimiter 类,它通过令牌的生成来控制并限制请求的速率,确保系统在一定时间窗口内不会被过多请求淹没,从而起到保护系统和保证服务质量的作用。 Guava 令牌桶的特点 平滑限流:Guava 通过令牌的生成速率来