Java Ping Servers - Flyweight Reduce Memory Footprint
package ServerProbe;
/*
* Simple demonstration how to use the flyweight design pattern to improve performance and reduce
* memory footprint.
* Create a ServerFactory based on a pre-defined number of server types e.g. Windows, Unix etc
* Within Server object, for example have a shareable method such as pingIT, also the server_type is
* shareable
* Pass IP address and ping duration in as parameters
*
*/
public class Server {
String server_type;
Server(String type){
server_type = type;
}
String getType() {
return server_type;
}
public void pingIT(String ip, int duration) {
System.out.println("Pinging ->" + server_type + " IP -> " + ip);
}
public String toString() {
return server_type;
}
}
import java.util.HashMap;
public class ServerFactory {
private static final HashMap serverByType = new HashMap();
public static Server getServer(String serverType) {
Server server = (Server) serverByType.get(serverType);
if(server == null) {
server = new Server(serverType);
serverByType.put(serverType, server);
System.out.println("Creating " + serverType + " Server Container");
}
return server;
}
}
public class ServerTest {
private static final String ServerTypes[] = {
"Windows",
"AIX",
"UNIX",
"Solaris",
"Linux"
};
private static final int NUMBER_OF_SERVERS = 1000;
public ServerTest() {
for(int i=0; i < NUMBER_OF_SERVERS; ++i) {
Server server = ServerFactory.getServer(getRandomServerType());
server.pingIT("192.168.1."+i,100);
}
}
private String getRandomServerType() {
return ServerTypes[(int)(Math.random()*ServerTypes.length)];
}
public static void main(String[] args) {
ServerTest test = new ServerTest();
}
}
/*
* Simple demonstration how to use the flyweight design pattern to improve performance and reduce
* memory footprint.
* Create a ServerFactory based on a pre-defined number of server types e.g. Windows, Unix etc
* Within Server object, for example have a shareable method such as pingIT, also the server_type is
* shareable
* Pass IP address and ping duration in as parameters
*
*/
public class Server {
String server_type;
Server(String type){
server_type = type;
}
String getType() {
return server_type;
}
public void pingIT(String ip, int duration) {
System.out.println("Pinging ->" + server_type + " IP -> " + ip);
}
public String toString() {
return server_type;
}
}
public class ServerFactory {
private static final HashMap serverByType = new HashMap();
public static Server getServer(String serverType) {
Server server = (Server) serverByType.get(serverType);
if(server == null) {
server = new Server(serverType);
serverByType.put(serverType, server);
System.out.println("Creating " + serverType + " Server Container");
}
return server;
}
}
private static final String ServerTypes[] = {
"Windows",
"AIX",
"UNIX",
"Solaris",
"Linux"
};
private static final int NUMBER_OF_SERVERS = 1000;
public ServerTest() {
for(int i=0; i < NUMBER_OF_SERVERS; ++i) {
Server server = ServerFactory.getServer(getRandomServerType());
server.pingIT("192.168.1."+i,100);
}
}
private String getRandomServerType() {
return ServerTypes[(int)(Math.random()*ServerTypes.length)];
}
public static void main(String[] args) {
ServerTest test = new ServerTest();
}
}
Thank you for Sharing. I'm working in brave technologies private limited, We are the best erp software developers based in chennai. erp providers in chennai
ReplyDeleteI heve read your blog it's very interesting and informative. Keep sharing.
ReplyDeleteerp in chennai | erp software solutions in chennai
I found a lot of interesting information here. A really good post
ReplyDeleteoffice 2011 mac download deutsch
amazing
ReplyDeletejobbörse Neunkirchen
,
The article is good. Thankyou for sharing a good one. Keep sharing more like this article.
ReplyDeleteDrupal Training in Chennai
Drupal Classes
Drupal Training in Velachery
Photoshop Classes in Chennai
Best Place to Learn Photoshop in Chennai
Photoshop Training
Manual Testing Training in Chennai
Mobile Testing Training in Chennai
Great Article android based projects
ReplyDeleteJava Training in Chennai Project Center in Chennai Java Training in Chennai projects for cse The Angular Training covers a wide range of topics including Components, Angular Directives, Angular Services, Pipes, security fundamentals, Routing, and Angular programmability. The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training Project Centers in Chennai