블로그 이미지
삼각형은 수학과 예술의 근원입니다.
ongs brother

Notice

Recent Comment

Recent Trackback

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
2009/07/06 01:05 분류없음

결국 모든 것을 생각해 보니.. 내 자신의 포부가 너무 큰 것같다.
하지만 이 포부를 막아서는 안된다. 처음의 생각이 지금의 생각이고..
행위는 변질되었지만 그래도 포부는 같습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by ongs brother
2009/07/06 00:24 분류없음

소프트웨어 아키텍처 문서화
카테고리 컴퓨터/IT
지은이 폴 클레멘츠 (에이콘출판, 2009년)
상세보기


해당 책에 적절한 설명이 나와있습니다. (설명입니다. 답은 아닙니다. 저자도 아키텍트의 답은 없다고 합니다.)

아키텍처는 설계지만, 설계가 모두 아키텍처인 것은 아니다.

아키텍쳐에 부합하는 산출물들, 즉 작은 단위의 설계와 코드가 만들어지기는 하지만, 그렇다고 해서
아키텍처에서 구현에 대해 정의를 해 둔것은 아니다.


아키텍트가 M을 아키텍처 모듈이라고 정의를 해 놓았다고 치자. 작업자나 설계자들이 M의 하위모듈인 박스안에 M을 구현했다고 하자.

박스안에 M을 아키텍처의 구성요소라고 할 수 있는가?
아키텍트가 박스안에 M을 아키텍트의 구성요소로 분류할 수 없다면 아키텍처 모듈이라고 볼 수 없다는 것이다.

말하자면 아키텍트 맘대로? 이다. 왜냐하면 큰 구조물속에 목표가 충분이 들어나지 않는 모듈이라면 그것은 아키텍트의 구성요소가 아니란 것이다.

그래서 이와 같은 경우 엿장수 맘대로.. 일 것이다.
책 내용에서는 "농담하세요? 그건 너무 자의적인 정의잖아요" 라고... 한다.
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by ongs brother
2009/07/05 21:44 분류없음
Windows WMI와 별도로 순수하게 java만을 사용한 코드입니다.

MBean 객체 얻는 법

ManagementFactory.get.......MXBean();

 private ClassLoadingMXBean classLoadingMXBean;
private CompilationMXBean compilationMXBean
;
private List<GarbageCollectorMXBean> garbageCollectorMXBeans
;
private HotspotClassLoadingMBean hotspotClassLoadingMBean
;
private HotspotCompilationMBean hotspotCompilationMBean
;
private HotspotMemoryMBean hotspotMemoryMBean
;
private HotspotRuntimeMBean hotspotRuntimeMBean
;
private HotspotThreadMBean hotspotThreadMBean
;
private List<MemoryManagerMXBean> memoryManagerMXBeans
;
private MemoryMXBean memoryMXBean
;
private List<MemoryPoolMXBean> memoryPoolMXBeans
;
private OperatingSystemMXBean operatingSystemMXBean
;
private RuntimeMXBean runtimeMXBean
;
private ThreadMXBean threadMXBean
;




CPU 사용률

 /*
* (non-Javadoc)
*
* @see com.tistory.moova.connect.SuperRemoteMBean#getCpuUsage()
*/

public float getCpuUsage()
{
operatingSystemMXBean = getOperatingSystemMXBean
();

long processCpuTime1 = operatingSystemMXBean.getProcessCpuTime
();
long nanoTime1 = System.nanoTime
();

Thread
.sleep(1000
);

long processCpuTime2 = operatingSystemMXBean.getProcessCpuTime
();
long nanoTime2 = System.nanoTime
();

double processCpuTimeDif = processCpuTime2 - processCpuTime1
;
double nanoTimeDif = nanoTime2 - nanoTime1
;
double ratio = 100 * processCpuTimeDif / nanoTimeDif
;

float usage = Math.min(99f, ratio
);
log.debug("CPU Usage: " + usage
);
return usage
;
}

디스크 관련

 /*
* (non-Javadoc)
*
* @see com.tistory.moova.connect.SuperRemoteMBean#getDiskUsable()
*/
public long getDiskUsable(String diskDrive)
{
File root = new File(diskDrive
);
long usableSpace = (long)root.getUsableSpace
();
log.debug("getDiskUsable: " + usableSpace
);
return usableSpace
;
}

  /*
* (non-Javadoc)
*
* @see com.tistory.moova.connect.SuperRemoteMBean#getDiskTotalSpace()
*/
public long getDiskTotalSpace()
{
File root = new File("C:/"
);
long totalSpace = (long)root.getTotalSpace
();
log.debug("TotalSpace: " + totalSpace
);

return totalSpace
;
}

  /*
* (non-Javadoc)
*
* @see
* com.tistory.moova.connect.SuperRemoteMBean#getdiskTotalFreeSpaceUsage()
*/

public float getdiskTotalFreeSpaceUsage()
{
float diskUsable = getDiskUsable
();
float diskTotalSpace = getDiskTotalSpace
();

float cal = (diskUsable / diskTotalSpace) * 100
;
float usage = Math.min(99f, cal
);
log.debug("getdiskTotalFreeSpaceUsage: " + usage
);
return usage
;
}

  /*
* (non-Javadoc)
*
* @see com.tistory.moova.connect.SuperRemoteMBean#getdiskTotalUsage()
*/

public float getdiskTotalUsage()
{
long diskUsable = getDiskUsable
();
long diskTotalSpace = getDiskTotalSpace
();

long cal = (diskTotalSpace - diskUsable / diskTotalSpace) * 100
;
float usage = Math.min(99f, cal
);
log.debug("getdiskTotalUsage: " + usage
);
return usage
;
}

메모리 관련

  /*
* (non-Javadoc)
*
* @see com.tistory.moova.connect.SuperRemoteMBean#getMemoryUsage()
*/
public long getFreePhysicalMemorySize
(){
long freePhysicalMemorySize = getOperatingSystemMXBean().getFreePhysicalMemorySize
();
log.debug("freePhysicalMemorySize: " + freePhysicalMemorySize
);
return freePhysicalMemorySize
;
}

public long getTotalPhysicalMemorySize
(){
long totalPhysicalMemorySize = getOperatingSystemMXBean().getTotalPhysicalMemorySize
();
log.debug("totalPhysicalMemorySize: " + totalPhysicalMemorySize
);
return totalPhysicalMemorySize
;
}
 

  /*
* (non-Javadoc)
*
* @see com.tistory.moova.connect.SuperRemoteMBean#getHeapMemoryUsage()
*/

public float getHeapMemoryUsage()
{
memoryMXBean = getMemoryMXBean
();
MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage
();
long max = heapMemoryUsage.getMax
();
long used = heapMemoryUsage.getUsed
();

float cal = (used / max) * 100
;
float usage = Math.min(99f, cal
);
log.debug("getHeapMemoryUsage: " + usage
);
return usage
;

}

  /*
* (non-Javadoc)
*
* @see com.tistory.moova.connect.SuperRemoteMBean#getNoneHeapMemoryUsage()
*/

public float getNoneHeapMemoryUsage()
{
memoryMXBean = getMemoryMXBean
();
MemoryUsage nonHeapMemoryUsage = memoryMXBean.getNonHeapMemoryUsage
();
long max = nonHeapMemoryUsage.getMax
();
long used = nonHeapMemoryUsage.getUsed
();

float cal = (used / max) * 100
;
float usage = Math.min(99f, cal
);
log.debug("getNoneHeapMemoryUsage: " + usage
);
return usage
;
}

클래스 로더 관련

 
/*
* (non-Javadoc)
*
* @see
* com.tistory.moova.connect.SuperRemoteMBean#getTotalLoadedClassCount()
*/

public float getTotalLoadedClassCount()
{
classLoadingMXBean = getClassLoadingMXBean
();
float totalLoadedClassCount = (float)classLoadingMXBean.getTotalLoadedClassCount
();
log.debug("getTotalLoadedClassCount: " + totalLoadedClassCount
);
return totalLoadedClassCount
;
}

/*
* (non-Javadoc)
*
* @see com.tistory.moova.connect.SuperRemoteMBean#getLoadedClassCount()
*/

public float getLoadedClassCount()
{
classLoadingMXBean = getClassLoadingMXBean
();
int loadedClassCount = classLoadingMXBean.getLoadedClassCount
();
log.debug("getLoadedClassCount: " + loadedClassCount
);
return classLoadingMXBean.getLoadedClassCount
();
}

네트워크 체크

 
/*
* (non-Javadoc)
*
* @see com.tistory.moova.connect.SuperRemoteMBean#getNetworkEnable()
*/
public float getNetworkEnable()
{
URL url = null
;
URLConnection urlConnection = null
;

String sUrl = "http://google.com"
;
float enable = 0f
;
int contentLength = 0
;
try
{
url = new URL(sUrl
);
urlConnection = url.openConnection
();
contentLength = urlConnection.getContentLength
();
} catch (Exception e)
{
e.printStackTrace
();
}
float returnVal = 0f
;
if (contentLength == 0)
{
returnVal =  Math.min(99f, 0f
);
} else
{
returnVal =  Math.min(99f, 100f
);
}
log.debug("getNetworkEnable: " + returnVal
);
return returnVal
;
}

MBeanServer getter

  public MBeanServer getServer() {
MBeanServer mbserver = null
;
ArrayList mbservers = MBeanServerFactory.findMBeanServer(null
);

if (mbservers.size() > 0)
{
mbserver = (MBeanServer) mbservers.get(0
);
}
if (mbserver != null)
{
System.out.println("Found our MBean server"
);
} else
{
mbserver = MBeanServerFactory.createMBeanServer
();
}
return mbserver
;
}

크리에이티브 커먼즈 라이선스
Creative Commons License
posted by ongs brother
 <PREV 1 2 3 4 5 ... 39    NEXT>