본문 바로가기

👩‍💻TIL66

[SQL 튜닝] 오라클 힌트(hint)의 개념/ 사용법/자주쓰이는힌트 정리 [SQL 튜닝] 오라클 힌트(hint)의 개념/ 사용법 정리 💡 힌트(Oracle Hint)란 무엇일까? 힌트란 SQL 튜닝의 핵심 부분으로 일종의 지시 구문이다. 즉, 오라클 옵티마이저(Optimizer)에게 SQL문 실행을 위한 데이터를 스캐닝하는 경로, 조인하는 방법 등을 알려주기 위해 SQL사용자가 SQL 구문에 작성하는 것을 뜻한다. 오라클이 항상 최적의 실행 경로를 만들어 내기는 불가능하기 때문에 직접 최적의 실행 경로를 작성해 주는 것이다. 사용자가 특정 SQL 문장에서 어떤 인덱스가 선택도가 높은지 알고 있는 경우 Optimizer에 의존한 실행 계획보다 훨씬 효율적인 실행 계획을 구사할 수 있다. 단, 힌트, 인덱스, 조인의 개념을 정확히 알고 사용하지 않은 무분별한 힌트의 사용은 성능의.. 2020. 3. 9.
[알고리즘] 깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS) [알고리즘] 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS) 그래프를 탐색하는 방법에는 크게 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)이 있습니다. 📌여기서 그래프란, 정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조의 일종을 말하며, 그래프를 탐색한다는 것은 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것을 말합니다. 그래프와 트리의 차이가 궁금하다면? 👇🏻 더보기 큰 특징만 말하자면, 그래프 중에서 방향성이 있는 비순환 그래프를 트리라고 말합니다. 1. 깊이 우선 탐색 (DFS, Depth-First Search) : 최대한 깊이 내려간 뒤, 더이상 깊이 갈 곳이 없을 경우 옆으로 이동 💡 깊이 우선 탐색의 개념 루트 노드(혹은 다른 임의.. 2020. 2. 19.
[오류검출코드]패리티비트(Parity Bit)와 해밍 코드(Hamming Code) [오류 검출 코드] 패리티 비트(Parity Bit)와 해밍 코드(Hamming Code) 💡패리티 비트(Parity Bit)란? 정보전달 과정에서 오류 발생여부를 검사하기 위해 추가된 비트를 말하며, 아래의 사진처럼 전송하고자 하는 데이터의 끝에 1비트를 더하여 전송합니다. 패리티 비트는 홀수(odd) 패리티 비트와 짝수(even) 패리티 비트로 분류하는데, - 전달하고자 하는 DATA의 1의 개수로 홀수와 짝수를 구분합니다. - 짝수패리티의 경우 0을 붙여주고, 홀수 패리티인 경우 1을 붙여줍니다. 예를 들어, 전달하고자 하는 데이터가 10010101일 경우, 1이 총 4개이므로 짝수 패리티인 0이 붙게 됩니다. 하지만 이러한 패리티비트로는 오류 검출만 가능할 뿐 어디가 잘못됐는지 정정할 수 없습니다.. 2020. 2. 16.
[DB]트랜잭션(Transaction)이란?/트랜잭션의 개념,특징, 연산과정/savepoint 트랜잭션(Transaction)이란?/트랜잭션의 개념,특징/UNDO 복구와 REDO복구 💡 트랜잭션(Transaction)이란? 컴퓨터 과학분야에 트랜잭션은 "쪼개질 수 없는 업무처리의 단위"를 의미합니다. ATM으로 계좌이체를 한다고 생각해보면, 1. A 은행에서 출금하여 B은행으로 송금하려고 합니다. 2. 송금 중, 알 수 없는 오류가 발생하여 A은행 계좌에서 돈은 빠져 나갔지만 B은행의 계좌에 입금되지 않았습니다. 3. 이와 같은 상황을 막기위해 거래가 성공적으로 모두 끝나야 이를 완전한 거래로 승인하고, 거래 도중 뭔가 오류가 발생했을 때는 이 거래를 처음부터 없었던 거래로 완전히 되돌리는 것입니다. 이렇게 거래의 안전성을 확보하는 방법이 트랜잭션입니다. 데이터베이스에선 테이블에서 데이터를 읽어 .. 2020. 2. 16.
[정렬] 선택정렬(Selection Sort)의 개념/Java코드/시간복잡도/공간복잡도 [정렬] 선택정렬(Selection Sort)의 개념/Java코드/시간복잡도/공간복잡도 📌선택정렬의 개념 선택정렬(Selection Sort)은 해당 순서에 원소를 넣을 위치는 이미 정해져 있고, 그 위치에 어떤 원소를 넣을지 선택하는 알고리즘입니다. 선택정렬(Selection Sort)와 삽입정렬(Insertion Sort)이 종종 헷갈릴 수 있는데, 선택정렬은 배열에서 해당 자리를 이미 선택하고 그 자리에 오는 값을 찾는 것이며, 삽입정렬은 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입하는 것입니다. - 선택정렬은 제자리 정렬(in-place sorting) 알고리즘의 하나 제자리 정렬이란, 입력 배열(정렬되지 않은 값들) 이외에 다른 추가 메모리를.. 2020. 2. 13.
클린코드와 코드 리팩토링 클린코드와 리팩토링 “컴퓨터가 이해할수 있는 코드는 어느 바보나 다 짤 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다.” Martin Fowler 프로젝트를 하게되면 여러 명의 개발자가 투입되어 소스를 공유하며 코드 작업을 한다. 그리고 프로젝트가 완성되면 유지보수를 하게 될 개발자가 쉽고 빠르게 코드분석을 할 수 있도록 해야한다. 따라서 개발자에게 있어 클린코드와 리팩토링은 필수 사항이다. 📌그래서, 클린코드란? 클린코드는 가독성이 높은 코드를 말한다. 가독성을 높이려면 다음과 같이 구현해야 한다. 네이밍이 잘 되어야 함 오류가 없어야 함 중복이 없어야 함 의존성을 최대한 줄여야 함 클래스 혹은 메소드가 한가지 일만 처리해야 함 얼마나 코드가 잘 읽히는 지, 코드가 지저분하지 않고 정.. 2020. 2. 13.
[DB]SQL(관계형 데이터베이스)과 NoSQL(비 관계형 데이터베이스) 개념/비교/차이 SQL(관계형 데이터베이스)과 NoSQL(비 관계형 데이터베이스) 개념/비교/차이 ※ 아래의 포스팅은 ACADEMIND의 SQL vs NoSQL or MySQL vs MongoDB 내용을 번역한 것입니다. 👉🏻https://academind.com/learn/web-dev/sql-vs-nosql/ # Overview 웹 개발을 위한 첫 걸음을 내딛고 나서, 하나의 선택을 하게 됩니다. MySQL와 같은 SQL을 사용할 것인가? 아니면 MongoDB같은 NoSQL을 사용할 것인가? Node.js로 작업할때 NoSQL (MongoDB)이 더 좋다는 인상을 가지고 계실지도 모르겠지만 잘못된 생각입니다. 이 글에서는 SQL과 NoSQL 데이터베이스의 핵심개념을 소개한 다음, 각 솔루션의 차이점과 장단점을 설명하.. 2020. 2. 13.
[web] 쿠키(cookie)와 세션(session)의 개념/차이/용도/작동방식 [web] 쿠키(cookie)와 세션(session)의 개념/차이/용도/작동 쿠키와 세션을 이해하기 위해서는 먼저 http의 특징에 대해 이해하면 도움이 됩니다. 비연결성(Connectionless) HTTP(Hypertext Transfer Protocol)는 인터넷상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 통신규약을 말합니다. 이 HTTP 프로토콜에는 비연결성(Connectionless)과 비상태성(Stateless)이라는 특징이 있습니다. 이는 서버의 자원을 절약하기 위해 모든 사용자의 요청마다 연결과 해제의 과정을 거치기 때문에 연결 상태가 유지되지 않고, 연결 해제 후에 상태 정보가 저장되지 않는다는 것입니다. 하지만, 이로 인해 사용자를 식별할 수 없어서 같은 사용자가 요청.. 2020. 2. 11.
[자료구조] 스택 (STACK), 큐(QUEUE) 개념/비교 /활용 예시 [자료구조] 스택 (STACK), 큐(QUEUE) 개념/비교 /활용 예시/ 실생활 활용 스택 (STACK)이란? 📌 스택의 개념 스택(stack)이란 쌓아 올린다는 것을 의미한다. 따라서 스택 자료구조라는 것은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다. 📌 스택의 특징 스택은 위의 사진처럼 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있고, top으로 정한 곳을 통해서만 접근할 수 있다. top에는 가장 위에 있는 자료는 가장 최근에 들어온 자료를 가리키고 있으며, 삽입되는 새 자료는 top이 가리키는 자료의 위에 쌓이게 된다. 스택에서 자료를 삭제할 때도 top을 통해서만 가능하다. 스택에서 top을 통해 삽입하는 연산을 'push' , top을 통한 삭제하는 연산을 'po.. 2020. 2. 1.
[OS]프로세스(Process)와 스레드(Thread)의 차이/멀티 프로세스와 멀티 스레드의 개념 ,특징, 장단점 [OS] 프로세스(Process)와 스레드(Thread)의 차이/멀티 프로세스와 멀티 스레드의 개념 , 특징, 장단점 1. 프로세스(Process)와 스레드(Thread) 먼저, 프로세스(process)란 무엇일까? 프로세스는 단순하게 말하면 일을 처리하는 일련의 과정을 말합니다. 예를 들어, 아침에 일어나 학교에 가는 과정도 하나의 프로세스라고 할 수 있습니다. 아침에 일어나서 씻고 준비를 한다. 역으로 걸어간다 지하철을 탄다 역에서 내려 학교로 간다. 💡 컴퓨터에게는 프로세스란 운영체제로부터 시스템 자원을 할당받는 작업의 단위 컴퓨터에서 연속적으로 실행되고 있는 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스를 말합니다. 💡 하나의 프로세스는 크게 코드영역(code), 데이터 영역(date.. 2020. 1. 30.