목록CS공부 (9)
이숭간 공부기록
인덱스란 데이터베이스에서 조회 및 검색을 빠르게 할수있는 기술 혹은 자료구조를 의미한다. 먼저, 인덱스가 생겨나게 된 배경에 대해 이해해보자. 테이블의 물리적 저장구조 우리가 만든 테이블의 투플은 저장공간(하드디스크, 플래시메모리)에 Heap file또는 Sorted file형태로 저장된다. heap file : 투플들이 무순서로 저장됨. insert비용은 낮지만 검색비용이 높다. Sorted file : 테이블의 특정 컬럼값의 순서대로 투플이 저장됨 → 해당 애트리뷰트로 검색할때 효율적이다.O(logN) ex) 학생테이블에서 학번순으로 sorting되어있는경우 이분탐색으로 로그엔시간에 탐색이 가능. 문제점 : 이름으로 검색하는경우?! → 인덱스가 필요한 이유 인덱스의 필요성 Student테이블에서 투플..
동기화를 위해서 공유자원을 관리하기 위해서 존재함 (공유자원을 안전하게 관리하기 위함 → 상호배제 달성) 임계구역 (Critical Section) 서로다른 두 프로세스(스레드)가 같이 접근해서는 안되는 공유 영역 임계구역으로 설정되어야 하는 부분이 임계구역으로 설정되지 않았을때 발생하는 문제들 생산자-소비자 문제 ex)키보드문제 : 키보드에 입력하면 문자를 큐에 넣고 프로그램에서 큐에서 문자를 하나씩 얻어가는데, 이때 문자를 큐에서 빼고 head를 조정하는 부분은 임계구역으로 설정되어야 한다. 독자-저자 입출금 문제 뮤텍스 공유자원을 한번에 한 프로세스(스레드)만 접근할 수 있도록 키를 기반으로 상호배제를 달성하는 방법 키에 해당하는 어떤 오브젝트가있고, 이를 소유한 프로세스(스레드)만 공유자원에 접근..
둘다 HTTP프로토콜상에서 무언가를 요청할때 사용하는 방식이다. 하지만 둘의 특성과 생겨난 배경은 엄연히 다르므로 제대로 이해하고 기술목적에 맞게 적재적소에 사용해야 한다. GET 언제 사용하는가? 단순히 서버의 데이터를 조회하는 경우 서버의 값이나 상태를 변경하지 않는다. SELECT적 특성 요청 데이터를 어떻게 보내는가? uri에 포함해서 보낸다. (?을 통한 PathVariable) 노출이 쉬워 보안이 필요한 데이터의 요청에선 사용하지 않는게 좋다. 멱등 서버에게 여러번 요청을 하더라도 동일한 응답이 돌아와야 한다는 개념 (안전하다) Ex) 여러번 요청해도 안전하다! 요청이 제대로 수행되지 않았다 하더라도 멱등한 요청은 여러번 그냥 보내서 해결할수있음, 계좌송금(post)과같은경우 안전하지 않으므로..
DNS DNS(Domain Name System)은 사람이 읽을 수 있는 도메인이름을 머신이 읽을 수 있는 IP주소로 변환하는 역할을 한다. 컴퓨터가 서로를 찾을 수 있는 주소가 IP주소인데, 이를 기억하기엔 사람에게 너무 어려움 따라서 사람이 읽기쉬운 문자로 이루어진 주소를 도메인이름이라고 한다. DNS서버가 이름에 대한 요청을 IP주소로 변환하여 어떤 서버에 연결할것인지를 제어한다. 이때 이 요청을 쿼리라고 부른다. DNS를 언제 사용하는가? 브라우저에 URL을 입력하면, 브라우저가 HTTP Request메세지를 만들고 이를 웹서버로 전송하기위해서 OS에게 송신을 의뢰해야하는데 이때 도메인명이아니라 IP주소로 상대를 지정해야한다. 이 과정에서 DNS서버를 통해 도메인명을 IP주소로 바꿔야 상대를 특정..
쿠키와 세션을 알기 이전에 왜 쿠키와 세션이 나왔는지에 대해 이해해야한다. 이를 위해선 HTTP프로토콜의 특징부터 이해해야한다. HTTP프로토콜의 특징 비 연결성 (Connectless) 클라이언트가 request를 서버에 보내고, 서버의 response를 보내면 연결이 끊긴다. 상태유지 X (Stateless) 연결을 끊는순간 서버는 클라이언트의 상태정보를 유지하지 않는다. 쿠키와 세션은 왜 필요한가? HTTP프로토콜의 위와같은 특성으로 인해, 클라이언트와 서버간 상태정보를 저장할 필요가 있는경우 (로그인유지 등) 에 사용한다. 현재 접속한 사용자가 이전에 접속한 사용자와 같은 사용자인지 아닌지를 알 수 있는 방법이 없다. HTTP프로토콜에서 상태를 유지하기위한 기술로 쿠키와 세션을 사용한다. 쿠키와세..
CORS CORS란 Cross Origin Resoucre Sharing으로 Origin(출처)를 교차하여 자원을 공유한다는 뜻이다. 즉 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 일반적으로 자바스크립트에서는 Same origin policy (동일출처정책) 보안정책을 가지고 잇어 다른 origin에 접근시 No Access-Control-Allow-Origin Header라는 오류를 노출하게 되어 있다. CORS의 배경 처음 전송되는 리소스의 도메인과 다른 도메인으로부터 리소스가 요청될 경우 해당 리소스는 cross-origin HTTP요청에 의해 요청된다. XMLHttpRequest는 same-origin 정책..