This commit is contained in:
冉文杰
2021-09-08 00:27:33 +08:00
parent 8117b10166
commit ad3f27856f
7 changed files with 17 additions and 5 deletions
+4 -1
View File
@@ -1,4 +1,7 @@
# QPS Counter
统计各接口QPS计数
使用一个双向循环链表结构
使用一个双向循环链表结构
+6 -1
View File
@@ -6,7 +6,9 @@
## 链表
这个就不介绍了。重点说下双向链表。
### 应用场景
* [redis slowlog](Redis%20slowlog.md)
### 扩缩容
@@ -18,6 +20,8 @@ java 中扩容,每次扩容新增原先容量的 1/2
int newCapacity = oldCapacity + (oldCapacity >> 1);
```
这个就不介绍了。重点说下双向链表。
## 双向链表
@@ -38,6 +42,7 @@ typedef struct Entry{
最后一个节点指针指向头节点的链表
[QPS 计数器实现](QPS%20Counter.md)
## 双向循环链表
+6 -2
View File
@@ -6,7 +6,11 @@
* 散列函数设计
* 冲突处理
* hashmap数据结构
* Java 中HashMap实现
[Golang 中HashMap实现](HashMap%20in%20Golang.md)
[Java 中HashMap实现](HashMap%20in%20Java.md)
[Java 中LinkedHashMap实现](LinkedHashMap.md)
[Java 中TreeMap实现](TreeMap%20in%20Java.md)
散列表使用某种算法操作(散列函数)将键转化为数组的索引来访问数组中的数据,这样可以通过Key-value的方式来访问数据,达到常数级别的存取效率。现在的nosql数据库都是采用key-value的方式来访问存储数据。
@@ -29,7 +33,7 @@
散列函数就是将键转化为数组索引的过程。且这个函数应该易于计算且能够均与分布所有的键。
散列函数最常用的方法是`除留余数法`。这时候被除数应该选用`素数`,这样才能保证键值的均匀散步。
散列函数最常用的方法是`除留余数法`。这时候被除数应该选用`素数`,这样才能保证键值的均匀散布。
散列函数和键的类型有关,每种数据类型都需要相应的散列函数;比如键的类型是整数,那我们可以直接使用`除留余数法`;这里特别说明下,大多数情况下,键的类型都是字符串,这个时候我们任然可以使用`除留余数法`,将字符串当做一个特别大的整数。
+1 -1
View File
@@ -22,7 +22,7 @@
* 链表
* 双向链表
### [队列](2%20List/Queue.md)
### [队列](2%20Queue/README.md)
* 队列
* 堆栈