最近项目中需要统计APP的最近几次的在线离线情况,因为有些商家的网络信号很差,需要根据最近的心跳在线离线情况做一些事情,例如统计商户APP最近10次的在线离线记录,如果最近10次有8次离线那就认识商家是网络比较差的商家,那么就去对这部分商家去做一些其他事情,那么怎么统计好呢?因为统计与计算是要同时记录的。 传统的方式是新建一个在线离线状态记录表,然后从表里面就可以获取最近几次在线离线记录,这个方法比较简单,但是表以后的数据量会越来越大,查询也越来越慢,无用的数据也越来越多。 那么先理清楚需求,只记录最近N次的情况,历史情况无需记录,记录的时候得实时统计最近N次的情况得出一些结论,记录的qps很高。 如果能对每个商户app的最近在线离线情况以一个整数记录就好了,一个app对应一个整数,这个整数实质上是最近在线离线的记录 5这个数值,表面看上去就是一个数字5,但是在计算机的世界里,它其实是0000 0000 0000 0111,那么这32位二进制刚好可以充当最近32次的在线离线情况,1代表在线,0代表离线。由于需求是记录最近10次,但便于扩展,取二进制低20次用作记录在线离线情况 代码如下: 例如一个整数25,可以看成是 0000 0000 0000 0000 0000 0000 0001 1001 表示最近20次3次在线,17次离线
//初始化的二进制值 0 private static final long START_DATA = ~-1; //二进制的记录的位数 private static final long SIGN_POSITION = ~(-1 << 20); public void sign(boolean online){ Long record = getLastNum(); if(online){ //在线情况对二进制整体左移一位,然后最低位补1,高12位归零 record = ((data << 1) + 1) & SIGN_POSITION; }else{ //离线情况对二进制整体左移一位,然后高12位归零 record = ((data << 1) & SIGN_POSITION; } setLastNum(record) }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算