Programming (109) 썸네일형 리스트형 [Java]Vector, ArrayList, LinkedList의 차이 vector는 내부적으로 배열의 구조를 지니고 있습니다.그래서 인덱스로 요소에 접근할 경우 상수시간으로 접근 할 수 있죠.하지만, item들이 추가되거나 삭제를 할 때는내부적으로 임시 배열을 생성해서 복사한다음item들을 이동시키게 됩니다. 이런 경우, 비용이 많이 들게 되고 성능이 떨어지죠. 반면, list에서는item들과의 연결이 포인터로 되어 있어item의 추가와 삭제가 빠릅니다.하지만, item들을 검색하는 시간은 o(n)의 비용이 발생하게 됩니다. vector의 경우는 item들을 저장한 이후 변동이 별로 없다면 효과적이고list의 경우 item의 추가 삭제가 많을 경우 유용하다고 할 수 있겠습니다. Vector와 LinkedList가 위의 경우와 같다고 생각할 수 있습니다.단 , ArrayLi.. [Pattern]MVC Pattern과 MVP Pattern 그리고 차이 모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 아키텍처 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC모델(Model)은 애플리케이션의 정보(데이터)를 나타낸다.뷰(View)는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타낸다. 컨트롤러(Controller)는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.=밑의 그림은 스탠포드에서 iOS 프로그래밍을 강연할 때, MVC를 가르치는 그림이다. MVC 참고 : http://en.wikipedia.org/w.. [Data Structure] 자료구조 (Data Structure) 자료구조 : 데이터들의 관계를 구조화한 것 자료구조의 분류선형 자료구조 : 리스트, 스택, 큐비선형 자료구조 : 트리, 그래프 ●배열(Array)-타입이 동일한 데이터들의 집합-연속된 공간의 메모리를 할당-인덱스를 통하여 자료의 순서와 위치를 표시-인덱스를 이용하여 직접적으로 자료에 접근 가능 ●리스트(List)-특정원소의 탐색-머리(Head)부터 꼬리(Tail)까지 순차탐색-i번째 원소의 삽입, 삭제 배열리스트(Array List)탐색 : 머리(Head)부터 순차탐색 가능, 인덱스를 이용한 직접 접근 가능 삽입 : 끝에 삽입하면 해당 메모리 주소에 삽입, 중간에 삽입하면 이후의 모든 데이터를 뒤로 밀고 삽입 삭제 : 끝에 있는 자료는 바로 삭제, 중간에 있는 데이터는 삭제 후에 이후의 데이터를 모두 당.. [Java]Hashtable과 HashMap의 차이 Hashtable 은 동기화된 map 이고 HashMap은 비동기화된 map이지요. 다수의 Thread가 put/get을 할때 ThreadSafe를 보장해준다는 이야기에요. 단일 Thread 상황에서는 굳이 HashTable을 사용할 필요가 없겠지요. [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' [Java]스톱워치를 구현하는 방법 스톱워치를 구현함에 있어서 스레드의 sleep함수를 이용해서 시간을 카운트하도록 설계를 했었다. 하지만 이와 같은 방법을 쓰게될 경우, 스레드틑 CPU로부터 할당 받은 시간만큼만 실행되게 됨으로 정밀하게 유효한 값을 가지기가 힘들다. 그러면 CPU로부터 유효한 시간을 유지하면서 시간을 재는 초시계를 구현하려면 어떻게 해야하는가....?? 생각외로 답은 간단했다. 답은 시스템 시간에 있었다. 스레드를 이용하여 이정 시간단위로 시스템 시간을 가져온다. 시간을 재기 시작한 시스템시간을 기록해 놨다가 스레드가 매번 시스템 시간을 가져와 그 차이로 스톱워치의 시간을 갱신하는 방법이다. CPU할당시간이 밀리더라도 시스템 시간을 가져와 갱신하기 때문에 스레드 sleep함수를 이용하여 시간을 갱신하는 것보다 더 정밀한.. [Algorithm]패러럴 퀵 소트 대용량 데이터를 처리해야 하는 툴을 만들다 보니 데이터 처리 관련 알고리즘이나 성능 좋은 방법 등을 많이 고민하고 공부하게 된다. 이 방법들 중 데이터 처리에 있어 많은 비용을 지불해야 하는 정렬에 대하여 이야기 하고 싶다. 우리나라 사람들 성질이 급해서 그런지 뭐든 빨리 나오길 바란다. 정렬도 예외가 아니다. 얼마 안 되는 데이터를 정렬한다면 로직이 좋던 나쁘던 별반 차이나지 않지만 데이터가 커지면 이 차이는 무시 못 할 정도로 벌어진다. 그리고 데이터 처리에 있어 정렬은 아주 큰 부분은 차지하기 때문에 할 수 있다면 할 수 있는 만큼은 개선을 해야 할 부분이다. (어떤 사람은 십수년이 넘는 기간동안 정렬만 연구해 솔루션을 내 놓는 경우도 있으며, 난 이 사람 마음을 십분 이해한다. 정렬은 그럴 만한 .. 이전 1 ··· 9 10 11 12 13 14 다음