- 博客(7)
- 收藏
- 关注
原创 数据库索引的底层数据结构B+Tree
B树是一种多叉路衡查找树,相对于二叉树,B树每个节点可以有多个分 支,即多叉,树的顶层叫子节点,子节点以下叫分支节点,用绿色框起来的部分叫索引,不用于存储数据,红色框起来是数据的存储部分,也是B+树的叶子节点。Mysql数据库索引中在相邻的叶子节点中增加了一个双向链表,就形成了带有顺序指针的B+Tree,提高了排序效率。3.非叶子节点仅仅起到查询数据的作用,不用存储数据。2.叶子节点会形成一个单链表。B+树有以下特点:1.所有数据都会出现在叶子节点。
2024-01-29 20:29:18 435
原创 一,多级缓存解决方案
其实本质就是redis更新了,没有通知另外一个节点的caffeine,使用的是redis中的发布订阅功能,相当于简化版的mq。1,当项目发展到一定阶段,积累到一定用户时,就会出现一个数据量过大,查询频率过高的问题,针对以上特点,我们进行逐一分析,首选是数据量大,这个挑战是在存储方面,如果我们做技术选型的话,无非就是两种选择,一种是关系型数据库,另一种是非关系型数据库,显然,在存储大数据方面非关系型数据库更合适一些,以我们目前掌握的技术而言,选择MongoDB存储要比MySQL更合适一些。
2024-01-24 18:32:21 563
原创 Hashset的底层原理
另一个是调用了元素的equals方法,用来比较新添加的元素和集合中已有的元素是否相同。只有新添加元素的hashCode值和集合中以后元素的hashCode值相同、新添加的元素调用equals方法和集合中已有元素比较结果为true, 才认为元素重复。Hashset底层是基于哈希表来实现的,哈希表的版本不同,底层原理也不同,这里分为jdk1.8之前和jdk1.8之后的。如果hashCode值相同,equals比较不同,则以链表的形式连接在数组的同一个索引为位置(如上图所示)jdk1.8之后的底层原理。
2024-01-19 09:04:36 426 1
原创 关于Redis的缓存问题的说明和解决方案
2,解决方案:针对这种情况解决方案有种,第一种,热点数据不设置过期时间。1.说明:缓存穿透是指,如果一个 key 在缓存和数据库都不存在,那么访问这个 key 每次都会进入数据库,很可能被恶意请求利用,缓存雪崩与缓存击穿都是数据库中有,但缓存暂时缺失缓存雪崩与缓存击穿都能自然恢复,但缓存穿透则不能。1,说明:缓存击穿是指,某一热点数据存储到redis中,该数据处于高并发场景下,如果此时该key过期失效,这样就会有大量的并发请求进入到数据库,对数据库产生大的压力,甚至会压垮数据库。事前预防:搭建高可用集群。
2024-01-17 14:54:40 540
原创 关于单token存在的问题的解决方案
单token存在什么问题,主要是token有效期设置长短的问题,如果设置的比较短,用户会频繁的登录,如果设置的比较长,会不太安全,因为token一旦被黑客截取的话,就可以通过此token与服务端进行交互了。另外一方面,token是无状态的,也就是说,服务端一旦颁发了token就无法让其失效(除非过了有效期),这样的话,如果我们检测到token异常也无法使其失效,所以这也是无状态token存在的问题。为了解决此问题,我们将采用【双token三验证】的解决方案来解决此问题。
2024-01-16 14:37:20 610
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人