「java做用户活跃统计」活跃用户怎么统计
今天给各位分享java做用户活跃统计的知识,其中也会对活跃用户怎么统计进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Redis Bitmap实现每日活跃用户统计
- 2、java 怎样统计系统当前在线人数
- 3、如何实现java 用户在线实时统计
- 4、java web 如何实现 用户在线一小时,就给1点活跃度呢。 求思路。。
Redis Bitmap实现每日活跃用户统计
Bitmap (又名Bitset)
Bitmap或bitset是一个零和一的数组。可以将位集中的位设置为0或者1,并且将阵列中的每个位置称为偏移。诸如逻辑AND,OR,XOR等操作以及其他按位操作对于位图来说是准确的。
人口数量
Bitmap的填充计数是设置索引的位数1。有计算人口数的有效算法。例如,在Windows开发环境上,包含10亿位的90%填充位组的人口数量为21.1 ms。
Redis中的位图
Redis允许二进制密钥和二进制值。位图只不过是二进制值。 setbit(key, offset, value)操作,需要O(1)时间,一个位的值设置为0或1以指定对于给定的键偏移。
一个简单的例子:每日活跃用户
为了统计今天登录的唯一用户,我们设置了一个位图,其中每个用户都由一个偏移值标识。当用户访问页面或执行保证计数的操作时,将该位设置为1表示用户ID的偏移量。位图的关键是执行的操作用户的名称和时间戳的函数。
假如今天是2019年7月1号,我们设置Redis的位图key为 daily_active_20190701,在这个简单的例子中,每次用户登录时我们都会执行redis.setbit(daily_active_20190701, user_id, 1)。这会将daily_active_20190701位图中的相应偏移量翻转为1.这是一个O(1)操作。对此进行人口统计会导致今天登录的9个唯一身份用户。关键是daily_active_20190701,值是1011110100100101。
当然,由于每日活跃用户每天都会改变,我们需要一种方法来每天创建一个新的位图。我们只需将日期附加到位图键即可。
每天的活跃用户是存储为daily_active_yyyymmdd为key的bitmap中。要 计算每周或每月指标,我们可以简单地计算一周或一个月内所有每天位图的并集,然后计算结果位图的总体数,这将非常轻松地提取更复杂的指标。
使用1.28亿用户进行性能比较
下表显示了针对1.28亿用户在1天,7天和30天内计算的每日独特操作计算的比较。通过组合每日位图计算7和30指标。
示例代码
下面的Java代码片段为给定的用户操作和日期计算唯一用户。
下面的代码片段计算给定给定用户操作的唯一用户和日期列表
java 怎样统计系统当前在线人数
用户表里面加一个字段status
当用户上线以后,就把status设置为1
统计在线人数就是一条sql语句:
select count(*) from 用户表 where status = 1
如何实现java 用户在线实时统计
您好,这样:
通过SessionListenr可以监听session的创建和销毁,所以首先要写一个类MySessionListener,实现javax.servlet.http.HttpSessionListener接口及其sessionCreated()、sessionDestroyed()方法:
import java.util.HashSet;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MySessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
// 在application范围由一个HashSet集保存所有的session
HashSet sessions = (HashSet) application.getAttribute("sessions");
if (sessions == null) {
sessions = new HashSet();
application.setAttribute("sessions", sessions);
}
// 新创建的session均添加到HashSet集中
sessions.add(session);
// 可以在别处从application范围中取出sessions集合
// 然后使用sessions.size()获取当前活动的session数,即为“在线人数”
}
public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
ServletContext application = session.getServletContext();
HashSet sessions = (HashSet) application.getAttribute("sessions");
// 销毁的session均从HashSet集中移除
sessions.remove(session);
}
}
然后再在web.xml中分别配置SessionListener和session超时时间(10分钟):
listener
listener-class全路径MySessionListener/listener-class
/listener
session-config
session-timeout10/session-timeout
/session-config
最后在Jsp页面代码使用以下代码就可以实现当前在线人数统计输出:
java web 如何实现 用户在线一小时,就给1点活跃度呢。 求思路。。
1、在session中记录用户登陆时间,
2、每当用户下线的时候就检测用户在线时间。按照相应的规则加相应数量的活跃度。
或者
以登陆时间为基础,每隔一小时见检测用户的状态,+活跃度
关于java做用户活跃统计和活跃用户怎么统计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-26,除非注明,否则均为
原创文章,转载请注明出处。