본문 바로가기

.주제별/Java

(19)
Java) Sublist , Not-serializable 자바 프로그램의 상태를 저장할때, 일반 텍스트 파일로 저장할 수도 있고, 직렬화를 통해서 저장할 수도 있다. 직렬화를 하려면, Class에서 "implements Serializable"을 통해서 인터페이스를 구현해야 한다. 또, 직렬화를 하면, 이 객체와 관련된 것이 모두 직렬화(자동) 되어서 저장이 된다. 하지만, 직렬화 되지 않는 경우가 있다. 예를들어, Collection 클래스에서 'sublist'라는 메서드를 사용하는 경우 sublist 는 'java.util.RandomAccessSubList'의 instance를 리턴하게 되는데, 이는 직렬화가 안된다. 이런 경우, ArrayLIst와 같은 'Serializable List'에 그 내용을 담아야 한다. 다음은 직렬화 되지 않는 경우 Coll..
Java) Matrix Package (Jama, Colt, MTJ) Java 에서 SVD 계산하는 일이 있어서, 관련 Package 를 찾아봤는데, 제목에 있는 3개가 유명하다는 것을 알았다. 1. Jama JAMA 링크 Dense Matrix을 다루는데 있어서 작고 가볍다. LNPACK , EISPACK 에 적용된 알고리즘과 같은 알고리즘을 사용한다. 2. Colt COLT 링크 Jama 보다 조금 높은 성능을 보인다 하는데, (테스트 결과로는 별 차이 없다) 다양한 Matrix Algorithm을 보여주고 있다. 3. MTJ MJT 링크 Jama 보다 더 많은 Matrix Type을 포함하고 있고, Colt 보다 조금더 최적화된 Sparse matrix을 다룰 수 있다 한다. * 위 3개의 Library을 통해서 MxN Matrix에 대한 SVD 을 구해보았다. M,..
Java) Exception 요약 참고 : http://benelog.egloos.com/1901121 http://crosscutter.info/56 http://crosscutter.info/63 1. Exception 사용 예제 1) 예외를 던지는 위험한 코드 코드에서 예외를 던진다면, 반드시 메소드를 선언하는 부분에서 throws 키워드를 써서 선언해줘야한다. public void takeRisk() throws BadException { if(abandonAllHope) { throw new BadException(); } } exception를 선언하는 과정을 통해, BadException을 던질 수 있다는 것을 외부에 알린다. 2) 위험한 메소드를 호출하는 코드 예외를 던지는 메소드를 호출하면, 예외발생 가능성이 있음을 알고..
Java) 정렬, Collections 사용 Java에서 정렬을 하려면, TreeSet을 이용하는 방법이 있다. 또 다른 방법으로는, Collections 클래스를 활용하는 방법이 있다. Song 클래스를 다음과 같이 정의하자 public class Song { private String title; private String author; private int rank; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } pub..
iBATIS) count함수을 통해서 int형을 받아오다가.. ****문제 : iBATIS 에서 count() 을 통해서 int 형을 받아오려 함. ### SQL Map 파일은 다음과 같다. .... select count(VALUE) as VALUES ... ### 이를 받아와서 처리한 DAO 단 List list = getSqlMapClientTemplate().queryForList("Statement.statement01", map); Iterator iter = rList.iterator(); while(iter.hasNext()){ HashMap map = (HashMap)iter.next(); int value = ((Integer)map.get("value")).intValue();
iBATIS) queryForMap, queryForList 사용하기 TABLE "table01" ACCOUNTID GROUPID samsik01 group01 samsik02 group02 samsik03 group03 1. queryForMap 의 경우 Map map = getSqlMapClientTemplate().queryForMap("Statement.state01", map, "accountId"); map : Parameter 로 map을 사용하기로 함 2. qeuryForList 의 경우 List list = getSqlMapClientTemplate().queryForList("Statement.state01", map); SQL Map을 어떻게 구성하냐에 따라 여러가지로 사용할수가 있는데 select * from TABLE01 where /* 여기는 pr..
Java) Int , int , Object 1. int 타입과 Object 타입의 Casting 할 때 다음처럼 하자. # int 형을 Object형으로 int cnt = 5; Object CNT = new Integer(cnt); cnt는 int 형, CNT는 Object형이라는것. # Object형을 int형으로 Ojbect 형 ==> Integer 형 ==> int형 메소드 사용 int cnt = ( (Integer) CNT ).intValue(); 2. boolean, Boolean ( Obejct ) 는 다음처럼 # boolean 형을 Object 형으로 boolean bool = true; Boolean objBool = Boolean.valueOf(bool); or Boolean objBool = new Boolean(bool); #..
Java) Eclipse + Junit 환경 : Eclipse 3.3.x + JDK 1.4 문제 : Junit 특정(3.8) 버전 사용하기 JDK 1.4 기반에서는, Junit 4.x 을 사용하지 못한다. 따라서, Junit 3.8로 환경을 맞추어서, 테스트 하려는 데 다음과 같은 에러가 발생한다. (물론, Library Path 를 3.8로 잘 맞추었다.) 문제는, Eclipse 3.3 에서는 기본으로 Junit 4.3 을 제공한다는 것이다. 다음은 Eclipse -> plugins 에서 확인된 것이다. 방법은 2개이다. 첫째는, Test 할 소스의 "Open Run Dialog" 을 통해서 Junit 버전을 지정해준다. 다음처럼 지정해주자. 두번째 방법으로는, Whiteship Blog의 "Eclipse가 빌드경로에 추가해주는 Jar 파일..