데이터베이스

- Transaction

Transaction이란 데이터베이스의 상태를 변화(DB에 접근)시키기 위해 수행하는 작업 단위이다.

하나의 SQL 명령문도, 여러개의 명령문을 한번에 실행하는 것 모두 Transaction으로 4가지의 특성을 가진다.

1. Atomicity(원자성) : Transaction이 DB에 모두 반영되던가 아예 반영되지 말아야 한다.

2. Consistency(일관성) : Transaction의 작업 처리 결과가 항상 일관적이어야 한다.(작업 중에 참조하던 테이블이 변경된다 하더라도 Transaction 시작 시의 원본 테이블을 참조)

3. Isolation(독립성) : Transaction은 실행중인 다른 Transaction에 절대 끼어들 수 없다. 

4. Durability(영구성) : Transaction이 완료되었을 경우, 결과는 영구적으로 반영되어야 한다.

 

커밋을 완료해야 Transaction이 종료된다.

rollback을 통해 ctrl + z가 가능하지만 DDL문(CREATE, DROP, ALTER, RENAME, TRUNCATE)는 rollback이 불가능하다.

알고리즘

- 프로그래머스 : 피로도(Level 2, 완전탐색)

- next_permutation (c++ <algorithm>)

순열을 이용한 완전 탐색 문제인지라 c++ next_permutation을 이용하여 풀었다.

이 과정에서 next_permutation 함수의 작동방식을 배웠는데 가장 큰 원리는 주어진 벡터에 나열된 값에서 '더 내림차순 스러운 다음 순열을 찾는 방식'이다.

예를 들어 내가 {1,4,2,3} 벡터에 next_permutation을 호출하면 그 다음 내림차순스러운 {1,4,3,2} 그 다음에는 {2,1,3,4} 이런 방식이다. 

더 놀라운 점은 만약 {4,3,2,1} 벡터에 n_p를 호출하면 False를 반환하면서 그냥 끝난다. 어떤 벡터에 하든 모든 경우의 수 찾는 줄 알았는데 아니었다. 이제 활용 쉬울 듯 합니다^^. 더 오름차순스러운 순열을 원한다면 previous_permutation도 있다.

 

느낀 점

주말에 충격적인 바선생님 출몰로 시간 관리에 실패한 후, 오늘 허겁지겁 과제하느라 Spring 개념은 대강 훑고 지나갔다. 처음 듣는 용어들 많았는데 내일은 상세히 파악해봐야지

'TIL' 카테고리의 다른 글

[23.11.08]  (0) 2023.11.08
[23.11.07]  (1) 2023.11.07
[23.11.03]  (1) 2023.11.03
[23.11.02]  (0) 2023.11.02
[23.10.31]  (0) 2023.10.31

+ Recent posts