# 日志挖掘 **Repository Path**: xujiaming621/log_mining ## Basic Information - **Project Name**: 日志挖掘 - **Description**: 这是一个java实现日志挖掘的实验,给定一个数据集,挖掘寻找自己需要的信息。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-12-08 - **Last Updated**: 2023-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ##日志挖掘 在一个模拟停车场的日志挖掘出所需要的相关信息。 将数据存放在data集合中,遍历搜索得到与学号相关的信息存放在myData中。 对应一个车牌号的进出时间记录相减得到停车时间,所有车停车时间相加总和即为累计时间。 结果: 数据导入data时间:10.878s 进出车次数:10592 累计停放秒数:694430055 s runtime: 11.207 s ##并行化 在单线程挖掘时已经将需要的数据提取到myData.txt中,在2线程和4线程不用反复提取。 * 数据划分 将日志中日期分段,每段一线程。 难点在:上一段的in和下一段的out处理。 * 处理临界的日志数据,即前半部分子线程的in车辆和后半部分子线程的out车辆的合并; * 在前半部分子线程找到in而找不掉对应out的时候把in数据放到一个新建集合critical中, 在后半部分子线程找完对应in、out后将集合critical逐一与剩下的out匹配 结果: 数据导入data时间:10.415 s 进出车次数:10592 累计停放秒数:694430055 s runtime: 10.668 s 运行速度没有很大变化,因为时间主要来自数据导入。 4线程: 后两个线程时间累计有差错 * 一直出现累计时间有差错,原因在: * 1. 每次上一个线程区域的in只扫了下一个区域的out,应该三个区域都扫遍,防止少数车辆长期停车; * 2. 处理各线程临界的in、out数据,应在所有线程执行完再处理,否则该部分的线程执行时, critical2和critical3都仍为空,导致累计时间差错。 计费统计: 前面的时间格式都为24小时制的小时HH; 停放大于3小时的,费用需要判断: 当时间为整小时: findMonth(str,10+((long)((time-2*60*60)/(60*60)))*2); 当时间不为整小时: findMonth(str,10+((long)((time-2*60*60)/(60*60))+1)*2); 结论: 按月统计收入: 2020-01: 80452元 2020-02: 78146元 2020-03: 82920元 2020-04: 80544元 2020-05: 82944元 2020-06: 54148元