05_bitmaphyperloglogGEO

news2024/12/26 23:20:02

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.coloradmin.cn/o/899011.html

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

相关文章

Learning to Super-resolve Dynamic Scenes for Neuromorphic Spike Camera论文笔记

摘要 脉冲相机使用了“integrate and fire”机制来生成连续的脉冲流,以极高的时间分辨率来记录动态光照强度。但是极高的时间分辨率导致了受限的空间分辨率,致使重建出的图像无法很好保留原始场景的细节。为了解决这个问题,这篇文章提出了Sp…

亚马逊产品排名关键因素解析,通过测评干预需要具备哪些条件

亚马逊产品排名的高低意味着分配的流量多少以及销量的高低。影响产品排名的因素主要包括以下四个方面: 1. 产品销量 产品销量是反映产品在同类产品销售情况的一个重要指标。它在产品Listing中展示,并且平台每小时会更新一次该排行榜。平台算法认为&…

设计模式之状态模式(State)的C++实现

1、状态模式的提出 在组件功能开发过程中,某些对象的状态经常面临变化,不同的状态,其对象的操作行为不同。比如根据状态写的if else条件情况,且这种条件变化是经常变化的,这样的代码不易维护。可以使用状态模式解决这…

用ceres实现lio-sam角点匹配

文章开始先扯一堆废话,lio-sam作者手推平面点和角点匹配,对于初学者,尤其数学不好者学习有一定难度,对于工程落地和后期优化而言难度较大。本文基于主流优化库实现角点匹配,以下内容均为原创和作者实测干货&#xff08…

学习笔记230802---vue项目手写css样式二次悬浮状态问题

问题描述 今天在开发页面时,遇到一个很棘手的问题,需求页面做一个卡片效果,鼠标悬浮在卡片上,出现一个选项卡,鼠标悬浮每一项,文字和图标都要变成选中状态的颜色。选项卡的每一项都是通过数据循环渲染来的…

Selenium自动化测试面试必备:高频面试题及答案整理

自动化测试已经成为现代软件测试中不可或缺的一部分。在自动化测试中,Selenium是最受欢迎的工具之一,因为它可以模拟用户与Web应用程序的交互。因此,对于许多测试工程师来说,熟练掌握Selenium框架是非常重要的。如果你正在寻找一份…

CW12B-3A-RCWW12B-6A-RCW12B-10A-RCWW12B-20A-RCWW12B-30A-RCWW12B-40A-R导轨式滤波器

CW4L2-3A-R1 CW4L2-6A-R1 CW4L2-10A-R1 CW4L2-20A-R1 CW4L2-30A-R1导轨式滤波器 CW12B-3A-R CWW12B-6A-R CW12B-10A-R CWW12B-20A-R CWW12B-30A-R CWW12B-40A-R导轨式滤波器 CW12C-3A-R CWW12C-6A-R CWW12C-10A-R CW12C-20A-R CW12C-30A-R导轨式滤波器 CW4L2-3A-R…

Python学习之操作XML文件详解

概要 我们经常需要解析用不同语言编写的数据,Python 提供了许多第三方库来解析或拆分用其他语言编写的数据,今天我们来学习下 Python XML 解析器的相关功能。 什么是 XML? XML 是可扩展标记语言,它在外观上类似于 HTML&#xff…

all in one之安装zerotier(第四章)

好像zerotier国内ipv4不能使用 pve安装zerotier 内网穿透软件总结参考 安装参考教程 安装命令: curl -s https://install.zerotier.com | sudo bash官网 如果有以下问题,进行解决,如果没有则跳过。 问题:-bash: sudo: comman…

每天一道leetcode:127. 单词接龙(图论困难建图广度优先遍历)

今日份题目&#xff1a; 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&#xff0c;每个 si 都在 wordList 中…

2023全网Mysql 合集(25w字)附课程 从安装到高级,实战

mysql学习 1.安装mysql 安装教程 2.mysql的详细学习教程 mysql的详细教程 3.mysql 的高级优化 MySQL高级篇&#xff08;SQL优化、索引优化、锁机制、主从复制&#xff09; 4.MySQL 面试 MySQL数据库面试题总结 二.mysql实战 一、创建数据表并插入数据 1、学生表 Stud…

【python办公自动化】PysimpleGUI中的popup弹窗中的按钮设置居中

PysimpleGUI中的popup弹窗中的按钮设置居中 背景问题解决背景 默认的popup弹窗中的OK按钮是在最下面偏左侧一些,有时需要将按钮放置居中 问题解决 首先找到pysimplegui源代码文件中popup的部分 然后定位到19388行,源文件内容如下 关于popup弹窗OK按钮的设置,将pad属性…

C语言好题解析(三)

目录 选择题一选择题二选择题三选择题四编程题一编程题二 选择题一 以下程序段的输出结果是&#xff08;&#xff09;#include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; }A: 12 B: 13 …

《算法竞赛·快冲300题》每日一题:“糖果配对”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 糖…

使用自己的领域数据扩充baichuan模型词表(其他模型也一样)

文章目录 前言环境项目结构一、使用步骤二、训练词表三、合并词表四、效果前言 总的来说,扩充词表可以加快解码速度,对于对中文支持不太友好的模型(如llama),扩充词表还能提升模型在中文的表现。 环境 jsonlines==3.1.0 sentencepiece==0.1.99 transformers==4.28.1项目…

【Golang系统开发】搜索引擎(3) 压缩倒排索引表

写在前面 假设我们的数据集中有 800000 篇文章&#xff0c;每篇文章有 200 词条&#xff0c;每个词条有6个字符&#xff0c;倒排记录数目是 1 亿。那么如果我们倒排索引表中单单记录文档id&#xff0c;不记录文档内的频率和偏移信息。 那么 文档id 的长度就必须是 l o g 2 8…

04.Show, Attend and Tell

目录 前言泛读摘要IntroductionRelated Work小结 精读编码器&#xff1a;特征卷积解码器&#xff1a;LSTM网络随机硬注意力和确定软注意力机制硬注意力软注意力双重随机注意力 训练实验数据集评估过程定量分析定性分析 结论 代码&#xff08;略&#xff09; 前言 本课程来自深…

前端单点登录SSO面试回答

JWT鉴权机制 1.JWT用于登录身份验证 2.用户登录成功后&#xff0c;后端通过JWT机制生成一个token&#xff0c;返回给客户端 3.客户端后续的每次请求都需要携带token&#xff0c;放在header的authorization中 4.后端从authorization中拿到token后&#xff0c;通过secretKey进…

密码学学习笔记(二十):DSA签名与X.509证书

数字签名 下图是一个制作以及使用数字签名过程的通用模型。 假设Bob发送一条消息给Alice&#xff0c;尽管消息并不重要&#xff0c;也不需要保密&#xff0c;但他想让Alice知道消息确实是他本人发的。出于这个目的&#xff0c;Bob利用一个安全的散列函数&#xff0c;比如SHA-…

elaticsearch(1)

1.简介 Elasticsearch是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。 Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引…