第五天业务题

5-1 你们项目中签到为什么要使用bitmap

        bitmap是Redis中的String类型里的一种类型,存储数据是以二进制(bit位)为单位进行存储的。在处理大量数据统计和判断时,只占用非常小的一部分内存,且计算速度非常高效。

        在项目中签到功能,是需要计算连续签到天数,如果使用其他类型去计算的话效率较慢,以及对内存的存储而言是不好的,而使用bitmap类型通过0,1就可以表示是否签到,效率好,内存空间的使用更少。


5-2 你们项目中积分功能是如何实现的

在项目中积分的规则基于学院的签到次数、每天学习次数以及有效交互(写评价、写回答、写笔记)规则来计算积分。
实现的话是基于MQ来实现,对服务之间进行解耦操作,以用户发起一条有效评论来举例:

学员发起了一条有效评论,保存到MongDB之前。
向MQ投降消息,并将用户id和分数投递到MQ中。
保存积分的服务监听MQ队列中的消息,一旦有消息就进行积分的增加。
在增加积分时,会先判断该用户在今天对于当前类型的积分是否到达最大积分数。
如果到最大积分数,直接返回。
如果积分不足每日上限,但加上本次会超过上限,则保存积分最大上限-已获取的积分数。
如果不满足以上条件,则直接保存即可。
当然对于不同的积分类型都会有一个专门的队列。
 

5-3 Redis三大新面试点: 跳表、pipeline、bitmap

跳表:主要是单链表 + 索引的方式实现,以空间换时间的形式,提高查找速度。redis中的zset就用到跳表结构。
比如此时有一个1到6的链表,我要找5这个数字,普通的链表是依次向后找出5,而跳表是在这个基础上又加了一层索引。比如1–>3,3–>5。通过这种方式来减少遍历的数量。主要思想是二分查找。
pipeline:可以一次性发送多条命令并在执行完后一次性将结果返回。实现的原理通过队列先进先出原理来实现,以保证数据的顺序性。不具有原子性。

bitmap:bitmap实际上就是String类型中的一种特殊的数据结构,通过二进制表示某个元素对应的值或者状态。 分为0或1。被称为位图,可以用来表示大量的布尔值。

Bitfield key: Bitfield 命令可以将一个 Redis 字符串看作是一个由二进制位组成的数组, 并对数组中任意偏移量位置进行访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络工程师:数据库基础知识面试题(八)

84.数据库技术是什么?主流的数据库管理系统软件有哪些? 数据库技术是指用于存储、管理和操作大量结构化数据的技术。它涉及数据库的设计、建模、查询语言、事务处理、数据安全性、性能优化等方面。 主流的数据库管理系统(DBMS)软件有以下几…

貌似起名可以用这个

貌似起名可以用这个 很多变量或者函数起名字都会移除元音字符,可以考虑使用tr的-d参数,如下: $ echo "Hello World, Welcome to Linux!" | tr -d a,o,e,i Hll Wrld Wlcm t Lnux!不过感觉删除的多了,也不一定是好事。。…

《设计模式的艺术》笔记 - 原型模式

介绍 使用原型实例指定创建对象的种类&#xff0c;并且通过克隆这些原型创建新的对象。原型模式是一种对象创建型模式。 实现 myclass.h // // Created by yuwp on 2024/1/12. //#ifndef DESIGNPATTERNS_MYCLASS_H #define DESIGNPATTERNS_MYCLASS_H#include <iostream&g…

Day32- 贪心算法part06

一、单调递增的数字 题目一&#xff1a;738. 单调递增的数字 738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递…

k8s---ingress对外服务(ingress-controller)

ingress 概念 k8s的对外服务&#xff0c;ingress service作用现在两个方面&#xff1a; 1、集群内部&#xff1a;不断跟踪的变化&#xff0c;更新endpoint中的pod对象&#xff0c;基于pod的ip地址不断变化的一种服务发现机制。 2、集群外部&#xff1a;类似于负载均衡器&a…

进阶Docker3:Dokerfile构建镜像

目录 Dockerfile 构建基础镜像 基本机构 命令&#xff1a; 命令解释&#xff1a; 准备工作 创建镜像 上传镜像 Dockerfile Dockerfile 是一个文本格式的配置文件&#xff0c; 用户可以使用 Dockerfile 来快速创建自定义的镜像&#xff0c;另外&#xff0c;使 用Docke…

Docker 安装 MySQ

Docker 安装 MySQL MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能&#xff0c;MySQL 已成为 Web 应用程序的数据库优先选择。 1、查看可用的 MySQL 版本 访问 MySQL 镜像库地址&#xff1a;https://hub.docker.com/_/mysql?tabtags 。 可以通过 Sort b…

使用docker部署RStudio容器并结合内网穿透实现公网访问

文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE&#xff0c;并通过 Web 浏览器进行访问…

旅游项目day04

1. JWT有效期 封装用户登录对象&#xff0c; 在指定时间过期 2. 有些接口需要登录&#xff1f;有些不需要登录&#xff1f; 后端如何知道a需要登录&#xff0c;b不需要登录&#xff1f; 注解。 3. 目的地 一个区域下面包含多个目的地 数据库表&#xff1a; 1. 区域表 2.…

交互设计:提升用户动机

之前给大家介绍了交互设计的底层模型——最新版福格行为模型。 模型告诉我们想让用户进行某个行为有3个步骤&#xff0c;第一个步骤是检查有没有&#xff08;合理的&#xff09;行为提示&#xff0c;我把它翻译成能否吸引用户注意&#xff0c;感兴趣的同学可以查看《交互设计之…

Linux--进程控制

进程终止 进程终止是指一个正在运行的进程结束其执行并释放占用的系统资源的过程。进程可以通过以下几种方式终止&#xff1a; 正常终止&#xff1a;进程完成了它的任务&#xff0c;或者遇到了终止条件&#xff0c;例如调用了exit()函数或主函数执行完毕。 异常终止&#xff1…

代码随想录刷题题Day36

刷题的第三十六天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day36 任务 ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV 1 买卖股票的最佳时机III 123.买卖股票的最佳时机III …

Maven--pom.xml文件详解

1.pom简介 pom指的是project object model&#xff0c;又叫项目对象模型。Maven的pom文件是一个XML文件&#xff0c;用于描述项目的各种属性、依赖和构建信息&#xff0c;包括项目的名称、版本、许可证、作者、描述、依赖关系、构建过程、插件等。总的来说&#xff0c;POM文件…

计算机网络——数据链路层(1)

一、概述 在计算机网络中&#xff0c;数据链路层承担着点对点通信的任务&#xff0c;用于跨物理层在网段节点之间参数数据。它在网络分层中处于物理层之上&#xff0c;网路层之下。 在链路层的讨论中&#xff0c;我们将看到两种截然不同类型的链路层信道。第一种类型是广播信道…

The Blocks Problem

本题是一道模拟题&#xff0c;但个人感觉挺有意思的&#xff08;思路很明确&#xff0c;但是WA了好几发才过&#xff09;&#xff0c;因此来讲一讲思路。 题面 题面PDF 样例输入 10 move 9 onto 1 move 8 over 1 move 7 over 1 move 6 over 1 pile 8 over 6 pile 8 over 5…

设计模式——1_5 享元(Flyweight)

今人不见古时月&#xff0c;今月曾经照古人 ——李白 文章目录 定义图纸一个例子&#xff1a;可以复用的样式表绘制表格降本增效&#xff1f;第一步&#xff0c;先分析 变化和不变的地方第二步&#xff0c;把变化和不变的地方拆开来第三步&#xff1a;有没有办法共享这些内容完…

Three.js 学习笔记之模型(学习中1.18更新)

文章目录 模型 几何体 材质模型点模型Points - 用于显示点线模型Line | LineLoop | LineSegments网格模型mesh - 三角形 几何体BufferGeometry缓冲类型几何体BufferGeometry - 基类创建几何体的方式BufferAttribute Types定义顶点法线 geometry.attributes.normal BufferGeom…

您的孩子上课总是开小差?注意力不集中?来看看这个专注力提升利器!

我们会发现&#xff0c;有些时候孩子在上课以及写作业&#xff0c;虽然手里握着笔&#xff0c;但是思绪已经“飘到外太空去了”&#xff0c;无法集中注意力&#xff1b;考试的过程中&#xff0c;更是马虎大意&#xff0c;不经过思考就直接作答&#xff0c;或者重复犯简单的错误…

debian 12 安装 浏览器 Epiphany

Epiphany 什么epiphany-browser epiphany-browser 是&#xff1a; Epiphany 是一款简单而强大的 GNOME 网络浏览器&#xff0c;针对 非技术用户。它的原则是简单和标准 合规。 简单性是通过精心设计的用户界面和依赖来实现的 在用于执行外部任务&#xff08;如阅读 电子邮件…

创建一个自定义的VSCode插件项目

创建一个自定义的VSCode插件项目需要以下步骤&#xff1a; 安装Node.js和npm&#xff1a;VSCode插件是用TypeScript或JavaScript编写的&#xff0c;所以你需要安装Node.js和npm。你可以在Node.js官方网站下载并安装。 安装Yeoman和VS Code Extension Generator&#xff1a;Ye…