勘探院读取监控数据代码设计
此为重新设计框架代码,以前代码架构设计溜掉监控数据,并且出现重复的监控数据。
数据类
package com.yjm.conllectiondata;
public class Conllectiondata {
public String node;
public String id;
public String name;
public String value;
public String getNode() {
return node;
}
public void setNode(String node) {
this.node = node;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
配置信息类
package com.yjm.prop;
import java.io.IOException;
import java.util.Properties;
public class Prope {
public Properties pro;
public Prope() {
pro = new Properties();
try {
pro.load(Prope.class.getResourceAsStream("pro.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
public Properties getPro() {
return pro;
}
public void setPro(Properties pro) {
this.pro = pro;
}
public String getfSockIp() {
return pro.getProperty("fsockip");
}
public String getySockIp() {
return pro.getProperty("ysockip");
}
public String getSockPort() {
return pro.getProperty("sockport");
}
public String getInsertSql() {
return pro.getProperty("insertsql");
}
public String getUpdateSql() {
return pro.getProperty("updatesql");
}
public String getUpdateId() {
return pro.getProperty("updateid");
}
public String getDatabaseUrl() {
return pro.getProperty("url");
}
public String getDatabaseUserName() {
return pro.getProperty("username");
}
public String getDatabasePassword() {
return pro.getProperty("password");
}
/**/
// public static void main(String[] args) {
// Prope p = new Prope();
// System.out.println(p.getSockIp());
// System.out.println(p.getSockPort());
// System.out.println(p.getDatabaseUserName());
// System.out.println(p.getDatabasePassword());
// System.out.println(p.getDatabaseUrl());
// System.out.println(p.getInsertSql());
// System.out.println(p.getUpdateSql());
// System.out.println(p.getUpdateId());
// }
}
监控系统采集信息与入库类
package com.yjm.datatreat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import java.util.HashMap;
import org.apache.log4j.Logger;
import com.yjm.conllectiondata.Conllectiondata;
import com.yjm.prop.Prope;
public class DataCon {
public DataCon() {
prope = new Prope();
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(prope.getDatabaseUrl(), prope
.getDatabaseUserName(), prope.getDatabasePassword());
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Logger logger = Logger.getLogger(DataCon.class);
public HashMap<String, Conllectiondata> mHashMap;
public Connection conn;
public PreparedStatement preInsertSql;
public PreparedStatement preUpdateSql;
public PreparedStatement preUpdateId;
public Socket fsocket;
public Socket ysocket;
public Prope prope;
public BufferedReader buff;
// /数据采集
public HashMap<String, Conllectiondata> connSockData() {
Conllectiondata conllectiondata;
String line;
String[] all;
String[] node;
String[] name;
String[] id;
String[] value;
Long startTime = System.currentTimeMillis();
Long overTime;
mHashMap = new HashMap<String, Conllectiondata>();
int j = 0;
int num = 1;
int i = 1;
logger.info("开始采集数据...");
logger.info("------------------------------------");
logger.info("startTime: " + new Date(startTime));
try {
fsocket = new Socket(prope.getfSockIp(), Integer.parseInt(prope
.getSockPort()));
buff = new BufferedReader(new InputStreamReader(fsocket
.getInputStream()));
while ((line = buff.readLine()) != "") {
logger.info("未过滤监控数据:" + line);
if (line.startsWith("A")) {
all = line.split("##");
name = all[2].split("=");
if (name[1].endsWith("电量仪") || name[1].endsWith("空调")
|| name[1].endsWith("列头柜")
|| name[1].startsWith("UPS")) {
logger.info("====从监控采集数: " + i);
logger.info("采集的信息:" + line);
conllectiondata = new Conllectiondata();
node = all[1].split("=");
id = all[3].split("=");
value = all[4].split("=");
conllectiondata.setId(id[1]);
conllectiondata.setName(name[1]);
conllectiondata.setValue(value[1]);
conllectiondata.setNode(node[1]);
mHashMap.put(name[1] + id[1], conllectiondata);
i++;
overTime = System.currentTimeMillis();
logger.info("容量 size: " + mHashMap.size());
if (j == mHashMap.size()) {
logger.info("采集数据容量未改变次数: " + num);
num++;
}
if (j != mHashMap.size()) {
if (num != 1) {
logger.info("初始化容量为改变数为:1");
}
num = 1;
}
if (mHashMap.size() > 26000
|| ((overTime - startTime) > 600000)
|| (j == mHashMap.size() && num == 500)) {
logger.info("执行采集时间已满,数据采集完毕...");
logger.info("overTime: " + new Date(overTime));
logger.info("采集所用时间:--------------------"
+ ((overTime - startTime) / 1000) + "秒");
logger.info("采集数据量为:" + mHashMap.size() + " 数据");
logger.info(j);
break;
}
j = mHashMap.size();
}
}
}
if (fsocket != null) {
fsocket.close();
}
if (buff != null) {
buff.close();
}
i=1;
num = 1;
j = 0;
ysocket = new Socket(prope.getySockIp(), Integer.parseInt(prope
.getSockPort()));
buff = new BufferedReader(new InputStreamReader(ysocket
.getInputStream()));
startTime = System.currentTimeMillis();
while ((line = buff.readLine()) != "") {
logger.info("未过滤研究院的监控数据:" + line);
if (line.startsWith("A")) {
all = line.split("##");
name = all[2].split("=");
if (name[1].endsWith("电量仪") || name[1].endsWith("空调")
|| name[1].endsWith("列头柜")
|| name[1].startsWith("UPS")) {
logger.info("研究院====从监控采集数: " + i);
logger.info("研究院采集的信息:" + line);
conllectiondata = new Conllectiondata();
node = all[1].split("=");
id = all[3].split("=");
value = all[4].split("=");
conllectiondata.setId(id[1]);
conllectiondata.setName(name[1]);
conllectiondata.setValue(value[1]);
conllectiondata.setNode(node[1]);
mHashMap.put(name[1] + id[1], conllectiondata);
i++;
overTime = System.currentTimeMillis();
logger.info("容量 size: " + mHashMap.size());
if (j == mHashMap.size()) {
logger.info("研究院采集数据容量未改变次数: " + num);
num++;
}
if (j != mHashMap.size()) {
if (num != 1) {
logger.info("研究院初始化容量为改变数为:1");
}
num = 1;
}
if (mHashMap.size() > 30000
|| ((overTime - startTime) > 600000)
|| (j == mHashMap.size() && num == 100)) {
logger.info("执行采集时间已满,研究院数据采集完毕...");
logger.info("overTime: " + new Date(overTime));
logger.info("采集所用时间:--------------------"
+ ((overTime - startTime) / 1000) + "秒");
logger.info("采集数据量为:" + mHashMap.size() + " 数据");
// logger.info(j);
break;
}
j = mHashMap.size();
}
}
}
if (fsocket != null) {
fsocket.close();
}
if (buff != null) {
buff.close();
}
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return mHashMap;
}
// 执行更新数据
public PreparedStatement updateDataSql() {
try {
preUpdateSql = conn.prepareStatement(prope.getUpdateSql());
// logger.info(prope.getUpdateSql());
} catch (SQLException e) {
e.printStackTrace();
}
return preUpdateSql;
}
// 执行插入数据
public PreparedStatement insertDataSql() {
try {
preInsertSql = conn.prepareStatement(prope.getInsertSql());
// logger.info(prope.getInsertSql());
} catch (SQLException e) {
e.printStackTrace();
}
return preInsertSql;
}
// 执行更新ID
public PreparedStatement updateDataId() {
try {
preUpdateId = conn.prepareStatement(prope.getUpdateId());
// logger.info(prope.getUpdateId());
} catch (SQLException e) {
e.printStackTrace();
}
return preUpdateId;
}
public void closeStatus() {
if (ysocket != null) {
try {
ysocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (preInsertSql != null) {
try {
preInsertSql.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (preUpdateSql != null) {
try {
preUpdateSql.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (preUpdateId != null) {
try {
preUpdateId.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//数据处理类
package com.yjm.datatreat;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Set;
import java.util.Map.Entry;
import org.apache.log4j.Logger;
import com.yjm.conllectiondata.Conllectiondata;
public class DataTreat {
public DataCon dc;
public PreparedStatement updatasql;
public PreparedStatement updataId;
public PreparedStatement insertsql;
public HashMap<String, Conllectiondata> mHashMap;
public Conllectiondata conllectiondata;
public static Logger logger = Logger.getLogger(DataTreat.class);
public DataTreat() {
dc = new DataCon();
updatasql = dc.updateDataSql();
updataId = dc.updateDataId();
insertsql = dc.updateDataSql();
mHashMap = dc.connSockData();
}
public DataCon getDc() {
return dc;
}
public void setDc(DataCon dc) {
this.dc = dc;
}
public void updateData() {
Set<Entry<String, Conllectiondata>> set = mHashMap.entrySet();
int i=1;
int j=1;
for (Entry<String, Conllectiondata> entry : set) {
conllectiondata = entry.getValue();
logger.info("数据追踪: " + conllectiondata.getNode() + "; "
+ conllectiondata.getId() + "; "
+ conllectiondata.getName() + "; "
+ conllectiondata.getValue());
// update
try {
updatasql.setString(1, conllectiondata.getNode());
updatasql.setString(2, conllectiondata.getId());
updatasql.setString(3, conllectiondata.getName());
updatasql.setString(4, conllectiondata.getValue());
updatasql.setString(5, "1");
// C3
updatasql.setInt(6, (int) ((GregorianCalendar.getInstance()
.getTimeInMillis() / 1000)));
updatasql.setString(7, "1");
updatasql.setString(8, "1");
// C6
updatasql.setInt(9, (int) ((GregorianCalendar.getInstance()
.getTimeInMillis() / 1000)));
// C7
updatasql.setString(10, "1");
updatasql.setString(11, "1");
updatasql.setString(12, conllectiondata.getId());
updatasql.setString(13, conllectiondata.getName());
int num = updatasql.executeUpdate();
if (num != 0) {
logger.info("----执行对已有监控数据进行同步..");
logger.info("-------------已同步数目: "+i);
i++;
}
// insert
if (num == 0) {
logger.info("----该条数据进行新入库操作..");
updataId.executeUpdate();
insertsql.setString(1, conllectiondata.getNode());
insertsql.setString(2, conllectiondata.getId());
insertsql.setString(3, conllectiondata.getName());
insertsql.setString(4, conllectiondata.getValue());
insertsql.setString(5, "1");
insertsql.setInt(6, (int) ((GregorianCalendar.getInstance()
.getTimeInMillis() / 1000)));
insertsql.setString(7, "1");
insertsql.setString(8, "1");
insertsql.setInt(9, (int) ((GregorianCalendar.getInstance()
.getTimeInMillis() / 1000)));
insertsql.setInt(10, 1);
insertsql.setString(11, "1");
insertsql.execute();
logger.info("-------------新入库数目: "+j);
j++;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
logger.info("采集数据程序执行完毕...");
}
public static void main(String[] args) {
DataTreat dt = new DataTreat();
dt.updateData();
dt.getDc().closeStatus();
logger.info("与监控连接已关闭,与入库连接已关闭..");
}
}
LOG 日志信息
2014-03-17 11:18:07 未过滤监控数据:A##Agent=30##D=2AT-D2电量仪##ID=2801020##V=43.5##T=0##NumCV=##11:12:24^^
2014-03-17 11:18:07 ====从监控采集数: 22815
2014-03-17 11:18:07 采集的信息:A##Agent=30##D=2AT-D2电量仪##ID=2801020##V=43.5##T=0##NumCV=##11:12:24^^
2014-03-17 11:18:07 容量 size: 22592
2014-03-17 11:18:07 采集数据容量未改变次数: 195
2014-03-17 11:18:07 未过滤监控数据:A##Agent=30##D=2AT-D2电量仪##ID=2801021##V=40.7##T=0##NumCV=##11:12:24^^
2014-03-17 11:18:07 ====从监控采集数: 22816
2014-03-17 11:18:07 采集的信息:A##Agent=30##D=2AT-D2电量仪##ID=2801021##V=40.7##T=0##NumCV=##11:12:24^^
2014-03-17 11:18:07 容量 size: 22592
2014-03-17 11:18:07 采集数据容量未改变次数: 196
2014-03-17 11:18:07 未过滤监控数据:A##Agent=30##D=C1空调##ID=1729073##V=36##T=0##NumCV=##11:12:24^^
2014-03-17 11:18:07 ====从监控采集数: 22817
2014-03-17 11:18:07 采集的信息:A##Agent=30##D=C1空调##ID=1729073##V=36##T=0##NumCV=##11:12:24^^
2014-03-17 11:18:07 容量 size: 22592
2014-03-17 11:18:07 采集数据容量未改变次数: 197
2014-03-17 11:18:07 未过滤监控数据:A##Agent=30##D=B区温湿度监测##ID=1101053##V=20.5##T=0##NumCV=##11:12:40^^
2014-03-17 11:18:07 未过滤监控数据:A##Agent=30##D=2AU-B7列头柜##ID=2801048##V=6.1##T=0##NumCV=##11:11:47^^
2014-03-17 11:18:07 ====从监控采集数: 22818
2014-03-17 11:18:07 采集的信息:A##Agent=30##D=2AU-B7列头柜##ID=2801048##V=6.1##T=0##NumCV=##11:11:47^^
2014-03-17 11:18:07 容量 size: 22592
2014-03-17 11:18:07 采集数据容量未改变次数: 198
-------------------------------------------------------------------------------------------------------------
2014-03-17 11:21:57 数据追踪: 30; 2801070; 3AU-A16列头柜; 0
2014-03-17 11:21:58 ----执行对已有监控数据进行同步..
2014-03-17 11:21:58 -------------已同步数目: 22585
2014-03-17 11:21:58 数据追踪: 30; 2801200; 1AU-B9列头柜; 0
2014-03-17 11:21:58 ----执行对已有监控数据进行同步..
2014-03-17 11:21:58 -------------已同步数目: 22586
2014-03-17 11:21:58 数据追踪: 30; 2801071; 3AU-A16列头柜; 0
2014-03-17 11:21:58 ----执行对已有监控数据进行同步..
2014-03-17 11:21:58 -------------已同步数目: 22587
2014-03-17 11:21:58 数据追踪: 30; 2801062; 2AU-A16列头柜; 0
2014-03-17 11:21:58 ----执行对已有监控数据进行同步..
2014-03-17 11:21:58 -------------已同步数目: 22588
2014-03-17 11:21:58 数据追踪: 30; 2801072; 3AU-A16列头柜; 0
2014-03-17 11:21:58 ----执行对已有监控数据进行同步..
2014-03-17 11:21:58 -------------已同步数目: 22589
2014-03-17 11:21:58 数据追踪: 30; 2801061; 2AU-A16列头柜; 0
2014-03-17 11:21:58 ----执行对已有监控数据进行同步..
2014-03-17 11:21:58 -------------已同步数目: 22590
2014-03-17 11:21:58 数据追踪: 30; 2801064; 2AU-A16列头柜; 0
2014-03-17 11:21:58 ----执行对已有监控数据进行同步..
2014-03-17 11:21:58 -------------已同步数目: 22591
2014-03-17 11:21:58 数据追踪: 30; 2801063; 2AU-A16列头柜; 0
2014-03-17 11:21:58 ----执行对已有监控数据进行同步..
2014-03-17 11:21:58 -------------已同步数目: 22592
2014-03-17 11:21:58 采集数据程序执行完毕...
2014-03-17 11:21:58 与监控连接已关闭,与入库连接已关闭..
转载于:https://blog.51cto.com/yjm199/1377072
勘探院读取监控数据代码设计相关推荐
- python读取摄像头数据_Opencv 读取摄像头数据 | 代码驱动科技
如果做监控,经常会遇到读取摄像头的数据.如何在python中读取摄像头数据,并显示呢? 双码流 一般高清摄像头产品编码器可同时产生两个不同的编码格式,统称主码流和子码流,双码流技术兼顾了高质量图像传输 ...
- Hadoop hdfs 从指定偏移量读取文件数据代码示例
- matlab检测串口数据帧头,MATLAB 串口读取姿态数据及GUI实时动态显示设计
上一篇实现了Matlab 对串口数据的读取,数据可以读取并且保存到本地.本文主要设计GUI并且动态的显示曲线.可以更直观的观察实时的姿态数据和传感器数据. GUI设计效果: 姿态GUi.png 分别设 ...
- ESP8266自动上传DHT11数据给javaweb服务器的温湿度监控系统的设计与实现
系列文章目录 第一章ESP8266的java软件仿真测试 第二章ESP8266硬件与软件测试 第三章ESP8266客户端与Java后台服务器联调 第四章ESP8266客户端与JavaWeb服务器联调 ...
- TensorFlow csv读取文件数据(代码实现)
TensorFlow csv读取文件数据(代码实现) 大多数人了解 Pandas 及其在处理大数据文件方面的实用性.TensorFlow 提供了读取这种文件的方法. 前面章节中,介绍了如何在 Tens ...
- python从文件中读取数据_使用Python脚本从文件读取数据代码实例
这篇文章主要介绍了使用Python脚本从文件读取数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最近自学Python的进度比较慢,工作之 ...
- 《数据中心设计与运营实战》——2.6 监控基础设施
本节书摘来自异步社区<数据中心设计与运营实战>一书中的第2章,第2.1节,作者: [美]Luiz André Barroso , [美]Jimmy Clidaras , [瑞士]Urs H ...
- 如何找到ngrx action匹配的取数据代码 - 谈谈Spartacus Product Carousel控件数据的读取
应用程序里哪一段代码负责响应ProductActions.LoadProduct去取数? 用正则表达式进行搜索: ofType(.)LOAD_PRODUCT. 找到product.effect.ts, ...
- 是先设计mysql表再进行php代码_PHP与RBAC设计思路,数据表设计与源码讲解
权限系统模块对于互联网产品是一个非常重要的功能,可以控制不同的角色合理的访问不同的资源从而达到安全访问的作用 权限控制有哪些模型ACL RBAC 基于角色的访问控制 从上图我们可以看出,ACL是用户和 ...
最新文章
- 简单的MSSQL恢复删除数据的方法
- 动态创建html元素的几种方法
- scipy.ndimage.zoom上采样与下采样
- ASP.NET MVC 4 过滤器(Authorize)
- 这可能是你与 AI 大神们近距离接触的唯一机会……
- python文件查重并合并_Python实现文件信息进行合并实例代码
- 【Elasticsearch】Elasticsearch:aggregation介绍
- error:bucket is protected
- 转:数据包经由路由转发时源、目的IP地址及MAC地址变化情况
- php 计算字段的和,php – foreach中计算列的总和
- 清华大学计算机课程对应教材,清华大学计算机专业大一到四的课程 教材详细名字...
- 线性代数常用知识点总结
- 使用JavaScript开发IE浏览器本地插件实例
- 湖南师范大学学科综合评价计算机,师范类高校自主招生/综合评价相关问答,2020届参考...
- 呕心沥血大放血,今天小企鹅来给大家送福利了!!!Mac.Win.Lin虚拟机映像/资源超全[分享]
- 通俗易懂解释Docker是什么
- GNSS-ITRS_GCRS_J2000坐标系的相互转换
- 关于Floyd算法 和 Dijkstra算法
- elementPlus el-dialog 自适应
- modbus测试软件