본문 바로가기

Programming/JAVA19

File Encoding 2013. 5. 16.
C:\Program Files\Java\jre6\..\lib\tools.jar 에러가 날 때 maven 프로젝트를 다운 받고 maven install을 눌렀는데C:\Program Files\Java\jre6\..\lib\tools.jar라는 error 표시와 함께 install이 안되는 문제가 발생하였다. 열심히 구글링을 한 결과. JDK와 JRE를 함께 깔았을 경우 JRE의 VM을 참조함으로써 생기는 문제.. JDK 내의 JRE VM을 추가한 후 default로 해주면 위의 문제가 해결된다.JDK 변경 후 maven update project는 필수!!1. 프로젝트의 property -> Java Build Path -> Add Library 클릭 2. JRE System Library 클릭 후 Next 클릭 3. Alternate JRE 선택 후 Installed JREs 클릭 4. Sear.. 2013. 2. 22.
equals와 ==의 차이 equals는 객체 안에 있는 내용을 비교하고 ==은 객체 자체를 비교한다.예를 들어, String s1 = "abc";String s2 = "abc"; 이런 객체가 생성되었을 시, true가 되지만s1.equals(s2) == true만약String s1 = "abc";String s2 = new String("abc"); 이렇게 s2에 대해 새로운 객체를 생성할 시에는 false가 된다. (s1 == s2) == false 2013. 1. 24.
스태틱 팩토리 (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. 1. 15.
static 초기화 오픈 소스를 분석하다가 의문(?)스러운 코드를 접하게 되었다. C, C++ 개발자로서는 이해할 수 없는... ㅋㅋ 저 static {} 는 도대체 모지??? 함순가.. property인가.. 구글링을 해 본 결과, JAVA에서는 static 변수를 초기화 할 때 위와 같이 사용한다고 한다. 간단히 static int a = 3; 이렇게 선언할 경우도 있지만, 위와 같은 코드일 경우엔 마땅히 선언할 방법이 없기 때문이다. 그렇다고 생성자 함수에서 선언하고자 한다면, 인스턴스를 만들어야 하기 때문에 비효율적이다. 신기한 JAVA의 세계.. 2013. 1. 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. 1. 8.
failed to load the JNI shared library jvm.dll 몬가 해서 봤더니 64bit 운영체제에서 32bit 이클립스를 설치해서 생긴 오류..64bit로 다시 다운받아서 하니 잘된다! 2013. 1. 4.
Collection 정리 Vector- 동기화 처리가 내부적으로 이루어진다.- 예를 들어 한 쓰레드에서 어떤 작업을 하고 있으면 다른 쓰레드에서는 접근할 수 없도록 한번에 하나의 쓰레드만 사용할 수 있도록 내부적으로 처리되고 있다.- 단일 쓰레드에서는 불필요한 처리 코드만 가지게 되기 때문에 ArrayList나 LinkedList에 비해 성능 저하를 가져오게 된다.- 동기화를 고려한다면 Vector의 사용 보다는 Collection.synchronizedCollection(Collection C)나 synchronizedList, Map 등을 사용하는 것이 낫다. ArrayList- 내부적으로 따로 동기화 처리를 하지 않는다.- 동기화 처리를 위해선 Collection.synchronizedCollection을 사용해야 한다.-.. 2013. 1. 3.
동적 라이브러리 호출 JAVA에서도 C++과 같이 동적으로 Lib(자바에서는 Jar)를 호출할 수 있다. 2013. 1. 3.