Programming 99

[Data Structure] 자료구조 (Data Structure)

자료구조 : 데이터들의 관계를 구조화한 것 자료구조의 분류선형 자료구조 : 리스트, 스택, 큐비선형 자료구조 : 트리, 그래프 ●배열(Array)-타입이 동일한 데이터들의 집합-연속된 공간의 메모리를 할당-인덱스를 통하여 자료의 순서와 위치를 표시-인덱스를 이용하여 직접적으로 자료에 접근 가능 ●리스트(List)-특정원소의 탐색-머리(Head)부터 꼬리(Tail)까지 순차탐색-i번째 원소의 삽입, 삭제 배열리스트(Array List)탐색 : 머리(Head)부터 순차탐색 가능, 인덱스를 이용한 직접 접근 가능 삽입 : 끝에 삽입하면 해당 메모리 주소에 삽입, 중간에 삽입하면 이후의 모든 데이터를 뒤로 밀고 삽입 삭제 : 끝에 있는 자료는 바로 삭제, 중간에 있는 데이터는 삭제 후에 이후의 데이터를 모두 당..

[Algorithm]동기화 기법(Synchronization)

동기화(Synchronization)http://en.wikipedia.org/wiki/Synchronization - 멀티프로그래밍(두개 이상의 쓰레드가 같은 데이터를 공유하며 실행되고 있을때)에서 에러(충돌,교착)가 발생하지 않고 조화롭게 실행되도록 하는 일련의 작업 - 이용되는 이론 : 세마포어(Semaphore), 임계구역(Critical Section), 스핀락(SpinLock), 상호배제(Mutual Exclusion, Mutex), 이벤트, Metered Section 세마포어 (Semaphore)http://ko.wikipedia.org/wiki/%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4 - 멀티프로그래밍에서 공유자원에 대한 동시 접근을 제한하는 방법 - 세마포어 S..

[Kernel : Linux]리눅스 커널 소스

리눅스 커널 소스 아카이브 : http://www.kernel.org리눅스 커널 소스 웹에서 보기 : http://lxr.linux.no 리눅스에서 커널 소스 다운로드 wget이 설치되어 있어야합니다.'apt-get install wget'로 설치해줍니다. 커널 2.4.32 다운로드 'wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.32.tar.bz2' 커널 2.6.14 다운로드 'wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.bz2' 커널 소스 압축 풀기'tar xvfj linux-2.4.32.tar.bz2'

Programming/Kernel 2012.11.18

[Java]스톱워치를 구현하는 방법

스톱워치를 구현함에 있어서 스레드의 sleep함수를 이용해서 시간을 카운트하도록 설계를 했었다. 하지만 이와 같은 방법을 쓰게될 경우, 스레드틑 CPU로부터 할당 받은 시간만큼만 실행되게 됨으로 정밀하게 유효한 값을 가지기가 힘들다. 그러면 CPU로부터 유효한 시간을 유지하면서 시간을 재는 초시계를 구현하려면 어떻게 해야하는가....?? 생각외로 답은 간단했다. 답은 시스템 시간에 있었다. 스레드를 이용하여 이정 시간단위로 시스템 시간을 가져온다. 시간을 재기 시작한 시스템시간을 기록해 놨다가 스레드가 매번 시스템 시간을 가져와 그 차이로 스톱워치의 시간을 갱신하는 방법이다. CPU할당시간이 밀리더라도 시스템 시간을 가져와 갱신하기 때문에 스레드 sleep함수를 이용하여 시간을 갱신하는 것보다 더 정밀한..

Programming/Java 2012.11.14

[Algorithm]패러럴 퀵 소트

대용량 데이터를 처리해야 하는 툴을 만들다 보니 데이터 처리 관련 알고리즘이나 성능 좋은 방법 등을 많이 고민하고 공부하게 된다. 이 방법들 중 데이터 처리에 있어 많은 비용을 지불해야 하는 정렬에 대하여 이야기 하고 싶다. 우리나라 사람들 성질이 급해서 그런지 뭐든 빨리 나오길 바란다. 정렬도 예외가 아니다. 얼마 안 되는 데이터를 정렬한다면 로직이 좋던 나쁘던 별반 차이나지 않지만 데이터가 커지면 이 차이는 무시 못 할 정도로 벌어진다. 그리고 데이터 처리에 있어 정렬은 아주 큰 부분은 차지하기 때문에 할 수 있다면 할 수 있는 만큼은 개선을 해야 할 부분이다. (어떤 사람은 십수년이 넘는 기간동안 정렬만 연구해 솔루션을 내 놓는 경우도 있으며, 난 이 사람 마음을 십분 이해한다. 정렬은 그럴 만한 ..

[Java]자바 스윙에서 JFrame.EXIT_ON_CLOSE

자바에서 스윙으로 GUI를 구현하면 JFrame을 상속받아서 메인프레임을 구현하는 방법이 가장 일반적으로 사용되는 방법이다. 하지만 스윙을 사용하는 초보자들이 가장 많이 하는 실수가 EXIT_ONCLOSE를 지정 안 하는 것이다. 이를 지정하지 않으면 메인프레임을 닫았는데도 JFrame객체는 JVM에서 계속 살아서 실행된다. 즉 사용자에게 보여지는 View는 종료되었지만 프로그램은 계속 실행중인 상태가 된다. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 하지만 위와 같은 처리를 해주면 메인프레임을 닫을 때, 프로그램 또한 안정적으로 종료된다.

Programming/Java 2012.10.25