컴공
DB 트랜잭션의 conflict serializable 이해를 위한 선수 개념
conflict serializable 이해를 위한 선수 개념 왼쪽이 선수 개념이다 scheudle -> conflict operations -> conflict equivalent -> conflict serializable 즉, conflict serializable를 이해하기 위해서는 conflict equivalent이 무엇인지 먼저 알아야 하고 conflict equivalent를 이해하기 위해서는 conflict operations가 무엇인지 먼저 알아야 하고 conflict operations를 이해하기 위해서는 scheudle이 무엇인지 먼저 알아야 한다 각각의 개념들을 매우 간단하게 정리해 보면, schedule ? 여러 transaction들이 동시에 실행될 때 각 transaction..
트랜잭션 ACID 속성 간단히 정리
Atomicity All or Nothing. 트랜잭션의 내부에 있는 모든 operation들이 성공하거나 혹은 아무런 일도 없었던 것처럼 모두 취소돼야 한다는 의미. 어중간하게 일부만 성공해서 DB가 이상한 상태가 되면 안된다는 의미. Consistency 트랜잭션이 실행 후에도 DB 상태가 consistent 해야 한다는 의미. 가령 constraints나 trigger를 사용해서 DB에 어떤 rule을 적용했다면 그 rule을 깨뜨리는 트랜잭션은 DB에 적용되면 안된다는 의미. Isolation 여러 트랜잭션들이 동시에 실행돼도 마치 각각이 혼자 실행되는 것처럼 동작해야한다는 의미. Durability 한번 commit된 트랜잭션 결과는 DB에서 결코 롤백되지도, 사라지지도 않는다는 의미. 심지어 ..
char varchar 차이
char는 고정 '문자' 길이다 varchar는 가변 '문자' 길이다 예를 들어 name char(4) 라고 선언하면 무조건 네 개의 문자 공간을 확보해서 저장한다. 그래서 name에 '코드'라는 문자열을 저장하게 되면 '코드 '
시간복잡도 개념, Big-O(빅 오) 표기법, 점근적 표기법 설명
영상 내용을 글로도 정리했습니다 아주 아주 쉽게 설명합니다 :) 예제로 알아보는 시간 복잡도(time complexity) 개념 아래와 같은 코드가 있습니다. 이 코드는 정수 타입의 배열 inputs과 multiplier를 파라미터로 받습니다. 내부적으로 어떻게 동작하는지 살펴보면, inputs에 있는 모든 정수들을 mutiplier로 곱해줘서 그 결과를 새로운 정수 타입의 배열인 nums에 담아 최종적으로 그 nums를 반환하고 있습니다. int[] multiply(int[] inputs, int multiplier) { int[] nums = new int[inputs.length]; for (int i = 0 ; i < inputs.length ; i++) { nums[i] = inputs[i] *..
OS 프로세스 상태(state) 변화, 간결한 설명!
이번 글은 OS에서 프로세스의 상태 종류와, 언제 다른 상태로 변화가 일어나는지를 살펴봅니다. 프로세스뿐만 아니라 스레드의 상태도 비슷하다고 보셔도 될 것 같아요. * OS의 종류보다, 또 OS의 버전마다 조금씩 다를 수 있습니다. 하지만 큰 틀에서 파악하는 데는 충분히 도움이 된다고 봅니다. :) OS 프로세스 상태(state) 종류 - NEW 처음 프로세스가 생성됐을 때 프로세스의 상태 - READY CPU에서 실행되기 위해 ready queue(혹은 run queue)에서 대기 중인 프로세스의 상태 - RUNNING CPU에서 실행 중인 프로세스의 상태 - WAITING I/O 요청의 결과를 기다리거나, critical section에 진입하기 위해 기다리는 등의 특정 이벤트가 발생하길 기다리는 프..