본문 바로가기

전체 글

(94)
[1일1cs] 파라미터 vs 인자 간단하다. 파라미터는 함수 선언시 사용하는 변수 이고, 인자는 함수 호출시 넣는 실제 값 이다. ex . def function(a, b): return a + b 여기서 a, b는 파라미터 answer = function(1, 2) 여기서 1,2 는 인자.
[1일1cs] 브라우저에 url을 입력하면? 1 . 브라우저 창에 google.com 입력. 2. 캐시 메모리에 입력한 도메인 주소의 ip가있는지 탐색. 여기서 네개의 캐시를 확인. 브라우저 캐시 OS캐시 ISP캐시 라우터 캐시 3. 캐시에 있다면 바로 IP주소를 사용하면 되고, 없다면 DNS서버가 DNS쿼리를 통해 단계별로 IP주소 탐색 루트 -> .com 등 나라 -> 다음 레벨 ... 4. 찾은 IP주소 해당 서버와 TCP 연결 시작. 여기서 3-way-handshake 를 통해 tcp연결. 3-way-handshake란 3번의 syn과 ack로 서버와 클라이언트가 데이터를 주고 받는 것. 5. 브라우저가 서버에 http 요청 (GET). 6. 서버가 요청을 처리하고 response를 보냄. request handler에 전달하고 이를 처리 ..
[1일1cs] hashmap, hashtable 먼저 맵과 테이블은 key value 쌍으로 이루어지고, key는 중복될수 없다. 하지만 hashmap은 thread-safe하지않고 hashtable은 thread-safe하다.(멀티스레드 환경이 아니라면 성능 비교적 떨어짐) 또한 hashmap은 key에 null허용, hashtable은 null을 허용하지 않는다. hashmap은 보조해시를 사용하지만, hashtable은 보조해시를 사용하지않는다.(해시충돌 가능성 저하)
[1일1cs] stack두개로 queue 만들기 결론만 말하자면, 스택 하나는 받은 걸 빼내는 용도. (스택 2) 하나는 새로 유입된 걸 넣는 용도(스택 1) 스택 1에 먼저 1 2 3 4 를 차례로 넣으면 stack으로 빼낼 시 4 3 2 1이 된다(LIFO) 이를 스택 2에 넣는다. 그렇다면 아래 부터 4 3 2 1이 되므로 1 2 3 4 로 나온다 하지만 stack2가 비어있지 않은 상태라면, 새로 들어온 것들을 스택 1 에 일단 넣는다. 그리고 스택2를 빼내서 비우고 1에 새로 유입된 것들을 다시 스택2에 넣고 스택2에서 빼낸다. 같은 로직, 시각화된 블로그 : https://velog.io/@wonhee010/Stack-2개로-Queue-구현하기
[1일1cs] 페이지 교체 알고리즘 먼저 페이지란 일정한 크기로 가상메모리를 분할한것( 가변적 크기는 세그멘테이션) 페이징은 일정한 크기이기에 내부단편화 발생 가능성이 있다.(세그멘테이션은 외부단편화) 페이지 테이블은 램에 두기에 그 속도가 느려질수밖에 없고 이를 위해 tlb를 쓰곤한다. 여기까지 페이지 교체 알고리즘을 위한 개괄적인 페이징 설명이고 자세한건 추후에 있을 페이징 파트에서 다루겠다. 페이지 알고리즘에는 먼저 opt ,optional page translation 즉 가장 나중에 쓰일 페이지 부터 갈아치우는 것이 있다. 허나 이는 미래를 예측해야하만 하므로 현실적으로 불가능하다. 그러므로 가장 최고의 성능으로써 비교하기 위해 쓰인다. 다음으로 언제나 등장하는 fifo, 큐를 이용해 저장한다. 다음으론 least recently..
[1일1cs] 트랜잭션에서의 데드락 트랜잭션은 앞서 공부했듯, 작업의 완결성을 위한 논리적 단위이다. 즉 하나의 행동이 나오기 위해서의 절차를 말한다. 그 특성은 원자성(all or nothing), 일관성, 격리성, 지속성이있다. lock은 동시성을 제어하기 위함인데, 한 작업이 shared resource를 접근한다면 다른 작업은 접근하지 못한다. 이때 교착상태 즉 데드락이 발생하는데, 두 개 이상의 작업이 특정 자원을 소유해서 lock하 채로 다른 작업을 기다리는데 공교롭게도 서로를 기다리는 상황이다. 즉 두 개 이상의 트랜잭션이 특정 자원 (테이블 또는 행 ) 의 lock을 소유한 채 다른 트랜잭션이 소유한 lock을 기다릴때 데드락(교착상태)가 발생한다. 이를 위해 오라클의 경우에는 한쪽 트랜잭션을 풀어버리고 wating상태로 바..
[1일1cs] 3 way handshake 4way handshake 3 way handshake는 tcp가 장치들 사이 논리적 접속성립을 위해서사용한다. 클라이언트가 서버에게 synchronize 즉 syn을 보내고 서버가 받았다는 신호인 ack와 syn을 다시 클라이언트에게 보냄 그리고 이제 클라이언트에서 서버와 데이터 송수신을 하기위해 ack를 보낸다. 위의 과정이 3 way handshake 4 way handshake는 세션을 종료하기 위해 수행한다. 클라이언트가 서버에게 세션을 종료한다는 fin을보냄. 서버는 클라이언트에게 확인의 ack를 보낸다 이때 서버는 자신의 통신이 끝날때 까지 closewait상태 서버가 연결 종료 준비가 되면 마지막 ack를 보낸다 클라이언트 역시 종료 준비완료로 ack를 보낸다.
[1일1cs] code data heap stack code: 작성한 코드(txt)가 들어가는 영역. read-only이다. data: 전역변수 구조체 배열 등이 저장되는 세그먼트 data는 런타임 이전 초기화된 데이터 저장 bss는 런타임 이후 초기화 heap : 동적 데이터 저장. stack 지역변수 매개변수들이 저장되는 임시 저장 메모리 세그먼트 늦게 들어온것이 먼저 나가고, 스택이 줄어들면 힙이 늘어날수있고 힙이 줄어들면 스택이 들어날수있다.