알아두면 좋은 IT 지식/Java 7

GC 분석 툴 - PMAT(IBM GC Pattern Modeling and Analysis Tool for Java Garbage Collector)

GC(Garbage Collection) 란? 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. (출처 : 위키백과) GC 로그 분석이 필요한 이유? 프로그램의 성능 문제나 메모리 관련 이슈(OOM 등) 발생 시 GC 로그 분석을 통해서 원인 파악 및 해결책(GC 튜닝 등)을 찾을 수 있다. 왜 IBM PMAT를 사용하는가? 프로그램 용량이 10MB 이하로 매우 가볍고 java가 설치된 환경에서 jar파일을 실행만 하면 된다. 단점으로는 분석기능이 단순하고 기본 지식이 없다면 사용하기에 어렵다고 느낄 수 있다. 다운로드 https://www.ibm.com/support/pages/ibm-pattern-modeling-and-analys..

GC 로그 분석 툴 - jstat 사용법

GC(Garbage Collection) 란? 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능이다. (출처 : 위키백과) GC 로그 분석이 필요한 이유? 프로그램의 성능 문제나 메모리 관련 이슈(OOM 등) 발생 시 GC 로그 분석을 통해서 원인 파악 및 해결책(GC 튜닝 등)을 찾을 수 있다. 왜 jstat를 사용하는가? Java HotSpot VM에 내장된 API를 사용하므로 추가 설치나 jvm옵션이 필요없고 동작 중인 서비스에 영향을 주지 않는다. 사용예제 jdk 설치 시 $JAVA_HOME/bin/jstat 유틸리티를 아래와 같이 여러 옵션을 추가하여 사용할 수 있다. 1. jstat -gcutil PID가 29597인 프로세스에 ..

자바 한글 인코딩 변환 (utf-8 to euc-kr java)

인코딩, 디코딩을 이해하기 위해서 선행되어야 할 개념으로 Binary(바이너리)가 있다 Binary란? 사람이 이해할 수 있는 문자를 컴퓨터가 이해할 수 있는 이진법(0,1)으로 표현한 표현식, 이진파일을 의미한다 문자를 바이너리로 변환하는 것을 인코딩 바이너리를 문자로 변환하는 것을 디코딩 이라고 한다 그리고 우리가 많이 사용하는 UTF-8, EUC-KR 등은 인코딩 방식 중 하나이다 그렇다면 자바에서는 어떻게 사용할까? 자바에서는 대표적으로 문자는 String타입을 바이너리는 byte array타입을 사용한다 즉, String을 byte[]로 변환할 때 인코딩 byte[]를 String으로 변환할 때 디코딩을 사용해주면 된다. 예제로 보면 아래와 같다 try{ //String을 byte[]로 인코딩 ..

[IT] Java Thread Dump 생성 및 분석 방법 (kill -3 / jstack / jcmd)

Java 프로세스의 현재 상태를 확인하는데 가장 좋은 방법 중 하나는 Thread Dump를 생성해 보는 것이다. 대부분의 Java 프로세스는 여러개의 쓰레드로 구성되어 있고, 각각의 쓰레드가 현재 무슨 일을 하고 있는지 알 수 있다면 Java 프로세스의 현재 상태나 이상 여부를 어느정도 알 수 있다. 일반적으로 '5초 간격으로 3번을 생성하라'는 말이 있지만 이는 상황에 따라서 반드시 조절이 필요하다. 예를 들어서 어떤 서비스가 10초간 동작하는데 중간에 발생하는 3초 정도의 지연 현상을 분석해야 한다면 최소한 2초 간격으로 5번은 발생 시켜야지만 해당 현상을 확인해 볼 수 있을 것이다. kill -3 PID kill -3 1111 리눅스 OS에서 표준 출력으로 쓰레드 덤프를 발생 시킨다. jdk 1...

JSON이란?

프로젝트를 하다보면 다른 시스템간에 데이터를 주고받을 일이 있다. 이때 주로 쓰이는 데이터형식 중 JSON에 대해서 알아보자. JSON(JavaScript Object Notation)은 보통 제이슨이라고 부른다. Java, C, C++, C#, Python 등 많은 프로그래밍 언어에서 쉽게 이용할 수 있기 때문에 서로 다른 시스템간의 데이터를 주고받을 때 많이 쓰인다. 웹 통신 시 header의 contentType은 application/json을 사용하고 dataType은 json을 사용한다. 데이터는 속성-값 쌍으로 표현되고 문법은 '{}', ':', ',', '[]', '"' 가 쓰인다. ex. {"Signal":"GET_TOKEN","AuthCode":"E0F3A07681940C8B2BD9B4..

url에서 pdf를 읽어와서 파일로 저장하기

프로그램 개발 시 보여주고자 하는 내용을 pdf로 변환해서 url로 제공하는 경우가 있다. 크롬의 경우 브라우저에 pdf뷰어가 내장되어 있어서 url을 호출하면 자동으로 화면에 보여지지만, IE는 OS에 설치된 pdf뷰어를 통해서 보여준다. 만약 OS에 adobet reader같은 pdf뷰어가 설치되어 있지 않다면 알 수없는 파일 형식으로 .pdf를 다운로드 받는 링크가 생성된다. 사용자 입장에서 OS나 브라우저 환경에 따라서 url호출 시 보여지는 방식이 다르기 때문에 불편할 수 있다. 이런 불편함을 해소하기 위해서 url호출 시 pdf를 파일로 자동으로 저장하는 java소스를 만들어 보자. import java.io.IOException; import java.io.File; import java.i..

XSLT란? java, javascript 소스 예시를 통해서 알아보기

xslt란 xml양식의 문서를 xsl스타일을 입힌 xhtml같은 양식의 문서로 변환하는 간단하면서 복잡한 기술이다. 자세한 이론은 아래 링크를 통해서 확인하도록 한다. tcpschool.com/xml/xml_xslt_intro www.w3schools.com/xml/xsl_intro.asp 예시를 들어서 알아보자. Java 소스 예시 Source xmlSource = new StreamSource(new StringReader(xml)); Source xsltSource = new StreamSource(new StringReader(xsl)); TransformerFactory ft = TransformerFactory.newInstance(); StringWriter writer = new Strin..