본문 바로가기

컴퓨터공학

(44)
[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 지역변수 매개변수들이 저장되는 임시 저장 메모리 세그먼트 늦게 들어온것이 먼저 나가고, 스택이 줄어들면 힙이 늘어날수있고 힙이 줄어들면 스택이 들어날수있다.
[1일1cs] 데이터베이스의 이상현상 데이터베이스의 이상현상은 테이블에서 일부테이블의 종속이나 중복으로인해 데이터 조작시 불일치가 발생. 종류로는, 삽입이상 삽입시 의도치 않은 데이터까지 삽입해야만 데이터가 삽입되는 현상 갱신이상 데이터중 원하는 데이터 전부가 아닌일부만 갱신되는 현상 삭제이상 삭제시 원치않는 데이터 까지 삭제가 되는 현상 이 이상현상들은 정규화를 통해 해결해야한다.
[1일1cs] 로드밸런싱과 로드밸런서 로드밸런싱은 분산식 웹 서비스로 많은 사람들의 트래픽을 1대의 서버로 처리하는 것은 무리가 있으므로 여러대를 두고 분산하여 처리하는 방식이다. scale-out(서버 여러대를 두어 분산을 통해 처리속도 증가) 를 결정시 사용되는 방식이다. (여기서 로드(load)는 여기서 load란 현재 처리중이거나 대기중인 작업.) 로드밸런서는 클라이언트와 서버 사이에 존재하여 로드 밸런싱을 해주는 관리해주는 장치(기술) 로드 밸런싱 기법으로는 cpu도 virtualization할때 쓰는 라운드로빈 그리고 최소연결방식(가장 적게 연결된 서버에 연결) ip해시 방식등이 있다.