목록전체 글 (106)
공부해봅시당

1. HTTP(Hyper Text Transfer Protocol)1-1. HTTP의 개요서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.즉, HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용한다. 1-2. HTTP의 구조애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다.HTTP는 상태를 가지고 있지 않는 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성 된다. 1-3. HTTP의 문제점암호화가 되지 않은 평문 데이터를 전송하기에 제3자가 조회 할 수 있다.비밀번호나 주민번호와 같은 민감한 데이터일 경우 큰 문제가 될 수 있다. 2. HTTPS(HyperText Transfer P..

TCP - 전송 제어 프로토콜`IP(Internet Protocol)`가 인터넷 프로토콜로서 복잡한 인터넷 망 속에서 클라이언트와 서버 간에 통신할 수 있게 IP 주소와 패킷과 같은 규칙을 통해 통신을 하게 하는 것이라면, `TCP(Transmission Control Protocol)`는 IP 규칙으로만 통신하기에 부족하거나 불안정하던 여러 단점들(패킷 순서가 이상하거나 패킷이 유실)을 커버해, 패킷 전송을 제어하여 신뢰성을 보증하는 프로토콜로 보면 된다. IP와 TCP 둘다 프로토콜이지만 이 둘을 동일시로 보면 안된다. 이 둘은 별개의 규칙이다.IP 규칙에 써있는대로 목적지까지 다다랐으면, TCP 규칙에 써있는대로 올바르게 도착했는지 정확히 누구에게 전달되야하는지 하나하나 따진다고 생각하면 된다. 그..

OSI 7 Layer와 TCP/IP Protocol현재 인터넷은 OSI모델이 아닌 TCP/IP 모델을 따른다.그리고 OSI 모델이 꽤나 유명했던 만큼 현재는 하단 3번째 그림인 `TCP/IP updated 모델`로 배우는 것이 좋다고 한다.또한 OSI 모델과 TCP/IP 모델을 비교 분석해보는 것도 좋다고 생각한다. 1. 사전지식1-1. 데이터(data)의 기술적 개념1) 데이터란 수많은 0과 1로 이루어진 숫자2) 데이터의 전기신호 컴퓨터는 2진법의 숫자를 전기의 켜짐(On), 꺼짐(Off)으로 표현 ∴ 데이터는 아주 긴 전기 신호 => 데이터 전달을 위해서는 긴 케이블 필요(ex) 해저 케이블 등) 1-2. 프로토콜(Protocol)1) 프로토콜이란 데이터를 전달하기 위한 ..

데이터베이스 성능 최적화와 관리 효율성을 높이기 위한 다양한 전략은 아래와 같이 다양하다. 1) Denormalization(반정규화) 2) Partitioning(파티셔닝) 3) Sharding(샤딩) 4) Replication(리플리케이션) 5) Clustering(클러스터링) 이번 시간에는 리플리케이션에 대해 알아보자. 1. Replication(리플리케이션) 1-1. 배경 아주 단순한 Database를 구성할 때는 아래 그림처럼 하나의 서버와 하나의 Database를 구성하게 된다. 하지만 사용자는 점점 많아지고 Database는 많은 Query를 처리하기엔 너무 힘든 상황이 오게 된다. Query의 대부분을 차지하는 `select`를 어느 정도 해결하기 위해 Replication이라는 방법이 나..

데이터베이스 성능 최적화와 관리 효율성을 높이기 위한 다양한 전략은 아래와 같이 다양하다. 1) Denormalization(반정규화) 2) Partitioning(파티셔닝) 3) Sharding(샤딩) 4) Replication(리플리케이션) 5) Clustering(클러스터링) 이번 시간에는 파티셔닝, 샤딩에 대해 알아보자. 반정규화에 대해서는 링크를 참고하길 바란다. 1. Partitioning(파티셔닝) Database Table을 더 작은 Table들로 나눈 것 파티셔닝은 아래 두 가지 종류로 나뉜다. Vertical Partitioning Horizontal Partitioning `Column`을 기준으로 Table을 나누는 방식 `Row`를 기준으로 Table을 나누는 방식 1-1. Ver..

1. 정규화란? `정규화`란 이상 문제를 해결하기 위해 속성들 끼리의 종속 관계를 분석하여 여러개의 릴레이션으로 분해하는 과정이다. 일반적으로 테이블을 여러개로 분해하면 속도는 상대적으로 느려질 수 있지만, 분해하지 않으면 `이상 문제`들이 발생하게 된다. 아래에서 어떤 `이상 문제`들이 발생할 수 있는지 살펴보자. * 정규화? 정규형? 뀨? 뭐지? 여기서 정규화와 정규형이라는 용어가 혼동될 수 있는데, 정규화를 하면 정규형이 달성되는 것이다. 정규화는 과정이고, 정규형은 그 과정을 통해 도달하는 목표 상태 또는 단계를 지칭한다. 따라서 `제1정규형을 만족하기 위해 제1정규화를 진행한다`는 표현이 나오는 것이다. 2. 이상(Anomaly) 정규화를 거치지 않아 데이터베이스내에 데이터들이 불필요하게 중복되..

1. 데이터 독립성이란? `데이터 독립성`이란 데이터베이스의 구조와 데이터의 내용이 서로 영향을 미치지 않는 것을 의미한다. 데이터 독립성은 `논리적 데이터 독립성`과 `물리적 데이터 독립성`으로 나눌 수 있다. 1-1. 논리적 데이터 독립성 `논리적 데이터 독립성`은 데이터베이스의 논리적 구조가 변경되어도 응용 프로그램이나 사용자의 요구에 영향을 주지 않는 것을 말한다. 예를 들어, 테이블의 속성이나 관계가 추가되거나 삭제되어도 기존의 쿼리나 트랜잭션은 그대로 유지될 수 있다. 1-2. 물리적 데이터 독립성 `물리적 데이터 독립성`은 데이터베이스의 물리적 구조가 변경되어도 논리적 구조나 데이터의 내용에 영향을 주지 않는 것을 말한다. 예를 들어, 파일의 저장 방식이나 인덱스의 구성이 바뀌어도 데이터베이..

1. 제네릭(Generic)이란? 자바 제네릭은 generic 타입 및 메소드를 정의하고 사용 할 수 있는 언어적 특성 List list = new ArrayList(); Map map = new HashMap(); 위와같이 꺽쇠()안에 클래스 타입이 명시된 패턴을 자주 발견할 수 있다. 이걸 제네릭(Generic) 이라고 부르며, 제네릭 파라미터는 꺽쇠안에 포함하여 전달한다. 특징 - 파라미터 타입이나 리턴 타입에 대한 정의를 외부로 미룸 - 타입에 대해 유연성과 안정성을 확보함 - 런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술 2. 제네릭을 왜 사용할까? 타입을 유연하게 처리하며, 잘못된 타입 사용으로 발생할 수 있는 런타임 타입 에러를 컴파일 과정에 검출한다. 자바 컴파일러는 코드에서..