
클라이언트와 서버 간에 정보를 주고 받는 통신 방법을 HTTP라고 한다. 쿠키와 세션이 왜 등장했는지를 알기 위해 먼저 HTTP의 특징부터 짚고 넘어가면 좋다. Stateless한 HTTP 쿠키와 세션이 등장하게 된 배경에는 HTTP 통신의 Stateless한 특징 때문이다. Stateful과 Stateless 클라이언트와 서버간의 네트워크 통신이 어떻게 이루어지는지에 대한 개념. 즉, 네트워크 프로토콜 세션 상태 - 클라이언트와 서버간 통신 인증이 된 상태 세션 정보 - 한 세션 내에서 클라이언트가 서버에 전송할 데이터 정보를 의미함 Stateful - 세션이 종료될 때까지, 클라이언트의 세션 정보를 저장하는 네트워크 프로토콜 Stateless - 서버가 클라이언트의 세션 상태 및 세션 정보를 저장하지..

실행 컨텍스트 (Execution Context) 실행 컨텍스트란 실행할 코드에 제공할 환경 정보들을 모아놓은 객체이다. 즉, 실행 가능한 코드가 실제로 실행되고 관리되는 영역이라고 할 수 있다. 실행 컨텍스트가 활성화가 되면 다음과 같은 현상이 발생한다. 호이스팅 발생 외부 환경 정보를 구성 this 값을 설정 실행 컨텍스트의 구성 var x = 10; function outer() { var y = 10; function inner() { var z = 10; } inner(); } outer(); 다음과 같은 코드가 있을때 실행 과정을 보면 최초 자바스크립트 코드를 실행하는 순간 전역 컨텍스트가 생성 outer 함수가 실행, outer에 대한 실행 컨텍스트가 생성 outer안에 있는 inner함수가..

HTTP는 Hypertext Transfer Protocol의 약자로 처음엔 하이퍼텍스트 문서(링크를 통해 서로 다른 문서들을 연결한 문서)를 주고받기 위해 설계되었다. 그리고 최초의 HTTP는 오직 HTML문서만 주고 받을 수 있었다. HTTP의 역사 1989년에 팀 버너스리와 CERN기관의 연구자들이 연구를 하면서 논문을 읽을 일이 잦았는데 논문에 첨부된 참고 문헌을 일일이 찾기가 번거로운 문제가 있었다. 이런 문제를 해결하기 위해 문서를 링크로 연결할 수 있는 HTML이라는 문서 양식을 개발하였고, 네트워크를 통해 이 HTML을 주고 받을 수 있도록 고안한 프로토콜이 바로 HTTP이다. HTTP/0.9 HTTP초기 버전에는 버전 번호가 없었는데 이후에 차후 버전과 구별하기 위해 0.9로 불리게 되었..
CORS CORS은 Cross-Origin Resource Sharing의 약자로 교차 출처 리소스 공유이다. CORS란 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다. 쉽게 얘기하자면, 동일한 출처가 아닌 다른 출처에서 데이터를 주고 받는 것을 허용하는 정책이다. CORS의 반대 개념으로는 SOP(Same-Origin Policy) 동일 출처 정책이 있다. SOP 어떤 출처에서 불러온 문서나 스크립트가 다른 출처에서 가져온 리소스와 상호작용하는 것을 제한하는 보안 방식이다. 즉, SOP는 웹 브라우저에서 보안을 강화하기 위하여 동일한 출처에서만 리소스를 주고 받도록 하는 정책이다. COR..
동기화(Synchronization)란 공유자원의 일관성을 유지하는 것이다. 그렇다면 프로세스 동기화란 여러 프로세스가 공유하는 자원의 일관성을 유지하는 것이라고 볼 수 있다. 프로세스 동기화의 시작은 경쟁 상태(Race Condition)와 임계 구역(Critical Section)에 대한 이해부터 시작한다. 경쟁 상태 (Race Condition) 경쟁 상태란 여러 프로세스들이 동시에 데이터에 접근하는 상황에서, 어떤 순서로 데이터에 접근하느냐에 따라 결과 값이 달라질 수 있는 상황을 말한다. 쉽게 말해서, 다수의 프로세스 혹은 스레드가 동기화 없이 공유 자원에 접근하려는 현상이다. 이런 현상에서 데이터의 불일치 문제를 발생시킬 수 있다. 따라서 일관성을 유지하기 위해 동기화가 필요하다. 경쟁 상태의..

선택정렬 배열의 가장 작은 값을 선택하여 맨 처음의 index값과 swap하며 정렬하는 알고리즘 과정 배열 중에 최솟값이 위치한 index를 찾는다. 최솟값이 위치한 index값과 맨 처음의 index값을 swap한다. 맨 처음의 index값을 제외한 나머지 배열에 1,2를 적용한다. 하나의 요소가 남을 때까지 1,2,3번을 반복한다. 시간복잡도 최선, 최악, 평균 모두 O(n^2)의 시간복잡도를 갖는다. 공간복잡도 주어진 배열 안에서 swap을 통해 정렬이 수행되므로 O(n)이다. 장점 알고리즘이 단순하며 사용할 수 있는 메모리가 제한적인 경우에 사용시 성능 상의 이점이 있다. (*제자리 정렬) 알고리즘 구현 난이도가 굉장히 낮다. 제자리 정렬(in-place sort)이란? 추가적인 공간이 필요하지 ..

정의 힙은 우선순위 큐를 구현하기 위하여 만들어진 자료구조이다. (우선순위 큐는 자료구조가 아닌 개념이다.) 우선순위 큐를 구현하는 방법에는 배열, 연결리스트, 힙 이렇게 3가지 방법이 있는데 이 중에서 힙이 가장 효율적이다. 우선순위 큐 구현 방법 삽입 삭제 순서 없는 배열 O(1) O(n) 순서 없는 연결 리스트 O(1) O(n) 정렬된 배열 O(n) O(1) 정렬된 연결리스트 O(n) O(1) 힙 O(log n) O(log n) 힙은 최대값과 최소값을 빠르게 찾아내도록 만들어졌고, 반정렬 상태이다. (큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있다 정도) A가 B의 부모 노드면, A와 B의 키 값 사이에는 대소 관계가 성립한다. 자료의 삽입, 삭제 후엔 항상 힙이 유지할 수 있도록 재구조화(..
- Total
- Today
- Yesterday
- 프로그래머스
- React.Memo
- 배열의 메서드
- JavaScript
- propTypes
- 코딩테스트
- 프로젝트 회고
- useMemo
- 원티드 프리온보딩 챌린지
- 회고
- 프로그래머스 데브코스
- kdt
- 교착상태
- 알고리즘
- 번들러
- CORS
- 무한스크롤
- 네트워크
- 호이스팅
- jwt
- 프로그래머스 데브코스 FE
- 리액트
- 토이 프로젝트
- 라이프사이클
- 힙
- 웹 브라우저 객체
- 노션 클로닝 프로젝트
- Recoil
- 프로세스 동기화
- 스코프
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |