본문 바로가기

Java

(14)
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..
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 파일..
Java) DataSource 란... ## DataSource란.. (참고 : http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/datasource.html ) 일단, "DataSource"는 자바에서 Data souce들을 표현하는 객체를 의미한다. data source란 말은, 데이터를 저장하는 기능을 의미하는데, 규모가 큰 회사의 데이타베이스처럼 복잡할수도 있고, row/column등으로 표현되는 파일일 수도 있다. 또한 원격서버에 있을수도 있고, 로컬 데스크탑에 있을 수도 있다. 어플리케이션은 Connection을 맺어, data source에 접근하는데, 이때 DataSource 객체는, DataSource 의 인스턴스가 나타내는 특정 data source에 대해 연결을 맺는 "Fa..
Java) Business Object 와 DAO ## Business Objects와 DAO에 대해서 짧게 잘 설명이 되어있슴. (참고 : http://mariaflorea.blogspot.com/2007/05/business-objects.html http://openframework.or.kr/framework_reference/spring/ver1.2.2/html/dao.html ) 1. DAO란, 객체지향 설계 패턴중 하나로서 Database나 File등과 같은 '여러 저장매체'와 Application간의 Common Interface를 제공해주는 컴포넌트이다. 즉, 어플리케이션 입장에서, 일관성 있는 데이터 접근을 보장해준다. 2. Business Object 비지니스 객채란, 객체지향 프로그램에서 Domain내 Entity들을 추상화하는 객..