분류 전체보기
[ Frontend ] JWT 토큰을 저장하는 방법
JWT ( Json Web Token ) Json Web Token 이란 사용자의 인증이 담긴 정보를 암호화한 토큰을 의미한다. JWT 정보를 Authorization 에 담아 전송하며, 이것을 서버에서 검증하여 사용자의 정보 열람, 권한 부여 등의 인증/ 인가 작업을 수행할 수 있다. JWT 탈취하는 주요 공격으로는 XSS, CSRF 공격이 있다. XSS ( Cross Site Scripting ) CSS 라고 불리지 않는 이유는 cascading style sheets ( css ) 가 이미 널리 쓰고 있기 때문이다. XSS 공격은 공격자가 상대방의 브라우저에 스크립트가 실행되도록 하여, 사용자의 세션 혹은 웹사이트를 변조하여 악의적인 콘텐츠/ 피싱 공격을 의미한다. CSRF ( Cross Site ..
[ 알고리즘 ] 해시 테이블 ( Hash Table )
해시 테이블 Hash table ( hash map ) 이란 해시함수를 사용해서 변환한 값을 index 로 삼아 key 를 value 로 매핑하는 자료 구조를 의미한다. 해시 테이블은 다음과 같은 특징을 가진다. Key 값으로 Value 값을 찾을 수 있기 때문에, 매우 빠른 검색 속도를 가지고 있다. 특정 키값을 알면 value 값이 나오기 때문에 키 값은 Unique 해야한다. Key - value 의 1대1 매칭구조이기 때문에 삽입, 삭제, 검색 모두 평균적으로 충돌이 없는 경우 O(1) 의 시간 복잡도를 가짐 해시 함수 Hash Code 를 만들어주는 함수 MD5, SHA 가 대표적이다. 보통 1비트 값만 바뀌어도 값이 크게 바뀌는 눈사태 효과를 가지고 있다. ( 보안과 관련 ) 해시 테이블의 장..
[ 알고리즘 ] 스택, 큐
스택 ( Stack ) vs 큐 ( Queue ) 스택과 큐는 자료 구조의 형태이며, 서로 상반되는 형태를 가진 자료 구조이다. 둘이 어떤 차이가 있는지 한번 살펴보도록 하자 스택 ( Stack ) 스택이란 쌓는다는 것을 의미한다. 예를 들어 책을 박스에 쌓어서 창고에 보관하려고 했는데 내가 보려고 뒀던 책을 상자에 실수로 넣었으면 넣은 순서의 반대로 하나 하나 꺼내서 책을 찾아야 할 것이다. 상자에 차곡 차곡 쌓인 책을 꺼낼때 밑에서 부터 꺼낼수 없듯이 마지막에 넣은 자료가 가장 먼저 꺼내지는 특징을 가진 구조이다. 이러한 스택의 구조는 후입선출 ( LIFO ) 구조라고 한다. 상자에 책을 쌓는, 스택에 값을 삽입하는 연산을 Push, 상자에서 책을 꺼내는, 스택에 값을 삭제하는 연산을 Pop 이라 한..
[ 알고리즘 ] 그래프, 트리
그래프 트리 방향성 방향, 무방향 방향 사이클 순환, 비순환, 자기순환(self-loop) 비순환 루트노트 루트 없음 한개의 루트 노드 부모- 자식 부모-자식 개념 없음 1:N 의 부모-자식 관계 모델 네트워크 모델 계층 모델 간선 수 자유 N-1개 그래프 그래프란 노드 ( Node ) 와 간선 ( Edge ) 를 하나로 모아둔 자료 구조로, 연결되어 있는 객체들간의 관계를 나타내는 자료 구조이다. 그래프는 다음과 같은 특징을 갖는다. 그래프는 노드 ( 정점 Vertex 라고도 함), 간선 ( Edge ) 로 이루어져 있으며 간선이 화살표인 경우에는 방향성을 띄게 된다 이를 유향 그래프라고 하고, 화살표가 없는 경우는 무향 그래프라고 한다. 간선에 특정한 수치를 가질 수 있는데 이를 가중치 ( Weigh..
[ 알고리즘 ] 이진 탐색 ( Binary Search )
이진 탐색 ( Binary Search ) 업 앤 다운이라는 게임이 있다. 이 게임의 룰은 사회자가 1~100 사이의 숫자를 정한 뒤 그 숫자를 돌아가면서 맞추는 게임으로 부른 숫자가 사회자가 부른 숫자보다 낮으면 Up, 부른 숫자가 사회자가 부르는 숫자보다 높은 숫자면 Down 이라고 해서 그 숫자를 맞추는 게임이다. 이 게임에서 가장 빠른 방법은 당연히 운빨로 한번에 맞추는거겠지만, 평균에 수렴하게 되면 가장 빠르게 답을 찾을 수 있는 방법은 절반값을 계속 불러서 답을 찾아가는 방식이다. 이런식으로 값을 찾아가는 방식이 바로 이진 탐색 방식이다. 이 방식을 사용하면 100에서 값을 찾는데 걸리는 최악의 경우 logn ( 이진 로그) 으로 6.64 정도, 아무리 최악의 상황에도 7번 안에 답을 찾을 수..
[ 알고리즘 ] 배열과 링크드 리스트
배열 연결 리스트 크기 고정 크기 ( 처음 선언 값 ) 동적 사이즈 ( 데이터 삽입 / 삭제에 따라 증감 ) 요소 접근 O(1) : 인덱스를 이용 O(n) : 주소값을 이용 삽입/삭제 (Head) O(n) O(1) 삽입/삭제 ( Tail ) O(1) O(1) 삽입/삭제 ( 중간 ) O(n) O(1) / 탐색 시간 O(n) 배열 ( Array ) 배열은 연속된 메모리 공간에 같은 타입의 데이터를 할당하는 선형 자료 구조이다. 배열의 크기는 선언 시점에서 정해야하며 int Five_grade[30] = {1,2,3,4,5 ..} 배열 생성 시, 선언한 크기만큼의 메모리가 할당된다. 예를 들자면 학교의 출석부 같은 구조라고 할 수 있다. 처음 반을 등록할 때 출석부라는 이름의 메모리에 30번 까지 준비(할당)..
[ 알고리즘 ] 시간 복잡도와 공간 복잡도에 대하여
시간 복잡도 ( Time complexity ) 프로그램이 실행될 때, 입력값과 연산 수행 시간의 상관 관계를 나타내는 척도. 보통 점진적 표현법을 사용함 시간 이름 사용하는 알고리즘 O(1) 상수 시간 ( Constant time) index 를 사용해 데이터 찾기, Push, Pop O(log n) 로그 시간 ( Log time ) 이진 탐색 ( Binary Search ) O(n) 선형 시간 ( Linear time ) 선형 검색 O(n log n) 선형 로그 시간 ( Log Linear time ) 퀵 정렬, 병합 정렬, 힙 정렬 O(n2) 제곱 시간 ( Quadratic time ) 이중 For 문, 삽입 정렬, 버블 정렬, 선택 정렬 O(2n) 지수 시간 ( Exponential time ) ..
[NETWORK] 웹프로토콜 이란
웹 프로토콜이란? 웹에서 쓰이는 프로토콜, 즉 웹에서 사용하는 통신 규약으로 통신을 할때 약속을 하고 전달하는 것이다. HTTP / HTTPS 인터넷에서 데이터를 주고받는 프로토콜이다. 웹 서버에서 통신하기 위해 사용하는 주요 프로토콜이다. 주로 4가지 방식을 통한 통신을 하는데 GET : 문서를 요청, 조회할때 사용 HEAD : 상태 정보를 요청, GET 과 동일하게 응답 POST : 데이터를 서버로 송신, 서버에서 데이터를 특정 데이터에 생성 PUT : 데이터를 서버로 송신, 서버가 특정 아이템을 완전 대체 IP / MAC / ARP IP ( Internet Protocol ) : 각 노드에 부여된 주소 MAC ( Media Access Control ) : 각 네트워크에 할당된 고유 주소 ARP (..
[NETWORK] Base64 인코딩이란?
Base 64 이진 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 문자로 표현하기 위해 만들어진 인코딩이다. ASCII 를 사용해서 표현할 수 있는 가장 큰 진법이기 때문에 Base64 를 이용해서 만들어졌다. 보통 A-Z, a~z, 0~9, + , / 를 사용해서 64 글자를 채운다. 그리고 마지막 연산중 모자라는 비트가 생기면 = 로 채워넣는다. 보통 = 가 1개에서 2개정도 생긴다고 한다. 굳이 Base 64 로 인코딩하는 이유는 공통인 64개의 안전한 출력 문자만 사용해 인코딩해서 전달하는 것으로, 데이터가 더 길어지긴 하지만 공통 문자열로 인코딩했기에 어떤 OS 에서 사용해도 데이터가 왜곡되지 않기 때문이다.
[NETWORK] TCP 와 UDP 설명과 비교
TCP vs UDP TCP 와 UDP 는 OSI 7 Layer 와 TCP/IP 모델의 전송계층에서 사용되는 프로토콜이다. 전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하고, IP에 의해 전달되는 오류를 검사하며 재전송 제어를 담당하는 계층이다. TCP (Transmission Control Protocol) 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 사용되는 프로토콜 컴퓨터가 다른 컴퓨터와 데이터 통신을 하기 위한 규약(프로토콜)의 일종이다. 한국어로 번역하면 전송 제어 프로토콜. TCP는 세계 통신표준으로 개발된 OSI 모형에서 4번째 계층인 전송 계층(Transport Layer)에서 사용하는 규약으로 보통 하위 계층에 사용하는 IP 와 묶어서 TCP/IP 라고 한다. 3 way ..