连续登陆模型,bitmap实现

Redis 实战篇:巧用Bitmap 实现亿级海量数据统计 阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。2、Redis学习笔记及学习思维脑图。 阅读详情
账号活跃日期
G012022-03-01
G022022-03-01
G012022-03-02
G012022-03-03
G022022-03-03
G022022-03-04
G02        2022-03-31
G01        2022-03-29
G01        2022-03-30
G01        2022-03-31

int是4个子节,一个子节8位,4个子节32位,数字位有31位,第一位为符号位(0是正1是负数)

G01:【0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1】

G02:【0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1】

通过转换我们得知

G01 = 2^31+2^30+2^29+2^2+2^1+2^0

G02 = 2^31+2^3+2^2+2^0

通过推理得知,

如果我在1号登陆,那么就是 2^('2022-03-01'-'2022-03-01') = 1  即 1号=1

如果我在2号登陆,那么就是 2^('2022-03-02'-'2022-03-01') =2  即 2号=2

如果我在3号登陆,那么就是 2^('2022-03-03'-'2022-03-01') = 4 即 3号=4

如果我在4号登陆,那么就是 2^('2022-03-04'-'2022-03-01') = 8 即 4号=8

如果我在31号登陆,那么就是 2^('2022-03-31'-'2022-03-01')  即 31号=2^30

得出的规律为 ,dt号登陆那么就是

POWER(2, datediff(dt, trunc(dt,'MM')))

每个人的bitmap 就可以构建出来了

drop table if EXISTS dws.mall_app_dau_bitmp;

create table dws.mall_app_dau_bitmp (
  guid string,
  bitval bigint
)
partitioned by ( dt string)
insert into dws.mall_app_dau_bitmp partition(dt='2022-02-13')
select 
nvl(ld.guid,td.guid) as guid,
if(
  -- 如果这个人之前没登陆过
  ld.bitval is null,
  -- 计算这个人登陆日期距离本月1号的差然后^2
  POWER(2, datediff(dt, trunc(dt,'MM') )), 
  -- 如果这个人之前登陆过,那要看今天有没有登陆,如果登陆需要加上 今天距离本月1号的差然后^2 否则加上0
  -- 为了保障超出int导致符号改变 需要与上int最大值
  -- 这样就能得到今天的intval
  (ld.bitval + if(td.guid is null,0,cast(POWER(2, datediff(dt, trunc(dt,'MM') )) as bigint)))&2147483647
)
from (
select guid,bitval
from dws.mall_app_dau_bitmp
where dt ='2022-02-12'
) ld
full join (
select guid,dt
from dws.mall_app_dau 
where dt ='2022-02-13'
) td 
on ld.guid = td.guid

使用

select guid,bitval,lpad(bin(bitval),32,0) from dws.mall_app_dau_bitmp where dt='2022-02-13'

保姆级教程:手把手带你玩转英飞凌TC397开发板的板载资源(CAN FD、LCD、SD卡) 本文提供英飞凌TC397开发板的全面开发指南,涵盖CAN FD通信、LCD显示、SD卡文件系统和以太网通信等核心功能。通过详细的代码示例和硬件连接说明,帮助开发者快速上手并充分利用开发板的丰富资源,实现高效嵌入式系统开发。 阅读详情

相关推荐

UG/NX二次开发实例流程样例(nx1980+vs2019)

以上就是基本操作了,下面进入界面开发流程,nx1980的界面开发操作,也需要在块UI界面编辑器中操作,很多教程都没有讲解这一点,尤其是如何进入块UI界面编辑器,那么我在这里详细说明一下步骤。》,这一篇文章我们将详细讲述,如何开发一个具体的功能——根据用户输入的数据,在特定的点上创建一个指定大小的立方体。可以将文件保存当桌面,笔者保存在桌面的create_block目录中了,如下图所示,可以发现生成了三个文件。4.在新建模型完成后,我们准备创建交互UI,按照下图所示的顺序,找到块UI界面编辑器,。

秋月的私语 1万+

使用Redis的Bitmap统计一周连续登录的用户

Bitmap是一种特殊的数据结构,用于表示位图或位集合。在Redis中,Bitmap是由字符串表示的二进制位数组,每个位可以是0或1。Bitmap提供了一系列位操作命令,可以高效地进行位的设置、清除、查找和统计。

jakelihua 1427

【Android14 ShellTransitions】Transition就绪:双Transaction与SurfaceControl显示时机剖析

本文深入剖析了Android14 ShellTransitions框架中Transition就绪阶段的核心机制。重点解释了为何需要“双Transaction”来精确控制SurfaceControl的显示与隐藏时机,以确保Activity切换动画的流畅性。通过分析onTransactionReady流程、窗口绘制状态机及动画目标提升策略,揭示了系统如何协调WMCore与WMShell,实现从状态收集到动画播放的无缝衔接。

ooo22的博客 530

在Java中实现记录1000万用户连续7天登录的功能,可以使用Redis的Bitmap来跟踪每个用户的登录状态

在Java中实现记录1000万用户连续7天登录的功能,可以使用Redis的Bitmap来跟踪每个用户的登录状态

猪猪 759

常用元器件使用方法3:电平转换芯片74LVC1T45的使用方法

介绍: 74LVC1T45是一个单位双向可控电平转换芯片。   芯片特性: 1、宽供给电压范围:1.65V到5.5V; 2、3.3V时,可输出24mA电流; 3、最大16uA电能损耗; 4、高噪音抑制;   型号:   引脚: VCC(A) 1 A端和DIR电源 GND 2 地 A 3 数据输入/输出 B 4 ...

snmplink的博客 1万+

【深度学习|学习笔记】广义线性模型Generalized linear model(GLM)模型详解,附代码。

【深度学习|学习笔记】广义线性模型Generalized linear model(GLM)模型详解,附代码。

2401_89898861的博客 1877

redis-bitmap实际运用统计用户登录天数和每天活跃用户

redis bitmap实际运用一 第一个听需求,如果你的公司有用户系统,有很多用户。然后这时候需求是什么? 统计未来用户的登录天数,且窗口随机。什么意思?比如说在电商的公司当中,电商的网 站,一般就是老板心血来潮说,今天是8月28 ,马上就9月了,那么9月1号往前推一周,9月 1号往后推一周,这14天所有用户的登录的天数帮我统计一下,然后没过两天该是双11了, 双11的前后帮我统计一下,然后哪天他老婆生日了,我老婆生日前后几天给我统计一下, 你的老板会随机的让你统计,指不定哪天开始哪天结束,就在这个范围之

qq_37200262的博客 2322

Linux系统之部署经典魔塔小游戏

Linux系统之部署经典魔塔小游戏

jks212454的博客 1817

redis 使用setbit(bitmap)计算连续登录的用户

Redis Setbit 命令 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 返回值 指定偏移量原来储存的位。 语法 redis 127.0.0.1:6379> Setbit KEY_NAME OFFSET 实例 redis> SETBIT bit 10086 1 (integer) 0 redis> GETBIT bit 10086 (in...

Botanika的博客 1973

026、传感器校准:加速度计校准

本文详细介绍了无人机飞控系统中加速度计的校准方法。作者从一次炸机事故引入,强调加速度计校准的重要性。文章首先解释了加速度计测量原理和误差来源,包括零偏、尺度因子和交叉轴耦合。重点介绍了两种校准方法:六位置法利用重力作为参考,操作简单但精度有限;椭球拟合通过采集大量数据点进行最小二乘拟合,精度更高但实现复杂。文章还指出温度补偿这一常被忽视的关键因素,并分享了实际调试中的经验教训,包括采样时长、安装误差、验证方法等。最后建议初学者从六位置法入手,逐步优化校准精度,强调良好的校准是飞控性能的基础。

2401_88858637的博客 45

【主题建模】一种基于深度学习的主题建模方法:BERTopic(实战篇)

BERTopic 是基于深度学习的一种主题建模方法。2018 年底,Devlin et al. 提出了 Bidirectional Encoder Representations from Transformers (BERT)。BERT 是一种用于 NLP 的预训练策略,它成功地利用了句子的深层语义信息。

Data · Model · Agent · Repeat 2万+

如何统计百万用户在线状态-bitmap

BitMap 原本的含义是用一个比特位来映射某个元素的状态。由于一个比特位只能表示 0 和 1 两种状态,所以 BitMap 能映射的状态有限,但是使用比特位的优势是能大量的节省内存空间。在 Redis 中,可以把 Bitmaps 想象成一个以比特位为单位的数组,数组的每个单元只能存储0和1,数组的下标在 Bitmaps 中叫做偏移量。位图不是实际的数据类型,而是在 String 类型上定义的一组面向位的操作,将其视为位向量。由于字符串是二进制安全 blob,其最大长度为512 MB。

qq_33228984的博客 1656

Unity如何实现数字人口型同步

SALSA LipSync v2是一款实时唇音同步系统,无需音素映射即可根据音频自动生成口型动画。系统提供三大核心功能:基于音频波形分析的智能口型同步、EmoteR表情随机化工具以及Eyes眼睛/头部追踪系统。配置流程简单快捷,只需导入模型后通过一键配置完成基础设置,再添加A/E/I/O/U等基本口型混合变形即可实现基础功能。进阶功能支持表情池管理(手动/随机/强调/重复触发)和眼部动作配置(骨骼旋转或混合变形)。系统支持三种输入方式:本地音频文件分析、麦克风实时输入和文本转语音,为数字人角色提供完整的表情

TxNet 762

Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计

在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。常见的场景如下:给一个 userId ,判断用户登陆状态;显示用户某个月的签到次数和首次签到时间;两亿用户...

码哥字节 898

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

REDIS08_bitmap的概述、用途、常用命令、签到接口、连续签到

bitmap的概述、用途、setbit、getbit、bigcount、bittop、strlen命令使用

所得皆惊喜 1288

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Redis 实战:巧用 Bitmap 实现亿级海量数据统计

在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。常见的场景如下:给一个 userId ,判断用户登陆状态;显示用户某个月的签到次数和首次签到时间;两亿用户...

码猿技术专栏 561

Bitmap实现签到功能

Bitmap 的底层数据结构用的是 String 类型的 SDS 数据结构来保存位数组,Redis 把每个字节数组的 8 个 bit 位利用起来,每个 bit 位 表示一个元素的二值状态(不是 0 就是 1)。同样的 UserID offset 都是一样的,当一个 userID 在 7 个 Bitmap 对应对应的 offset 位置的 bit = 1 就说明该用户 7 天连续打卡。在记录了一个亿的用户连续 7 天的打卡数据,如何统计出这连续 7 天连续打卡用户总数呢?常见场景:二值状态统计。

Guanam2020的博客 958

诚之和:Redis 实战篇巧用Bitmap 实现亿级海量数据统计

在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。 常见的场景如下: 给一个 userId ,判断用户登陆状态; 显示用户某个月的签到次数和首次签到时间; 两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数; 通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。 所以,我们必须要选择能够非常高效地统计大量数据(例如亿级)的集合类型。 如何选择合适的数据集合,我们首先要了解常用的统计模式

weixin_45378258的博客 153

巧用 Bitmap 实现亿级海量数据统计

作者 | 码哥字节来源 | 码哥字节在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。常见的场景如下:给一个 userId ,判断用户登陆状态;显示用户某个月的签到次数和首次签到时间;两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数;通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级...

优快云云计算 764

8-Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计 码哥

在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。 常见的场景如下: 给一个 userId ,判断用户登陆状态; 显示用户某个月的签到次数和首次签到时间; 两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数; 通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。 所以,我们必须要选择能够非常高效地统计大量数据(例如亿级)的集合类型。 如何选择合适的数据集合,我们

有才而性缓,定属大才。有智而气和,斯为大智。 387

Java面试场景题(1)---如何使用redis记录上亿用户连续登陆天数

登录了,你可以存储为一...第二天...二...以此类推,到最后一天,以当天为起点,然后往前面推算,凡是碰到1的,就把他给统计,碰到0,就不再给用户继续统计,即可!但缺点(如图所示),不建议统计超过30天(如游戏签到)因为统计太长内存变多数量增加,30天就设置key为30,过期就结束~但是存储方式不一样,统计的方式也不一样。的数字,比如id为5),那么你第一天。来存储,因为占得内存小,速度也很快。

qq_39594419的博客 906

用 Bitmap 实现亿级海量数据统计

在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。常见的场景如下:给一个 userId ,判断用户登陆状态;显示用户某个月的签到次数和首次签到时间;两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数;通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。所以,我们必须要选择能够非常高效地统计大量数据(例如亿级)的集合类型。四种统计类型:二值状态统计;聚合统计;排序统计;基数统计。

qq_38470315的博客 709

Redis 实战篇:巧用 Bitmap 实现亿级海量数据统计 - 几十M就能统计亿级数据

在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合。 常见的场景如下: 给一个 userId ,判断用户登陆状态; 显示用户某个月的签到次数和首次签到时间; 两亿用户最近 7 天的签到情况,统计 7 天内连续签到的用户总数; 通常情况下,我们面临的用户数量以及访问量都是巨大的,比如百万、千万级别的用户数量,或者千万级别、甚至亿级别的访问信息。 所以,我们必须要选择能够非常高效地统计大量数据(例如亿级)的集合类型。 如何选择合适的数据集合,我们

wangpeng322的博客 1811

Redis 中 bitmap 的原理和使用

Redis 有5种数据类型,而 BitMap 在 Redis 中并不是一个新的数据类型,其底层是 Redis 实现。

Java Punk 4618
上一篇: cube数据立方体模型
下一篇: addax idea调试流程
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值