본문 바로가기

Programming/JAVA

윈도우 레지스트리 내용 다루기 자바에서 윈도우 레지스트리 내용 읽어 오기 자바 프로그램을 이용하여 윈도우 시스템의 레지스트리를 다루거나 어떤 프로그램을 윈도우의 서비스에 등록 또는 해제 하는 기능 등을 구현 할 수 있습니다. 이러한 것이 가능 하기 위해서는 관련 Library를 다운 받아 JNI를 이용하면 가능 한데 다음과 같이 하시면 됩니다. 우선 http://sourceforge.net/project/showfiles.php?group_id=70882&release_id=133472 에서 jst1.2.zip 파일을 다운 받아 압축을 해제 하면 jst.dll 과 jst.jar 파일이 나옵니다. 각 파일이 하는 일은 dll인 경우 윈도우 레지스트리를 직접 핸들링 하는 JNI를 위한 구현부가 들어 있으며, jar 파일인 경우 그 DLL.. 더보기
JBuilder에서 CVS 소스버전 콘트롤 JBuilder에서 CVS를 이용한 소스코드 버전 컨트롤 6. JBuilder에서 CVS를 이용한 소스코드 버전 컨트롤 이미 앞의 과정에서 CVS Server 설치 과정을 거쳤으므로, Jbuilder에서 CVS Server를 사용하는 방법에 대해 알아보도록 하자. (참고로 필자는 JBuilder 9를 사용했다.) JBuilder 실행 후 [Menu -> Team -> Select Project VCS]를 실행 시킨다. 소스 코드를 CVS Server로 올리는 작업, 즉 업로드 하는 작업을 Commit이라고 한다. 위의 그림과 같이 JBuilder는 ‘ClearCase’, ‘CVS’, ‘StarTeam’, ‘Visual SourceSafe’ 4가지를 지원한다. 이중 우리가 사용할 것은 CVS이므로 CVS를.. 더보기
Sort 알고리즘(삽입정렬) 데이터 개수가 적거나 반정도 정렬된 상태나 정렬된 상태에서는 수행속도 양호, 그러나 역순인 경우에는 선택 정렬보다 떨어진다. 자료의 개수 N이 2배 증가하면 소요시간은 대략 2의제곱배씩 증가한다.(정렬알고리즘이 이중루프) 삽입정렬은 자료 상태에 따라 수행속도가 민감하게 차이가 난다. 정렬된 상태가 최선의 상태이며 역순상태가 최악의 상태이다. 이경우 비교 및 이동횟수는 1+2+3+…+n-1로서 n(n-1)/2이다. 최선의 상태에서는 이동은 한번도 일어나지 않으며 비교만 n(n-1)/2번 일어난다. (n이 5이면 비교는 1+2+3+4번 일어난다.) 평균 연산 시간은 O(n2) 아래의 예제를 참조하자... ----------------------------------------- 링크드리스트를 이용한 방법 -.. 더보기
Sort 알고리즘(버블정렬) 버블정렬(Bubble Sort) 이란 인접한 레코드의 키값을 비교하여 순서화 되어 있지 않으면 교환 하는것 오름차순 정렬의 경우 첫번째 키와 두 번째 키를 비교하여 두번째 자료가 첫번째 자료보다 작으면 이를 맞 교환, 결국 이를 반복하면 리스트의 마지막엔 가장 큰 키를 갖는 데이터가 들어 있게 된다. 평균 연산 시간은 O(n2) import java.util.Random; class BubbleSort { //버블정렬1(좌측부터) int[] sort1(int a[]) { int temp, num = a.length;; boolean flag=true; while(flag) { flag = false; //i를 미리 증가, 처음것 다음부터 비교 for(int i=0; i < num-1; ++i) { if(.. 더보기
Sort 알고리즘(셸정렬) 셸정렬(Shell Sort) 이란 버블정렬의 경우 데이터가 제 위치에서 멀리 떨어져 있으면 여러 번 교환이 필요하게 된다.이것이 버블정렬의 취약점으로서 인접한 데이터만 비교하기 때문에 발생하게 된다. 이러한 문제를 해결하기 위해 멀리 있는 레코드들 끼리도 비교가 가능하게 효율을 높인 정렬 방법이 고안자인 셸(Donald L.Shell)의 이름을 딴 셸 정렬 이다. 원리는 주어진 입력 리스트를 적당한 매개변수의 값만큼 서로 떨어진 레코드들과 비교하여 교환하는 과정을 매개변수 값을 바꾸어 가면서 되풀이 하는 것이다.(매개변수의 값은 줄어들면서 1이되면 종료한다.)이때 떨어져 있는 레코드들은 하나의 부분리스트를 구성하여 보통 다른방법(삽입정렬)에 의해 개별적으로 정렬된다 O(log n) 수행시간이 O(n2)보.. 더보기
Sort 알고리즘(퀵정렬-재귀호출이용) 퀵 정렬(Quick Sort) 이란 주어진 입력리스트를 특정한 키(Control Key, Pivot)로 분리하여 왼쪽에는 키 값보다 작은 값, 우측에는 키 값보다 큰 값을 갖는 서브 리스트로 분리한다. 그런 다음 각각의 서브리스트에서도 같은 방법을 반복적으로 수행하여 정렬하는 방법이다. 다음의 예제를 보자... import java.util.Random; class QuickSort3{ //퀵 정렬(재귀방법) int[] qsort(int a[]) { //low와 high 값을 parameter로 던지자. quicksort(0, a.length-1, a); return a; } void quicksort(int low, int high, int[] a) { if (low < high){ //서브리스트로 분.. 더보기
Sort 알고리즘(합병정렬-Merge Sort) import java.util.Random; class MergeSort2 { //Recursion을 이용한 Merge Sort public static int[] mergesort(int a[ ], int first, int n) { int n1; int n2; if (n > 1) { n1 = n/2; n2=n-n1; mergesort(a, first, n1); mergesort(a, first+n1, n2); merge(a, first, n1, n2); } return a; } private static void merge(int[ ] a, int first, int n1, int n2) { int[ ] temp = new int[n1+n2]; int copied = 0; int copied1 = 0.. 더보기
까오기 보드에서 사용하는 계층형 게시판 로직 계층형 게시판에 사용되는 필드의 구성 까오기 보드에서는 두 개의 필드를 통해 계층형 게시판을 구현하고 있다. re_level re_level은 새 글을 등록했을 때 0의 값을 가지며 답변 시 1씩 더해지는 값이다. 이를 통해 목록보기에서 들여 쓰기 등의 방법으로 현재 글의 level를 보여 준다. 이외에 글 삭제 시 이 칼럼을 참고하여 이 글의 답변 글이 있는지를 확인할 수 있다. re_step re_step은 글의 순서를 나타내는 칼럼이다. 이 값은 답변이 아닐 때는 100씩 증가하는 값으로 뒤에 2자리를 여유공간으로 가지고 있다. 답변 글을 쓰면 이 곳에 저장이 되며 답변이 2자리 이상일 때는 1000단위로 증가하게끔 처리하면 된다. 100자리 여유공간 3 99 2 99 1 99 DB에 저장하기 1... 더보기
JAVA DOC을 사용하자. JAVA DOC을 사용하자. JLab 허원진 주석을 제대로 달면 소스 분석이 쉬워지고 유지보수가 쉽습니다. 자바를 위한 소스 문서화 솔루션인 JAVA DOC을 이용해서 문서를 만드는법을 알아보죠. 우선 한번 JAVA Documnet가 만들어지는 과정을 한번 살펴 보죠. 소스 주석 설명은 나중에 나옵니다. 일단 만드는 과정만 보세요. JAVA DOC 주석을 사용한소스 /** * Study.java2002-07-25 * 루프와 제귀호출 성능 비교 * @author wonjin */ public class Study { public static void main(String[] args) { long temp; //수행시간 계산을 위한 임시변수 temp = System.currentTimeMillis(); f.. 더보기
Factory Method 패턴 Factory Method 패턴은 인스턴스 생성 과정에서 Factory라는 추상화 클래스를 만들어 사용하는 패턴이다. 우리는 A a=new A() 의 모형으로 인스턴스를 생성한다. 하지만 인스턴스를 생성하는 과정이 조금 복잡하여 몇 가지 단계를 거친다고 생각해 보자. 또는 인스턴스 생성 과정이 유사한 클래스가 여러개 존재 한다고 생각해 보자. 각 인스턴스 생성 시 마다 똑같은 일을 반복해서 처리 해주어야 할 것이다. Template mehtod 패턴에서 그랬듯이 인스턴스 생성과정을 추상화하여 만든 클래스가 Factory 클래스이며, Factory method의 핵심이다. Factory(공장) 역할을 하는 추상화 클래스에는 인스턴스 생성부분, 생성시 흐름 , 하위 클래스 에서 구현될 추상 메소드 등이 정의.. 더보기