1   2   3   4   5   6   7   8
Ім'я файлу: пз.docx
Розширення: docx
Розмір: 1133кб.
Дата: 26.05.2023
скачати
Пов'язані файли:
16. 04. лекція Тригери на БТ.docx
Методичні вказівки до практичних занять з дисципліни «Комп’ютерн
Методичні вказівки до практичних занять з дисципліни «Комп’ютерн

ВИСНОВКИ
В дипломному проєкті розроблено програмний модуль для визначення раціонального варіанту послідовності перевірки об’єктів комп’ютерної мережі, як предмету кібернетичного впливу. Ця система може бути застосована як для збору необхідної інформації, так і забезпечення її адекватності. В процесі розробки для забезпечення швидкодії виконання системи була розроблена платформа для організації розподіленої обробки даних, яка може бути розгорнута у локальній обчислювальній мережі та застосована для прискорення будь-якої обчислювальної задачі великої розмірності. Велика обчилювальна складність задачі що вирішувалась зумовила певні складності для побудови обчислювального середовища.

В роботі проведений аналіз напрямків вирішення задачі пошуку раціональних варіантів перевірки об’єктів комп’ютерної мережі, розроблений модуль управління вибором варіанту перевірки об’єктів комп’ютерної мережі, проведена оцінка ефективності розробленої системи в режимі реального часу.

Для побудови системи що б задовольнила усім цим вимогам була вибрана мова програмування JAVA, та операційна система Linux. Для управління побудованим середовищем обробки даних були розроблені спеціальні додатки які виконують обчилення в окремих потоках та синхронізують результати.

Розроблена система розподілених обчислень та додаток що виконує обрахунки на графах великої розмірності на основі мурашиного алгоритму здатні виконувати завдання в режимі реального часу стосовно перевірки об’єктів комп’ютерної мережі і здійснення інформаційної підготовки кібернетичного впливу. Графічний додаток також оснащений зручним графічним інтерфейсом що дозволяє користувачу будувати графи будь-якої розмірності та виконувати обрахунки на них.

Проведений аналіз ефективності показує що розроблена система відповідає усім необхідним вимогам щоб бути рекомендованою до використання в цілях перевірки об’єктів комп’ютерної мережі для іформаційного забезпечення кібернетичного впливу.
ПЕРЕЛІК ДЖЕРЕЛ ПОСИЛАННЯ

  1. Б. Еккель.- Философия JAVA-М.:Питер, 2009-638с.

  2. Кей Хорстман- JAVA 2 Основы-М.:Вильямс,2010-816с.

  3. Pearl J. Heuristics: Intelligent Search Strategies for Computer Problem Solving. – Addison-Wesley, 2018.

  4. R. Bellman: On a Routing Problem // Quarterly of Applied Mathematics. 2010. Vol 16, No. 1. C. 87–90,.

  5. L. R. Ford, Jr., D. R. Fulkerson. Flows in Networks, Princeton University Press, 2008.

  6. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн Алгоритмы: построение и анализ = Introduction to Algorithms. – 2-е изд. – М.: «Вильямс», 2016. – С. 1296.

  7. Ананий В. Левитин Глава 9. Жадные методы: Алгоритм Дейкстры // Алгоритмы: введение в разработку и анализ = Introduction to The Design and Analysis of Aigorithms. – М.: «Вильямс», 2016. – С. 189–195.

  8. M. Dorigo & T. Stutzle, 2004. Ant Colony Optimization, MIT Press.

  9. M. Dorigo, G. Di Caro & L. M. Gambardella, 2008. "Ant Algorithms for Discrete Optimization". Artificial Life, 5 (2): 137–172.

  10. M. Dorigo, V. Maniezzo & A. Colorni, 2012. "Ant System: Optimization by a Colony of Cooperating Agents", IEEE Transactions on Systems, Man, and Cybernetics-Part B, 26 (1): 29–41.

  11. C. Blum, 2005 "Ant colony optimization: Introduction and recent trends". Physics of Life Reviews, 2: 353–373.

  12. T. Stutzle et H.H. Hoos, MAX-MIN Ant System, Future Generation Computer Systems, volume 16, pages 889–914, 2011.

13. L. M. Gambardella, M. Dorigo, "Ant-Q: A Reinforcement Learning Approach to the Traveling Salesman Problem" // Twelfth International Conference on Machine Learning, Morgan Kaufmann, p. 252–260, 2015.

ДОДАТОК Д

Лістинг програми
Фрагмент пограмного коду що реалізує балансування навантаження на виконавчі модулі.

package serv;
import java.net.ServerSocket;

import java.net.Socket;

import java.util.Scanner;
import balancer.Balansing;
public class BalanceControl {
/**

* @param args

*/

public static void main(String[] args) throws Exception {

Runnable run = new Runnable() {

@Override

public void run() {

Balansing bal = Balansing.getInstance();

try {

while (true) {

bal.balance();

Thread.sleep(1000);

}

} catch (Exception e) {

System.out.println("Exception");

System.err.println(e);

}

}

};

Thread th = new Thread(run);

th.start();

Runnable runP = new Runnable() {

@Override

public void run() {

try {

Proxy prox = new Proxy();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

};

Thread thP = new Thread(runP);

thP.start();

ServerSocket ss = new ServerSocket(8102);

try {

while (true) {

Socket s = ss.accept();

UptoDate up = new UptoDate(s);

}

} finally {

}
}
}

class UptoDate implements Runnable {

public Socket s;

public UptoDate(Socket s) {

this.s=s;

Thread th = new Thread(this);

th.start();

}

@Override

public void run() {

try {

Scanner scan = new Scanner(s.getInputStream());

Balansing b = Balansing.getInstance();

double cpu;

while (scan.hasNext()) {

cpu = scan.nextDouble();

if (cpu==-1) {

b.del(s.getInetAddress().toString());

return;

}

System.out.println(s.getInetAddress()+" "+cpu);

b.update(s.getInetAddress().toString(), cpu);

}

scan.close();

} catch (Exception e) {

System.out.println("Exception");

System.out.println(e);

}

}

}


Фрагмент пограмного коду що реалізує аналіз завантаженості процессора.

package serv;

import java.io.PrintWriter;

import java.lang.management.ManagementFactory;

import java.lang.management.OperatingSystemMXBean;

import java.net.Socket;
import javax.management.MXBean;
import org.hyperic.sigar.OperatingSystem;

public class CpuInfo2 {

public static void main(String[] args) throws Exception {

Socket s = null;

PrintWriter pwriter=null;

try {

s = new Socket("127.0.0.1", 8102);

pwriter = new PrintWriter(s.getOutputStream(),true);

OperatingSystemMXBean b = ManagementFactory.getOperatingSystemMXBean();

while (true) {

pwriter.println(b.getSystemLoadAverage());

Thread.sleep(5000);

}

} catch (Exception e) {

System.out.println(e); } finally {

pwriter.println("-1");

}

}


Фрагмент пограмного коду що реалізує виконавчий модуль розподіленого середовища обробки даних.
package serv;

import java.io.BufferedOutputStream;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

import java.io.PrintStream;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.concurrent.Callable;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import java.util.concurrent.Future;

public class execut implements Runnable {

private Socket s;

private ObjectInputStream oistr;

private ObjectOutputStream oostr;

private Callable target;

public String toString() {

Thread th = new Thread(this);

th.start();

return null;

}

public execut(Socket ts) throws Exception {

s=ts;

}

// @SuppressWarnings("unchecked")

public void run() {

try {

PrintStream oldout = System.out;

oistr= new ObjectInputStream(s.getInputStream());

oostr = new ObjectOutputStream(s.getOutputStream());

System.out.println(s.getInetAddress().toString());

//System.setOut(new MyPrint(oostr));

target = (Callable) oistr.readObject();

System.out.println(">> "+ target);

ExecutorService exec = Executors.newCachedThreadPool();

Future f = exec.submit(target);

Object res = f.get();

oostr.writeObject(res);

oostr.close();

oistr.close();

s.close();

// outstr.close();

System.setOut(oldout);

}

catch (Exception e) {

System.err.println( e);System.err.println("err");

}

}}

class MyPrint extends PrintStream {
public MyPrint(OutputStream out) {

super(out);

}

public void println(String str){

super.println("<1EE1>"+str);

}

}

Фрагмент пограмного коду що реалізує модуль завантаження виконуваних завдань.
package serv;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.ByteArrayInputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutput;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.lang.management.ManagementFactory;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Scanner;

import java.util.concurrent.Callable;

import java.util.concurrent.Executor;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

import javax.swing.plaf.metal.MetalIconFactory.FolderIcon16;

import balancer.Balansing;

public class Proxy {

public Proxy() throws Exception {

go();

}

/**

* @param args

* @throws IOException

*/

public void go() throws IOException {

ServerSocket ss=null;

try {

ss = new ServerSocket(8000);

while (true) {

Socket s = ss.accept();

//

proxing p = new proxing(s);

Thread th = new Thread(p);

th.start();

}

} catch (Exception e) {

// TODO: handle exception

} finally {

ss.close();

}

}

}

class proxing implements Runnable {

//public static ServerSocket ss;

public ObjectInputStream ois;

ObjectOutputStream clientOut;

Socket clS;

public proxing(Socket clS) throws IOException {

this.clS=clS;

ois = new ObjectInputStream(clS.getInputStream());

clientOut= new ObjectOutputStream(clS.getOutputStream());

}

@Override

public void run() {

try {

receiveFile();

System.out.println("get ip="+Balansing.getInstance().getIP());

String ip = Balansing.getInstance().getIP();

ip=ip.substring(1);

Socket serv = new Socket(ip,1002);

ObjectOutputStream servOutStream = new ObjectOutputStream(serv.getOutputStream());

ObjectInputStream servInStream = new ObjectInputStream(serv.getInputStream());

Object obj = ois.readObject();

servOutStream.writeObject(obj);

System.out.println(obj);

clientOut.writeObject(servInStream.readObject());

//PrintBack pb = new PrintBack(serv, clS);

System.out.println("finish");

clS.close();

} catch (Exception e) {

System.out.println("Exception");

e.printStackTrace();

}

}

public void receiveFile() throws Exception {

ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage();

Runtime r = Runtime.getRuntime();

String className= ois.readObject().toString().replace(".", "/");

String[] path = className.split("/");

String filepath="";

Integer i =0;

while (i


if (i!=(path.length-1)) {

filepath+=path[i];

}

i++;

}

filepath="/srv/classpath"+clS.getInetAddress()+"/"+filepath;

File f = new File(filepath);

f.mkdirs();

f = new File(filepath+"/"+path[path.length-1]+".class");

f.createNewFile();

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f));

byte[] buf = new byte[8192];

Integer count= ois.read(buf);

while (count!=-1) {

if (count<8192) {

byte[] buf2 = new byte[count];

ByteArrayInputStream barr = new ByteArrayInputStream(buf);

barr.read(buf2,0,count);

barr.close();

bos.write(buf2);

} else

bos.write(buf);

count=ois.read(buf);

}

bos.close();

}

}

package classLoader;

import java.io.*;

public class MyLoader extends ClassLoader {

//private java.util.Map classesHash= new java.util.HashMap();

public String path;

// public final String[] classPath;

public MyLoader() {

path=null;

// Набор путей поиска - аналог переменной CLASSPATH

// this.classPath= classPath;

}
public MyLoader(String classPath) {

path=classPath;

// Набор путей поиска - аналог переменной CLASSPATH

// this.classPath= classPath;

}

protected synchronized Class loadClass(String name,boolean resolve)

throws ClassNotFoundException

{

Class result= findClass(name);

if (resolve) resolveClass(result);

return result;

}

protected Class findClass(String name)

throws ClassNotFoundException

{

Class result=null;

// (Class)classesHash.get(name);

if (result!=null) {

System.out.println("% Class "+name+" found in cache");

return result;

}

// System.out.println("not found in cache");

File f= findFile(name.replace('.','/'),".class");

// Класс mypackage.MyClass следует искать файле mypackage/MyClass.class
// System.out.println("% Class "+name+(f==null?"":" found in "+f));

if (f==null) {

return findSystemClass(name);
}
try {
byte[] classBytes= loadFileAsBytes(f);
result= defineClass(name,classBytes,0,classBytes.length);
} catch (IOException e) {
throw new ClassNotFoundException("Cannot load class "+name+": "+e);
} catch (ClassFormatError e) {
throw new ClassNotFoundException("Format of class file incorrect for class "+name+": "+e);
}
// classesHash.put(name,result);
return result;
}
protected java.net.URL findResource(String name) {
File f= findFile(name,"");


if (f==null) return null;
try {
return f.toURL();
} catch(java.net.MalformedURLException e) {
return null;
}
}
private File findFile(String name, String extension) {

String sysPath=System.getenv("PATH")+":./";

if (path!=null) {

System.out.println(path);

sysPath=sysPath+":"+path+":";

}

if (name.equals("serv/execut")) { sysPath="/home/Sanny/ZHUPANOV/MyWorkspace/workspace1/MThread/bin:"; } else {

sysPath=path+":";

}

String[] classPath = sysPath.split(":");
for (int k=0; kFile f= new File((new File(classPath[k])).getPath()+"/"+name.replace('/',File.separatorChar)+".class");
if (f.exists()) return f;
}

System.out.println("file not found "+ name);

return null;
}
public static byte[] loadFileAsBytes(File file)
throws IOException
{
byte[] result= new byte[(int)file.length()];
FileInputStream f= new FileInputStream(file);
try {
f.read(result,0,result.length);
} finally {
try {
f.close();
} catch (Exception e) {

};
}
return result;
}


}


Фрагмент пограмного коду що реалізує бібліотеку для виконання обчислень в розподіленому середовищі.
package Mcall;
import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.ByteArrayOutputStream;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.ObjectInputStream;

1   2   3   4   5   6   7   8

скачати

© Усі права захищені
написати до нас