线上系统频繁卡死 -> 通过可视化工具看JVM各区域情况,GC次数和耗时等(没有可视化工具就用jstat) -> 发现每半小时FullGC 每3分钟YoungGC ->通过 jstat 的观察,我们当时可以看到,每次 Young GC 过后升入老年代里的对象其实很少。所以怀疑不是从年轻区进去老年区,而是直接进入老年区 -> 用jmap dump出内存快照,发现这个几百M的对象是个amp -> 怀疑大对象
https://www.bilibili.com/read/cv7186913
取模法 优点:没有热点问题 缺点:扩容要数据迁移
范围法 优点:扩容不要数据迁移 缺点:有热点问题
Group分组法:将上面两个的优点结合。
https://zhuanlan.zhihu.com/p/66842274
一种概率算法,用来统计某个网站的UV啊什么的。
https://m.haicoder.net/note/redis-interview/redis-interview-redis-hyperloglog.html
聚合索引适合用在日期上,因为日期经常做范围查询,聚合索引适合做范围查询,反而聚合索引用在主键id上是浪费,因为一般我们很少用id做范围查询。
https://cloud.tencent.com/developer/article/1026013
B+树比B树的好处在于,B+的非叶子节点不存储数据,B树的非叶子节点存储数据,而磁盘每页的容量是有限的,所以B+可以减少磁盘的IO。 另一个数据都在叶子节点在范围查询中更方便,不用再去非叶子节点找了。
https://cloud.tencent.com/developer/article/1543335
https://www.zhenchao.org/2017/10/18/solution/throttle/
MyISAM叶子节点存的是地址,不是数据, 而InnoBD 数据就是索引,索引就是数据。
MyISAM不支持事务,而InnoDB支持事务,支持行锁,ACID
https://blog.csdn.net/zgrgfr/article/details/74455547
先分成20个小文件,每个文件5G, 每个文件各自进行内排序。然后每个文件各取0.2G,进行排序,一旦用完,就继续从那个文件取0.2G
先hash(num) % n ,分成n个小文件,每个小文件求频率次数,拿到hash_map,取频率最高的数字以及次数, 拿到 n个 频率最高的数字和次数,再group by比较下。
https://blog.csdn.net/v_JULY_v/article/details/6279498
https://segmentfault.com/a/1190000040631931
https://cloud.tencent.com/developer/article/1650130
leetcode184
好处
加速GC回收,大量对象产生在堆内,GC回收得压力是很大得
更自由、更高效得使用整个计算机内存
更高性能得跨进程数据通信,避免了主内存得多次copy