String.intern()은 뭘 하는거지?

String.intern에 설명에 앞서 다음 퀴즈를 한번 보자.   전제조건) String string = “test”; 전제조건) String test = “test”; Q1) test == “test”  ? Q2) test == new String(“test”) ? 위 문제의 답(java 1.6+에서)은 각각 true, false 이다.   왜 그럴까? 위 문제의 답을 알기 위해서는 intern이 뭘 하는지에 대해서 알아야 한다. 사실 위와 같은 답이 […]

equals()를 레퍼런스 비교하는데 사용 하지 마세요.

회사에서 다른 분의 코드를 보다가 다음 코드가 있어서 질문 했습니다. (해당 소스를 그대로 가지고 온것은 아닙니다.)

레퍼런스 비교하는데 썻다고 합니다. 그래서 조금 더 찾아봤습니다. equals는 모든 클래스가 암묵적으로 확장하는 Object의 메소드 입니다. 그래서 오버라이딩을 하지 않으면 Object에 정의된 equals()를 사용합니다. 그 구현을 보니 다음과 같았습니다.

결국엔 객체간의 레퍼런스 비교하는 ‘==’를 사용하고 있습니다. 그럼 […]

XStream을 이용한 언마샬링 Java 모델 생성 방법

내가 일하는 곳에서는 데이터를 제공해주는 시스템이 노후화되어 있는 부분이 많다. 그래서 간단한 데이터도 대부분 XML형태로 되어 있고 well-formed 가 아닌 곳이 많다. 난 XStremam을 XML을 통해 받는 데이터를 Java 오브젝트로 변환하는데 사용한다. 이유는 생산성이 빠르기 때문이다. 요새는 Jaxb 2.x 에서도 annotation 기반으로 설정이 가능해서 유사하다고는 하는데, 난 아직 XStream만 써봤다. 이제 간단히 사용하는 방법이다. Java […]

문자열을 거꾸로(reverse) 뽑아내기

문자열 조작에 대한 여러가지 요구사항이 있습니다. 그리고 이를 풀어내는 다양한 솔루션이 존재하구요. 이 범주에 속하는 것중에 하나가 문자열을 거꾸로 변환하는 질문인데요. 이 작업을 수행하기 위해서는 문자열을 배열로 변경하고 그 인덱스의 끝을 구해서 처음까지 리턴하는 방식으로 처리할 수 있습니다. 이 글에서는 이 방법이 아니라 JDK에서 제공하는 방법을 이용하는 솔루션을 소개합니다. 간단합니다. StringBuilder의 reverse()를 이용합니다. [java]<span class="Apple-style-span" […]

톰캣(tomcat)에 jmx를 이용해 모니터링 하기

자바에는 java management extentions(JMX)라는게 있습니다. 이게 뭔가하니 jvm의 정보를 런타임에 얻어와서 모니터링 할 수 있게 해주는 기술입니다. 이제 jmx를 톰캣에 설정하는 방법에 대해 설명하도록 하겠습니다.  테스트환경: windows XP + tomcat 6.x  jconsole을 콘솔창에서 입력하면 (단, %JAVA_HOME%/bin이 path에 잡혀있어야 합니다. 아니라면 해당 디렉토리가서 실행해야 합니다.) 다음 창이 뜨면서 접속이 가능한 프로세스를 선택할 수 있습니다.로컬 프로세스를 보시면 […]

[번역] Adjust JPEG image compression quality when saving images in Java

java의 imageIO를 이용해 ‘JPEG’ 타입으로 이미지를 저장할 경우 이미지의 질이 떨어지는 현상이 발생합니다. 이 포스트에서는 이미지의 질을 떨어뜨리지 않고 저장하는 방법을 소개합니다. 원문:http://www.universalwebservices.net/web-programming-resources/java/adjust-jpeg-image-compression-quality-when-saving-images-in-java imageIO.write 메소드를 이용해서 JPEG 이미지를 저장해봤다면 이미지의 질이 낮아지는걸 알 수 있을겁니다. 이는 이미지 저장을 하는데 압축의 질을 어떻게 할지 알려주지 않았기 때문입니다. 간단히 imageIO.write를 이용해서 JPEG 파일을 저장합니다. 아래 처럼 압축의 […]

default 자바 접근 제어자 (java access modifier)

참조 URL: http://www.javabeginner.com/learn-java/introduction-to-java-access-modifiers <-frame frameborder=”0″ scrolling=”yes” style=”width: 100%; height: 100%; background-color: rgb(255, 255, 255); “> 자바 개발을 4년 넘게 하면서 어느정도 초급 개발자는 넘지 않았나 싶었는데, 이건 저의 오해였습니다. 이런 생각을 하게된 이유는 명확한 사실(팩트(fact) <- 요새 이런 단어를 자주 쓰는 분위기라서 저도 씀)에 근거하지 않은 기본 개념의 부재. 읔 짧게 말하면 기본이 안됐다는 얘기… 읔 […]

Manifest file 활용

Java에서는 다 수의 class 파일을 하나의 의미있는 집합으로 묶기 위해 jar(Java Archive File)을 이용합니다. 오픈소스 혹은 상용 라이브러리를 프로젝트에 추가하면 하나 이상의 jar 파일로 이루어져 있는 것을 심심치 않게 보실 수 있을 것입니다.사실 jar가 없어도 Java 어플리케이션을 돌리는데 문제는 없습니다. class 파일을 classloader에 살짝 올려놓고 실행하면 됩니다. 그런데 왜 jar란게 생겼고 사용할까요? jar를 사용하므로서 얻을 […]