Programming Language(100)
-
[데이터베이스] 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 -
[일문일답][OS] 프로세스 주소 공간
메모리 영역 1) Code(Text) 우리가 작성한 소스코드가 들어 가는 부분. 즉, 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code)영역 이라고도 부른다. 코드영역은 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등이 여기에 지정된다. 컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없게 Read-Only 로 지정돼있다. 2) Data 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역이다. 즉, 프로그램이 구동되는 동안 항상 접근 가능한 변수가 저장되는 영역이다. 전역변수, static 값을 참조한 코드는 컴파일 하고 나면 Data 영역의 주소값을 가리키도록 바뀐다. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 실..
2022.09.06 -
[일문일답][OS] Race Condition
Race Condition(경쟁 상태) 여러 스레드 or 프로세스가 한정된 공유 자원에 동시에 접근하는 경우 경쟁 상태는 데이터의 불일치 문제를 야기할 수 있다. 경쟁 상태를 다루기 위해서는 동기화되어야 한다. 경쟁 상태의 예시 A와 B가 하나의 계좌에 동시에 접근해서 돈을 인출하는 경우 스레드 1과 스레드 2가 변수 x의 값을 동시에 다른 값으로 바꾸는 경우 OS에서 Race Condition이 일어나는 경우 → 주로, user mode일 때보다(일반 프로세스가 cpu를 잡고 사용할 경우) 커널 모드일 때 race condition이 일어난다. → 프로세스 간에는 주소 공간이 독립적이지만 커널 모드에서는, 커널에 있는 자원을 여러 프로세스가 공유할 수 있기 때문 1. Process가 system cal..
2022.09.06 -
[일문일답][Java] String class가 final인 이유
Java String String str1 = new String("Hello"); // new 연산자를 통한 객체 생성 String str2 = "Hello"; // 리터럴 형태로 바로 할당 Java에서 문자열 타입의 특징은 참조 타입임에도 불구하고 직접 new 연산자를 통해 객체를 생성하는 방법이 아닌, 문자열 리터럴 형태로 사용하는 것이 허용된다는 점이다. String의 불변성(Immutable) String 객체는 최초 한 번 생성되면 절대로 그 값이 변하지 않는다. String str = "최초 문자열"; str = "변경된 문자열"; str 이라는 String 객체가 생성된 이후 "최초 문자열" 을 "변경된 문자열" 로 바꾼다고 해도 실제 내부적으로는 최초 생성된 String 객체의 값이 변경..
2022.09.02 -
[Java] synchronized 키워드
Synchronized Java는 크게 3가지 메모리 영역을 가지고 있다. static 영역 heap 영역 stack 영역 자바 멀티 스레드 환경에서는 스레드끼리 static 영역과 heap 영역을 공유하므로 공유 자원에 대한 동기화 문제를 신경 써야 한다. 원자성 문제를 해결하기 위한 방법 중 하나인 synchronized 키워드에 대해 설명하려고 한다. synchronized는 lock을 이용해 동기화를 수행하며 4가지의 사용 방법이 존재한다. synchronized method static synchronized method synchronized block static synchronized block Synchronized method public class Method { public stat..
2022.08.26