최근 성능 테스트를 위한 데이터를 생성하기 위한 로직을 자바로 만든 후 IDE(이클립스)를 사용해서 실행해 보았지만 네트워크 문제인지 아니면 PC의 성능문제인지 생각보다 속도가 느려 서버에서 직접 실행하려고 하니 갑자기 막막해졌다. ㅡㅡ;;; 그래서 자바 매인 클래스를 console에서 직접실행 하기위한 방법을 정리하였다. 상황 정리 - 하나의 클래스 파일에 모든 로직을 때려 밖았음 (최대한 단순하게...) - 의존성 관리가 귀찮아서 외부 Library의 사용을 최소화 하였으며, 오직 MySQL jdbc driver에 대해서만 의존성을 갖음 첫번째 방법 : 순수하게 JDK에서 제공하는 툴만을 이용한 방법 1. mysql jdbc driver jar 파일 다운로드 (열라 귀찮다 ㅡ_ㅡ;;) 2. javac..
오늘 Java의 Double.NaN 값을 비교하는 로직 때문에 완전 삽질을 했다. (덕분에 기록적인 혈압상승??을 맛보았다. ㅠ.ㅠ) NaN값을 갖을 수 있는 double 변수 value 에 대해 아래와 같은 비교 연산을 통해서 예외 처리를 하였다. if (Double.NaN != value) { . . . } 하지만 위의 연산으로는 value 변수의 값이 NaN임에도 불구하고 if문을 타는 경우가 발생했다. 간만에 엄청난 삽질을 한 결과 아래와 같이 처리해야 함을 알게 되었다. if (Double.isNaN(value)) { . . . } 참고로 Double.isNaN(value) 함수의 코드를 보니까 아래와 같이 되어 있었다. return (value != value); 오늘은 정말 엄한 삽질로 인하..
드디어 maven을 프로젝트에 도입할 기회가 생겨서 작업을 하던중에 삽질한 내용을 정리한다. 삽질 원인 - Oracle JDBC Driver는 라이센스 문제로 인해서 Maven Central 저장소에서 로컬 저장소로 jar 파일을 정상적으로 다운로드 받지 못한다!!! (오라클이 갑자기 싫어질라고 한다.) 해결방법 - 방법1 : pom.xml 파일에 http://mesir.googlecode.com/svn/trunk/mavenrepo 메이븐 저장소를 추가해서 사용하는 방법 com.oracle ojdbc14 10.2.0.4.0 mesir-repo http://mesir.googlecode.com/svn/trunk/mavenrepo *** 주의 사항 : mesir-repo 저장소를 추가하지 않고 ojdbc 의..
아래의 글은 Sun(Oracle?) Hotspot JVM을 기반으로 정리한 내용이다. JVM에서 GC는 크게 Minor GC와 Major GC로 나뉜다. Minor GC는 Young Generation영역을 정리하는 GC이고, Major GC는 Old Generation영역을 정리하는 GC이다. 그리고 Major GC는 Full GC로도 불린다. 하지만 일부 CMS Collector를 설명하는 글에서는 Major GC와 Full GC를 구분하기도 하는 것 같다. Major GC와 Full GC의 명확한 구분은 잘 모르겠다. Java Heap Memeory 구조 GC의 종류는 아래와 같다. =================================================================..
1. Channel의 타겟(Target)이 되는 것은 Direct Buffer(ByteBuffer.allocateDirect(1024)) 뿐이다. * None Direct Buffer를 Channel에 사용하는 경우 다음과 같은 과정을 거치기 때문에 성능이 저하된다. 1. 임시로 사용할 Direct Buffer 생성 2. None Direct Buffer의 데이터를 임시로 생성한 Direct Buffer로 복사 3. 임시로 생성한 Direct Buffer를 사용하여 저수준 IO를 수행한다. 4. 메소드가 끝나면 임시로 생성한 Direct Buffer는 비지 콜렉션의 대상이 된다. 2. Direct Buffer를 메모리에 로드 하거나 릴리즈하는 것은 None Direct Buffer를 생성, 제거하는 것에..
컴포넌트 컬렉션 맵핑을 시도해 보았다. 하지만 실패다. 원인 모른다. 하이버네이트는 이래저래 쉽지 않은 놈인 것 같다. ㅠ.ㅠ @Entity @Table(name = "TBL_CONTENT_META") public class ContentMeta extends AbstractModel { . . . @ElementCollection @JoinTable(name = "TBL_CONTENT_FILE", joinColumns = @JoinColumn(name = "CONTENT_ID")) @CollectionId(columns = @Column(name = "ID"), type = @Type(type = "int"), generator = "native") private Collection contentFil..
1. 메이븐 아키타입을 이용하여 jar 프로젝트를 생성한다. mvn archetype:generate -DgroupId=com.tutorial.maven -DartifactId=tutorial-maven -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 2. 이클립스 maven 플러그인 적용 - mvn eclipse:eclipse (프로젝트 재설정시 : eclipse:clean eclipse:eclipse) 3. 이클립스 프로젝트로 Import - 전제조건 : 이클립스에 m2eclipse 플러그인이 설치되어 있어야 한다... "File -> Import -> General -> Existing Projects into Wor..
아래와 같은 요구사항을 바탕으로 삽질을 한 내용을 정리한다. - appBase 를 변경한다... (내가 원하는 위치로...) - test.war 파일을 contenxt root path 를 "/"로 설정하여 배포하고자 한다. Case by Case 1. "/" 로 배포가 되긴하였지만, test/ 로도 배포가됨 - 문제점 : 중복 배포 문제가 발생.... - server.xml 파일 설정 - /home/hdw822/webapps 디렉토리에 ROOT, test 두개의 디렉토리가 생기며, WEB에서 접속시 / , test/ 로 접속하는 경우 동일한 어플 접속... 2. test/ 로만 배포가 됨... (1번의 경우와는 Context 에서 path 값이 "" --> "/" 변경됨) - 문제점 : context ..