CS(49)
-
[데이터베이스] Replication
데이터베이스 리플리케이션은 실시간 복제본 데이터베이스 서버를 운용하는 것을 의미한다. 기준이 되는 서버를 마스터 서버라 하고, 마스터 서버와 동일한 내용을 갖는 또 다른 서버를 리플리카(Replica)라고 한다. Master DBMS 역할 : 웹서버로부터 데이터 등록/수정/삭제 요청 시 바이너리로그(Binarylog)를 생성하여 Slave 서버로 전달하게 된다. (웹서버로부터 요청한 데이터 등록/수정/삭제 기능을 하는 DBMS로 많이 사용된다.) INSERT, UPDATE, DELETE 처리 Slave DBMS 역할 : Master DBMS로부터 전달받은 바이너리로그(Binarylog)를 데이터로 반영하게 된다. (웹서버로부터 요청을 통해 데이터를 불러오는 DBMS로 많이 사용된다.) SELECT 요청 ..
2022.10.07 -
[자료구조] Red-Black Tree
레드블랙 트리 : B-Tree처럼 밸런스 트리 중 하나이다. 복잡한 자료구조이나, 실 사용에서 효율적이고 최악의 경우에서도 상당히 우수한 실행 시간을 보인다. 트리에 n개의 원소가 있을 때, log(N)의 시간복잡도로 삽입, 삭제, 검색을 할 수 있다. 레드블랙 트리는 이진검색트리의 모든 노드에 레드 또는 블랙의 색상을 칠한다. 단, 다음의 성질을 만족하도록 색을 칠해야 하는데 이를 레드블랙 특성이라 한다. 노드는 레드 혹은 블랙의 색을 가진다. 루트는 블랙이다. 모든 리프(NIL) 노드는 블랙이다. 노드가 레드이면 그 노드의 자식은 반드시 블랙이다. (블랙의 자식은 뭐든 상관없다.) 루트 노드에서 임의의 리프 노드에 이르는 경로에서 만나는 블랙 노드의 수는 모두 같다. 먼저 눈에띄는 NIL이 뭐냐면 n..
2022.10.07 -
[디자인 패턴] 2. 옵저버 패턴
옵저버 패턴이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다. 주제(Subject Object)에서 중요한 데이터를 관리한다. 주제 데이터가 바뀌면 옵저버에게 그 소식이 전해진다. 옵저버 객체들은 주제를 구독하고 있으며(주제 객체에 등록되어 있으며) 주제 데이터가 바뀌면 갱신 내용을 전달받는다. 옵저버가 아닌 객체는 주제 데이터가 바뀌어도 아무 연락을 받을 수 없다. 구현 구현은 보통 주제 인터페이스와 옵저버 인터페이스가 들어있는 클래스 디자인으로 구현한다. 구조 Subject 주제를 나타내는 인터페이스 주제가 상태를 저장하고 제어한다. 데이터의 주인은 주제이다. 객체에서 옵저버로 등록하거나 옵저버 목록에서 탈퇴하고 ..
2022.08.23 -
[디자인 패턴] 1. 전략 패턴
상속의 문제점 Duck 클래스 ----------- - quack() - swim() - fly() 오리들이 공통적으로 울음소리, 수영, 날기를 할 수 있다고 생각해 Duck 상위 클래스를 만들고 하위 클래스에서 Duck 클래스를 상속받아 구현한다고 가정하자. 그렇지만 나무오리라면 날 수도 소리낼 수도 없다. 나무오리라면 아래와 같이 오버라이드 해야 한다. DecoyDuck ----------- quack() { // 아무것도 하지 않도록 오버라이드 } display() { // 가짜오리 } fly() { // 아무것도 하지 않도록 오버라이드 } 이렇게 상속하는 상황에는 문제점이 존재한다. 상속은 아래와 같은 단점을 가진다. 서브클래스에서 코드가 중복 실행 시 특징을 바꾸기 힘들다. 모든 오리의 행동을 ..
2022.08.22 -
[OS] PCB와 Context Switching
Process Management Process Management는 CPU가 프로세스가 여러 개일 때, CPU 스케줄링을 통해 관리하는 것을 말한다. 이 때, CPU는 각 프로세스가 누군지 알아야만 관리가 가능하게 된다. 따라서, 프로세스를 구분하기 위해 저장하는 정보를 Process Metadata라고 한다. Process Metadata는 다음과 같은 정보들이 있다. Process ID : PID(Process Identification Number) 라고도 한다. 프로세스 고유 식별 번호 Process State (Process 상태) 프로세스의 현재 상태 (준비, 실행, 대기 상태)를 기억시킨다. Program Counter (계수기) 다음에 실행되는 명령어의 주소를 기억시킨다. Process ..
2022.08.20 -
[OS] 프로세스와 스레드의 차이?
자세한 버전 프로세스 : 실행중인 프로그램을 가리키며, 디스크로부터 메모리로 적재되어 CPU의 할당을 받을 수 있다. 프로세스는 생성될 때 각각 별도의 주소 공간에 할당되며 코드, 데이터, 힙, 스택 영역을 가지게 된다. 멀티 프로세스의 장점은 각 프로세스 간에 독립적으로 동작하기 때문에 서로 영향을 끼치지 않는다. 단점으로는, 각각 독립된 메모리 영역을 가지고 있어 다른 프로세스와 데이터 공유 간 IPC를 해야하는 등의 오버헤드가 존재하고, Context Switching에 대한 오버헤드를 가진다. 스레드 : 프로세스의 실행 단위를 가리킴. 프로세스와 달리 스레드는 다른 스레드와 공간, 자원을 공유한다. 멀티 스레드의 장점으로는 전역 변수와 정적 변수에 대한 자료를 공유할 수 있고, 단점으로는 하나의 ..
2022.08.20