일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 코딩테스트
- 취준
- Ultimate Search
- baekjoon
- Github
- Pro-Con
- python3
- DP
- programmers
- 리트코드
- 알고리즘 종류 정리
- 제노블레이드 2
- 백준
- ASF-110
- 자소서
- 프로콘 갈림현상
- C++
- 격리수준
- 프로콘
- Algorithmus
- LeetCode
- 알고리즘
- 백트래킹
- Python
- 프로그래머스
- git
- algorithm
- GitHub Desktop
- SRE
- 네이버 검색 시스템
- Today
- Total
목록전체 글 (76)
산타는 없다
라이브러리(Library)는 다른 프로그램들과 링크되기 위하여 존재하는 하나 이상의 서브루틴(subroutine)이나 함수(function)들의 집합 파일입니다. 라이브러리는 재사용이 필요한 기능이 반복적인 코드 작성을 하지 않고 언제든지 필요한 곳에서 호출하여 사용한다는 목적을 가지고 만들어집니다. 링크될 수 있도록 보통 컴파일된 형태인 목적 코드(object code)형태로 존재하며 미리 컴파일 되어 있기 때문에 컴파일 시간도 단축됩니다. 라이브러리는 크게 정적 라이브러리와 동적 라이브러리 두 종류로 사용됩니다. 두 라이브러리의 가장 큰 차이점은 실행파일에 링킹되는 시점입니다. 정적 라이브러리 / Static Library / Lib 작성된 소스 코드는 번역 프로그램(컴파일러, 인터프리터 등)을 통해..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cjU9JJ/btq4YtxXXNX/ZKOpC5znnt8HD5oRFRkNzK/img.png)
데이터베이스 인덱스 자료구조로 B-tree를 사용합니다. 균형 트리 중 B-tree를 사용하는 이유는 B-tree는 하나의 노드에 여러 개의 데이터 요소를 저장할 수 있는 점과 데이터 탐색뿐 아니라 저장, 수정, 삭제에도 항상 O(logN)의 시간 복잡도를 가지기 때문이라고 생각됩니다. 또 항상 정렬된 상태를 유지하고 있고 참조 포인터가 적어 방대한 데이터 양에도 빠른 메모리 접근이 가능하다는 장점도 가지고 있습니다. B Tree 인덱스 특징 B Tree 인덱스는 다음과 같은 특징을 가지고 있습니다. (차수가 n일 경우) 루트 블록은 리프 블록이 아닌 이상 적어도 두 개의 서브 트리를 갖는다. 루트 블록과 리프 블록을 제외한 각 블록은 최소 n/2개의 포인터를 갖고 적어도 n/2-1개의 키 값을 갖는다...
데이터베이스 인덱스 알고리즘은 대표적으로 B-tree, Hash로 구분할 수 있고, Fractal-Tree 알고리즘도 존재합니다. B-Tree 알고리즘 가장 일반적으로 사용되는 인덱스 알고리즘 칼럼의 값을 변형하지 않고, 원래의 값을 이용해 인덱싱하는 알고리즘 범위 탐색이 가능하다 like와 같은 구문을 실행할 때도 사용할 수 있다 Hash 알고리즘 컬럼의 값으로 해시 값을 계산해서 인덱싱하는 알고리즘 매우 빠른 검색을 지원합니다 값을 변형해서 인덱싱하기 때문에 값의 일부만 검색할 때는 사용할 수 없습니다. 주로 메모리 기반 데이터베이스에서 많이 사용합니다 Fractal-Tree 알고리즘 B-Tree의 단점을 보완하기 위해 고안된 알고리즘으로 독점적인 특허로 등록되어 MySQL의 스토리지 엔진인 Toku..
MySql은 서버 엔진과 스토리지 엔진으로 구성되어 있습니다. 서버 엔진(SQL Interface, Parser, Optimizer, Cache & Buffer) 클라이언트의 요청을 받아 SQL을 처리하는 DB자체의 기능적인 역할을 수행 DB가 SQL을 이해할 수 있도록 쿼리를 파싱하고 메모리, 물리적 저장장치와 통신하는 기능을 수행 디스크와 직접적인 접근을 제외한 대부분의 역할 수행 스토리지 엔진 서버 엔진이 필요한 데이터를 물리적 장치에서 가지고 오는 역할을 수행 물리적 저장장치에서 데이터를 읽어오는 역할을 수행하고 플러그인 형식으로 여러 스토리지 엔진을 필요에 따라 추가 삭제 할 수 있다 MySql은 다양한 스토리지 엔진을 지원합니다. MyISAM, InnoDB, Archive, Memory, ND..
일반적으로 데이터베이스의 인덱스 자료구조는 B / B+ tree 또는 Hash입니다. Hash 자료구조 인덱스는 equal 검색을 빠르게 수행할 수 있지만, 대소 비교 및 정렬에서는 사용할 수 없는 단점이 있습니다. 반면에 B / B+ tree는 equal연산이 Hash보다 약간 느리지만 대소 비교 및 정렬에서도 사용할 수 있습니다. 그 중 MySql의 인덱스 자료구조가 어떤 자료구조로 이루어져 있는지 찾아보았습니다. 결과를 말씀드리자면 MySql은 MyISAM, InnoDB, Archive 등과 같은 엔진을 사용하는데 엔진마다 사용하는 자료구조가 다릅니다. 엔진 인덱스 자료구조 엔진 특징 MyISAM B tree 트랜잭션을 지원하지 않고, Table 단위의 Locking입니다. 따라서, 다수개의 세션이..
일반적으로 실행 파일을 생성할 때 링킹 과정에서 기계어로 번역된 목적 프로그램(오브젝트 파일 / .obj)과 라이브러리를 연결하여 만들게 됩니다. 하지만 이것은 .lib 즉 정적 라이브러리 파일에 한정된 동작입니다. 만약에 프로그램이 사용하는 라이브러리가 dll이면 라이브러리는 런타임 중에 로드하게 됩니다. 라이브러리는 정적 라이브러리(.lib)와 동적 라이브러리(.dll)로 나눠어집니다. 정적 라이브러리 (Lib) 정적 라이브러리는 소스 코드가 컴파일되어 실행 파일로 만들어 질 때 링크 과정에서 소스 코드가 번역 돼 기계어로 만들어진 목적 프로그램과 연결됩니다. 연결되면서 exe 파일 안에 필요한 Lib의 내용이 복사 됩니다. 이렇게되면 프로그램이 무거워지고 메모리를 많이 차지하게 됩니다. 동적 라이브..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b3V6Ij/btq3TaSkWtL/Kdrr7xKyPNxU2TzbmZBtvk/img.png)
자바 용어 중 JVM, JRE, JDK에 정리해 보려고 합니다. JVM (자바 가상 머신 / Java Virtual Machine) 자바 소스 코드(.java)는 자바 컴파일러(javac)에 의해 자바 바이트 코드(.class) 변환됩니다. 변환된 바이트 코드는 기계어가 아니기 때문에 바로 실행시킬 수 없고 JVM을 통해서 실행하게 됩니다. 이때 JVM은 플랫폼에 맞게 자바 바이트코드를 실행할 수 있도록 동작합니다. 즉, 자바 바이트 코드를 실행할 수 있도록 각각의 운영체제마다 JVM이 있어 어떤한 운영체제(Windows, Mac, Linux)에서든 동일한 자바 소스 코드를 실행할 수 있습니다. 이런한 자바의 특징을 WORA(Write Once Run Anywhere)라고 합니다. 또한 JVM에는 Gar..
동시에 여러 트랜잭션이 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터에 접근 여부를 결정하는 수준이다. READ UNCOMMITTED : 각 트랜잭션에서 변경 내용을 COMMIT하거나 ROLLBACK 여부에 상관 없이 다른 트랜잭션에서 값을 읽을 수 있다. DIRTY READ 현상 발생 READ COMMITTED(1단계) : 트랜잭션에서 변경 내용이 있지만 COMMIT이나 ROLLBACK 전에 볼 때 실제 테이블이 아닌 Undo 영역에 백업된 레코드 값을 봄 하나의 트랜잭션내에서 똑같은 쿼리를 실행했을 때 항상 같은 결과를 가져와야하는데 COMMIT을 해버리면 다른 결과가 나오기 때문에 REPEATABLE READ의 정합성에 어긋난다. REPEATABLE READ(2단계) : 트..