?? new_kdd1.java
字號:
package new_raw;
import java.sql.*;
import java.util.*;
import java.io.*;
import java.io.InputStream;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
//import org.jfree.data.*;
//import org.jfree.data.category.CategoryDataset;
//import java.io.FileNotFoundException;
//import java.io.FileOutputStream;
//import com.lowagie.text.*;
//import com.lowagie.text.pdf.*;
import java.math.*;
public class New_Kdd{
public static Connection conn;
public static Statement stmt;
public static ResultSet res;
public static int rowNumber;
public static int columnNumber;
public static ResultSetMetaData rsmd;
public static ArrayList[] array,array1,array2;
public static ArrayList clmnName;
public static double [] R;
public static void main(String avg[])
{
try
{
//數(shù)據(jù)庫連接
connect();
//顯示讀取數(shù)據(jù)的行數(shù)
showrow();
//顯示屬性字段的列數(shù)
showcolumn();
//根據(jù)全體屬性進(jìn)行集合劃分
array1=div_data( );
//根據(jù)減少一個屬性后的集合進(jìn)行劃分
for(int a=0;a<columnNumber;a++){
array2=div_data_other(a );
R[a]=array_intersect(array1,array2);
}
//算法計算
// R = kdd(x);
//屬性相關(guān)系數(shù)排序并可視化輸出
bubbleSort(R);
}catch (Exception ex)
{
System.out.println("Error : " + ex.toString());
}
}
public static void connect(){
try{
//加載Connector/J驅(qū)動
Class.forName("com.mysql.jdbc.Driver");
//建立到MySQL的連接
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/rawdata?user=root&password=123");
//執(zhí)行SQL語句
stmt = conn.createStatement();
res = stmt.executeQuery("select * from rawdata5");
rsmd = res.getMetaData();
}catch (Exception ex){
System.out.println("Error : " + ex.toString());
}
}
public static void showrow(){
//顯示數(shù)據(jù)行數(shù)
try{
ResultSet resultset=stmt.executeQuery("select count(*) from rawdata5");
resultset.next();
rowNumber=resultset.getInt(1);
System.out.print(rowNumber+"行\(zhòng)t");
}catch (Exception ex){
System.out.println("Error : " + ex.toString());
}
}
public static void showcolumn(){ //顯示列數(shù);查找并保存"varchar"字段類型的個數(shù)和列號
try{
//列數(shù)
clmnName=new ArrayList();
columnNumber=rsmd.getColumnCount();
int[] var = new int[columnNumber+1];
System.out.println(columnNumber+"列");
for(int i=1;i<columnNumber+1;i++){
String columnName=rsmd.getColumnName(i);
clmnName.add(columnName);
System.out.print(columnName+'\n');
}
}catch (Exception ex){
System.out.println("showcolumn() Error : " + ex.toString());
}
}
public static ArrayList [] div_data( ){
int con_rowmn=0;
ResultSet div_res;
ResultSet [] rownm_res=new ResultSet [columnNumber];
ArrayList [] rowmn_array=new ArrayList[columnNumber] ;
String [][] div_array ;
try{
String rownm_sql="select id from rawdata5"+
" where duration=? and protocol=? "+
"and service=? and flag=? and "+
"src_bytes=? and dst_bytes=? "+
"and land=? AND wrong_fragment=? "+
"and urgent=? and hot=? "+
"and num_failed_logins=? and logged_in=? "+
"and num_compromised=? and root_shell=? "+
"and su_attempted=? and num_root=? "+
"and num_file_creations=? and num_shells=? "+
"and num_access_files=? and num_outbound_cmds=? "+
"and is_host_login=? and is_guest_login=? and "+
"+and count=? and srv_count=? "+
"and serror_rate=? and srv_serror_rate=? "+
"and rerror_rate=? and srv_rerror_rate=? "+
"and same_srv_rate=? and diff_srv_rate=? "+
"and srv_diff_host_rate=? and dst_host_count=? "+
"and dst_host_srv_count=? and dst_host_same_srv_rate=? "+
"and dst_host_diff_srv_rate=? and dst_host_same_src_port_rate=? "+
"and dst_host_srv_diff_host_rate=? and dst_host_serror_rate=? "+
"and dst_host_srv_serror_rate=? and dst_host_rerror_rate=? "+
"and dst_host_srv_rerror_rate=? and status=? ";
System.out.println(""+rownm_sql);
String div_sql="select distinct duration,protocol,"+
" service, flag, "+
"src_bytes,dst_bytes, "+
" land, wrong_fragment, "+
" urgent, hot, "+
" num_failed_logins, logged_in, "+
" num_compromised, root_shell, "+
" su_attempted, num_root, "+
" num_file_creations, num_shells, "+
" num_access_files, num_outbound_cmds, "+
"is_host_login, is_guest_login, "+
" count,srv_count,"+
"serror_rate,srv_serror_rate, "+
" rerror_rate, srv_rerror_rate, "+
" same_srv_rate, diff_srv_rate, "+
" srv_diff_host_rate,dst_host_count, "+
" dst_host_srv_count, dst_host_same_srv_rate, "+
" dst_host_diff_srv_rate, dst_host_same_src_port_rate, "+
"dst_host_srv_diff_host_rate,dst_host_serror_rate, "+
" dst_host_srv_serror_rate, dst_host_rerror_rate, "+
" dst_host_srv_rerror_rate,status "+
"from rawdata5";
div_res=stmt.executeQuery(div_sql) ;
int i=0;
div_res.last();
con_rowmn=div_res.getRow();
div_array=new String[con_rowmn][columnNumber];
System.out.println("fuck"+con_rowmn);
div_res.beforeFirst();
while(div_res.next()){
//for(int i=1;i<columnNumber;i++){
System.out.println("fuckbbbbbb");
//div_array[i].add(
for(int j=0;j<con_rowmn;j++){
div_array[i][j]=div_res.getString(j);
}
System.out.println("fuckbbbbbb");
//con_rowmn=div_array[i].size();
i++;
}
PreparedStatement psmt=conn.prepareStatement(rownm_sql) ;
for(int k=0;k<con_rowmn;k++){
for(int j=0;j<columnNumber;j++){
psmt.setString(j+1, div_array[j][k]);
}
rownm_res[k]=psmt.executeQuery();
System.out.println("fuck2");
while(rownm_res[k].next()){
rowmn_array[k].add(rownm_res[k]);
}
psmt.clearParameters();
}
for(int l=0;l<con_rowmn;l++){
for(int kl=0;kl<rowmn_array[l].size();kl++){
System.out.print(rowmn_array[l].get(kl).toString());
}
}
} catch (Exception ex){
System.out.println("Error2 : " + ex.toString());
}
return rowmn_array;
}
public static ArrayList [] div_data_other(int clun_nm ){
int con_rowmn=0;
int clun=clun_nm;
ResultSet div_res;
ResultSet [] rownm_res=null;
ArrayList [] rowmn_array=null;
ArrayList [] div_array=null;
try{
String rownm_sql="select id from rawdata5 where(";
for(int cl=0;cl<columnNumber-2;cl++){
if(cl!=clun)
{
rownm_sql=rownm_sql+clmnName.get(cl).toString()+"=? and ";
}
}
if(clun==columnNumber-2){
rownm_sql=rownm_sql+clmnName.get(columnNumber-1).toString()+"=?)";
}
else if(clun==columnNumber-1){
rownm_sql=rownm_sql+clmnName.get(columnNumber-2).toString()+"=?)";
}
String div_sql="select distinct * "+
"from rawdata5";
div_res=stmt.executeQuery(div_sql) ;
div_res.next();
for(int i=0;i<columnNumber;i++){
div_array[i]=new ArrayList();
div_array[i].add(div_res.getString(i));
con_rowmn=div_array[i].size();
}
PreparedStatement psmt=conn.prepareStatement(rownm_sql) ;
for(int k=0;k<con_rowmn;k++){
for(int j=0;j<columnNumber;j++){
psmt.setString(j+1, div_array[j].get(k).toString());
}
rownm_res[k]=psmt.executeQuery();
while(rownm_res[k].next()){
rowmn_array[k].add(rownm_res[k]);
}
psmt.clearParameters();
}
for(int l=0;l<con_rowmn;l++){
for(int kl=0;kl<rowmn_array[l].size();kl++){
System.out.print(rowmn_array[l].get(kl).toString());
}
}
} catch (Exception ex){
System.out.println("Error1 : " + ex.toString());
}
return rowmn_array;
}
public static double array_intersect(ArrayList [] array1,ArrayList [] array2){
int m,n;
double tem1,tem2,R;
tem1=0;
tem2=1;
R=0;
ArrayList tem_array;
m=array1.length;
n=array2.length;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
tem_array=null;
for(int mm=0;mm<array1[i].size();mm++){
for(int nn=0;nn<array2[j].size();nn++){
if (array1[i].get(mm).toString().equals(array2[j].get(nn).toString()))
{
tem_array.add(array1[i].get(mm));
}
}
}
if(tem1<(tem_array.size()/array2[j].size())){
tem1=tem_array.size()/array2[j].size();
}
}
if(tem2>tem1){
tem2=tem1;
}
}
R=1-tem2;
return R;
}
static void bubbleSort(double []R){
//冒泡法排序
double t;
int mid;
int R_index[]=new int[R.length];
for(int i=0;i<R.length;i++){
R_index[i]=i+1;
}
for(int i=0;i<R.length;i++)
{
for(int j=0;j<R.length-i-1;j++)
//升序排列用大于,降序排列用小于,此處為降序排列。
if(R[j]<R[j+1]){
t=R[j];R[j]=R[j+1];R[j+1]=t;
mid=R_index[j];
R_index[j]=R_index[j+1];
R_index[j+1]=mid;
}
}
for(int i=0;i<R.length;i++) {
System.out.println(R[i]+"\t"+R_index[i]);
}
//柱狀圖顯示
/*chart(R,R_index);*/
}
/*public static void chart (double R[],int R_index[]){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int M = R.length;
for(int i = 0;i<M;i++)
{String s = String.valueOf(R_index[i]);
dataset.setValue(R[i],"第"+s+"屬性","第"+s+"屬性");
}
JFreeChart chart = ChartFactory.createBarChart3D("屬性x(i)和輸出變量y之間的依賴度表", "屬性X[i]","依賴度R[i]",dataset,PlotOrientation.HORIZONTAL,true,false,false);
ChartFrame BarFrame = new ChartFrame("屬性x(i)和輸出變量y之間的依賴度表",chart);
BarFrame.pack();
BarFrame.setVisible(true);
}*/
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -