Programming/JAVA(19)
-
스태틱 팩토리 (Static Factory)
생성자를 사용하는 것 대신 Static Factory Method를 고려하자. Static Factory Method란? 클래스의 인스턴스를 static public 매서드를 이용하여 리턴하는 방법. 글로는 어렵게 설명 되어 있으나 코드를 보면 아주 단순하다. public class Test{ public Test(){...} 위의 예시는 일반적인 생성자 함수 방식이고, 아래의 방식이 static Factory Method를 활용한 방식이다. public class Test{private static final Test INSTANCE = new Test();private test(){}public static Test getInstance(){return INSTANCE;} 그렇다면 Static Fac..
2013.01.15 -
static 초기화
오픈 소스를 분석하다가 의문(?)스러운 코드를 접하게 되었다. C, C++ 개발자로서는 이해할 수 없는... ㅋㅋ 저 static {} 는 도대체 모지??? 함순가.. property인가.. 구글링을 해 본 결과, JAVA에서는 static 변수를 초기화 할 때 위와 같이 사용한다고 한다. 간단히 static int a = 3; 이렇게 선언할 경우도 있지만, 위와 같은 코드일 경우엔 마땅히 선언할 방법이 없기 때문이다. 그렇다고 생성자 함수에서 선언하고자 한다면, 인스턴스를 만들어야 하기 때문에 비효율적이다. 신기한 JAVA의 세계..
2013.01.11 -
맵 사용에 따른 메모리 누수
가비지 컬렉터에서는 논리적으로 더이상 사용하지 않는 객체에 대한 정리 작업을 실행한다. 하지만 만약 이러한 객체가 맵 안에 존재하고 있다면 어떻게 될까? 정리 작업을 실행해야 할까 말아야 할까??정답은 '정리 작업을 실행하지 않음' 이다.아래의 예제 소스를 보면,public class Manager {private Map map = new Hashmap();public void setData(Key k, Value v){map.put(k, v);}public Object getData(Key k){ return map.get(k);}public void removeData(Key k){map.remove(k);} 해시 맵을 사용할 때 위와 같은 방법으로 사용을 많이 한다. 위의 코드에서 발생할 수 있는 ..
2013.01.08 -
failed to load the JNI shared library jvm.dll
몬가 해서 봤더니 64bit 운영체제에서 32bit 이클립스를 설치해서 생긴 오류..64bit로 다시 다운받아서 하니 잘된다!
2013.01.04 -
Collection 정리
Vector- 동기화 처리가 내부적으로 이루어진다.- 예를 들어 한 쓰레드에서 어떤 작업을 하고 있으면 다른 쓰레드에서는 접근할 수 없도록 한번에 하나의 쓰레드만 사용할 수 있도록 내부적으로 처리되고 있다.- 단일 쓰레드에서는 불필요한 처리 코드만 가지게 되기 때문에 ArrayList나 LinkedList에 비해 성능 저하를 가져오게 된다.- 동기화를 고려한다면 Vector의 사용 보다는 Collection.synchronizedCollection(Collection C)나 synchronizedList, Map 등을 사용하는 것이 낫다. ArrayList- 내부적으로 따로 동기화 처리를 하지 않는다.- 동기화 처리를 위해선 Collection.synchronizedCollection을 사용해야 한다.-..
2013.01.03 -
동적 라이브러리 호출
JAVA에서도 C++과 같이 동적으로 Lib(자바에서는 Jar)를 호출할 수 있다.
2013.01.03