coding/IT, CS 17

인덱스(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

시간 복잡도, 공간 복잡도

빅오 표기법이란 코드를 분류하거나 비교할 수 있도록 하는 시스템 알고리즘 성능을 분석하기 위해 빅오 표기법 사용 빅오란 입력된 내용이 늘어날수록 알고리즘에 실행시간이 어떻게 변하는지 설명하는 공식적인 방법 입력의 크기와 실행시간의 관계 시간, 공간 복잡도에 대한 이해가 가능함(정확도 보단 전체적인 추세를 가늠함) 빅오의 특징 산수는 상수 시간 -> 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

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

github 커밋 히스토리 삭제

프로젝트 중 팀원 한분이 개인 s3 시크릿 키를 메인 브랜치에 커밋해버린 문제가 생겼다. 파일을 지우더라도 커밋 기록에 시크릿 키가 남게 되면 해커들의 공격으로 해킹될 문제가 있을 수 있다고 들었다. 커밋 기록을 지워버려야 하기 때문에 revert를 이용해서 커밋을 되돌아갔다가 수정해서 다시 커밋해서 올렸는데 파일은 없어졌지만, 커밋 기록은 계속 남아 있었다.(아마 제대로 안 된 거겠지? 모르겠다.) 해결이 안 돼서 레포를 다시 파야하나, s3를 다시 생성해야 하나 등 여러 방법을 생각했지만, 모두 최후의 수단이었고, 커밋 기록만 지우는 방법을 찾기로 했다. 같이 블로그를 뒤져가면서 기록 삭제하는 법을 찾아서 적용해서 해당 커밋 내의 내용을 지울 수 있었다. 해결 방법으로는 아래와 같이 코드로 어떤 파일..

coding/IT, CS 2022.09.12

TCP / UDP

네트워크의 계층들 중 전송 계층에서 사용 하는 프로토콜 TCP, UDP에 대해 알아보자 전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며, IP에 의해 전달되는 패킷의 오류를 검사하고, 재전송 요구 등의 제어를 담당한다. 즉, 데이터 전달 담당 그 데이터를 보내기 위해 사용 하는 프로토콜 : TCP, UDP *패킷이란, 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러개의 조각들로 나누어 전송하는데 이때 데이터의 조각을 패킷이라고 함. TCP(Transmission Control Protocol) 전송을 제어하는 프로토콜(규약) 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 일반적으로 TCP와 IP는 함께 사용, I..

coding/IT, CS 2022.09.04

http 상태코드

api통신을 하다 보면 http의 상태 코드를 어떻게 해서 응답해야 할지 고민이 많이 든다. 이번 기회에 http상태 코드를 공부해보고 자주 사용하는 코드를 정리해서 잘 사용하려고 정리해본다. status code 사용자가 웹 서버에 요청을 보냈을 때, 응답으로 보내주는 숫자 코드 각 숫자는 미리 약속된 특정한 의미를 가지고 있다. 클라이언트는 응답으로 온 코드의 숫자를 통해 요청이 성공했는지, 실패했다면 무슨 이유인지 대략적으로 알 수 있다. 기본적인 status code 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나..

coding/IT, CS 2022.08.31