「java做用户活跃统计」活跃用户怎么统计

博主:adminadmin 2022-11-26 14:56:06 54

今天给各位分享java做用户活跃统计的知识,其中也会对活跃用户怎么统计进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

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做用户活跃统计和活跃用户怎么统计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。