1.查询
1.基于有序查
二分,堆查询,b-tree 查询,红黑树查询,二叉查找树查询
2.基于无序查
遍历查询,hash 查询.
2.排序
插入排序: 直接插入,希尔排序,
选择排序:简单选择,堆排序
交换排序: 冒泡,快排
归并排序
基数排序
对一个序列:
插入频繁,查询频繁. 插入删除频繁.
有序队列: 插入和删除都频繁. 利用堆. jdk 内PriorityQueue.
虽然每次插入的时候都不是全局有序(数组,并不是顺序排序的,看源代码一脸蒙逼), 省时间,poll的时候花点时间, 这样将排序的工作分散到插入和删除中. 便于选型.
mongodb 耗内存原因: mmap 管理文件,系统管理. 无 schema,字段名必须保存.
java 里延迟队列就是在PriorityQueue实现的.
1. 根本上是用堆实现的. 插入时已经部分有序了.
2.或者可以使用时间轮.(时间轮不过是先预设了分块).
3.或者可以用(rocket-mq)Btree,lsm-tree. 不预先分配.compare 对时间间隔取余即可.