본문 바로가기

Programming/Java

Java Remove all white spaces in String (문자열에서 모든 white space 제거하기) Java 에서 white space를 제거 하기 위해 보통 아래와 같은 방법을 쓸 수 있지만, String str = "some string"; String result = str.replaceAll("\\W", ""); 위의 구문은 정확하게 동작하지 않는다. String str = " *dev = delay[j]; // some comment: welcome to C Programming world"; System.out.println(str); String result = str.replaceAll("\\W", ""); System.out.println(result); 위와 같은 예제 소스를 수행하면 아래와 같은 결과를 얻을 수 있다. *dev = delay[j]; // some comment: we.. 더보기
Java 로 구현한 DFS (Depth First Search) 알고리즘 Tree traversal - DFS(Depth First Search) Tree 를 탐색하고자 할때, 사용되는 알고리즘 중에서 DFS 라는 알고리즘이 존재한다. DFS는 깊이우선 탐색으로서, Tree의 가장 깊숙한 곳까지 탐색하고 나서, 다시 Backtracking이라는 과정을 거치고, 다시 다른 노드들을 탐색하는 방식이다. 이 알고리즘은 미로찾기나 어떤 Grammar의 AST(Abstract Syntax Tree) 를 이용하여 Syntactic Analyzer를 만드는데 활용이 되는 중요한 알고리즘이다. DFS에 대한 자세한 설명은 아래 링크에서 확인하면 된다. http://en.wikipedia.org/wiki/Depth-first_search DFS의 기본적인 Traverse는 아래 그림과 같이 .. 더보기
Java 로 구현한 SHA-1 hash 암호화 알고리즘 Java 프로그램에서 SHA-1 hash 암호화 알고리즘을 사용하는 모듈이 필요하여 작성하였다. import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /* * SHA is a cryptographic message digest algorithm similar to MD5. * SHA-1 hash considered to be one of the most secure hashing functions, * producing a 160-bit digest (40 hex numbers) from any data with a maximum .. 더보기
Java Singleton Pattern 오늘은 Singleton Pattern 에 대해서 글을 적으려고 해요. 한국어로는 싱글턴 패턴이라고 하는데, 저는 원문을 살려서 의미가 명확하게 드러나도록 할게요. Singleton pattern 은 유일무이한 객체를 만들어 내는 패턴 이라고 보면 됩니다. 객체를 반드시 한개만 생성 해야만 하는 곳에서 사용이 됩니다. 예를 들어, Device Driver, Thread Pool 같은 것들에서 사용이 됩니다. 내용은 쉽지만, Singleton 을 재대로 구현 하려면 상당한 지식이 필요하다고 생각합니다. Singleton 을 생성하는 방법은 대표적으로 4가지 방법이 있습니다. 1. Lazy Instantiation 2. synchronize 를 하는 방법 3. DCL(Double Checking Lock) .. 더보기
Eclipse 에서 JVM(Java Virtual Machine) Heap Size 조정해서 실행하기 아마 자바 프로그래머 중에서 프로그램을 오랬동안 짜다 보면, Eclipse에서 메모리를 많이 사용하는 덩치 큰 프로그램을 돌렸던 경험이 있을 것이다. 이때 아래와 같은 Java Heap Space가 부족하다는 경고메시지가 뜨면서 프로그램이 실행 되지 않는 경우가 있다. Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 이럴 경우에는 어떻게 문제를 해결 해야 할까? 고민하다가 다음과 같은 기사를 발견 할 수 있었다. Java programs executes in JVM uses Heap of memory to manage the data. If your Java program requires a large amount of mem.. 더보기
Java Deamonize Program jsvc JVM Heap Memory 설정법 jsvc 의 자세한 option 은 아래 링크에서 찾으면 된다. http://commons.apache.org/daemon/jsvc.html 예를 들어서 sample_class 가 deamon program으로 구동할때, JVM(Java Virtual Machine) 의 Heap Memory Size 의 최소값을 256 Mbyte, 최고값을 1024 Mbyte 로 하고 싶다면, -X option 을 주고 -Xms256m -Xmx1024m 이런식으로 주면된다. 그래서 다음과 같이 하면된다. jsvc -Xms256m -Xmx1024m -cp /some/dir/ sample_class 더보기
Java 1.5 class 파일을 1.4 혹은 1.3 class 파일로 변환해 주는 툴 Retrotranslator 보통 흔히 있는 일은 아니지만, Java 1.5 로 컴파일 된 class 파일들을 1.4 버전의 class 파일로 변환하고 싶은 경우가 있다. 이럴 경우에 간단하게 사용할 수 있는 툴이 있으니, 이름하여 Retrotranslator Java 1.4 혹은 1.3 의 빠진 API 를 구현하기 위해서 ASM 프레임워크를 사용하고, Concurrency 를 지원하기 위하여, Java 1.5 backport 를 사용하였다고 한다. 이 툴로 변환한 class 파일은 재대로 잘 작동하는 것을 확인하였다. 물론 아주 정확하다고 말 할 수 없지만, 급하게 필요한 경우 사용하면 좋을 거 같아서 링크를 남긴다. 관련 URL은 아래를 참조. http://retrotranslator.sourceforge.net/ 더보기
Bit Vector in Java Programming 하다보면, Bit Vector 를 사용할 일이 생긴다. 그래서 찾아보았는데, 역시나 Java API 안에 Bit Vector 가 이미 훌륭하게 구현이 되어 있었다. 이름하여, BitSet class 이 클래스는 java.util package 안에 있다. java.util Class BitSet This class implements a vector of bits that grows as needed. Each component of the bit set has a boolean value. The bits of a BitSet are indexed by nonnegative integers. Individual indexed bits can be examined, set, or c.. 더보기