Computer Science
-
-
Question : DBComputer Science/DB 2021. 4. 6. 16:56
partitioning과 sharding을 비교해주세요. 1. 대용량 데이터를 다룰 경우, 하나의 DB에 모두 저장한다면 제대로 된 응답성을 기대하기는 어렵다. 때문에, Master-Slave 구조를 활용하여 DB 부하를 분산하는 방법을 떠올리게 된다. Master-Slave 구조는 read 연산의 경우 부하를 줄일 수 있지만, write 연산의 경우 그렇지 못하다. 따라서, 여러 개의 DB에 동일한 데이터를 저장하는 것이 아닌, 전체 데이터를 분할하여 저장하도록 구성하는 방법을 떠올릴 수 있고, 이러한 기법을 partitioning이라고 한다. 2. partitioning은 '단편화', '분할'이라고 해석되고, 방식에 따라 '수평 단편화', '수직 단편화'로 구분된다. 3. 수평 단편화는, 말 그대로 ..
-
CS : Data Structure : ArrayList & LinkedListComputer Science/Algorithm, Data Structure 2021. 4. 6. 16:55
ArrayList 1. 일반적인 배열과 유사하다. 중복을 허용하고, 순서를 유지하며, 인덱스로 원소를 관리한다. 2. 배열은 선언 시 크기가 고정되지만, ArrayList는 선언 후 추가, 삭제가 가능하다. 3. 단, ArrayList에 데이터를 추가할 경우, 추가할 때마다 동적으로 크기가 증가하는 것이 아니라, 용량이 꽉 찼을 경우(= default_capacity를 초과할 경우) 더 큰 용량의 배열을 만들어 옮기는 작업을 한다. 4. 초기 용량을 예상하여, default_capacity를 조절하는 것이 좋다. LinkedList 1. 크기를 변경할 수 없고, 데이터의 추가, 삭제에 시간이 많이 걸린다는 일반적인 배열의 단점을 보완하기 위해 등장한 개념이다. 2. 다음 원소의 메모리 주소만 연결시켜 주..
-
Question : OS : ProcessComputer Science/OS 2021. 4. 6. 16:49
Process와 Thread의 차이점은 무엇인가요? 1. 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고, 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다. 2. 프로그램이라고 하는 실행 파일이 있을 때, 이는 메모리에 올라가지 않은 정적인 상태이다. 이를 실행하는 순간, 해당 파일은 메모리에 올라가 동적인 상태가 된다. 이러한 상태의 프로그램을 프로세스라고 하고, 이 후 여러 프로세스를 동작시키는 데에서 발생되는 데이터 공유, 안정성 등의 문제를 해결하기 위해 더욱 작은 단위가 필요하였고, 그래서 탄생한 개념이 스레드이다. 스레드는 프로세스와 다르게 스레드 간 data, code, heap 영역을 공유하기 때문에 프로세스 개념에서의 데이터 공유에서 발생되는 문제점을 해결할 수 있다..