- 浏览: 312699 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (118)
- oracle (16)
- java (13)
- jquery (16)
- hibernate (2)
- spring (14)
- struts (2)
- eclipse (1)
- birt (5)
- integrated skill (13)
- linux (9)
- css+html (5)
- redis (1)
- jqgrid (4)
- mybatis (2)
- multithreading (3)
- jvm (1)
- mvn (3)
- php (2)
- jms (2)
- photoshop (1)
- springmvc (3)
- cluster (1)
- cache (1)
- jquery-ui (2)
- 英语词根 (0)
- svn (0)
- ide (1)
- mysql (3)
- rich-text (1)
- golang (8)
- mac 10 (1)
- android (1)
- react (0)
- bootstrap (2)
- css (2)
- 1 (0)
- beego (1)
- pictures (1)
- java小生转战 (0)
- 转站通知 (0)
- 转站通知,,,啊啊啊 (1)
- threeperson (1)
- unity (1)
最新评论
-
zld406504302:
aaaddddddd
java小生转站threeperson博客 -
zld406504302:
aaaaaddd
java小生转站threeperson博客 -
zld406504302:
aaaaaaaaaaaa
java小生转站threeperson博客 -
乌发舞天:
UEditor 实例 -
van_2013:
请问这是订阅模式的配置吗?
SPRING JMS 整合ACTIVEMQ
昨天大家在k群聊天,群主谈到清理长期潜水、不冒泡的成员,于是琢磨了一个成员聊天记录统计的小程序。
从kk聊天主面板下面的喇叭 ,打开“消息管理器”页面,选中要导出的群,导出时指定聊天信息保存文件的格式为txt;在聊天窗口左上角第一个图标,点击下拉后点击‘查看通讯录’。将成员全选后,复制到一个txt文档中。
以下是程序代码,仅是简单地实现了统计的功能,未考虑性能问题。
如果一个号码包含了另一个号码,肯定有问题的
逻辑中去掉了号码的“()” 将“()”携带着去match ,应该就没问题了。
没有考虑太周全,谢谢提示。
如果一个号码包含了另一个号码,肯定有问题的
从kk聊天主面板下面的喇叭 ,打开“消息管理器”页面,选中要导出的群,导出时指定聊天信息保存文件的格式为txt;在聊天窗口左上角第一个图标,点击下拉后点击‘查看通讯录’。将成员全选后,复制到一个txt文档中。
以下是程序代码,仅是简单地实现了统计的功能,未考虑性能问题。
package cn.com.ld.study.io; /** * @filename: QGroupUser * @description: 群主成员 * @author lida * @date 2013-4-9 下午2:13:55 */ public class QGroupUser implements Comparable<QGroupUser> { private long id; private String name; private int activeNo; private boolean isAdmin; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getActiveNo() { return activeNo; } public void setActiveNo(int activeNo) { this.activeNo = activeNo; } public boolean isAdmin() { return isAdmin; } public void setAdmin(boolean isAdmin) { this.isAdmin = isAdmin; } @Override public int compareTo(QGroupUser o) { int result = this.activeNo - o.activeNo ; return result < 0 ? 1 : result == 0 ? 0 : -1; } @Override public String toString(){ return String.format("昵称:%s qq号:%s 聊天次数:%s 管理员:%s", this.name,this.id,this.activeNo,(this.isAdmin?"是":"否")); } } package cn.com.ld.study.io; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class QGroupMemberFilter { // @Fields userFilePath : 群主成员 private static final String userFilePath = "d:/users.txt"; // @Fields chatMessagePath : 群聊天记录 private static final String chatMessagePath = "d:/北京Java开发.txt"; private static final String NORMAL_ADMIN = "管理员"; private static final String SUPER_ADMIN = "群主"; /** * @Title: getQGroupUserFromFile * @Description: 读取群主成员列表 * @return List<QGroupUser> * @throws IOException * 读取群主成员文件时发生io异常或error */ private static List<QGroupUser> getQGroupUserFromFile() throws IOException { List<QGroupUser> qGroupUserList = new ArrayList<QGroupUser>(); try { BufferedReader reader = new BufferedReader(new FileReader(new File( userFilePath))); String content = ""; QGroupUser groupUser = null; String userName = null; String userid = null; int i = 1; boolean isAdmin = false; while ((content = reader.readLine()) != null) { if (content.length() == 0) { i = 1; groupUser = new QGroupUser(); groupUser.setId(Long.parseLong(userid)); groupUser.setName(userName); groupUser.setAdmin(isAdmin); qGroupUserList.add(groupUser); isAdmin = false; continue; } if (i == 1) { userName = content; } else if (i == 2) { userid = content.substring(1, content.length() - 1); } else { // System.out.println(content.equals(ADMIN)); isAdmin = content.equals(NORMAL_ADMIN) || content.equals(SUPER_ADMIN) ? true : false; } i++; } reader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } return qGroupUserList; } /** * @Title: getUserActiveNo * @Description: 获得指定kk号的发言次数 * @param userid * 用户kk号 * @param chatMsg * 读取的消息内容 * @return int 聊天次数 */ private static int getUserActiveNo(long userid, String chatMsg) { Pattern pattern = Pattern.compile(String.valueOf(userid)); Matcher matcher = pattern.matcher(chatMsg); int count = 0; while (matcher.find()) { count++; } return count; } /** * @Title: staUserActive * @Description: 给群内成员设置聊天次数 * @param 群内成员 * @return void */ private static void staUserActive(List<QGroupUser> groupUsers) throws IOException { int bufSize = 1024; byte[] bs = new byte[bufSize]; ByteBuffer byteBuf = ByteBuffer.allocate(1024); FileChannel channel = new RandomAccessFile(chatMessagePath, "r") .getChannel(); while (channel.read(byteBuf) != -1) { int size = byteBuf.position(); byteBuf.rewind(); byteBuf.get(bs); String chatMsg = new String(bs, 0, size); for (QGroupUser user : groupUsers) { long userCount = user.getId(); int count = getUserActiveNo(userCount, chatMsg); user.setActiveNo(user.getActiveNo() + count); } byteBuf.clear(); } } public static void main(String[] args) throws IOException, InterruptedException { // 获得群成员 List<QGroupUser> groupUsers = getQGroupUserFromFile(); // 设置成员聊天次数 staUserActive(groupUsers); // 按聊天次数降序排序 Collections.sort(groupUsers); for (QGroupUser user : groupUsers) { System.out.println(user.toString()); } } }
评论
4 楼
zld406504302
2013-04-10
zld406504302 写道
fw_lucifer 写道
比如一位的kk号是10000,另一位的是100001,会有问题吗?
如果一个号码包含了另一个号码,肯定有问题的
逻辑中去掉了号码的“()” 将“()”携带着去match ,应该就没问题了。
没有考虑太周全,谢谢提示。
3 楼
zld406504302
2013-04-10
fw_lucifer 写道
比如一位的kk号是10000,另一位的是100001,会有问题吗?
如果一个号码包含了另一个号码,肯定有问题的
2 楼
fw_lucifer
2013-04-10
比如一位的kk号是10000,另一位的是100001,会有问题吗?
1 楼
_gougang
2013-04-10
不错,不错,学习了
发表评论
-
openssl mac 证书签名
2016-06-01 01:14 596<script type="text/java ... -
windows 动态修改ip
2013-03-05 09:05 1752办公网络和家里的网络不一样 总是要换来换去,弄了一个脚本,双击 ... -
jdk5 性能调优 转
2012-07-17 14:44 857作者:江南白衣,最新版链接:http://blog.csd ... -
P6SPY +SQL Profiler 监控JAVAEE SQL
2012-03-27 15:28 1256P6SPY +SQL Profiler 监控JAVAEE S ... -
Jprofilter Tomcat 集成安装
2012-03-27 01:20 1122集成环境:xp Jprofilter5.1.4 tomca ... -
使用Jstat监控gc情况(收藏)
2012-03-22 15:28 816使用Jstat监控gc情况(收藏) 性能测试过程中,我 ... -
jvm 调测
2012-03-21 18:44 925jstack -- 如果java程序崩 ... -
json对象创建与解析
2012-03-02 17:16 1364今日闲来无事,将项目中一些代码贴出来——备忘 ... -
birt饼图特效
2011-12-09 16:30 2544统计的新需求下来了,用户对于统计的功能,数据 ... -
ssh+birt
2011-12-02 12:00 3313新公司工作一年多,接触最多的就是统计,当然用于统计数据展示的b ... -
弹出层上触发刷新父窗口事件
2011-10-19 15:15 11311 弹出层通过a标签触发父窗口的刷新 function ... -
ie6遮罩层无法遮罩select ,
2011-10-19 14:36 1824<!--该层是弹出层的最外层的div--> ... -
eclipse web开发修改class 无序重启
2011-06-30 17:10 2531)下载jrebel。jar 2 ...
相关推荐
二是情感分析,通过NLP(自然语言处理)技术,对消息内容进行正面、负面或中性情感分类,了解群成员的情绪状态。三是用户活跃度分析,根据消息发送时间分布,识别群内的活跃时段和活跃用户。四是网络分析,构建用户...
weixin-stat微信模拟登陆器,实现好友信息统计分析,聊天记录统计分析,群成员统计分析,发送消息功能介绍获取好友信息:统计男女比例,地图分布,备注名称,和好友共同的群,导出获取群信息:统计群信息,群友信息...
- 工具通过读取QQ群的聊天记录,对群成员的发言进行统计,提供数据支持。 - 数据包括但不限于发言次数、平均发言频率、发言时间分布等,为管理者提供全面的用户行为洞察。 2. **发言排行功能**: - 软件能够生成...
总之,通过观察群成员的最后发言时间、群等级、群空间统计和活动参与情况,可以全面地了解QQ群成员的活跃度,从而更好地管理和优化你的QQ群。对于群管理员来说,定期检查这些指标有助于保持群内的活跃氛围,促进群...
3. **统计群活跃度**:通过对聊天记录的分析,可以计算出每个成员的发言频率,找出群中最活跃的成员。这有助于了解群内的核心人物和交流热点。 4. **话题范围挖掘**:话题挖掘是通过聚类或主题建模技术来识别群内...
QQ本身提供了聊天记录导出功能,用户可以在群设置中找到这一选项,导出的文件通常包含所有群成员的发言记录。 2. 数据解析:工具读取导入的TXT文件,解析其中的聊天记录数据。这一步可能涉及到字符串处理、正则...
QQ群活跃度统计软件是一款专为监测和分析QQ群成员活动情况而设计的应用。这款软件的核心功能是收集和整理群内的发言数据,帮助群管理员了解群成员的参与度,从而优化管理策略,提升群的活跃度。以下是软件的几个关键...
*使用数据库存储用户信息、好友关系、群成员、所有聊天记录 *群聊中显示群成员(双击打开聊天窗口/发送好友请求);实时显示群成员在线状态,置顶在线的成员 *联系人列表中的显示最近消息(同QQ,群聊则显示发送...
例如,计算群成员的发言频率,找出最活跃的用户;分析聊天时间分布,了解群活跃时段;还可以根据聊天内容进行词频分析,挖掘热点话题。Numpy和Scipy库提供了数学和统计函数,而Matplotlib和Seaborn用于数据可视化,...
2. **活跃度分析**:分析聊天的活跃时间段,以了解群成员的活动规律。 3. **用户参与度分析**:计算每个成员的发言次数,找出最活跃和最沉默的成员。 4. **情感分析**:利用自然语言处理(NLP)技术,评估聊天中的...
具体操作包括按天统计发言总数,通过图表展示群心情走势图,进行聊天情感归类并分析,以及进行词频分析,展示话题排行等。 作者在文中提到的可视化展示部分,使用了Bar(条形图)、Line(线图)、WordCloud(词云图...
源码中会包含消息发送、接收、存储和展示的逻辑,以及聊天记录的管理。 4. **支付系统**:与微信支付接口对接,处理支付请求,确保交易安全。这里涉及到的源码会处理订单状态、退款、通知等业务逻辑。 5. **权限...
6. 设置群成员查看历史消息权限:这个功能允许管理员控制群成员能否查看群的历史聊天记录。这有助于保护群内敏感信息,同时也能根据需要调整群的开放程度,增强群的私密性。 综上所述,优优-QQ群化软件4.8致力于...
2. **发言人数**:统计一定时间段内有多少群成员参与了聊天,可以帮助识别群的活跃度和参与度。 3. **发言条数**:记录了总的发言次数,可衡量群内的信息流量。 4. **活跃用户列表**:列出群内最活跃的成员,这些...
3. **群消息**:群聊功能涉及到多个用户之间的信息同步,服务端需要管理群组成员关系,跟踪并广播群消息到所有成员。此外,群设置(如禁言、踢人)的处理也需在服务端实现。 4. **消息漫游**:消息漫游是指用户在...
4. 数据统计:记录群聊中的关键数据,如活跃成员、发言频率等,为群管理提供参考。 5. 教育辅助:在教育场景下,机器人可以作为辅导工具,帮助解答学生的问题,推送学习资料。 在实际应用中,开发者还可以根据需求...
3. **群活动与任务**:可能支持创建群任务和活动,促进群成员间的互动,比如定时的在线问答、话题讨论等。 4. **群成员管理**:可以提供批量踢人、拉黑、禁言等操作,方便处理违规行为,同时也有助于维护群内的秩序...
3. 群聊:QQ群是一个多人在线聊天的平台,适用于工作团队、学习小组等场景,方便成员共享信息、讨论问题。 4. 文件传输:用户可以通过QQ快速发送文件,无论是文本、图片还是大型的文档,都可以轻松传输,极大提高了...
3. **统计与报告**:该插件可能提供了签到记录的统计功能,可以查看每个群成员的签到情况,帮助管理员了解成员的活跃度。 4. **自动化处理**:酷Q机器人会自动响应并处理签到请求,无需人工干预,大大减轻了管理员...
6. **签到系统**:签到功能鼓励群成员的日常参与,通过记录成员的签到情况,可以激励活跃度,并且可以作为统计和奖励依据。管理员可以通过签到数据了解群的活跃程度,同时设置奖励机制来激发成员的积极性。 智能QQ...