✅ 정리했었던 내용 복습
1️⃣ TCP, UDP 차이점
- 연결방식 : TCP는 연결형 서비스, UDP는 비연결형 서비스
- 패킷교환방식 : TCP는 가상회선 방식, UDP는 데이터그램 방식
- 전송 순서 : TCP는 전송 순서를 보장하지만, UDP는 바뀔수가 있다.
- 속도 : TCP는 느리고 UDP는 빠르다.
- 신뢰성 : TCP는 신뢰성이 높고 UDP는 신뢰성이 낮다.
- 수신 여부 확인 : TCP는 수신 여부를 확인하고 UDP는 확인하지 않는다.
- 통신 방식 : TCP는 1:1 통신 방식이지만, UDP는 1:1, 1:N, N:N 방식으로 통신한다.
🔷 UDP : IP를 사용하는 네트워크 내에서 컴퓨터들 간에 메시지를 교환할 때 제한된 서비스만을 제공하는 통신 프로토콜
2️⃣ 브라우저 주소창에 url 입력시 일어나는 일
- 웹 브라우저 주소창에 url을 입력하고 enter키를 클릭한다.
- 웹 브라우저가 IP 주소를 조회한다(먼저 캐시를 찾고 DNS 검색)
- 웹 브라우저가 찾은 IP 주소를 기반으로 TCP 통신을 시작한다.
- 웹 브라우저가 HTTP 요청을 서버로 보낸다.(필요한 경우 HTTPS 보안 통신이 진행된다)
- 웹 서버에서 요청을 처리하고 브라우저로 응답을 보낸다.
- 웹 브라우저가 전송 받은 콘텐츠를 렌더링한다.
3️⃣ JavaScript Event loop
- 싱글 스레드 방식으로 작동하는 자바스크립트가 여러 작업이 동시에 진행되는 것처럼 느낌을 받는 데에는 이벤트 루프가 큰 기여를 한다.
- 이벤트 루프란 브라우저, 런타임 환경에 내장되어 있는 기능중 하나
1. 콜스택에 현재 실행중인 실행 컨텍스트가 있는지
2. 이벤트 큐에 대기중인 함수가 있는지 반복해서 확인
3. 콜스택에 실행중인 컨텍스트가 없고 이벤트 큐에 대기중인 함수가 있다면, 이벤트 루프는 대기중인 함수를 콜스택으로 이동시킨다.
4. 콜스택으로 이동한 함수 실행
4️⃣ RESTful API
- 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스
- 대부분의 비즈니스 애플리케이션은 다양한 태스크를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야 한다.
- 예를 들어, 월간 급여 명세서를 생성하려면 인보이스 생성을 자동화하고 내부 근무 시간 기록 애플리케이션과 고객 뱅킹 시스템과 공유해야 한다.
- RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 이러한 정보 교환을 지원한다.
- REST 아키텍처 스타일을 따르는 API를 REST API라고 한다.
- REST아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 한다.
- RESTful API라는 용어는 일반적으로 RESTful 웹 API를 나타낸다.
- RESTAPI와 RESTful API는 같은 의미로 사용할 수 있다.
5️⃣ GET, POST 차이점
- GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트를 할 때 사용한다.
- DB로 따지면 GET은 SELECT에 가깝고 POST는 CREATE에 가깝다고 볼 수 있다.
- GET은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메세지에 body가 없다.
- POST는 body에 데이터를 담아 보내기 때문에 HTTP 메세지에 body가 있다.
- GET은 멱등이며, POST는 멱등이 아니다
- 멱등이란, 연산을 여러번 작동하더라도 결과가 달라지지 않는 성질을 말하며 GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같지만, POST는 새로 생성하거나 업데이트를 한다는 점에서 멱등이 아니라고 볼 수 있다.
6️⃣ Webpack
- Webpack은 module bundler로 bundling이란 JavaScript 모듈들의 의존성을 통해 하나 혹은 여러개의 파일로 묶는 것을 의미한다.
- 파일을 컴파일 할 때, 여러 개의 모듈을을 읽어오는 데에 시간이 오래 걸리는데 이를 해결하기 위해 여러 개의 파일을 하나의 파일로 번들링해주며 이를 통해 웹 페이지 성능을 최적화한다.
7️⃣ 동기와 비동기
- 동기란 말 그대로 동시에 일어난다는 뜻으로 요청과 결과가 동시에 일어난다는 약속, 요청을 하면 시간이 얼마가 걸리든 결과가 바로 주어져야 한다.
- 설계가 매우 간단하고 직관적이라는 점이 있지만 결과가 주어질 때까지 아무것도 하지 못하고 기다려야 된다는 단점이 있다.
- 비동기란 동시에 일어나지 않는다는 뜻으로 요청과 결과가 동시에 일어나지 않는다는 뜻이다.
- 결과가 주어지는데 시간이 걸리더라도 그 시간 동안에 다른 작업을 할 수 있으므로 자원들을 효율적으로 사용할 수 있다는 장점이 있지만, 동기보다 설계가 복잡하다는 단점이 있다.
8️⃣ Array, LinkedList
- Array는 random access를 지원한다.
- element들을 index를 통해 직관적으로 접근할 수 있다. arr[0], arr[1]과 같이
- 특정 element에 접근하는 시간 복잡도는 O(1)로 빠르게 찾을 수 있다.
- LinkedList는 sequential access(순차 접근)를 지원한다.
- 어떤 element, node를 접근할 때 처음부터 찾는 element에 도달할 때까지 순차적으로 검색하며 찾아야한다.
- 따라서 특정 element에 접근하는 시간 복잡도는 O(n)이 된다.
'제니의 개발일지 > 개발일지' 카테고리의 다른 글
TIL - html 명함 만들기 테이블 태그 (0) | 2022.12.02 |
---|---|
TIL - 2022.10.24 - 웹 프로토콜, AJAX, React를 왜 사용할까, 이벤트 버블링, 이벤트 버블링을 막는 방법, 이벤트 버블링 활용 방법, 이벤트 위임, 부모에서 자식으로 이벤트 상속하는 방법 (0) | 2022.10.24 |
TIL - 2022.10.18 Virtual DOM, useRef, useEffect, var, let, const, Async/Await, Promise (2) | 2022.10.18 |
TIL - 2022.10.17 상태 관리, Redux란? (0) | 2022.10.17 |
항해99 7주차 WIL - 인스타그램 클론코딩, 실전 프로젝트 시작 (0) | 2022.08.28 |