5-1 你们项目中签到为什么要使用bitmap
是这样的,使用bitmap它是以二进制0,1来表示数据的,我们用0表示未签到,用1表示已签到,这样我们就可以把某个人在某一个月的签到记录放到一条记录里面,大大节省了存储空间。
5-2 你们项目中积分功能是如何实现的
是这样的,积分功能共涉及到2个微服务:学习微服务,签到微服务。
在我们项目中,课程学习,每天的签到,课程回答,课程笔记和课程评价都可以产生积分,为了实现解耦合,我们加入了mq,生产端发送积分消息,接收消息的微服务创建监听器监听mq,接取消息,保存到数据库里。
5-3 Redis三大新面试点: 跳表、pipeline、bitmap
是这样的,跳表是一种数据结构,它允许快速搜索、插入和删除操作。跳表通过使用多层链表来实现,每一层链表都是前一层链表的子集,最上层链表包含所有元素。这种结构使得跳表类似于平衡树,但更容易实现和维护。
跳表的搜索操作类似于二分查找,它从最上层链表开始,逐层向下查找,直到找到目标元素或者确定目标元素不存在。插入和删除操作也类似,需要在每层链表中进行相应的操作,以保持跳表的平衡性和有序性。
是这样的,pipeline也叫管道,通常用于描述数据在不同处理阶段中的流动和转换。例如,在持续集成和持续交付(CI/CD)中,开发人员可以创建一个包含多个阶段的管道,用于自动化构建、测试和部署软件。
是这样的,Bitmap也叫位图,是一种数据结构,底层是基于String实现的,用于表示一个二进制的位序列。每个位代表某种状态,通常用于表示集合的成员关系或者标记某种状态。在开发过程中,位图常用于解决大规模数据处理和算法问题。
位图通常用于以下几个方面:
-
表示集合:每个元素对应位图中的一个位,位图的长度通常与集合中元素的数量相对应。如果某个元素存在于集合中,则对应位被设置为1;否则设置为0。
-
空间压缩:位图可以有效地压缩数据,特别是在表示稀疏数据时,它只需要占用很少的内存空间。
-
快速查询:由于位图中的每一位都可以直接访问,因此可以在常量时间内对位图进行查询操作。
-
位操作:位图支持位操作,如与、或、非等,这些操作可以在常量时间内完成,因此非常高效。