목록분류 전체보기 (166)
공부기록
이 게시물을 통하여 배열 (array)와 동적리스트 (linked list)의 차이점과 어느 상황에서 우세한지 비교하고자 한다. 무작위 접근 연산이 일어나면 배열을 쓴다. 링크드리스트는 무작위 접근연산이 일어나서 인덱스가 나오면 거기까지 움직여야 한다. O(N). 배열은 그냥 접근하면 된다. O(1) 커서에서 연산이 일어나면 링크드리스트를 쓴다. 연산이라 함은 insertion, deletion을 말한다. insertion의 경우 링크드리스트는 커서 다음에 새로운 노드를 삽입하고 포인터만 잘 설정해 주면 된다. 이때 O(1)이다. 배열의 경우 커서 다음에 현재 값을 삽입한다고 할 때 커서 다음의 비어있지 않은 공간을 다 뒤로 밀어줘야 된다. 이때 O(N)이다. deletion의 경우 링크드리스트는 포인터..
locking 프로토콜은 가능한 스케줄을 제한한다. exclusive-lock은 쓰기/읽기, shared-lock은 읽기이다. write lock을 할경우 나만 접근하고 다른 트랜잭션은 접근할 수 없다. read lock을 할 경우 다른 read lock은 접근 가능하다. 즉 호환 가능한 lock을 얻을 경우에만 공유 데이터에 접근 가능하다. 락을 얻지 못하면 다른 트랜잭션이 unlock 할 때 까지 기다려야 한다. 근데 스케줄이 serializable하려면 그냥 lock unlock만 하면 안된다. 2-phase locking, tree-based locking이 있다. 2-phase locking growing-phase와 shrinking-phase로 구분된다. growing-phase에서는 락이 ..
트랜잭션의 Isolation 속성은 트랜잭션 연산들을 수행할 때 자기 자신만 하는 것 처럼 보여야 한다는 것이다. 트랜잭션이 들어온 대로 동기화되어 실행되는 것을 serializable이라고 하는데 실제 DBMS는 여러가지 트랜잭션을 동시에 처리해야하기 때문에 실제로 serialize하게 트랜잭션들을 수행하지는 않는다. 트랜잭션들은 active, partially commit, commit, abort가 있다. 오류가 생기면 abort, 그렇지 않으면 commit한다. 동시에 트랜잭션을 수행하기 때문에 발생하는 오류들이 있다. 실제 없는 값을 읽는 dirty read, 내가 update한 값이 사라지는 lost update, 같아야 하는 값을 다르게 읽어버리는 unrepeatable read가 있다. 트..
REST? (Representational State Transfer) REST는 웹에서 데이터를 전송하고 처리하는 방법을 정의한 인터페이스를 말한다. 모든 데이터 구조와 처리 방식은 REST에서 URL을 통해 정의되며, 그래서 매우 직관적으로 이해하기 쉽다. 이는 대중에게 서비스를 제공할 때 좀 더 쉽게 다가갈 수 있도록 하는 요소이기도 하다. REST 개념 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)를 명시하고, HTTP Method (POST, GET, PUT, DELETE) 를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. REST는 자원 기반의 구조 (ROA, Resource Oriented Architectur..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dh7TpR/btq5Run4HNd/b5kQXeXHaKmd1cUGZOcjKk/img.png)
아래는 사용자가 웹 브라우저에 URL을 치고 접속했을 때 일어나는 일이다. 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력함 사용자가 입력한 URL 주소중 도메인 네임 부분을 DNS 서버에서 검색한다. DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달함 웹 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메세지를 생성한다. 이렇게 생성된 HTTP 요청 메세지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송된다. 서버에 도착한 HTTP 요청 메세지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환된다. 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데..
Application Layer? OSI 계층들과 응용 프로그램을 인터페이스 한다. 응용 계층의 프로토콜들은 다음을 정의한다. 교환되는 메세지의 유형 (request, response message) syntax : 다양한 메세지 유형들의 문법 메세지 안에 있는 필드와 그 필드들이 어떻게 표현되는지 symentic : 필드들의 의미 필드의 정보들이 무엇을 의미하는가 timing : 언제 그리고 어떻게 프로세스가 메세지를 보내고 메세지에 반응하는지 Web and HTTP 개요 웹페이지는 오브젝트들로 구성되어 있다. 오브젝트들은 HTML, JPEG, JAVA applet, audio file,... 등등이 될 수 있다. 각 오브젝트는 URL에 의해 참조될 수 있다. URL (Uniform Resource L..
Link Layer? Link 계층은 한 노드로부터 물리적으로 인접한 다른 노드로 데이터그램을 전송해야하는 책임을 가지고 있다. 데이터그램은 다른 연결들을 통해 다른 link 프로토콜들에 의해 전송되어진다. 각 link 프로토콜은 다른 서비스를 제공한다. Link Layer Service 데이터그램을 프레임으로 캡슐화 하고, 헤더를 더한다. 공유되어질 수 있는 채널이라면 접근한다. 출발지와 도착지를 식별하기 위해 프레임 헤더에 "MAC" 주소가 사용된다. 인접한 노드 간에 신뢰성 있는 전송을 해준다. Link layer는 NIC (Network Interface Card)라고 하는 어뎁터에 구현된다. Error Detection and Correction Parity Checking Single Bit ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bfZVyh/btq5L43TXJT/N2HXcox8zwJyIwp7tovOx0/img.jpg)
Network Layer? 송신 호스트에서 수신 호스트로 세그먼트를 전송한다. 송신측에서는 세그멘트를 데이터그램으로 캡슐화한다. 수신측에서는 세그먼트를 transport 층으로 보낸다. 네트워크 층의 프로토콜들은 모든 호스트와 라우터에 있다. 라우터는 자신이 보내는 모든 IP 데이터그램안에 있는 헤더 필드를 검사한다. 네트워크 층의 주요 기능 Forwarding 패킷을 라우터의 입력에서 적절한 라우터의 출력으로 보낸다. 하나의 경로로 보내는 행위이다. Routing 패킷의 출발지에서 목적지까지의 적절한 경로를 결정한다. 라우팅 알고리즘을 이용한다. 패킷의 경로를 계획하는 행위이다. 연결 성립 (VC) 데이터그램이 흐르기 전에, 말단의 호스트들과 그 사이의 라우터들은 Virtual Connection을 수..