令牌桶的JAVA实现
## 思想 定义一个令牌桶(Token_Bucket),以一定的速度向桶里投掷令牌 (now - lastThrowTime) * rate 业务方在处理请求前先去令牌桶获取令牌(acquire),如果获得令牌成功,则进行后续逻辑,否则就丢弃请求或者将请求放置到等待队列。 ## 代码 ```java package cn.melonkid.commons.lang; import java.l...
2021-09-20leetcode53_最大和子序
### 问题   MVCC,就是通过对数据维护多个版本,从而解决并发读写冲突问题,是一种乐观锁思想。 ## undo log undoLog用来做版本控制和版本回滚的日志,当数据库数据发生变更时,会在undoLog保留变更前的数据。 对于业务表数据,除了常规的业务自定义列外,还有几个重要的隐藏列。 | DB_TSX_ID | 事务ID | | --- | --- | | DB_RO...
2021-09-06物理存储相关知识
### 主存(RAM) 主存的大概结构如下图所示 。随着集合的增大,查询耗时将会线性增加。 ### 二分查找 基于有序数组的情况下,先拿目标元素与集合中间位置元素比较,如果找到返回,否则如果比中间元素小就在左区间继续递归找,否则就在右区间递归找。...
2021-09-06单向链表反转
## 简单的链表直接反转 ### 思路: 定义三个指针curr,pre, next分别指向当前节点,前序节点和后继节点。那么对于当前节点来说,要实现反转,就是将当前节点的后继指针指向它的前序节点即可。处理完当前节点,指针移动到下一个节点,继续执行上面操作。直到当前节点为空为止。 ### 操作图示: { for(int i = 0; i arr[j]) { minPos = j; } } swap(arr, i, minPos); } } ```...
2021-08-23