05_bitmaphyperloglogGEO

Bitmap&hyperloglog&GEO

面试问

  1. 记录对集合中的数据进行统计
  2. 在移动应用中,需要统计每天的新增用户数和第2天的留存用户数;
  3. 在电商网站的商品评论中,需要统计评论列表中的最新评论:
  4. 在签到打卡中,需要统计一个月内连续打卡的用户数:
  5. 在网页访问记录中,需要统计独立访客(Unique Visitor,UV)量。

痛点:

类似今日头条、抖音、淘宝这样的额用户访问级别都是亿级的,请问如何处理?

需求痛点

  1. 亿级数据的收集、清洗、统计、展现
  2. 需要:存的进、取得快、多维度

一、统计的类型有哪些

  1. 聚合统计

    统计多个集合元素的聚合结果,就是set里面的交差并等集合统计

    image-20230310202435718

    交并差集和聚合函数的应用

  2. 排序统计

    抖音短视频最新评论留言的场景,请你涉及一个展现列表。考察数据结构和设计思路。

    image-20230310202753893

    使用zset实现

    image-20230310203037036

    在面对需要展示最新列表、排行榜等场景时,如果数据更新频繁或者需要分页显示,建议使用zset

  3. 二值统计

    集合元素的取值就只有0和1两种。在钉钉上班签到打卡的场景中,我们只需要记录签到(1)和没签到(0)

    一般使用bitmap实现

  4. 基数统计

    指统计一个集合中不重复的元素

    一般使用hyperloglog

二、hyperloglog

  1. 名词

    1. UV

      Unique Visitor,独立访客,一般理解为客户端IP

      需要考虑去重

    2. PV

      Page View,页面浏览量

      不用去重

    3. DAU

      Daily Active User,日活跃用户量,登录或使用某个产品的用户数(去掉重复登录的用户)

      常用于反映网站、互联网应用或网络游戏的运营情况

    4. MAU

      Monthly Active User,月活跃用户量

  2. 需求

    很多计数类场景,比如每日注册IP数、每日访问IP数、页面实时访问数PV、访问用户数UV等。

    因为主要的目标高效、巨量地进行计数,所以对存储的数据的内容并不太关心。

    也就是说它只能用于统计巨量数量,不太涉及具体的统计对象的内容和精准性。

    统计单日一个页面的访问量(PV),单次访问就算一次。

    统计单日一个页面的用户访问量(UV),即按照用户为维度计算,单个用户一天内多次访问也只算一次。

    多个ky的合并统计,某个门户网站的所有模块的PV聚合统计就是整个网站的总PV。

  3. 是什么

    1. 基数

      是一种数据集,去重复后的真实个数

      image-20230310205505716

    2. 去重复统计功能的基数估计算法,就是hyperloglog

      image-20230310205545928

    3. 基数统计

      用于统计一个集合中不重复的元素个数,就是对集合去重复后剩余元素的计算

    4. 基本命令

      image-20230310205744231

  4. hyperloglog如何实现的,如何演化的

    1. 去重的几种方法

      • hashset

      • bitmap

        image-20230310210406452

      • hyperloglog概率算法

        通过牺牲准确率来换取空间,对于不要求绝对准确率的场景下可以使用,因为概率算法不直接存储数据本身,

        通过一定的概率统计方法预估基数值,同时保证误差在一定范围内,由于又不储存数据故此可以大大节约内存。

    2. 如何做到的?如何演化来的

      只是进行不重复的基数统计,不是集合也不保存数据,只记录数量而不是具体的内容。

      有误差:

      ​ hyperloglog提供不精确的去重计数方案,牺牲准确率来换取空间,误差在0.81%左右

      论文和出处:http://antirez.com/news/75

      image-20230310211215500

    3. 淘宝网站首页亿级UV的Redis统计方案

      1. 需求

        1. UV的统计需要去重,一个用户一天内的多次访问只能算一次
        2. 淘宝、天猫首页的UV,平均每天是1~1.5个亿左右
        3. 每天存1.5个亿的IP,访问者来了后先去查是否存在,不存在加入
      2. 方案

        1. 使用redis hash存储详细数据

        2. 使用hyperloglog

          image-20230310212656426

      3. hyperloglog service

      4. hyperloglog controller

三、GEO

面试题说明:

移动互联网时代LBS应越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、打车软件附近的车辆等等。

那这种附近各种形形色色的XXX地址位置选择是如何实现的?

会有什么问题呢?

  1. 查询性能问题,如果并发高,数据量大这种查询是要搞垮mysq数据库的
  2. 一般mysql查询的是一个平面矩形访问,而叫车服务要以我为中心N公里为半径的圆形覆盖。
  3. 精准度的问题,我们知道地球不是平面坐标系,而是一个圆球,这种矩形计算在长距离计算时会有很大误差,mysql不合适

3.1 redis之GEO

经纬度:

image-20230310215853543

如何获取某个地址的经纬度:使用百度地图等系统

命令复习:

  1. GEOADD:添加经纬度坐标

  2. GEOPOS:返回经纬度

  3. GEOHASH:返回坐标的geohash,geohash算法生成的base32编码值

    image-20230310220254284

  4. GEODIST:两个位置之间距离

  5. GEORADIUS:查找距离中心位置小于XX距离的地点

  6. GEORADIUSBYMEMBER

四、bitmap

  1. 命令复习

    image-20230313214956303

  2. 需求和解决方案

    image-20230313215057654

  3. bitmap解决方法

    image-20230313215140676

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

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

相关文章

SpringBoot、Java 使用 Jsoup 解析 HTML 页面

使用 Jsoup 解析 HTML 页面 什么是 Jsoup? Jsoup 是一个用于处理 HTML 页面的 Java 库,它提供了简单的 API,使得从 HTML 中提取数据变得非常容易。无论是获取特定标签的内容还是遍历整个页面的元素,Jsoup 都能轻松胜任。 如何使…

思维进化算法(MEA)优化BP神经网络

随着计算机科学的发展,人们借助适者生存这一进化规则,将计算机科学和生物进化结合起来,逐渐发展形成一类启发式随机搜索算法,这类算法被称为进化算法(Evolutionary Com-putation, EC)。最著名的进化算法有:遗传算法、进化策略、进化规划。与传统算法相比,进化算法的特点是群体搜…

react之路由的安装与使用

一、路由安装 路由官网2021.11月初,react-router 更新到 v6 版本。使用最广泛的 v5 版本的使用 npm i react-router-dom5.3.0二、路由使用 2.1 路由的简单使用 第一步 在根目录下 创建 views 文件夹 ,用于放置路由页面 films.js示例代码 export default functio…

基于深度学习的指针式仪表倾斜校正方法——论文解读

中文论文题目:基于深度学习的指针式仪表倾斜校正方法 英文论文题目:Tilt Correction Method of Pointer Meter Based on Deep Learning 周登科、杨颖、朱杰、王库.基于深度学习的指针式仪表倾斜校正方法[J].计算机辅助设计与图形学学报, 2020, 32(12):9.DOI:10.3724…

使用zoom预览出图和系统相机预览出图,画质不一样的问题分析

1、问题背景 最近在基于 Android 的平台调试一款摄像头,客户有反馈一个问题,系统自带的 Camera2 app 预览出图是正常的,但用 Zoom app 打开摄像头,出图画面存在畸变、锯齿、过曝的问题,现象如下图所示。 2、问题分析 …

kafka--kafka基础概念-ISR详解

kafka基础概念-ISR详解 主要是讲 主 往 从同步中的问题 当绿色P1接收到写入的数据,要同步到紫色的P1S1和P1S2 如何保证一致性呢? 使用In Sync Replicas 也就是ISR概念 为什么不一致的? 因为P1S1同步数据 可能花费 50ms P1S2可能花费60ms…

java Spring Boot properties多环境配置拆分文件管理

上文 java Spring Boot yml多环境拆分文件管理优化 我们用yml 做了一个多环境配置文件的拆分管理 我们将 application.yml 改为 application.properties 参考代码如下 spring.profiles.activedev我们知道 yml 是用 : 来区分高低基本 而 properties是直接通过 . 来表达 其他基本…

重新认识小米

被镁光灯聚焦的企业,总是会被贴上各种标签。 8月14日,小米科技创始人雷军以“成长”为主题的年度演讲,刷遍社交网络。提到小米,你首先想到什么?手机发烧友、极致性价比,还是最年轻的500强? 这…

OLED透明屏采购指南:如何选择高质量产品?

着科技的不断进步,OLED透明屏作为一种创新的显示技术,在各个行业中得到了广泛应用。 在进行OLED透明屏采购时,选择高质量的产品至关重要。在这篇文章中,尼伽将为您提供一个全面的OLED透明屏采购指南,帮助您了解关键步…

ArcGIS Pro如何制作不规则形状图例

在默认的情况下,ArcGIS Pro生成的图例是标准的点、直线和矩形的,对于湖泊等要素而言,这样的表示方式不够直观,我们可以将其优化一下,制作不规则的线和面来代替原有图例,这里为大家介绍一下制作方法&#xf…

嵌入式设备应用开发(boost库应用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 嵌入式开发过程中不可避免在很多情况下,需要使用到posix的api函数。一方面,这些api函数确实可以帮助我们解决一些问题;但是另外一方面,因为平台的差异,如果一段时间不做嵌入式…

No114.精选前端面试题,享受每天的挑战和学习

文章目录 vue3中的ref、toRef、toRefs说明下TS的优缺点说下函数式组件说下函数式编程 vue3中的ref、toRef、toRefs 下面是对Vue 3中的ref、toRef和toRefs进行比较的表格: reftoReftoRefs参数类型值类型或引用类型响应式对象响应式对象返回值Ref 对象Ref 对象响应式…

cmake扩展(5)——file命令排除部分文件

在cmake中可以使用file命令获取需要的文件&#xff0c;并且支持正则/通配符&#xff0c;使用起来还是很方便的。 #语法file({GLOB | GLOB_RECURSE} <out-var> [...] [<globbing-expr>...])#example file(GLOB_RECURSE SOURCES "src/*.h" "src/*.cp…

http库 之 OKHttpUtil

源码位置 方便实用&#xff0c;个人感觉不错 依赖 <dependency><groupId>io.github.admin4j</groupId><artifactId>common-http-starter</artifactId><version>0.7.5</version> </dependency>代码实践 /*** 通用http的pos…

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)

深入理解SSO原理,项目实践使用一个优秀开源单点登录项目(附源码)。 一、简介 单点登录(Single Sign On),简称为 SSO。 它的解释是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 ❝ 所谓一次登录,处处登录。同样一处退出,处处退出。 ❞ 二…

基于ChatYuan-large-v2 微调训练 医疗问答 任务

一、ChatYuan-large-v2 上篇基于ChatYuan-large-v2 语言模型 Fine-tuning 微调训练了广告生成任务&#xff0c;总体生成效果还可以&#xff0c;但上篇文章的训练是微调的模型全部的参数&#xff0c;本篇文章还是以 ChatYuan-large-v2 作为基础模型&#xff0c;继续探索仅训练解…

Centos 8 网卡connect: Network is unreachable错误解决办法

现象1、ifconfig没有ens160配置 [testlocalhost ~]$ ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopba…

基于HTML+CSS+Echarts大屏数据可视化集合共99套

基于HTMLCSSEcharts大屏数据可视化集合共99套 一、介绍二、展示1.大数据展示系统2.物流订单系统3.物流信息系统4.办税渠道监控平台5.车辆综合管控平台 三、其他系统实现四、获取源码 一、介绍 基于HTML/CSS/Echarts的会议展览、业务监控、风险预警、数据分析展示等多种展示需求…

Python绘制爱心代码(七夕限定版)

写在前面&#xff1a; 又到了一年一度的七夕节啦&#xff01;你还在发愁送女朋友什么礼物&#xff0c;不知道怎样表达你满满的爱意吗&#xff1f;别担心&#xff0c;我来帮你&#xff01;今天&#xff0c;我将教你使用Python绘制一个跳动的爱心&#xff0c;用创意和幽默为这个…