CS

    OAuth 2.0 (Open Authorization)

    OAuth 개념 Open Authorization 2.0의 약자로 인증을 위한 프로토콜이다. 제 3자 인증방식으로 구글 , 카카오, 네이버 ,페이스북, 깃허브 등에서 제공하는 간편 로그인 기능을 말한다. 기본적으로 사용자는 서버를 신뢰하지 않고, 자신의 민감한 정보를 작성하는 것을 꺼린다. 서버 측 또한 마찬가지로 사용자의 민감한 정보를 관리하는데 리소스가 필요하다. 따라서 OAuth를 사용해 신뢰할 수 있는 서버에 정보를 맡겨놓고 접근 할 수 있는 권한을 주는 것을 말한다. OAuth 2.0 주체 - Resource Owner : 사용자 - Resource Server & Authorization Server : OAuth를 통해 인증, 인가를 제공해주는 서버 를 말한다. 사용자의 자원(이름, 이메일)..

    Context Switching (문맥 교환) & PCB

    Context Switching CPU는 한번에 한가지일만 수행할 수 있다. CPU가 하나의 프로세스를 실행하고 있는 상태에서 요청(인터럽트 , 시스템콜)에 의해 다른 프로세스를 실행해야할 때, 기존의 프로세스 상태를 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스 상태를 교체하는 것을 말한다. 인터럽트(Interrupt) : 예상치 못하게 외부에서 발생한 이벤트로 인해 프로세스를 잠시 중단하는 것 시스템콜(system call )? : 커널모드와 사용자 모드의 인터페이스 역할 Context Switching 과정 멀티 프로세스 상황에서 Running 상태인 프로세스 1과 Ready 상태인 프로세스 2가 존재할때, 그리고 이 둘의 프로세스는 인터럽트 요청에 의해 서로 상태가 전이된다고 가정한..

    Mysql JOIN

    Join : 두 개이상의 테이블을 연결해 하나의 테이블처럼 만드는 것을 말한다. 먼저 employee(사람)와 titile (직업) 테이블이 존재할 때 , Left Join (= Left Outer Join) 왼쪽 A 테이블 기준으로 B 테이블을 붙이는 것 select * from employees A left join title B on A.title_id = B.id 왼쪽 테이블의 데이터를 모두 가져오고 , 오른쪽 테이블은 match 됐을때 가져옴 따라서 오른쪽 테이블에서 없는 값들은 Null로 표시된다. 이때 순수 A테이블 데이터만 가져오고 싶다면 select * from employees A left join title B on A.title_id = B.id where B.id is null R..

    데이터베이스 정규화(Normalization)

    1. 정규화란?RDBMS 설계에서 중복을 최소화해 데이터를 구조화하는 과정을 정규화라고 한다.1.1 정규화의 목적중복된 데이터를 허용하지 않음으로 무결성을 유지해 DB의 저장용량을 줄일 수 있다 .무결성이란? 모든 데이터가 완전하고 일관되고 정확한지를 말한다.데이터베이스 구조 확장 시 재디자인을 최소화할 수 있다. 정규화된 DB에서 새로운 데이터 형의 추가로 인한 확장시, 구조변경을 하지 않아도 되거나 일부만 변경해도 된다. 이는 DB와 연결된 응용 프로그램에 최소한의 영향을 준다.insert/update/delete 시 발생할 수 있는 각종 이상 현상(Anomaly)를 방지할 수 있다.이상현상(Anomaly)란?삽입 이상(Insertion anomaly) : 불필요한 정보를 함께 저장하지 않고서는 정보..

    RDBMS vs NOSQL

    RDBMS (= Relational Database Management System) 관계형 데이터 베이스는 엑셀의 형식과 유사하게 행(Row)과 열(Record)을 가지고 있는 2차원 테이블 형식이다. RDBMS는 말 그래도 테이블끼리 관계를 가지고 있는데 일대일관계, 일다대관계, 다대다관계로 나눌 수 있으며 이러한 관계를 나타내기 위해 외래 키(foreign key)를 사용한다. 이 외래 키는 한 테이블의 키 중에서 다른 테이블의 행을 식별할수 있는 키를 의미한다. sql언어를 사용해 저장, 수정, 삭제를 할 수 있으며, 대표적으로 mysql, oracle이 있다. 장점 명확한 구조를 가지고 있기 때문데 정보의 내용을 확인하기 쉽다. 데이터의 분류, 정렬 , 탐색 속도가 빠르다. 오랫동안 사용된 만큼..

    redis의 특징과 자료구조 및 pub/sub

    레디스 특징레디스는 Key-value 형태의 Nosql DB이다.In-Memory DB 이다.관계형 데이터 베이스(mysql)보다 훨씬 빠른데, 그 이유는 메모리 접근이 디스크 접근보다 빠르기 때문이다.인메모리 데이터 베이스 : RAM에 데이터를 저장하기 때문에 빠르지만, 휘발성 메모리이기 때문에 시스템 장애시 데이터가 손실될 수 있다. 따라서 cache로 주로 사용한다.레디스 자료구조 레디스의 장점은 다양한 자료구조를 지원하는 것이다. 레디스는 다양한 자료구조를 key-value 형태로 저장한다. String, BitMap, Hash, List, Set,Sorted Set 등  String : 키와 연결할 수 있는 가장 간단한 유형의 값이다. 레디스의 키가 문자열이므로 문자열을 다른 문자열에 매핑하는 ..

    JWT (JSON Web Token)

    1.1 JWT 이란?유저를 인증하고 식별하기 위한 토큰(Token)이다.JWT는 서버와 클라이언트 간 정보를 주고 받을 때, Http Request Header에 JWT 토큰을 넣어서 전송하며, 서버는 별도의 인증 과정없이 헤더에 포함되어 있는 JWT정보를 통해 인증한다.JWS(Json Web Signature)은 JSON으로 전자 서명을 하여 url - safe 문자열로 표현한 것이며 JWE(JSON Web Encryption)은 json을 암호화하여 url-safe 문자열로 표현한 것이다.1.2 JWT 토큰 구조: JWT는 세 파트로 나누어지며 순서대로 헤더 , 페이로드 ,시그니처(서명) 으로 이루어져 있다.며. 각 파트는 점으로 구분하여 xxxxx.yyyyyy.zzzzz의 형식으로 표현된다. 각각의..

    암호화와 복호화 그리고 양방향 암호화

    - 암호화 & 복호화 암호화 : 평문(해독 가능한 텍스트)을 암호문으로 변환하는 과정 ex) “12345” → 암호화 → 암호문(”ads5gjsk!asfasdf”) 복호화 : 암호문을 평문으로 변환하는 과정 ex) 암호문 → 복호화 → 평문(”12345”) - 암호화의 종류 단방향 암호화 : 암호화 후 복호화를 할 수 없는 것이 특징 ex ) 사용자 비밀번호. 사용자가 입력한 비밀번호를 암호화하여 db에 저장이 될때, 모든 접근자는 암호화 된 코드를 다시 평문으로 볼 수 없다. 이는 해킹이 되어도 복호화가 매우 힘들다 해쉬 방식이 대표적 해쉬 함수: 해쉬 함수는 임의의 길이의 데이터를 입력받아 일정한 길이의 비트열로 반환 시켜주는 함수로 입력값의 길이가 달라도 출력값은 언제나 동일한 길이로 반환되며 동일..