전체 글

초보 개발자의 지식 공유의 장
Jtds driver를 다운받아서 SQL Developer에 등록하면 ms-sql-server에 접속 가능 1. https://sourceforge.net/projects/jtds/files/jtds/ 에서 jtds-x.x.x-dist.zip을 다운2. Oracle SQL Developer를 실행 후, 도구 -환경설정 - 데이터베이스 - 타사JDBC 드라이버 페이지로 이동3. 압축을 푼 파일안에 jtds-x.x.x.jar 파일 등록4. 파일등록 후 접속을 하게되면 SQLSever 패널이 생기므로 정보 입력 후 접속
Map 인터페이스 구현 (MyBetterMap)MyLinearMap클래스보다 Map 인터페이스를 더 잘 구현한 MyBetterMap 정의 MyBetterMap을 좀 더 효율적으로 만든 해싱(hashing)을 소개 해싱(hashing)MyLinearMap 클래스의 성능 향상을 위해 MyLinearMap 객체의 컬렉션을 포함하는 MyBetterMap이라는 새로운 클래스를 정의내장된 맵에 따라 키를 나누므로 각 맵의 엔트리 개수는 더 줄어들고, 이 것은 findEntry 메서드와 그 것을 호출하는 메서드의 속도를 빠르게 함.123456789101112131415161718public class MyBetterMap implements Map { protected List maps; MyBetterMap(int..
Map 인터페이스의 구현 (MyLinearMap) Map 인터페이스의 여러 구현 중 하나는 해시 테이블(hash table)에 기반을 두는데 지금까지 발명된 자료구조 중 단연 으뜸이다. 해시 테이블을 설명하기에 앞서 키-값 쌍으로 이루어진 리스트를 사용하여 간단한 Map 인터페이스를 구현해 본다. MyLinearMap 객체에는 단일 인스턴스 변수 entries가 있는데 Entry객체들을 담은 ArrayList이다. (Entry 클래스는 MyLinearMap의 inner class) public class MyLinearMap implements Map { // MyLinearMap 기본 구현 private List entries = new ArrayList(); public class Entry impl..
성능을 비교할 자료구조는 세가지 이다.앞에서 구현한 MyArrayList, MyLinkedList 와 Java에서 구현되어 있는 LinkedList 이다.앞에서 구현한 MyLinkedList와 Java에서 구현된 LinkedList 차이점은 MyLinkedList는 List 인터페이스만 구현하였고, LinkedList는 List와 Deque 인터페이스를 구현한 이중 연결 리스트이다. 구분 MyArrayList MyLinkedList LinkedList add(끝) 1 n 1 add(시작) n 1 1 add(일반적) n n n get/set 1 n n indexOf/lastIndexOf n n n isEmpty/size 1 1 1 remove(끝) 1 n 1 remove(시작) n 1 1 remove(일반..
MyLinkedList 구현 및 분석Java List 인터페이스를 구현한 MyLinkedList를 작성 123public class MyLinkedList implements List { ..}Colored by Color Scriptercs LinkedList(연결리스트)에 대한 간단한 설명자료구조가 연결되었다 함은 노드(node)라는 객체들이 다른 노드에 대한 참조를 포함한 형태로 저장된 것을 의미한다.연결 리스트에서 각 노드는 리스트의 다음 노드에 대한 참조를 포함한다. (연결 구조의 다른 예로는 트리와 그래프가 있음)이때 노드는 둘 이상의 다른 노드에 대한 참조를 포함한다. LinkedList를 구현하려면 일단 Node를 구현해야 하는데, MyLinkedList 안에 inner class로 Nod..
MyArrayList 구현 및 분석Java List 인터페이스를 구현한 MyArrayList를 작성123public class MyArrayList implements List { ...}Colored by Color Scriptercs get 메서드 구현1234567@Overridepublic E get(int index) { if(index = size) { throw new IndexOutOfBoundsException(); } return array[index];}Colored by Color Scriptercs=> get 메서드에 있는 모든 것은 상수 시간 set 메서드 구현123456@Overridepublic E set(int index, E element) { E old = get(inde..
실행 계획이 SQL 구문의 성능을 결정 실행계획이 만들어지면 DBMS는 그것을 바탕으로 데이터 접근을 수행한다. 하지만, 데이터 양이 많은 경우에는 반응 지연이 발생하는데 첫번 째로, 앞에서 살펴본 통계정보가 부족한 경우 두번 째로는, SQL 구문이 복잡하여 옵티마이저가 최적의 경로를 선택하지 못할 경우 발생한다. => (이미 최적의 경로(방법)가 설정되어 있는데도 느린 경우) 실행계획 확인 방법 SQL 구문의 지연이 발생했을 경우 제일 먼저 실행 계획을 살펴본다. Oracle : set autotrace traceonly 3개의 기본적인 SQL 구문의 실행 계획 살펴보기 테이블 풀 스캔(Full Scan)의 실행 계획 인덱스 스캔의 실행 계획 간단한 테이블 결합의 실행 계획(조인) (Sql develo..
데이터에 접근하는 방법은 어떻게 결정할까? RDB에서 데이터 접근 절차를 결정하는 모듈을 쿼리 평가 엔진이라고 부른다. => SQL 구문(쿼리)을 처음 읽어 들이는 모듈이기도함 쿼리 평가 모듈은 추가로 파서 또는 옵티마이저와 같은 여러 개의 서브 모듈로 구성된다. 쿼리 => (1) 파서 => 파스된 쿼리 => 옵티마이저 => (2) 플랜생성, (3) 비용평가 => (4) 카탈로그 매니저 => 5.플랜평가 파서(Parser) 이름 그대로 파스(구문분석)을 하는 놈이다. 사용자로부터 입력받은 SQL구문이 문법적으로 오류가 있는지 검사해 준다. 옵티마이저(Optimizer) 서류 심사를 통과하면 쿼리는 옵티마이저로 전송된다. 옵티마이저는 최적화(데이터 접근법, 실행계획)를 수행하고, DBMS 두뇌의 핵심이다...
페이지 부재 프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상 페이지 부재 빈도(PFF;Page Fault Frequency)는 페이지 부재가 일어나는 횟수를 의미 페이지 부재 빈도 방식 페이지 부재율(Page Fault Rate)에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식 페이지 교체 알고리즘 페이지 부재가 발생했을 때 가상 기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 교체할지 결정하는 기법 OPT (OPTimal Replacement, 최적교체) 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법 (실현 가능성이 희박하다) FIFO (Firs..
기억장치 관리 전략반입(Fetch) 전략보조기억장치에 보관 중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략요구 반입 : 실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법예상 반입 : 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법 배치(Placement) 전략새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략최초 적합(First Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫번째 분할 영역에 배치시키는 방법최초 적합(Best Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치시키는..
깡냉쓰
평범한 개발자 노트