본문 바로가기

java

Sorted Array to Binary Search Tree - 정렬된 배열을 이진 탐색 트리로 변환 정렬된 배열을 이진 탐색 트리로 변환하는 알고리즘이 있다. 아래와 같이 구성되어 있는데, Recursive 하게 작성되어 있다. Code는 Java 언어로 작성 되어있다. BinaryTree* sortedArrayToBST(int arr[], int start, int end) { if (start > end) return NULL; // same as (start+end)/2, avoids overflow. int mid = start + (end - start) / 2; BinaryTree *node = new BinaryTree(arr[mid]); node->left = sortedArrayToBST(arr, start, mid-1); node->right = sortedArrayToBST(arr,.. 더보기
Marshalling vs Serialization (마샬링 과 시리얼라이즈 의 차이) Marshalling 과 Serialization 의 차이에 대해서 알아 보고자 한다. 간혹 이 두가지 용어가 혼용되는 경우가 많은데, 분명히 차이가 존재한다. 정확하게 알고 넘어가자. :) 1. Marshalling 의미 객체의 메모리 구조를 저장이나 전송을 위해서 적당한 자료형태로 변형하는 것을 의미한다.Marshalling 은 보통 서로 다른 컴퓨터 혹은 서로 다른 프로그램 간에 데이터가 이동되어야 할 경우 사용된다.시리얼라이즈와 비슷한 경우는 객체가 원격의 다른 객체와 통신할 때 serialize 된 객체를 사용할 경우이다.Marshalling 을 수행함으로써 복잡한 통신, 사용자 정의/복잡한 구조의 객체들을 사용하는대신, 단순한 primitive 들을 사용할 수 있다. Marshalling 의 .. 더보기
Java byte code 살펴보기 이 포스팅의 일부는 IBM Developerworks의 Java bytecode 기사의 일부를 발췌하여 작성하였다. Java compiler는 Java source code를 Java byte code로 해석을 한다.Java byte code는 C/C++ 프로그램의 중간 표현식이라고 할 수 있는 assembler 에 해당한다.유능한 C/C++ 프로그래머는 Debugging과 성능, 메모리 사용을 tuning하기 위해서 assembler instruction 정보를 사용한다. 이는 Java Programmer가 Java bytecode의 instruction의 의미를 이해하는 것과 같은 맥락이다.그러므로, 좀더 고급 Java 프로그래머가 되기 위해서는 Java byte code에 대한 이해가 필요한다. J.. 더보기
Spring Hello World! Spring framework 를 이용하여, Hello World 프로그램을 작성 해 보자. 먼저 Spring framework 를 다운로드 하도록 하자. (아래 링크에서 받자)http://www.springsource.org/download Spring framework 는 apache-commons-logging 을 사용하므로, 이것도 다운로드 받자.http://commons.apache.org/logging/ 그 다음, Eclipse EE 를 다운로드 하도록 하자. (Eclipse IDE for Java EE developers)http://www.eclipse.org/downloads/ 1. Eclipse 에서 HelloWorld 라는 프로젝트를 생성하자.2. 생성한 프로젝트에 lib 라는 폴더를.. 더보기
Dump Java byte code from Java class file (Java byte code 보기) 이 포스팅의 일부는 IBM Developerworks의 Java bytecode 기사의 일부를 발췌하여 작성하였다. Java compiler는 Java source code를 Java byte code로 해석을 한다. Java byte code는 C/C++ 프로그램의 중간 표현식이라고 할 수 있는 assembler 에 해당한다. 유능한 C/C++ 프로그래머는 Debugging과 성능, 메모리 사용을 tuning하기 위해서 assembler instruction 정보를 사용한다. 이는 Java Programmer가 Java bytecode의 instruction의 의미를 이해하는 것과 같은 맥락이다. 그러므로, 좀더 고급 Java 프로그래머가 되기 위해서는 Java byte code에 대한 이해가 필요한다.. 더보기
멀티코어 시스템의 Java 동시성 버그 패턴 아래 글은 IBM developerworks 에 게재된 유용한 Java 관련 Concurrency 관련 이슈에 대한 대표적인 유형과 이를 해결하기 위한 방법들을 소개해 놓았다. 멀티코어 시스템의 Java 동시성 버그 패턴 http://www.ibm.com/developerworks/kr/library/j-concurrencybugpatterns/index.html 더보기
equals method 를 overriding 할 때 주의 점 우리는 클래스를 디자인 할 때, equals method 를 override 하게 되는 경우가 많다. override 하게 될 경우, 중요한 사항들이 있으니 4가지 정도가 있다. 첫 번째부터 세 번째 까지는 수학에서 나오는 용어와 같다고 생각하면 된다. 1. Reflexivity - 어떤 객체는 자신과 동일해야 한다. 즉 A equals A 라고 할 수 있어야 한다. 아주 당연한 이야기 이겠지만, 그렇지 않을 수 있다. 2. Symmetry - 두 객체는 그것들이 동일하다고 판단되어야 한다. 예를 들어서, A equals B 라고 한다면, B equals A 라고 할 수 있어야 한다. 3. Transitivity - 첫 번째 객체가 두 번째 객체와 같고, 두 번째 객체가 세 번째 객체와 같다면, 첫 번째.. 더보기
Creating runnable JAR using Apache ant (Apache Ant 로 Runnable JAR 파일 만들기) Java 언어로 작성된 프로그램이 들어있는 프로젝트를 빌드하기 위해서 Apache Ant 를 많이 사용한다. Eclipse 를 사용하여, 빌드, JAR 내보내기 등등 여러가지 작업들을 편리하게 할 수 있지만, 빌드 자동화 툴, 예를 들어서, Hudson 등을 사용할 경우 Eclipse 를 사용하기에 불편함이 존재한다. 이럴 경우에는 command line 으로 빌드, 패키징을 하기 위해서는 Ant 를 사용하면 간단하게 해결할 수 있다. Ant 를 사용하여 Runnable JAR 파일을 생성하기 위해서는 Ant 의 빌드 스크립트인 build.xml 을 수정하여야 한다. Runnable JAR 파일을 만들기 위해서는 manifest 라는 것을 사용하여야 하는데, 이것은 JAR file 안에 있는 패키징 된 .. 더보기
The CERT Oracle Secure Coding Standard for Java Java 프로그래밍을 하면서 보안관련 취약 코드를 작성하는 것을 미연에 방지해 주는 코딩 가이드라인이 있다는 사실을 알게 되었다. 이러한 가이드 라인을 제공하는 곳은 미국의 Carnegie Mellon 대학의 소프트웨어 엔지니어링 기관에서 운영하고 있는 http://www.cert.org 이라는 곳이다. 이 기관은 Java 뿐만 아니라 C/C++ 관련 보안관련 이슈도 다루고 있다. 아래의 링크는 자바 의 보안관련 기본적인 Coding guide line 이라고 보면 된다. https://www.securecoding.cert.org/confluence/display/java/The+CERT+Oracle+Secure+Coding+Standard+for+Java 더보기
All of Exception classes in Java 1.6 api Extracting all exception classes from java api is simple. Using linux command grep | cut | etc. AccessControlException AccessException AccountException AccountExpiredException AccountLockedException AccountNotFoundException AclNotFoundException ActivateFailedException ActivationException ActivityCompletedException ActivityRequiredException AlreadyBoundException AlreadyConnectedException Annotati.. 더보기