05 2021 档案
摘要:redis内部整体的存储结构是一个大的hashmap,内部是数组实现的hash,key冲突通过挂链表去实现,每个dictEntry为一个key/value对象,value为定义的redisObject。 结构图如下: dictEntry是存储key->value的地方,再让我们看一下dictEntr
阅读全文
摘要:1、穿透 频繁访问redis和数据库中没有的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。 解决方案: ①接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截; ②从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间
阅读全文
摘要:垃圾回收 对象存活算法: 1、引用计数器 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不可能再被使用的。 2、可达性分析算法 从GC Root开始搜索,且搜索不到的对象 跟搜索算法:以一系列名为 GC R
阅读全文
摘要:参照:https://www.cnblogs.com/wugongzi/p/12092326.html 按照“流”的数据流向,可以将其化分为:输入流和输出流。 按照“流”中处理数据的单位,可以将其区分为:字节流和字符流。在java中,字节是占1个Byte,即8位;而字符是占2个Byte,即16位。而
阅读全文