본문 바로가기

튜나 개발일기79

[JUnit] JUnit을 이용한 단위 테스트하기+단정(assert)메소드 정리 [JUnit] JUnit을 이용한 단위 테스트하기+단정(assert)메소드 정리 단위테스트의 중요성을 알고 있었지만, 여러가지 이유(핑계)로 사용하지 않고 있었습니다. 그러던 중 얼마전부터 jUnit을 이용한 단위테스트 방식의 개발을 시작하게 되어 저와 같이 테스트코드를 처음 짜보는 분들을 위해 관련 내용을 정리해보고자 합니다. 1. JUnit이란? 💡 자바용 단위테스트(Unit Test) 도구 입니다. 2. 단위테스트(Unit Test)란? - 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차입니다. - 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말합니다. (단위테스트를 사용하면 System.out으로 하는 번거로운 디버깅이 필요없습니다.) 3. j.. 2020. 3. 27.
[Elasticsearch] 엘라스틱 서치 분석기 구조 [Elasticsearch] 엘라스틱 서치 분석기 구조 엘라스틱서치를 공부하며 알게 된 내용들을 꾸준히 정리해보려고 합니다. 이번 글은 엘라스틱 서치 공식reference를 바탕으로 정리하였습니다. https://www.elastic.co/guide/en/elasticsearch/reference/current/analyzer-anatomy.html 먼저, 엘라스틱서치는 루씬기반의 텍스트 검색엔진 라이브러리입니다. 사전 매핑 없이 JSON 문서 형식으로 입력하면 별도의 이벤트가 없어도 바로 색인을 시작하며, 이렇게 저장된 데이터는 별도의 갱신 없이도 바로 검색에 사용될 수 있습니다. 이는 곧 색인 작업이 완료됨과 동시에 검색이 가능하다는 걸 의미합니다. 💡 분석기(analyzar)란? 엘라스틱서치는 아주.. 2020. 3. 27.
[SQL 튜닝] 드라이빙 테이블(DRIVING TABLE)의 개념/결정 규칙 [SQL 튜닝] 드라이빙 테이블(DRIVING TABLE)의 개념/결정 규칙 💡 먼저, 드라이빙 테이블(DRIVING TABLE)이란? JOIN시 먼저 액세스 돼서 ACCESS PATH를 주도하는 테이블을 드라이빙테이블이라고 한다. 즉, 조인시 먼저 액세스되는 쪽을 드라이빙 테이블(DRIVING TABLE, OUTER TABLE)이라고 하며, 나중에 액세스 되는 테이블을 드리븐 테이블(DRIVEN TABLE, INNER TABLE)이라고 한다. 인덱스(INDEX)의 존재 및 우선순위 혹은 FROM절에서의 TABLE 지정 순서에 영향을 받으며 어느 테이블이 먼저 엑세스되느냐에 따라 속도의 차이가 크게 날 수 있으므로 많은 양의 데이터를 다룰 때, 드라이빙 테이블은 매우 중요하다. 예를 들어, 조건을 만족하.. 2020. 3. 9.
[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.