'전체보기'에 해당되는 글 245건
- 2009.06.01 리눅스마스터2급 대비 [2/3]
- 2009.06.01 리눅스마스터2급 대비 [1/3]
- 2009.06.01 리눅스마스터2급 나름정리
- 2009.05.20 남자머리 스타일 뭐가 좋을려나...
- 2009.05.03 Window 에서 연결될 네트워크 연결끊기
- 2009.04.30 netstat 명령어 - 포트 오픈 여부 확인하는 방법
- 2009.04.15 JVM Memory
- 2009.04.15 JVM(Java Virtual Machine) 성능 조정
- 2009.04.15 finalize method란 무엇인가?
- 2009.04.15 POI Style
Window 에서 연결될 네트워크 연결끊기 Enjoy/etc2009. 5. 3. 22:21
Window 에서 연결될 네트워크 연결끊기
C:\>net use * /d
다음 원격 연결이 있습니다.
XXXXXXXXXXXXXXXXXXXXXXX
계속하면 연결이 취소됩니다.
이 작업을 계속하시겠습니까? (Y/N) [N]: Y
명령을 잘 실행했습니다.
netstat 명령어 - 포트 오픈 여부 확인하는 방법 Enjoy/etc2009. 4. 30. 10:21
[ AIX 환경 ]
1. NETSTAT 옵션
# netstat ?
[-D]
[-cCgimnrsPv] [-f address_family] [-p proto] [core unix netinet addr]
[-n] [-I interface] [interval] [core unix netinet addr]
# netstat
Proto Local Address Foreign Address State
------- --------------- ------------------ -----------------
TCP acy7807:1023 211.233.45.89:80 ESTABLISHED
- Local Address : 현재 열려 있는 사용자 컴퓨터의 IP/호스트 네임과 사용중인 포트
- Foreign Address : 현재 사용자의 컴퓨터에 접속되어 있는 IP/호스트 네임과 사용중인 포트
- State : 연결 상태를 나타내는 것
- ESTABLISHED : 현재 연결되어 있다는 뜻
- LISTENING : 연결을 위하여 접속을 기다리는 상태
- TIME_WAIT : 이미 해당 사이트와 연결이 종료되었거나 다음 연결을 위해 기다리는 상태
- SYN_SENT : 접속하기 위해 패킷을 보냈다는 뜻
2. NETSTAT 응용
# netstat -na (열려 있는 모든 포트)
# netstat -na | grep LISTEN (LISTEN 되는 모든 포트)
# netstat -na | grep ESTABLISHED | wc -l (모든 서비스 동시 접속자 수)
# netstat -na | grep *.80 | grep ESTABLISHED | wc -l (웹 동시 접속자 수)
# netstat -na | grep .1521 | grep ESTABLISHED | wc -l (DB 동시 접속자 수)
[ NT 환경 ]
1. NETSTAT 옵션
C:\> netstat ?
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p 프로토콜] [-r] [-s] [-v] [시간]
-a 모든 연결 및 수신 대기 포트를 표시합니다.
-b 각 연결 또는 수신 대기 포트를 만드는 데 관련된 실행 프로그램을
표시합니다. 잘 알려진 실행 프로그램에서 여러 독립 구성 요소를
호스팅하는 경우에는 연결 또는 수신 대기 포트를 만드는 데
관련된 구성 요소의 시퀀스가 표시됩니다. 이런 경우에는
실행 프로그램 이름이 아래쪽 대괄호 안에 표시되어 있고 위에는
TCP/IP에 도달할 때까지 호출된 구성 요소가 표시되어 있습니다.
이 옵션은 시간이 오래 걸릴 수 있으며 사용 권한이 없으면
실패합니다.
-e 이더넷 통계를 표시합니다. 이 옵션은 -s 옵션과 같이 사용될
수 있습니다.
-n 주소 및 포트 번호를 숫자 형식으로 표시합니다.
-o 각 연결의 소유자 프로세스 ID를 표시합니다.
-p 프로토콜 지정한 프로토콜에 해당되는 연결을 표시합니다. 프로토콜은
TCP, UDP, TCPv6 또는 UDPv6 중 하나입니다. -s 옵션과 함께
사용하여 프로토콜별 통계를 표시할 경우 프로토콜은 IP, IPv6,
ICMP, ICMPv6, TCP, TCPv6, UDP 또는 UDPv6 중 하나입니다.
-r 라우팅 테이블을 표시합니다.
-s 프로토콜별로 통계를 표시합니다. 기본값으로 IP, IPv6, ICMP,
ICMPv6, TCP, TCPv6, UDP 및 UDPv6에 관한 통계를 표시합니다.
-p 옵션을 함께 사용하면 기본값의 일부 집합에 대한 통계만
표시할 수 있습니다.
-v -b 옵션과 함께 사용하면 모든 실행 프로그램에 대한 연결
또는 수신 대기 포트를 만드는 데 관련된 구성 요소의 시퀀스를
표시합니다.
시간 다음 화면으로 이동하기 전에 지정한 시간 동안 선택한 통계를
다시 표시합니다. 통계 표시를 중단하려면 CTRL+C를 누르십시오.
지정하지 않으면 현재 구성 정보를 한 번 표시합니다.
2. NETSTAT 응용
C:\> netstat -a
: 연결된 혹은 연결을 기다리고 있는 모든 포트를 보여줍니다. -a 옵션이 없으면 연결된 목록만 보여주는데, -a 옵션을 주면 연결되었거나 연결을 기다리는 목록을 모두 보여줍니다.
C:\> netstat -n
: 통상 연결 목록이 컴퓨터 이름이 나오는데, -n 옵션을 주면 컴퓨터 이름 대신 ip 주소가 뜹니다.
C:\> netstats -an or -na
: 컴퓨터와 연결되었던 혹은 연결을 기다리는 목록을 ip 주소로 바꾸어서 보여줍니다.
JVM Memory Enjoy/JAVA2009. 4. 15. 17:59
* JVM Memory 영역에 대한 설명
- Method Area : 메소드와 클래스 변수를 저장하기 위한 공간, 모든 프로그램에 의해 공유.
- Heap Area : 사용자가 생성하는 Java Object들이 저장되는 공간, 동적으로 할당하여 사용되어짐.
- Stack Area : 메소드 호출시 해당 메소드의 매개변수, 지역변수, 임시변수 등을 저장하기 위한 Stack 구조의 메모리.
- Native Heap Area : Java Object가 아닌 Native Object들이 거주하는 공간. OS 차원에서 결정.
- Permanent Space : Class에 대한 Meta 정보를 저장하는 공간. (Permanent Space는 Java Heap의 하위 영역)
* Java 실행 Option
1. -X Option (모든 VM에서 동작하지 않을 수 있는 비표준 option이며, 버젼별로 언급없이 변경되어질 수 있음)
-Xms : 초기 Heap size 설정
-Xmx : 최대 Heap size 설정
-Xss : 각 Thread에 할당되는 Stack size 설정
-Xmn : New 영역을 위한 Heap size 설정
2. -XX Option (올바른 동작을 위해 특정한 시스템 요구사항들이 있으며, 시스템 설정 파라미터에 대한 접근 권한이 요구됨)
-XX:PermSize : 초기 Permanent size 설정
-XX:MaxPermSize : 최대 Permanent size 설정
※ 참고 사이트 : http://blogs.sun.com/watt/resource/jvm-options-list.html
http://www.monosun.com/doc/hotspotvmoption.html
* Heap Size 구하기
long heapSize = Runtime.getRuntime().totalMemory();
String heapSizeMB = (heapSize / (1024*1024)) + "MB";
* 영역별 OutOfMemoryError 대처 방법
1. Heap Area
Exception in thread "main": java.lang.OutOfMemoryError: Java heap space
Exception in thread main: java.lang.OutOfMemoryError: Requested array size exceeds VM limit
원인 : Heap size의 부족으로 Java Object를 생성하지 못하여 발생
해결 : 1. -Xmx Option을 이용하여 최대 Heap size의 크기를 늘려줌
2. Application 로직이 잘못되었거나 JDK나 WAS의 Bug로 인한 Memory 누수가 있는지 확인하여 수정
3. finalize method에 의해 즉각적인 GC가 이루어지지 않으므로 로직 수정을 통해 해결
※ Object Allocation Profiling (Hprof)
java -Xrunhprof:heap=sites [Main Class]
java -Xrunhprof:heap=sites,doe=n [Main Class] (Thread Dump 생성)
2. Permanent Space
Exception in thread "main": java.lang.OutOfMemoryError: Perm Gen space'
원인 : Permanent 저장 공간이 부족하여 발생.
JSP -> Servlet 변환, Reflection을 사용하여 동적으로 로딩되는 Class가 많은 경우에 발생할 수 있으며,
WAS의 Class Reloading 기능이 자주 실행 될 경우에도 발생할 수 있음.
해결 : -XX:PermSize, -XX:MaxPermSize Option을 이용하여 크기를 늘려줌
※ Class Loading Monitoring
java 실행시 -verbose:gc을 사용하여 Class가 Loading 되는 것을 Monitoring
3. Native Heap Area
java.lang.OutOfMemoryError: request bytes for . Out of swap space?
java.lang.OutOfMemoryError: (Native method)'
java.lang.OutOfMemoryError: unable to create new native thread
원인 : Native Heap memory가 부족하여 발생
해결 : 1. Physical memory를 초과할 경우 Virtual Memory를 요청하여 필요한 메모리를 확보하게 되는데,
이 과정에서 오류가 발생할 경우 OS가 제공하는 툴을 통해 이를 모니터링 하고
이 공간 자체가 부족할 경우 크기를 늘려줌
2. -Xmx Option을 이용하여 Heap Area 공간을 줄이고 Native Heap Area 공간을 늘림
3. Thread Stack Space가 부족한 경우 Thread의 수를 줄이거나,
-Xss Option을 통해 Thread별 Stack Size를 줄여줌
(단, Thread별 Stack Size를 과도하게 줄였을 경우 Stack Overflow Error가 발생할 수 있음)
참고 사이트 : http://ukja.tistory.com/61
http://2005elc.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTIwODY=
JVM(Java Virtual Machine) 성능 조정 Enjoy/JAVA2009. 4. 15. 16:20
운영 체제: AIX, HP-UX, Linux, Solaris, Windows
목차 및 검색 결과 개인화
JVM(Java Virtual Machine) 성능 조정
출처: http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/tprf_tunejvm.html
Java 프로세스인 Application Server는 실행하고 서버에서 실행하는 Java 응용프로그램을 지원하기 위해 JVM(Java Virtual Machine)이 필요합니다. Application Server 구성의 일부로서 JVM의 시스템 사용을 개선시키는 설정을 미세 조정할 수 있습니다.
이 타스크 정보
JVM은 Java 기반 응용프로그램을 위한 런타임 실행 환경을 제공합니다. WebSphere Application Server는 JVM 런타임 환경과 Java 기반 서버 런타임의 조합입니다. 다른 JVM 프로바이더의 JVM에서 실행할 수 있습니다. 사용자의 Application Server가 실행 중인 JVM 프로바이더를 판별하려면 WebSphere Application Server app_server_root/java/bin 디렉토리에서 java –fullversion 명령을 발행하십시오. 또한 서버 중 하나에서 SystemOut.log를 검사할 수도 있습니다. Application Server가 시작할 때 WebSphere Application Server는 JVM 프로바이더 정보를 포함한 JVM에 관한 정보를 이 로그 파일에 기록합니다.
- IBM JVM
- Solaris의 Sun HotSpot JVM 및 HP의 HP-UX용 JVM을 포함한 Sun HotSpot 기반 JVM
- 컴파일러 조정. 모든 JVM은 JIT(Just In Time) 컴파일러를 사용하여 서버 런타임 중에 Java 바이트 코드를 기본 명령어로 컴파일합니다.
- Java 메모리 또는 힙 조정. JVM 메모리 관리 기능 또는 가비지 콜렉션이 JVM 성능 향상을 위한 가장 큰 기회 중 하나를 제공합니다.
- 클래스 로딩 조정.
프로시저
다음에 수행할 내용
추가 조정 정보는 Java 메모리 성능 조정 팁 의 내용을 참조하십시오.
finalize method란 무엇인가? Enjoy/JAVA2009. 4. 15. 16:17
finalize method란 무엇인가?
최상위 클래스인 Object클래스는 finalize라는 이름의 protected 메쏘드를 가지고 있다. 이것은 이 클래스의 객체가 가비지 콜렉션 과정에서 가지고 있던 리소스가 반환될 때 해야 할 일에 대한 정의를 가지고 있다. 물론, 이것은 사용자가 정의한 클래스에서 재정의할 수 있다. 만일 사용자의 클래스에 이 메쏘드를 재정의했다면, 그 finalize메쏘드를 객체의 Finalizer라고 부른다. 그렇다면 이것은 누가 호출하는가? 자바 가상 머신이 그 객체가 가지고 있는 메모리가 반환되기 전에 이것을 수행한다. 이 메쏘드를 재정의함으로써, 단순히 메모리를 반환하는 것 이상의 작업을 할 수 있다.
여기에 대한 정의는 자바 가상 머신에 되어 있지 않다. 단순히 그 객체가 사용하고 있던 리소스가 재사용되기 전에만 실행되면 된다. 어느 쓰레드가 이 파이널라이저를 실행해야 한다는 규정도 없다. Object 클래스의 finalizer메쏘드가 하는 일은 아무 것도 없다.
또한 하위 클래스의 파이널라이저는 상위 클래스의 파이널라이저를 암시적으로 호출하지 않는다. 생성자와는 다르다. 생성자는 자신의 상위 클래스 객체의 생성자를 암시적으로 호출하게 된다. 그래서 하위 클래스의 파이널라이저는 항상 super키워드를 통해 상위 클래스의 파이널라이저를 호출하는 것이 좋다.
protected void finalize() throws Throwable {
super.finalize(); .....
}
파이널라이저의 구현
이 개념을 잡기 위해 두 종류의 애트리뷰트들을 규정하는 것이 좋겠다.
Reachability |
- reachable : 살아 있는 쓰레드들에 의해 지속적으로 접근될 수 있는 객체의 상태. 프로그램의 최적화는 이런 reachable한 객체의 숫자를 줄이는 방향으로 나갈 수 있다. 예를 들어, 사용자가 명시적으로 하지 않았더라도 컴파일러나 코드 생성기가 더 이상 사용되지 않을 객체의 레퍼런스에 대해 미리 null이라고 세팅함으로써, 빠른 시간 내에 가비지 수집이 될 수 있게 하는 것이다.
- finalizer-reachable : 현재 살아있는 쓰레드들에 의해 참조되지는 않으나, finalizable한 객체들에 의해 참조되고 있는 객체의 상태.
- unreachable : 어떠한 객체들로부터도 참조되지 않는 객체.
Finalization |
- unfinalized : 파이널라이저가 자동으로 수행되지 않은 객체의 상태.
- finalizable : 파이널라이저가 자동으로 수행되지 않은 상태이지만, 자바 가상 머신이 언제라도 파이널라이저를 수행할 수 있는 객체의 상태. 즉 파이널라이저에 의해서는 참조가 되고 있는 상태
- finalized : 파이널라이저가 자동으로 수행된 객체의 상태.
이와 같은 두 애트리뷰트의 부류를 고려한 객체의 라이프 사이클은 다음과 같다.
- A : 객체가 처음 생성되었을 때에는 reachable이면서 unfinalized한 상태이다
- 객체의 참조가 실행 도중 살아 있는 쓰레드로부터 접근할 수 없게 되면서 객체의 상태는 finalizer-reachable(B,C,D)나 unreachable(E,F)의 상태가 된다.
- 이 그림에서 주의깊게 봐야 할 것은 f-reachable한 상태에서 직접 unreachable한 상태로 이동하지는 않는다는 것이다. 파이널라이저가 수행시작되는 순간 reachable한 상태가 되면서 unreachable상태로 이동하게 되는 것이다.
- G,H : unfinalized상태의 객체가 f-reachable이나 unreachable상태가 된 것을 자바 가상 머신이 탐지하고 finalizable이라는 상태로 세팅한다. 그리고, 그 객체가 unreachable 상태라면 f-reachable상태로 바꾸어 파이널라이저가 수행될 수 있도록 한다.
- I : 파이널라이저가 수행되었고 unreachable이면 이 객체는 메모리로부터 제거된다.
- J,K : 자바 가상 머신은 finalizable한 객체에 대해서는 임의의 쓰레드를 이용해 파이널라이저를 수행시킬 수 있다. 이 경우에 객체는 finalized이면서 reachable한 상태가 된다.
- L,M,N : 위와 같은 작업에 의해 f-reachable이었던 다른 객체들의 상태가 reachable해지게 될 수도 있다.
- 위에서 한 가지 상태가 빠져 있다. finalizable이면서 unreachable한 상태로 이런 상태는 있을 수 없다. finaliable한 객체는 파이널라이저에 의해 접근될 수 있기 때문이다.
- O : 파이널라이저가 정의되지 않은 사용자 클래스의 경우 굳이 복잡한 상태를 거칠 이유가 없다.
강제 가비지 콜렉션 구현의 예 |
import java.lang.ref.*;
public class FinalizeTest {
String oops = "Oopsla";
static Reference weakref;
protected void finalize() throws Throwable {
System.out.println("Finalizer Called");
} public static void main(String[] args) {
FinalizeTest f = new FinalizeTest();
Reference weakref = new WeakReference(f);
System.out.println("Before GC = " + weakref.get());
f = null;
Runtime rt = Runtime.getRuntime();
long free = rt.freeMemory();
long oldfree;
do {
oldfree = free;
rt.gc();
free = rt.freeMemory();
} while (free > oldfree);
System.out.println("After GC = " + weakref.get());
}
}
실행 결과
Before GC = FinalizeTest@7923b8c9
Finalizer Called
AfterGC = null
클래스 파이널라이저
클래스가 언로딩될 때 암시적으로 호출되는 메쏘드를 다음과 같이 정의할 수 있다.
static void classFinalize() throws Throwable { . . . }[출처] finalize method란 무엇인가?|작성자 하얀나라
담아온곳 : http://sinope.tistory.com/tag/poi
============================================= 본문서는 자유롭게 배포/복사 할수 있지만 이문서의 저자에 대한 언급을 삭제하시면 안됩니다 저자 : GoodBug (unicorn@jakartaproject.com) 최초 : http://www.jakartaproject.com =============================================
Jakarta POI
IX. Cell을 좀더 유연하게!
1. Date타입 셀 만들기
① 소스
② 결과
③ HSSFDateFormat이 지원하는 날짜 포맷
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); 에서 다음과 같이 포맷을 정할 수 있다 (현재시간은 2005년 3월 14일 0시 52분 17초.. 헛 화이트데이 --;)
2. Cell의 Align속성
① 소스
② 결과
3. Cell의 Border 속성
① 소스
② 결과
③ HSSFCellStyle
HSSFCellStyle에는 다음과 같은 static 멤버변수가 존재합니다
ALIGN_CENTER | center horizontal alignment |
ALIGN_CENTER_SELECTION | center-selection? horizontal alignment |
ALIGN_FILL | fill? horizontal alignment |
ALIGN_GENERAL | general (normal) horizontal alignment |
ALIGN_JUSTIFY | justified horizontal alignment |
ALIGN_LEFT | left-justified horizontal alignment |
ALIGN_RIGHT | right-justified horizontal alignment |
ALT_BARS | Wide dots |
BIG_SPOTS | Large spots |
BORDER_DASH_DOT | dash-dot border |
BORDER_DASH_DOT_DOT | dash-dot-dot border |
BORDER_DASHED | dash border |
BORDER_DOTTED | hair-line border |
BORDER_DOUBLE | double-line border |
BORDER_HAIR | dot border |
BORDER_MEDIUM | Medium border |
BORDER_MEDIUM_DASH_DOT | medium dash-dot border |
BORDER_MEDIUM_DASH_DOT_DOT | medium dash-dot-dot border |
BORDER_MEDIUM_DASHED | Medium dashed border |
BORDER_NONE | No border |
BORDER_SLANTED_DASH_DOT | slanted dash-dot border |
BORDER_THICK | Thick border |
BORDER_THIN | Thin border |
BRICKS | Brick-like layout |
DIAMONDS | Diamonds |
FINE_DOTS | Small fine dots |
NO_FILL | No background |
SOLID_FOREGROUND | Solidly filled |
SPARSE_DOTS | Sparse dots |
SQUARES | Squares |
THICK_BACKWARD_DIAG | Thick backward facing diagonals |
THICK_FORWARD_DIAG | Thick forward facing diagonals |
THICK_HORZ_BANDS | Thick horizontal bands |
THICK_VERT_BANDS | Thick vertical bands |
THIN_BACKWARD_DIAG | Thin backward diagonal |
THIN_FORWARD_DIAG | Thin forward diagonal |
THIN_HORZ_BANDS | Thin horizontal bands |
THIN_VERT_BANDS | Thin vertical bands |
VERTICAL_BOTTOM | bottom-aligned vertical alignment |
VERTICAL_CENTER | center-aligned vertical alignment |
VERTICAL_JUSTIFY | vertically justified vertical alignment |
VERTICAL_TOP | top-aligned vertical alignment |
4. Cell의 색갈 채우기
① 소스② 결과
③ HSSFColor 정리!
5. Cell 병합
① 소스
② 결과
③ Region
특정셀을 합칠 때는 HSSFSheet의 addMergedRegion(Region region)와
합칠 셀의 영역을 나타내는 Region을 사용한다.
Region region = new (int 시작ROW, short 시작COL, int 종료ROW, short 종료COL);
6. Cell에 폰트 설정하기
① 소스
② 결과
=============================================
본문서는 자유롭게 배포/복사 할수 있지만
이문서의 저자에 대한 언급을 삭제하시면 안됩니다
저자 : GoodBug (unicorn@jakartaproject.com)
최초 : http://www.jakartaproject.com
=============================================