1. 인덱스 키 값의 크기 디스크에 데이터를 저장하는 기본 단위를 페이지 또는 블록이라 하며, 디스크의 모든 읽기 및 쓰기 작업의 최소 단위가 된다. 인덱스는 페이지 단위로 관리된다. 인덱스의 B-Tree는 자식 노드의 개수가 가변적인 구조이다. 그리고 자식 노드의 개수가 페이지의 크기와 값에 의해결정된다. 인덱스의 키값을 16바이트, 자식 노드의 주소를 12바이트, 하나의 인덱스 페이지를 16KB 라고 한다면, 16 * 1024 / (16 + 12) = 585개의 인덱스를저장할 수 있다. 그렇다면 인덱스 키의 값을 두배로 늘린다고 하면, 16 * 1024 / (32 + 12) = 372개 저장할 수 있게 된다.만약에 SELECT 쿼리가 500개의 데이터를 읽는다고 한다면, 페이지의 크기가 16KB일 때..
프로그래머스 3단계 가장 먼 노드 문제 url : https://programmers.co.kr/learn/courses/30/lessons/49189?language=java 문제설명n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한사항노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총..
1. 데이터를 저장하는 매체의 종류 CPU, 메모리와 같으 전기적 특성을 가지고 있는 장치의 성능은 빠른 속도로 발전했지만, 디스크와 기계식 장치의 성능은 제한적으로 발전했다.그렇기 때문에 데이터베이스 성능 튜닝은 기계식 장치인 디스크의 I/O를 줄이는 것이 가장 중요한 포인트이다. 데이터를 저장할 수 있는 매체는 내장 디스크, DAS, NAS, SAN이 존재한다. - 내장 디스크 : PC내부 공간에 장착할 수 있는 갯수가 제하적이며, 용량이 부족한 경우 많이 존재 - DAS : 내장 디스크의 용량의 문제를 해결, SATA, SAS와 같은 케이블로 하나의 PC에만 연결이 가능. 최대 200개 까지 연결하여 사용가능하지만 여러 PC 공유 불가 - NAS : 케이블이 아닌, TCP/IP를 통해 연결이 되며,..
프로그래머스 3단계 여행경로 문제 url : https://programmers.co.kr/learn/courses/30/lessons/43164?language=java 문제설명주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 ICN 공항에서 출발합니다.항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다.tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다.주어진 항공권은 모두 사용해야 합니다.만일 가능한 경로가 2개 이상일 경우 ..
1. 테스트 주도 개발 (TDD) 해야하는 이유 ...? TDD 에는 요구조건에 대한 명확한 이해, 안전한 테스트, 리팩토링 세 가지 장점을 제공한다.(TDD는 새로운 기능에 대해 테스트 코드를 먼저 작성하고, 테스트를 통과할 수 있는 개발 코드를 이후에 작성하는 방식으로 진행) 첫째, 테스트를 작성하기 이전에는 요구사항을 명확히 알아야만 테스트 시나리오를 작성할 수 있기 떄문에 개발자는 요구사항에 만족하는 코드를 구현 가능하다. 둘째, 전체 테스트 코드를 구동함으로써 새로운 기능이 추가가 됬을 때, 이전 기능에 대해 영향을 미칠 수 있는 가능성 제거 가능하다. 셋째, 객체지향적인 설계 가능하다. (Divide and Conquer) 객체 지향은 각각의 개념을 객체로 추상화하여, 객체들과의 연관관계를 생..
1. Thread Class 와 Executor 인터페이스 차이점은 ...? Executor 인터페이스는 Java 4부터 도입된 동시성 프레임워크로서, 메모리 측면에서의 효율성있는 동시성을 지원하기 위한 인터페이스이다.스레드를 생성하는 과정에서 메모리의 자원을 많이 소비하게 되는데, Executor 인터페이스는 스레드를 미리 생성하고, 그 수를 제한하며, 사용된 스레드를 재사용함으로써 자원을 효율성을 높여주고 있다. Executor 인터페이스는 테스크를 정의한 객체를 생성하고, Executor 인터페이스에 태스크 객체를 제공하는 방식으로 동작한다. 테스크 객체를 제공하면 작업큐에 테스트가 저장되고, Executor에 미리 생성된 스레드는 작업큐에 있는 작업을 순차적으로 처리한다. 그리고 작업이 완료되면 ..
JDBC를 자바를 이용해서 직접 구현하는 과정에서 발생했던 작은 오류들을 정리해보려고 한다. 1. org.h2.jdbc.JdbcSQLException: Table "USERS" 현재 H2 Database를 이용해서 구현을 하고 있는데, 특정 옵션을 하지 않으면 연결이 끊어지면 데이터베이스에 작업했던 데이터가 모두 사라지게 된다.그렇기 때문에 연결이 끊어지는 순간, 테이블을 생성했던 데이터가 사라지고, 데이터를 삽입하려 했을 때 발생했다. Connection이 끊어져도 이전에작업했던 데이터들이 남아 있을 수 있도록 설정이 필요하다. 'DB_CLOSE_ON_EXIT=FALSE' 설정이 필요하다! 하지만, 나는 그 설정을 했지만, 같은 오류가 계속 발생했다. 이유는 테이블에 대한 생성 쿼리를 보관하고 있는 d..
프로그래머스 3단계 네트워크 문제 url : https://programmers.co.kr/learn/courses/30/lessons/43162?language=java 문제설명네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computersr가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항컴퓨..
1. GC ...? 가비지 컬렉션이란, 기존에 할당된 메모리를 재사용하는 메커니즘으로서, 모든 작동 중인 코드에서 더이상 참조하지 않는 Unreachalbe 객체를 찾은 후,반환하는 목적을 가진다. 가비지 컬렉션은 두가지 가설을 바탕으로 설계되었다. - 대부분의 객체는 금방 참조하지 않는(Unreachable) 상태가 된다. - 오래된 객체에서 최근에 생성된 객체로의 참조는 아주 드물게 존재한다. (이와 같은 경우 Old area Card Table을 이용해 제어) 2. Minor GC ...? Minor GC는 Young 영역에서의 GC를 의미한다. Young 영역은 처음 객체가 생성되었을 때 저장되어지는 Eden 영역과 2개의 Survivor 영역으로 구성되있다.Old 영역에서 New 영역의 객체를 ..
프로그래머스 2단계 가장 큰 수 문제 url : https://programmers.co.kr/learn/courses/30/lessons/42746?language=java 문제설명0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰수는 6210입니다.0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어졌을 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 리턴 하도록 solution 함수를 작성해주세요. 제한사항numbers의 길이는 1 이상 100,000 이하입니다. numbers의..