일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 알고리즘 종류 정리
- 알고리즘
- 백트래킹
- 프로콘
- programmers
- python3
- DP
- Pro-Con
- 자소서
- 제노블레이드 2
- 코딩테스트
- git
- Ultimate Search
- Python
- 격리수준
- 프로그래머스
- baekjoon
- ASF-110
- algorithm
- 프로콘 갈림현상
- 백준
- C++
- 네이버 검색 시스템
- Algorithmus
- GitHub Desktop
- SRE
- LeetCode
- Github
- 취준
- 리트코드
- Today
- Total
목록Computer Science (21)
산타는 없다
데이터베이스 인덱스 알고리즘은 대표적으로 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의 내용이 복사 됩니다. 이렇게되면 프로그램이 무거워지고 메모리를 많이 차지하게 됩니다. 동적 라이브..
동시에 여러 트랜잭션이 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터에 접근 여부를 결정하는 수준이다. READ UNCOMMITTED : 각 트랜잭션에서 변경 내용을 COMMIT하거나 ROLLBACK 여부에 상관 없이 다른 트랜잭션에서 값을 읽을 수 있다. DIRTY READ 현상 발생 READ COMMITTED(1단계) : 트랜잭션에서 변경 내용이 있지만 COMMIT이나 ROLLBACK 전에 볼 때 실제 테이블이 아닌 Undo 영역에 백업된 레코드 값을 봄 하나의 트랜잭션내에서 똑같은 쿼리를 실행했을 때 항상 같은 결과를 가져와야하는데 COMMIT을 해버리면 다른 결과가 나오기 때문에 REPEATABLE READ의 정합성에 어긋난다. REPEATABLE READ(2단계) : 트..
쿠키와 세션을 사용하는 이유는 HTTP의 비연결성과 비상태성 때문이다 비연결성 : HTTP 통신 이후로 연결을 끊는 특징 비상태성 : HTTP 통신의 상태를 유지하지 않는다 이로 인해 로그인을 해도 사용자 식별을 할 수 없어서 매번 새로운 사용자로 인식하게된다. 이러한 문제를 해결하기위해 사용하는 방법 중 하나가 쿠키 / 세션 방식이다. 쿠키 서버가 사용자의 웹 브라우저에 저장하는 데이터로 Key, Value(String타입)으로 구성되어 있다. 또한 쿠키는 클라이언트가 서버에 요청할 때마다 자동으로 Header에 포함되어 전송되기 때문에, 서버가 사용자를 식별할 수 있게 도와준다. 하지만 쿠키는 서버가 아닌 브라우저에 저장되기 때문에 보안에 아주 취약하다. 따라서 쿠키에는 민감한 개인정보를 절대 넣지 ..
흐름 제어 송신측(전송량)과 수신측(처리량)의 데이터 처리 속도 차이를 해결하기 위한 기법 수신측의 처리속도가 더 빠르다면 문제가 없지만 송신측의 데이터 전송 속도가 더 빠르다면 수신측의 큐를 넘어서 손실될 수 있기 때문에 송신측의 패킷 전송량을 제어하게 된다. Stop and Wait(정지 - 대기) 매번 전송한 패킷에 대한 확인 응답을 받아야 다음 패킷을 전송할 수 있다. 매우 안정적이지만 속도가 너무 느리다 Sliding Window 윈도우 : 송신, 수신 스테이션 양쪽에서 만들어진 버퍼의 크기 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 기법이다. 0, 1, 2, 3, 4, 5, 6, 7.... 프레임을 전송하는 상황..
트리는 사이클이 없고 노드와 간선(edge)로 이루어진 자료 구조 입니다. 트리가 나오게 된 이유는 배열과 비교해서 [삽입/삭제/탐색]이 O(logN) 이 걸리기 때문에 빨라 사용하게 되었습니다. (단, 탐색의 경우 편향 트리이면 O(N)의 시간이 걸린다) 노드(Node) : 트리의 최소단위로 값과 자식 노드의 주소를 가지고 있다. 간선(Edge) : 노드와 노드를 연결해주는 선 루트(Root) : 트리의 최상위에 있는 노드. 근노드라고도 한다. 단말 노드 : 자식 노드가 없는 노드. 리프 노드, 말단 노드라고도 한다. 내부 노드 : 부모와 자식 노드를 가진 노드. 트리의 부모 자식 형제 관계 : A의 하위에 B와 C가 연결되어 있을 때 A는 B의 부모노드, B는 A의 자식노드, B와 C는 형제 노드 라..