Computer Science12 [네트워크] HTTP/1.0 HTTP/1.1 HTTP/2 버전별 HTTP의 특징 HTTP란? Hyper Text Transfer Protocol의 약자로 HTML을 전송하기 위해 만들어 졌지만 현재는 게임 등 특별한 경우를 제외하고 IMAGE, 영상, 파일, JSON 등 대부분의 리소스를 전송하는 용도로 사용된다. HTTP는 클라이언트 - 서버 구조를 가지며, Stateless, 비연결성의 특징을 갖는 프로토콜이다. HTTP/1.0 HTTP는 기본적으로 연결을 유지하지 않는 프로토콜이다. 그래서 HTTP의 초기 버전은 1.0에서는 하나의 요청에 연결/종료 과정을 거치는 방식으로 동작했다. 즉, 매 요청마다 TCP의 3 Way HandShake를 거치기 때문에 RTT가 증가되는 단점이 있었다. *RTT(Round Trip Time): 패킷이 목적지에 도달한 이후.. 2023. 6. 23. [네트워크]TCP 4계층 - 인터넷 계층과 링크 계층 인터넷 계층 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층. 이 계층에서 사용하는 프로토콜은 IP, ARP, ICMP 등이 있고 데이터가 올바르게 전송되었는지 보장하지 않는 비연결형적 특징이 있다. 링크 계층 물리적인 전송매체(전선, 광섬유 무선 등)를 통해 실질적으로 데이터를 전송하고 장치 간 신호를 주고받는 규칙을 정하기 위해 사용되는 계층. OSI 7계층에서는 물리 계층과 데이터 링크 계층으로 나눠지며, 물리 계층은 데이터를 보내는 계층, 데이터 링크 계층은 이더넷 프레임을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층을 의미한다. 링크 계층에 사용 되는 물리적인 전송 매체 유선 LAN(IEEE802.3) 통신 방식 - 전이중화 통신 사용 전이중.. 2023. 6. 16. [데이터베이스] 조인(JOIN) 조인 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것. 데이터 조회 시 다른 테이블의 데이터를 함께 조회할 때 사용한다. 조인의 종류 내부 조인(Inner Join) 내부 조인 시 두 테이블에 모두 존재하는 행만 출력한다.(=교집합) 기본형 SELECT FROM INNER JOIN ON [WHERE 조건] 예시 SELECT * FROM TableA A INNER JOIN TableB B ON A.key = B.key 외부 조인(Outer Join) 두 테이블을 조인할 때 필요한 내용이 한쪽 테이블에만 있어도 결과를 추출할 수 있다. 왼쪽 외부 조인(Left Outer Join) B의 일치하는 부분의 레코드와 함께 A를 기준으로 완전한 레코드 집합을 생성한다. 이때, A에만 존재하고 B에는 존재하.. 2023. 5. 31. [데이터베이스] 트랜잭션 트랜잭션 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위. 즉, 여러 개의 쿼리들을 하나로 묶는 단위를 말한다. 트랜잭션의 특징(ACID) 원자성(Atomicity) 트랜잭션과 관련된 일이 모두 수행되었거나 전혀 수행되지 않았음을 보장하는 특징 -> All or Nothing 이에 따라 트랜잭션이 부분적으로 수행되거나 중단되지 않는다. 예시) 지금 이체는 성공(All)할 수도, 실패(Nothing)할 수도 있지만 보내는 쪽의 출금 작업만 성공하고 받는 쪽의 입금 작업을 실패해서는 안된다. 참고) 원자는 불가분하고 분할할 수 없는 입자 트랜잭션의 조작 중 일부가 실패하면, 원자성의 개념에 따라 이전 상태로 롤백되어야 한다. 이 점이 마치 원자가 분할되지 않고 그 자체로 존재하는 것처럼, 트.. 2023. 5. 24. [데이터베이스] 엔터티(entity)와 릴레이션(relation) 엔터티 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미. 쉽게 생각해서 세상에 존재하는 어떤 것으로 알아두자. 적절한 엔터티의 특징 유일한 식별자가 있어야 한다. 영속적으로 존재하는 두 개 이상의 인스턴스의 집합이어야 한다. 업무 프로세스에 의해 이용되어야 한다. 반드시 속성을 포함해야 한다. 유무형에 따른 분류 유형 엔터티(Tangible Entity) : 물리적 형태가 있고 안정적이고 지속적으로 사용되는 엔터티 예시) 회원, 강사, 직원 등 개념 엔터티(Conceptual Entity): 물리적 형태가 없이 개념적으로 사용되는 엔터티 예시) 거래소 종목, 보험 상품 등 사건 엔터티(Event Entity): 비즈니스 프로세스를 실행하면서 생성되는 엔터티 예시) 주문, 체결 등.. 2023. 5. 17. [운영체제] 멀티 스레딩 스레드 스레드는 프로세스의 실행 가능한 가장 작은 단위이다. 프로세스와 스레드 멀티 스레딩 프로세스 내 작업을 여러 스레드를 구성해 처리하는 것. 즉, 멀티스레드로 처리하는 기법을 말한다. 장점 응답성: 싱글 스레드의 경우 하나의 작업이 끝나기 전까지 사용자에게 응답하지 않는다. 반면 멀티스레드의 경우 하나의 작업이 진행 중이더라도 다른 스레드를 통해 사용자에게 응답이 가능하기 때문에 응답성이 증가한다. 자원 공유: 프로세스끼리는 기본적으로 자원을 공유하지 않기 때문에 IPC를 통해 데이터를 주고 받는다. 반면, 스레드끼리는 그들이 속한 프로세스의 자원을 공유하기 때문에 데이터 공유에 특별한 기법이 필요없고 효율성이 높다. 경제성: 프로세스 생성에 메모리와 자원을 할당하는 것은 비용이 많이 든다. 프로세.. 2023. 5. 11. [운영체제] 멀티 프로세싱 멀티 프로세싱 하나의 프로그램을 여러 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것. 이를 통해 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생되어도, 다른 프로세스를 이용해서 처리할 수 있는 장점이 있다.(신뢰성 ↑) 그러나 프로세스 마다 독립된 메모리 영역을 가지고 있어, 작업량이 많을 수록 오버헤드가 발생하며, Context Switching으로 인한 성능 저하가 발생할 수 있다. * 오버헤드: 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다. 예를 들어 A라는 처리를 단순하게 실행한다면 10초 걸리는데, 안전성을 고려하고 부가적인 B라는 처리를 추가한 결과 처리시간이 15초 걸렸다면, 오버헤드는 5초가 된다. 또한 이 처리 B를 개선해 B'라는.. 2023. 5. 2. [운영체제] 메모리 계층과 캐시 메모리 계층 메모리를 필요에 따라 여러 가지 종류로 나누어 둔 것. 메모리 계층은 레지스터, 캐시, 주기억장치, 보조기억장치로 구성되어 있다. 메모리를 계층 구조화한 이유 경제성과 캐시 때문이다. 컴퓨터의 모든 메모리를 속도가 가장 빠른 레지스터로 구성하면 더할 나위 없이 좋겠지만, 메모리는 속도가 빨라질수록 가격이 비싸지기 때문에 용량이 줄어든다. 따라서 당장 필요한 데이터는 빠른 메모리에 저장하고 그렇지 않은 데이터는 상대적으로 느린 메모리에 저장함으로써 한정된 자원 내에서 성능을 최적화한 것이다. 캐시 캐시는 데이터를 미리 복사해 놓는 임시 저장소이며, 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리이다. CPU가 자주 사용하는 데이터나 명령어를 미리 저장하여 이후부터는.. 2023. 4. 24. 벡터(Vector) 자료구조 특징 동적으로 요소를 할당할 수 있는 동적 배열(Dynamic Array)이다. 컴파일 시점에 개수를 모른다면 벡터를 써야 한다. 배열은 크기가 고정되어있어 마지막 요소 뒤에 새로운 요소를 추가하고자 할 땐 기존 배열의 크기보다 큰 배열을 생성한 뒤 모든 요소를 복사하고 그 뒤에 새로운 요소를 추가해야 한다. 이 때 \(O(N)\)의 시간복잡도를 갖는다. 하지만 벡터의 경우 평균적으로 \(O(1)\)의 시간복잡도를 갖는다. 이부분은 밑에서 자세히 알아보도록 하자. 시간복잡도 접근(검색) 탐색 삽입(맨 뒤 삽입) 삭제(맨 뒤 삭제) \(O(1)\) \(O(N)\) \(O(N)\)(\(O(1)\)) \(O(N)\)(\(O(1)\)) 벡터의 크기 증가 벡터에 요소를 추가할 때, 현재 크기(size)가.. 2023. 4. 17. 이전 1 2 다음