精华内容
下载资源
问答
  • UV数据与风速风向数据转换

    千次阅读 2019-09-30 10:49:21
    package com.qr.util; import java.text.DecimalFormat; ... * //TODO UV数据与风速风向数据转换 */ public class UVAndSD { /** * UV数据计算速度 */ public static double vectorToS...
    package com.qr.util;
    
    import java.text.DecimalFormat;
    
    /**
     * //TODO UV数据与风速风向数据转换
     */
    public class UVAndSD {
        
        /**
         * UV数据计算速度
         */
        public static double vectorToSpeed(double uMs, double vMs) {
            double windAbs = Math.sqrt(Math.pow(uMs, 2) + Math.pow(vMs, 2));
            return windAbs;
        }
    
        /**
         * UV数据计算风向
         */
        public static double vectorToDegrees(double uMs, double vMs) {
            DecimalFormat df = new DecimalFormat("#.000");
            double windAbs = Math.sqrt(Math.pow(uMs, 2) + Math.pow(vMs, 2));
            double windDirTrigTo = Math.atan2(uMs / windAbs, vMs / windAbs);
            double windDirTrigToDegrees = windDirTrigTo * 180 / Math.PI;
            double windDirTrigFromDegrees = windDirTrigToDegrees + 180;
            return Double.parseDouble(df.format(windDirTrigFromDegrees));
        }
    }

     

    转载于:https://www.cnblogs.com/seeyou1993/p/11474109.html

    展开全文
  • import java.text.decimalformat;/*** //todo uv数据与风速风向数据转换*/public class uvandsd {/*** uv数据计算速度*/public static double vectortospeed(double ums, double vms) {double windabs = math.sqr...

    package com.qr.util;

    import java.text.decimalformat;

    /**

    * //todo uv数据与风速风向数据转换

    */

    public class uvandsd {

    /**

    * uv数据计算速度

    */

    public static double vectortospeed(double ums, double vms) {

    double windabs = math.sqrt(math.pow(ums, 2) + math.pow(vms, 2));

    return windabs;

    }

    /**

    * uv数据计算风向

    */

    public static double vectortodegrees(double ums, double vms) {

    decimalformat df = new decimalformat("#.000");

    double windabs = math.sqrt(math.pow(ums, 2) + math.pow(vms, 2));

    double winddirtrigto = math.atan2(ums / windabs, vms / windabs);

    double winddirtrigtodegrees = winddirtrigto * 180 / math.pi;

    double winddirtrigfromdegrees = winddirtrigtodegrees + 180;

    return double.parsedouble(df.format(winddirtrigfromdegrees));

    }

    }

    展开全文
  • 使用Redis统计UV数据-HyperLogLog

    千次阅读 2019-04-18 13:57:36
    每有1个请求,就用sadd将用户ID添加进去,然后通过scard取值,即为UV数据 如果一个页面有几千万的UV,就需要一个很大的set,很浪费空间 如果有十个或更多页面,怎么办?只是为了统计UV,就要用掉这么多空间,不值得 所...

    在这里插入图片描述

    UV(独立访客):即Unique Visitor,访问网站的一台电脑客户端为一个访客,24小时内相同的客户端只被计算一次

    用户量小,可以使用Redis的set集合来进行统计
    每有1个请求,就用sadd将用户ID添加进去,然后通过scard取值,即为UV数据

    如果一个页面有几千万的UV,就需要一个很大的set,很浪费空间
    如果有十个或更多页面,怎么办?只是为了统计UV,就要用掉这么多空间,不值得
    所以要用到Redis的HyperLogLog

    基础命令

    pfadd:新增
    pfcount:获取总数
    在这里插入图片描述

    也可批量新增

    在这里插入图片描述

    pfmerge:数据合并

    比如手机和显卡,都属于电子产品,那么它们的UV数据其实可以合并

    在这里插入图片描述

    缺点

    HyperLogLog的缺点就是统计会有误差

    在这里插入图片描述
    在这里插入图片描述

    1000条少了10条,再执行一遍,依旧少了10条,而且总数依然是990,说明可以去重

    public static void main(String[] args) {
             Jedis jedis = new Jedis();        
             for (int i = 0; i < 1000; i++) {
                 jedis.pfadd("userName", "xcr" + i);
             }
             long total = jedis.pfcount("userName");
             System.out.println("1000 --- " + total);
             jedis.close();
         }
     }
    

    至于更大的数据量,可以自己去测试(服务器太辣鸡,一万条数据都插不进去…)
    误差率不会太大,对于统计UV来说,并不影响

    结语

    只要用了HyperLogLog数据结构,它就要占用12k存储空间,它不适合统计单个用户的相关数据
    至于什么时候用,海量用户,几亿,就用它,相比于set已经节约很多空间了

    Redis对HyperLogLog进行了优化,用了稀疏矩阵存储
    随着计数的变大,超过了阈值会变成稠密矩阵,才会占用12k存储空间


    参考书籍:Redis 深度历险:核心原理与应用实践

    展开全文
  • kibana可视化统计_用户访问统计PV-IP-UV数据 准备 点击可视化->点击添加 新建一个可视化New Visualization->选择Data Table 选择索引如图: 默认有个总数就是PV数: 设置UV数: 设置IP数: ...
    kibana可视化统计_用户访问统计PV-IP-UV数据
    • 准备
      点击可视化->点击添加

      新建一个可视化New Visualization->选择Data Table

      选择索引如图:
    • 默认有个总数就是PV数:
    • 设置UV数:
    • 设置IP数:
    下面讲讲ELK系统的画图
    1、创建查询

    在Discover界面的搜索栏输入要查询的字段。查询语法是基于Lucene的查询语法。允许布尔运算符、通配符和字段筛选。注意关键字要大写,搜索框 suosurl:5yb4Qr and visitip:144.91.124.25 。

    2、字符串查询

    查询可以包含一个或多个字或者短语。短语需要使用双引号引起来。如:

    3、正则表达式查询

    允许一个字段值在某个区间。[] 包含该值,{}不包含。

    4、布尔查询

    布尔运算符(AND,OR,NOT)允许通过逻辑运算符组合多个子查询。
    运算符AND/OR/NOT必须大写。
    NOT type: mysql
    sip:[“172.24.20.110” TO “172.24.20.140”]
    mysql.method: SELECT AND mysql.size: [10000 TO *]
    (mysql.method: INSERT OR mysql.method: UPDATE) AND responsetime: [30 TO *]

    5、画图图形说明

    Area :用区块图来可视化多个不同序列的总体贡献。
    Data :用数据表来显示聚合的原始数据。其他可视化可以通过点击底部的方式显示数据表。
    Line :用折线图来比较不同序列。
    Markdown : 用 Markdown 显示自定义格式的信息或和你仪表盘有关的用法说明。
    Metric :用指标可视化在你仪表盘上显示单个数字。
    Pie :用饼图来显示每个来源对总体的贡献。
    Tile map :用瓦片地图将聚合结果和经纬度联系起来。
    Timeseries :计算和展示多个时间序列数据。
    Vertical bar :用垂直条形图作为一个通用图形。

    • 进入新增页面后需要选在对应的图形
    • 选择数据源
    • 可视化编辑器
      主要操作的节点为以下几个:
    1. 工具栏(Toolbar)
      工具栏里面其实就是一些搜索建议,当然如果你一进选择了搜索建议基础,那么也许你只需要稍作修改即可;
    2. 聚合构建器(Aggregation Builder)
      用页面左侧的聚合构建器配置你的可视化要用的 metric 和 bucket 聚合。桶(Buckets) 的效果类似于 SQL GROUP BY 语句。
      想更详细的了解聚合,阅读Elasticsearch aggregations reference。
    3. 预览画布(Preview Canvas)
    • 下面介绍一下更为细节的一些聚合器字段:

    1. Count count 聚合返回选中索引模式中元素的原始计数。
    2. Unique Count cardinality 聚合返回一个字段的去重数据值。从下拉菜单选择一个字段。

    1、Date Histogram date histogram 基于数值字段创建,由时间组织起来。你可以指定时间片的间隔,单位包括秒,分,小时,天,星期,月,年。
    2、Histogram 标准 histogram 基于数值字段创建。为这个字段指定一个整数间隔。勾选 Show empty buckets 让直方图中包含空的间隔。
    3、Range 通过 range 聚合。你可以为一个数值字段指定一系列区间。点击 Add Range 添加一对区间端点。点击红色 (x) 符号移除一个区间。
    4、Date Range date range 聚合计算你指定的时间区间内的值。你可以使用 date math 表达式指定区间。点击 Add Range 添加新的区间端点。点击红色 (/) 符号移除区间。
    5、IPv4 Range IPv4 range 聚合用来指定 IPv4 地址的区间。点击 Add Range 添加新的区间端点。点击红色 (/) 符号移除区间。
    6、Terms terms 聚合允许你指定展示一个字段的首尾几个元素,排序方式可以是计数或者其他自定义的metric。
    7、Filters 你可以为数据指定一组 filters。你可以用 querystring(全文搜索简易检所语法),也可以用 JSON 格式来指定过滤器,就像在 Discover 页的搜索栏里一样。点击 Add Filter 添加下一个过滤器。
    8、Significant Terms 展示实验性的 significant terms 聚合的结果。
    9、也许你需要对某一个数据进行计算,你可以使用json表达式:{ “script” : “doc[‘grade’].value * 1.2” } grade代表字段,后面后面是算数表达式。

    6、画Markdown信息图

    7、画Metric统计图

    8、画Vertical bar柱状图

    用于排名统计

    9、画Pie饼图

    统计服务器可以查看服务器是否产生日志

    10、画Line折线趋势图

    可以监控业务的走势

    11、画Data Table报表图


    12、说明
    在kibana中,不同的分组可以在同一个表格展示例如

    Metrics 聚合总数使用 count 或者去重集合 unique count
    Buckets 对上面的集合进行分组 自动分 选择terms 类型 字段选择 field 例如 urltype
    选择filters 进行字段值的过滤时候,请使用 sys:“iOS” OR “iPhone” OR “iPad” # or 和 “”号

    在这里插入图片描述

    展开全文
  • 巧用 Redis Hyperloglog,轻松统计 UV 数据本文由 yanglbme 原创,首发于公众号“Doocs开源社区”,欢迎转载。如果你正在开发一个基于“事件”的应用程序,该应用程序可以处理来自不同用户的许多请求,那么你很大...
  • 需要的数据: 192.168.33.16,hunter,2017-09-16 10:30:20,/a 192.168.33.16,jack,2017-09-16 10:30:40,/a 192.168.33.16,jack,2017-09-16 10:30:40,/a 192.168.33.16,jack,2017-09-16 10:30:40,/a 192.168.33.16,...
  • HyperLogLog 是一种概率数据结构,用来估算数据的基数。数据集可以是网站访客的 IP 地址,E-mail 邮箱或者用户 ID。 Redis 的 HyperLogLog 通过牺牲准确率来减少内存空间的消耗,只需要12K内存,在标准误差0.81%的...
  • 但是,如果实时数据的量达到了上百万条,这可能会很昂贵。你可能会想到另一种方法,就是将用户保存在一个 Redis set 集合中,因为 set 天然具备去重的功能。 但是,这种解决方案也带来了它固有的问题。如果一个统计...
  • *) echo "./nginx.sh (pv|uv)" esac 增加执行权限 chmod +x nginx.sh 3.3.3 配置zabbix-agent定义监控项 调用脚本文件 修改配置文件 vim /etc/zabbix/zabbix_agentd.conf 修改以下内容 287 UnsafeUserParameters...
  • 如果你正在开发一个基于“事件”的应用程序,该应用程序可以处理来自不同用户的...但是,如果实时数据的量达到了上百万条,这可能会很昂贵。你可能会想到另一种方法,就是将用户保存在一个 Redis set 集合中,因为 ...
  • 在我们的实际开发中,有时候会用到一些功能,比如签到和一些数据统计,那么这些功能,我们不可能去建立一些表去专业为签到和数据统计去服务,因为签到和数据统计这些都会导致这个表的数据越来越多,导致服务器整体...
  • }/*** 同步Redis中UV数据到MongoDB定时任务*/@Scheduled(fixedRate= 10 * 60 * 1000)public voidredisUvToMongodbTask() { String day= DateUtils.formatToString(new Date(), "yyyy-MM-dd"); String key= SHOP_APP...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,522
精华内容 1,008
关键字:

uv数据