朝花夕拾

A Development Engineer, a Life Liver, a Hope Holder

令牌桶的JAVA实现

## 思想 定义一个令牌桶(Token_Bucket),以一定的速度向桶里投掷令牌 (now - lastThrowTime) * rate 业务方在处理请求前先去令牌桶获取令牌(acquire),如果获得令牌成功,则进行后续逻辑,否则就丢弃请求或者将请求放置到等待队列。 ​ ## 代码 ```java package cn.melonkid.commons.lang; import java.l...

leetcode53_最大和子序

### 问题 ![image.png](https://cdn.nlark.com/yuque/0/2021/png/127227/1632100311402-0dc7d88b-537f-4efa-9641-15e0756d04dc.png#clientId=uaef0fc2c-b6dd-4&from=paste&height=601&id=u3ecba6d6&margin=%5Bobject%2...

Derby数据库使用问题记录

### 通过Druid管理derby时,在连接池初始化时抛出如下异常 ```java Syntax error: Encountered "" at line 1, column 8 ``` 原因是:Druid在初始化连接池时会对每个建立的连接进行check,配置如下: ```shell server: port: 8086 spring: datasource: name: test url: ...

算法-获取最长不重复子串

## 题目(中等难度) ![image.png](https://cdn.nlark.com/yuque/0/2021/png/127227/1631091874227-6614c7ce-0159-4e2e-93c1-fda6b6a76935.png#clientId=u0d869f26-97aa-4&from=paste&height=558&id=uffc071bb&margin=%5Bobj...

MVCC

## MVCC(多版本并发控制) MVCC,就是通过对数据维护多个版本,从而解决并发读写冲突问题,是一种乐观锁思想。 ## undo log undoLog用来做版本控制和版本回滚的日志,当数据库数据发生变更时,会在undoLog保留变更前的数据。 对于业务表数据,除了常规的业务自定义列外,还有几个重要的隐藏列。 | DB_TSX_ID | 事务ID | | --- | --- | | DB_RO...

物理存储相关知识

### 主存(RAM) 主存的大概结构如下图所示 ![image.png](https://cdn.nlark.com/yuque/0/2021/png/127227/1630899562050-42049b64-ead3-4826-87d4-6ceb89017e0c.png#clientId=uec26af79-ae1e-4&from=paste&height=304&id=ub0dd2701&...

Mysql索引

## 数据结构 给定一个集合,要从这个集合查询某个或者某些元素。常见的做法有: ### 直接遍历 从集合头到集合为挨个遍历,直到找到需要查找的元素或者已经全部遍历完成。很明显这个方法的时间复杂度是O(n)。随着集合的增大,查询耗时将会线性增加。 ### 二分查找 基于有序数组的情况下,先拿目标元素与集合中间位置元素比较,如果找到返回,否则如果比中间元素小就在左区间继续递归找,否则就在右区间递归找。...

单向链表反转

## 简单的链表直接反转 ### 思路: 定义三个指针curr,pre, next分别指向当前节点,前序节点和后继节点。那么对于当前节点来说,要实现反转,就是将当前节点的后继指针指向它的前序节点即可。处理完当前节点,指针移动到下一个节点,继续执行上面操作。直到当前节点为空为止。 ​ ### 操作图示: ![image.png](https://cdn.nlark.com/yuque/0/2021/...

秋天有感

这段时间,北京天气明显凉了很多,尤其是一早一晚。在风不大的时候出去走走逛逛,很是惬意。 ![秋1.jpg](https://cdn.nlark.com/yuque/0/2021/jpeg/127227/1630050207087-c502a240-177a-4f38-9730-bb3e40ba4ab9.jpeg#clientId=u03c7bafe-287b-4&from=ui&id=u030a3...

选择排序

### 核心思想 将数组分为两个子数组,其中一个子数组为有序数组,另一个为无序数组。然后从无序数组中取到最值元素,然后依次将这些最值元素追加到有序数组中。 ​ ​ ### 实现代码 ```java public void sort(int[] arr){ for(int i = 0; i arr[j]) { minPos = j; } } swap(arr, i, minPos); } } ```...