当前位置: 首页 > news >正文

【黑马点评学习笔记 | 实战篇 】| 10-用户签到+UV统计

Bug如山勤为径,代码似海苦作舟。友友们好,这里是苦瓜大王。今天学习的是黑马点评项目实战篇——用户签到+UV统计部分的学习。学完这一部分,主播会暂时将后面的高级篇和原理篇搁置,后面有时间了再学习。本节笔记如下,后续会一直更新黑马点评学习过程中的笔记、问题等,请多多支持哦!

文章目录

  • 一、用户签到
    • 1.BitMap基本命令
    • 2.实现签到功能
    • 3.统计连续签到
  • 二、UV统计
    • 1.HyperLogLog的用法
    • 2.实现UV统计

一、用户签到

  • 使用位图进行签到统计

1.BitMap基本命令

  • 示例
  • 11100111
  • u指转成无符号数,i指转为有符号数

2.实现签到功能

  • UserController
/** * 签到功能 */@PostMapping("/sign")publicResultsign(){returnuserService.sign();}
  • UserServiceImpl
/** * 签到功能 * @return */publicResultsign(){// 1.获取当前登录用户LonguserId=UserHolder.getUser().getId();// 2.获取日期LocalDateTimenow=LocalDateTime.now();// 3.拼接keyStringkeySuffix=now.format(DateTimeFormatter.ofPattern(":yyyyMM"));Stringkey=USER_SIGN_KEY+userId+keySuffix;// 4.获取今天是本月的第几天intdayOfMonth=now.getDayOfMonth();// 5.写入Redis SETBIT key offset 1stringRedisTemplate.opsForValue().setBit(key,dayOfMonth-1,true);returnResult.ok();}

前端没有做这个功能,所以用ApiFox测试

  • http://localhost:8080/api/user/sign
  • POST
  • (记得带上令牌哦)
  • 然后查看Redis里是否在你当前日期签到了

3.统计连续签到

  • 实现签到统计
  • 用1做与运算,就能得到最后一个比特位
  • UserController
/** * 统计连续签到 */@GetMapping("/sign/count")publicResultsignCount(){returnuserService.signCount();}
  • UserServiceImpl
/** * 统计连续签到 */publicResultsignCount(){// 1.获取当前登录用户LonguserId=UserHolder.getUser().getId();// 2.获取日期LocalDateTimenow=LocalDateTime.now();// 3.拼接keyStringkeySuffix=now.format(DateTimeFormatter.ofPattern(":yyyyMM"));Stringkey=USER_SIGN_KEY+userId+keySuffix;// 4.获取今天是本月的第几天intdayOfMonth=now.getDayOfMonth();// 5.获取本月截止今天为止的所有的签到记录,返回的是一个十进制的数字 BITFIELD sign:5:202203 GET u14 0 List<Long> result = stringRedisTemplate.opsForValue().bitField(key,BitFieldSubCommands.create().get(BitFieldSubCommands.BitFieldType.unsigned(dayOfMonth)).valueAt(0));if(result==null||result.isEmpty()){// 没有任何签到结果returnResult.ok(0);}Longnum=result.get(0);if(num==null||num==0){returnResult.ok(0);}// 6.循环遍历intcount=0;while(true){// 6.1.让这个数字与1做与运算,得到数字的最后一个bit位 // 判断这个bit位是否为0if((num&1)==0){// 如果为0,说明未签到,结束break;}else{// 如果不为0,说明已签到,计数器+1count++;}// 把数字右移一位,抛弃最后一个bit位,继续下一个bit位num>>>=1;}returnResult.ok(count);}

二、UV统计

1.HyperLogLog的用法

  • 所以引入了HLL,不仅操作简单,而且占内存小
  • 而且HLL不会计算重复的数据

2.实现UV统计

  • 通过info memory查看当前redis占用内存,前后进行对比,我们会发生他的误差是在允许范围内,并且内存占用极小
@TestvoidtestHyperLogLog(){// 准备数组,装用户数据String[]users=newString[1000];// 数组角标intindex=0;for(inti=1;i<=1000000;i++){// 赋值users[index++]="user_"+i;// 每1000条发送一次if(i%1000==0){index=0;stringRedisTemplate.opsForHyperLogLog().add("hll1",users);// 统计数量Longsize=stringRedisTemplate.opsForHyperLogLog().size("hll1");System.out.println("size = "+size);}}}

以上就是黑马点评实战篇——用户签到+UV统计部分的学习笔记,仅供参考,多多支持!

主播对于黑马点评部分的学习会暂时告一段落,因为后面的部分对于校招找工作来说暂时有点深奥用不上,所以一般的路线不会再继续学下去了,但是主播后续一定会捡起来重新学习 。🌹🌹🌹

接下来我应该会找一个项目做做,同样也会在CSDN上持续更新,友友们可以先点赞关注,后续会有其他的Java后端内容发布哦!

http://www.jsqmd.com/news/512456/

相关文章:

  • 2026年农村自建房施工团队推荐:广东嘉美住工绿色建筑工程有限公司,设计施工一站式解决 - 品牌推荐官
  • NEC红外协议串口模块:5字节指令实现红外编解码
  • 避坑指南:ESP32双网卡项目,你的数据可能从意想不到的接口溜走了
  • Qwen3-32B-Chat部署教程:Docker内挂载外部存储实现模型热更新
  • ESP32S3玩转AI模型:手把手教你用TensorFlow Lite Micro实现100ms内推理(含量化实战)
  • Kylin V10离线部署Ceph集群全攻略:从环境准备到故障排查
  • Mirage Flow模型剪枝与量化实战:大幅降低部署资源需求
  • 2026年食材配送服务推荐:苏州和必兴餐饮服务有限公司,同城生鲜坚果团餐冷链全覆盖 - 品牌推荐官
  • 有保障的广东油烟分离油烟机品牌厂家 - 企业推荐官【官方】
  • 计算机毕业设计springboot任我行——旅游推荐系统的开发 基于SpringBoot的“智游云“——个性化旅游行程规划系统 基于协同过滤算法的“旅途通“——智慧旅游服务平台设计与实现
  • Qwen3.5-9B教育行业落地:图表识别+解题推理双模态教学助手
  • Windows/Mac用户福音:无需命令行,用Aspera Connect图形界面轻松下载NCBI数据
  • 【嵌入式开发】SecureCRT串口日志监听实战:从配置到故障排查
  • 2026六大城市高端腕表“擒纵系统损伤”终极档案:从欧米茄同轴停走到百达翡丽擒纵叉断裂,机芯“心脏”的生死时速 - 时光修表匠
  • ## 22|Python gRPC 微服务治理:超时、重试与接口兼容策略
  • 【WSL2+Ubuntu+Docker Desktop】从C盘到D盘:高效迁移与空间优化实战
  • 压力测试详解
  • 基于SysTick定时器的嵌入式精确延时实现
  • Qwen2多语言开发避坑手册:30种语言支持下的API调用最佳实践
  • Unity游戏开发:UniTask异步任务取消的3种实战技巧(附WhenAny/WhenAll示例)
  • 功能测试、自动化测试、性能测试的区别?
  • Qwen3-32B-Chat镜像部署教程:transformers tokenizer.pad_token_id设置要点
  • 2026年扒渣机厂家实力推荐:山东名舜机械制造有限公司,多型号扒渣机满足矿山隧道需求 - 品牌推荐官
  • 2026年铜焊材领域实力推荐:河南正和焊材有限公司,铜焊丝/铜焊片/铜焊条全系供应 - 品牌推荐官
  • UVM寄存器模型实战:5种内建sequence的避坑指南与最佳实践
  • Pi0具身智能模型在工业质检中的应用案例
  • 结合Git进行AIGlasses_for_navigation模型版本管理与协作开发
  • MedGemma-X教学评估系统:自动评分学生影像描述作业并给出改进建议
  • 【数据结构与算法】二叉树做题做题做题
  • Qwen-Image+RTX4090D企业级落地实践:多模态AI助手部署于客服知识库系统