coding 97

인덱스(INDEX)

인덱스란 추가적인 쓰기 작업과 저장공간을 활용하여 데이터베이스 테이블의 검색속도를 향상하기 위한 자료구조 구조 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장 B+트리 자료구조 : O(log2^N) 성능의 빠른 조회 가능 장점 - WHERE 조건 - 풀스캔(Full Sacn) : 데이터 전체를 모두 돌면서 조회하는 방법 O(n) - 인덱스스캔(Index Scan) : 인덱스 설정한 컬럼은 정렬되어 있기 때문에 조건에 맞는 데이터를 빠르게 찾아낼 수 있음 - ORDER BY 정렬 - 인덱스 설정 시 이미 별도의 메모리에 데이터를 정렬하여 저장하기 때문에 정렬이 되어있음 단점 - 데이터 변경에 취약 - INSERT, UPDATE, DEL..

coding/IT, CS 2023.01.27

SQL - 쿼리문 CRUD 명령어

SQL 쿼리문 CRUD 명령어 DB구조 DATABASE(DB) > TABLE > COLUMN > DATA - SELECT 조회 가장 기본 구문 SELECT * FROM TABLE WHERE COLUMN = ? DB가 다른 테이블에서 조회 SELECT * FROM DB.TABLE WHERE COLUMN = ? 특정 칼럼만 조회(조건 x) SELEECT COLUMN1, COLUMN2 FROM TABLE 칼럼1에 대한 중복을 제거한 데이터 조회 SELECT DISTINCT COLUMN1 FROM TABLE 칼럼1을 별칭으로 출력 SELECT COLUMN1 AS WORD FROM TABLE 칼럼1에 1.1을 곱한 값(10%의 값)을 조회 - 표현식 SELECT COLUMN1*0.1 FROM TABLE Ex) E..

coding/IT, CS 2022.12.31

재귀함수 recursion Function

재귀 함수 함수가 직접 또는 간접적으로 자신을 호출하는 함수 필수 조건 재귀 함수는 끝나는 지점(종단점)을 설정해주어야 하고, 매번 다른 인풋 값이 들어갈 수 있도록 해야 함 주의할 점 종단점 미설정(무한 루프에 빠짐) 잘못된 값을 반환, 반환을 하지 않음(같은 인풋 값이 들어가서 무한루프에 빠짐) // n부터 카운트다운 하는 함수 function consoleN(n) { if (n === 0) { // 끝내는 조건 console.log("done!"); return; } console.log(n); n--; // 매번 다른 인풋값 consoleN(n); // 자기자신 다시 호출 } consoleN(3); /* 3 2 1 done! */ // n까지 숫자의 합 function sumN(n) { if (n..

coding/JS 2022.12.20

js reduce()

reduce()는 배열의 각 요소를 순회하며 callback 함수의 실행 값을 누적하여 하나의 결과값을 반환함 arr.reduce(callback[, initalValue]) callback 함수 4가지 인수 1. acc : callback 함수의 반환값을 누적 2. cur : 배열의 현재 요소 3. index(Optional) : 배열의 현재 요소의 인덱스 4. arr(Optional) : 호출한 배열 initialValue(Optional) 최초 callback 함수 실행시 acc 인수에 제공되는 초기값 initialValue 미설정시 초기값을 배열의 첫번째 요소 사용 빈배열에서 initialValue미 설정시 에러 발생 Ex) 가장 간단한 표현 const a = [1, 3, 5, 7, 9]; let..

coding/JS 2022.12.19

시간 복잡도, 공간 복잡도

빅오 표기법이란 코드를 분류하거나 비교할 수 있도록 하는 시스템 알고리즘 성능을 분석하기 위해 빅오 표기법 사용 빅오란 입력된 내용이 늘어날수록 알고리즘에 실행시간이 어떻게 변하는지 설명하는 공식적인 방법 입력의 크기와 실행시간의 관계 시간, 공간 복잡도에 대한 이해가 가능함(정확도 보단 전체적인 추세를 가늠함) 빅오의 특징 산수는 상수 시간 -> O(1) 변수 배정(할당)은 상수 시간 -> O(1) 배열 엘리먼트를 인덱스로 접근하면 상수 시간 -> O(1) 객체를 키를 사용하여 접근하면 상수 시간 -> O(1) 루프는 루프의 길이(n) * 루프 안 연산 -> O(n) 중첩 루프라면 -> O(n^2) 빅오 표기 O(1) : 상수 시간 입력 크기(n)에 상관없이 일정한 연산을 수행 O(logn) : 로그 ..

coding/IT, CS 2022.11.26

NginX란

NginX란 트래픽이 많은 웹사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반구조의 경량 웹서버 프로그램 정적 파일을 응답해주는 웹서버로 활용되거나 리버스 프록시를 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서의 역할을 수행함 웹서버 : 단순히 정적 파일 응답. HTML, CSS, JS 같은 정적인 정보를 사용자(브라우저)에 전송해주는 역할 WAS(Web Application Server) : 클라이언트 요청에 대해 동적 처리가 이뤄진 후 응답. 비즈니스 로직, 데이터 처리를 하는 서버 NginX의 특징 아파치(apache) 보다 동작이 단순하고 전달자 역할만 하기 때문에 가볍고, 동시접속에 특화되어 여러 요청을 한 번에 처리할 수 있음 리버스 프록시 서버로 활용하여 서버의 부하를 줄 일 수 있는..

coding/IT, CS 2022.11.19

MVC, MVP, MVVM 패턴의 이해

역할을 분리하는 이유 각각의 역할을 나눠 코드를 관리하기 위함 역할이 나눠져 있기 때문에 유지보수와 개발 효율이 좋음. MVC 패턴 MODEL + VIEW + CONTROLLER가 합쳐진 모습 가장 많이 사용되는 디자인 패턴 중 하나 사용자가 컨트롤러(Action)를 통해서 모델을 변화시키면 뷰가 업데이트되는 형태 - 모델(Model) : 데이터가 변경되고 조작되는지에 대한 비즈니스 로직을 나타낸다. - 뷰(View) : UI 컴포넌트를 나타내고, 뷰는 컨트롤러가 폼 형태로 되돌려준 결과를 보여준다. - 컨트롤러(Controller) : 들어오는 요청을 처리하고, 모델에서 뷰로 가는 과정을 통해 사용자의 데이터를 가져온다. MVC 패턴 동작 1. 사용자의 Action으로 컨트롤러에 들어옴 2. 컨트롤러는..

coding/IT, CS 2022.11.18

이진 탐색법

이진 탐색법이란 데이터가 정렬돼 있는 배열에서 특정한 값을 찾아내는 알고리즘 데이터 집합에서 원하는 데이터를 찾을 때까지 집합을 이분하여 탐색하는 방법 데이터 양이 많을 때 사용 시 효율적 정렬된 배열 안에서 특정 값의 유무를 파악 시 사용됨 이진 탐색법 조건 데이터가 반드시 순서대로 정렬된 상태여야 함 이진 탐색법 과정 1. 배열의 중간 값과 특정 값을 비교 2. 특정값이 중간 값보다 크다면 배열의 중간값 이하의 값을 제외한 배열을 만듦 3. 다시 특정값을 새로 만든 배열의 중간 값과 비교하여 작다면 중간 값보다 큰 값들을 제외하고 배열을 만듦 4. 위의 과정을 반복하여 특정값이 중간값과 일치하거나, 더 이상 배열을 새로 만들 수 없을 때 특정값의 유무를 확인 이진 탐색 코드 const binarySe..

coding/IT, CS 2022.11.15

readline 모듈

readline 모듈이란 한 번에 한 줄씩 데이터를 읽기 위한 인터페이스를 제공하는 모듈 자바스크립트에서는 readline 모듈을 이용하면 콘솔을 통해 값을 입력받을 수 있다. 즉, 입출력을 한 줄씩 처리하는 모듈(알고리즘 문제 풀 때) 사용 방법 1. 모듈 불러오기 const readline = require("readline"); 2. readline 모듈을 이용해 입출력을 위한 인터페이스 객체 생성 const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); 3. rl 변수 설정 rl.on("line", (line) => { // 한 줄씩 입력받은 후 실행할 코드 // 입력된 값은 line에 저장된다. ..

coding/Node.js 2022.11.12

postman api DOCS 링크 공유

postman을 이용한 api명세를 작성하고 해당 api명세를 링크로 만들어 공유하는 방법 1. Collections 생성 2. 폴더 및 api요청 생성 3. api 요청 저장 4. 응답 값 저장 예외처리 상황 응답 값은 선택적으로 저장 5. Collection 및 폴더, api 명세 설명 작성 6. 작성한 api명세서 문서화 오른쪽 아래(Documentation) View complete collection documentation 클릭 7. 문서 내용 확인 및 링크 복사 오른쪽 위 Published 클릭 8. 링크 공유 및 api명세 확인 Documentation에 작성한 설명들도 볼 수 있음 요청한 api url 경로 확인 및 응답 값 확인 가능 여러 상황의 응답 값도 확인 가능 작성한 api 명세..

coding/IT, CS 2022.11.11