【技能实训】DMS数据挖掘项目-Day05

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【技能实训】DMS数据挖掘项目-Day05

任务6

【任务6.1】创建数据分析接口

在com.qst.dms.gather 下创建接口IDataAnalyse.java

功能要求:

  1. 包含的抽象方法如下
    // 进行数据匹配
    Object[] matchData();

程序设计

package com.qst.dms.gather;
public interface IDataAnalyse {
    Object[] matchData();
}

【任务6.2】创建数据过滤抽象类

在com.qst.dms.gather 下创建抽象类DataFilter.java

功能要求:

  1. 成员属性如下
    // 数据集合
  private DataBase[] datas;
  1. 构造方法、get/set方法
  2. 抽象方法
// 数据过滤抽象方法
    public abstract void doFilter();

程序设计

package com.qst.dms.gather;
import com.qst.dms.entity.DataBase;
import com.qst.dms.entity.LogRec;
public abstract class DataFilter {
    // 数据集合
    private DataBase[] datas;
    // 构造方法
    public DataFilter(DataBase[] datas) {
        this.datas = datas;
    }
    // 获取数据集合
    public DataBase[] getDatas() {
        return datas;
    }
    // 设置数据集合
    public void setDatas(DataBase[] datas) {
        this.datas = datas;
    }
    // 数据过滤抽象方法
    public abstract void doFilter();
}

【任务6.3】编写日志数据分析类

在com.qst.dms.gather 下创建LogRecAnalyse.java,继承DataFilter抽象类,实现数据分析IDataAnalyse接口

功能要求:

  1. 成员属性如下
    // “登录”集合
  private LogRec[] logIns;
  // “登出”集合
  private LogRec[] logOuts;
  1. 实现DataFilter抽象类中的过滤抽象方法
        // 获取数据集合
    ……
    // 根据日志登录状态统计不同状态的日志个数
    int numIn = 0;
    int numOut = 0;
    // 遍历统计
    ……
    // 创建登录、登出数组
    logIns = new LogRec[numIn];
    logOuts = new LogRec[numOut];
    // 数组下标记录
    int indexIn = 0;
    int indexOut = 0;
    // 遍历,对日志数据进行过滤,根据日志登录状态分别放在不同的数组中
    for (LogRec rec : logs) {
      ……
    }
  1. 实现IDataAnalyse接口中数据分析方法
        // 创建日志匹配数组
    MatchedLogRec[] matchLogs = new MatchedLogRec[logIns.length];
    // 日志匹配数组下标记录
    int index = 0;
    // 数据匹配分析
    for (LogRec in : logIns) {
      for (LogRec out : logOuts) {
        if ((in.getUser().equals(out.getUser()))
            && (in.getIp().equals(out.getIp()))
            && out.getType()!=DataBase.MATHCH) {
          //修改in和out日志状态类型为“匹配”
          in.setType(DataBase.MATHCH);
          out.setType(DataBase.MATHCH);
          //添加到匹配数组中
          matchLogs[index++] = new MatchedLogRec(in, out);
        }
      }
    }
    return matchLogs;

程序设计

package com.qst.dms.gather;
import com.qst.dms.entity.DataBase;
import com.qst.dms.entity.LogRec;
import com.qst.dms.entity.MatchedLogRec;
public class LogRecAnalyse extends DataFilter implements IDataAnalyse {
    // “登录”集合
    private LogRec[] logIns;
    // “登出”集合
    private LogRec[] logOuts;
    public LogRecAnalyse(LogRec[] datas) {
        super(datas);
    }
    // 实现DataFilter抽象类中的过滤抽象方法
    @Override
    public void doFilter() {
        // 获取数据集合
        LogRec[] datas = (LogRec[]) getDatas();
        // 根据日志登录状态统计不同状态的日志个数
        int numIn = 0;
        int numOut = 0;
        // 遍历统计
        for (LogRec data : datas) {
            if (data.getLogType() == LogRec.LOG_IN) {
                numIn++;
            } else if (data.getLogType() == LogRec.LOG_OUT) {
                numOut++;
            }
        }
        // 创建登录、登出数组
        logIns = new LogRec[numIn];
        logOuts = new LogRec[numOut];
        // 数组下标记录
        int indexIn = 0;
        int indexOut = 0;
        // 遍历,对日志数据进行过滤,根据日志登录状态分别放在不同的数组中
        for (LogRec data : datas) {
            if (data.getLogType() == LogRec.LOG_IN) {
                logIns[indexIn++] = data;
            } else if (data.getLogType() == LogRec.LOG_OUT) {
                logOuts[indexOut++] = data;
            }
        }
    }
    // 实现IDataAnalyse接口中数据分析方法
    @Override
    public Object[] matchData() {
        // 创建日志匹配数组
        MatchedLogRec[] matchLogs = new MatchedLogRec[logIns.length];
        // 日志匹配数组下标记录
        int index = 0;
        // 数据匹配分析
        for (LogRec in : logIns) {
            for (LogRec out : logOuts) {
                if ((in.getUser().equals(out.getUser()))
                        && (in.getIp().equals(out.getIp()))
                        && out.getType() != DataBase.MATHCH) {
                    // 修改in和out日志状态类型为“匹配”
                    in.setType(DataBase.MATHCH);
                    out.setType(DataBase.MATHCH);
                    // 添加到匹配数组中
                    matchLogs[index++] = new MatchedLogRec(in, out);
                }
            }
        }
        return matchLogs;
    }
}

【任务6.4】创建日志数据分析测试类,测试任务6.1-6.3中的程序,演示日志信息的采集、分析及打印输出

在com.qst.dms.dos 下创建EntityDataDemo.java

功能要求:

采集3组日志信息,放到数组中,进行日志分析、过滤,对于匹配的日志信息打印输出

        // 创建一个日志业务类
    // 创建一个日志对象数组,用于存放采集的三个日志信息
    // 创建日志数据分析对象
    ;
    // 日志数据过滤
    ;
    // 日志数据匹配分析
    ;
    // 判断objs数组是否是配置日志数组
    if (objs instanceof MatchedLogRec[]) {
      // 将对象数组强制类型转换成配置日志数组
      ;
      // 输出匹配的日志信息
      ;
    }

程序设计

package com.qst.dms.dos;
import com.qst.dms.entity.LogRec;
import com.qst.dms.entity.MatchedLogRec;
import com.qst.dms.gather.LogRecAnalyse;
import com.qst.dms.service.LogRecService;
public class EntityDataDemos {
    public static void main(String[] args) {
        // 创建一个日志业务类
        LogRecService logService = new LogRecService();
        // 创建一个日志对象数组,用于存放采集的三个日志信息
        LogRec[] logs = new LogRec[3];
        // 采集日志信息,将采集到的日志对象存放到logs数组中
        logs[0] = logService.inputLog();
        logs[1] = logService.inputLog();
        logs[2] = logService.inputLog();
        // 创建日志数据分析对象
        LogRecAnalyse logAnalyse = new LogRecAnalyse(logs);
        // 日志数据过滤
        logAnalyse.doFilter();
        // 日志数据匹配分析
        Object[] objs = logAnalyse.matchData();
        // 判断objs数组是否是配置日志数组
        if (objs instanceof MatchedLogRec[]) {
            // 将对象数组强制类型转换成配置日志数组
            MatchedLogRec[] matchedLogs = (MatchedLogRec[]) objs;
            // 输出匹配的日志信息
            for (MatchedLogRec log : matchedLogs) {
                if(log!=null) {
                    System.out.println(log);
                }
            }
        }
    }
}

测试

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
监控 数据挖掘 数据库
【技能实训】DMS数据挖掘项目(完整程序) 1
【技能实训】DMS数据挖掘项目(完整程序)
129 0
|
数据挖掘 数据库 数据库管理
【技能实训】DMS数据挖掘项目-Day14
【技能实训】DMS数据挖掘项目-Day14
71 1
|
存储 数据挖掘 测试技术
【技能实训】DMS数据挖掘项目(完整程序)2
【技能实训】DMS数据挖掘项目(完整程序)
85 0
|
6月前
|
前端开发 Java 数据管理
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
javaWeb基于SSM框架开发的社区医疗数据管理系统【项目源码+数据库脚本+报告】
111 0
|
6月前
|
数据管理 程序员 人工智能
后台数据管理系统 - 项目架构设计【黑马程序员】
后台数据管理系统 - 项目架构设计【黑马程序员】
261 0
后台数据管理系统 - 项目架构设计【黑马程序员】
|
存储 数据挖掘 Java
【技能实训】DMS数据挖掘项目-Day15
【技能实训】DMS数据挖掘项目-Day15
76 0
|
3月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
108 1
|
4月前
|
SQL NoSQL 数据管理
数据管理DMS使用问题之如何批量导入MongoDB的数据文件
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
22天前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
1月前
|
存储 人工智能 安全
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证
瓴羊Dataphin连续俩年获得DAMA年度优秀数据治理产品奖,本次与DAMA联合发布“DAMA x 瓴羊 数据管理技能认证”,助力提升全民数据素养。
148 0
【荣誉奖项】荣获2024数据治理优秀产品!瓴羊Dataphin联合DAMA发布数据管理技能认证

热门文章

最新文章

下一篇
无影云桌面