Computer Science

Computer Science/DataBase

데이터베이스의 Key와 유일성과 최소성

데이터베이스의 Key에 대해서 이해하기 전에 먼저 중요한 용어인 유일성과 최소성에 대해서 확실히 이해하고 넘어가야 키에 대한 역할을 확실하게 구분 할 수 있다. 유일성과 최소성 유일성 먼저 유일성에 대해서 알아보자면 유일성은 이해하기가 간단하다. 다음과 같은 Member 테이블을 가정해보자. member_id name age Gender 1 김봄보 20 남 2 문봄보 20 남 3 박봄보 21 녀 4 문봄보 19 남 유일성이란, 여러 개의 튜플이 존재 할 때, 각각의 튜플을 유일하게 식별 할 수 있는 것을 의미한다. 위의 테이블을 봤을 때, member_id 말고 다른 값들은 중복 된 값이 존재해서 각각의 튜플들을 구분 할 수 없는 것으로 보여진다. 이럴 때 member_id는 유일성을 가졌다고 본다. 튜..

Computer Science/Network

웹 서버와 WAS의 차이, 그리고 아파치와 NGINX 알아보기

우선 웹 서버(Web Server)와 WAS(Web Application Server)의 차이에 대해서 이해하기 전에 먼저 알아둬야 할 것이 있습니다. 바로 Static 페이지와 Dynamic 페이지입니다. Static 페이지, Dynamic 페이지 Static 페이지 동적인 작업없이 서버에서 별도의 처리가 없이, 사용자에게 바로 보여주어도 되는 페이지를 말합니다. 즉, static 페이지는 어떠한 사용자가 접근하던 간에 동일한 페이지를 보여주게 됩니다. EX) html, image, css Dynamic 페이지 서버에서 어떤 일련의 과정들을 거쳐서 데이터가 변할 수가 있는 페이지입니다. 주로 데이터베이스에서 데이터를 가지고 오는 페이지들이고, 이는 어떤 사용자인지에 따라서 다른 페이지가 보여줄 수 있게..

Computer Science/Network

CORS 작동 방식 시나리오와 해결법

CORS 작동 방식 3가지 시나리오 이전 포스팅에서 SOP 그리고 CORS의 동작 흐름에 대해서 포스팅하였다. 이번 포스팅에서는 CORS의 기본 동작 흐름말고 CORS가 동작하는 세 가지 시나리오와 그 해결법에 대해서 알아보고자 한다. 예비 요청(PreFlight Request) 우리가 흔히 접하게 되는 CORS 동작 방식이다. 웹 브라우저는 요청을 보낼 때 사실 한 번에 바로 보내지 않고, 먼저 예비 요청을 보내고 난 뒤 서버와 잘 통신되는지 확인을 한 후에 본 요청을 보낸다. 이 때, 예비 요청의 역할은 본 요청을 보내기 전에 브라우저 스스로 안전한 요청인지 미리 확인하는 것이다. 브라우저가 예비요청을 보내는 것을 PreFlight라고 부르고, 예비요청의 HTTP 메서드는 OPTIONS 메서드이다. ..

Computer Science/Network

CORS의 개념과 작동방식

스프링 & 리액트 프로젝트를 진행하면서 클라이언트에서 처음 서버로 api 통신을 할 때 마주쳤던 CORS(Cross-Origin-Resource-Sharing) 이다. 당시에는 CORS가 그저 허락한 리소스에 대해서만 통신을 할 수 있게 해주는 것이라고만 가볍게 알고 해결 법은 구글링해서 middleware 를 사용해서 통신이 가능하게 해줬다. 하지만 이런 얕게 알고 있던 지식 때문에 Access-Control-Allow-Origin 의 설정을 서버에서 * 로 해두어서 사실 상 모든 리소스에서 접근 권한이 가능하도록 설정을 했었다. 그럼 이 CORS가 무엇인지 왜 생겼는지 하나 하나 살펴보자.SOP(Same-Origin Policy)CORS를 얘기하다가 갑자기 이상한 SOP가 나왔다. CORS를 이해하기..

Computer Science/DataBase

3 계층 스키마 ( 3-Level Schema)

3 계층 스키마를 이해하기 전에 먼저 알아둬야 할 것이 있다. 릴레이션 테이블과 비슷하며 릴레이션 스키마와 릴레이션 인스턴스로 구성되어 있다. 릴레이션에서 연관 관계 및 제약 조건이 생긴다면 그 때 테이블이 된다. 스키마 관계형 데이터베이스에서 기본 구조를 정의하는 것이다. - 데이터 개체(Entity), 속성(Attribute), 관계(Relationship), 제약조건(Constraint) 등에 대해 정의하는 것. - 이는 관점에 따라서 외부 스키마, 개념 스키마, 내부 스키마로 나뉠 수 있다. 주의 릴레이션 스키마와 스키마는 엄연히 다르다는 것을 인지하여야 한다. 3-Level Schema 3-Level Schema 란 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하..

Computer Science/Data Structure

편향 이진탐색트리를 해결하기 위한 방법(2) RED-BLACK TREE

이전에 포스팅 했던 편향 이진 탐색 트리를 해결 하기 위한 방법 중 하나인 AVL TREE 가 아닌 또 다른 해결 방법인 RED-BLACK TREE에 대해서 알아보자. RED-BLACK TREE 레드-블랙 트리도 처음 공부할 때, 많이 헷갈릴 수 있다. 특히 나중에 해결하기 위한 방법으로 Recoloring 과 Restructuring 방식 두 가지가 나오는데, 언제 적용해야 하는지가 분명하지만 이상하게도 자주 헷갈린다! 이를 쉽게 구분하기 위한 개인적인 팁도 제공해보려고 한다. 먼저 RED-BLACK TREE 의 특징에 대해서 알아보자. RED-BLACK TREE 특징 모든 노드는 빨간색 or 검은색 이다. 루트 노드는 무조건 검은색이다. RED-BLACK 트리에 존재하는 NIL은 검은색이다. 빨간색 ..

Computer Science/Data Structure

Hash Fuction, Hash Table, Hash Collision

Hash Function 데이터의 효율적인 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수와 관련된 용어를 먼저 살펴보자. Key : 매핑 전 값 Hash value : 매핑 후의 값 Hashing : 매핑하는 과정 위의 용어들을 기본으로 두고 자세히 살펴보자. Hash Table 해시 테이블은 Key를 Hash Function을 사용하여 Hash value로 매핑하고, 이 Hash Value를 index로 Data를 저장하는 방식이다. 듣다보면 파이썬, JS의 Dictionary, 자바의 Map이 떠오를건데 바로 Hash Table을 방식을 택한 자료구조 이다. 위 사진을 보면 buckets 라는 것이 보인다. buckets 는 해시 테이블에서 데이터가 저장..

Computer Science/Data Structure

편향 이진탐색트리를 해결하기 위한 방법(1) AVL TREE

AVL(Adelson-Velsky and Landis)TREE AVL의 full form은 발명자의 이름이다. 먼저 AVL 트리의 특징에 대해서 살펴보자. 특징 이진탐색트리의 속성을 그대로 가진다. 왼쪽, 오른쪽 서브트리의 높이 차이가 최대 1이어야 한다. 높이 차이가 1보다 커지면 Rotation을 통해 균형을 맞춘다. Rotation 방식을 설명하기 전에, 먼저 높이 차이를 비교하는 BF에 대해서 먼저 이해할 필요가 있다. BF(Balance Factor) $ BF(K) = K_{leftHeight} - K_{rightHeight} $, K = Node 수식처럼 노드의 왼쪽 높이와 오른쪽 높이를 비교하는 요소를 BF 라고 한다. 만약 height의 의미가 이해가 안된다면, 트리의 특징에서 height..

Bombo_
'Computer Science' 카테고리의 글 목록