공통점: 둘 다 int형을 wrapping한 클래스

차이점: AtomicInteger는 thread-safe하여 동시성(Concurrency)을 보장한다.

'IT > Spring Framework' 카테고리의 다른 글

Spring vs Spring Boot  (0) 2020.05.29
@Transactional Rollback 조건  (0) 2020.03.19
@Transactional 사용 목적  (0) 2019.10.24
@Component, @Service, @Repository, @Controller의 차이  (0) 2019.06.10
Netty 개념  (0) 2019.01.19

참고:

https://offbyone.tistory.com/405

- https://dzone.com/articles/spring-transactional-amp-exceptions

- https://cheese10yun.github.io/checked-exception/

 

@Transactional의 rollback 조건

Unchecked Exception인 경우에만 rollback 처리된다.
예를 들어,
(1) RuntimeException 발생한 경우 (handling해도 마찬가지)
(2) Checked Exception을 handling하지 않은 경우

'IT > Spring Framework' 카테고리의 다른 글

Spring vs Spring Boot  (0) 2020.05.29
AtomicInteger와 Integer 비교  (0) 2020.04.25
@Transactional 사용 목적  (0) 2019.10.24
@Component, @Service, @Repository, @Controller의 차이  (0) 2019.06.10
Netty 개념  (0) 2019.01.19

MySQL 기준..

 

1. "SELECT ... FOR UPDATE"란?

하나 또는 특정 범위의 row에 대해 여러 세션에서 접근하여 발생할 수 있는 동시성 문제를 해결하기 위해 이용할 수 있다. "SELECT ... FOR UPDATE" 쿼리를 실행하면(auto commit 모드를 비활성화 시킨 후에 "SELECT ... FOR UPDATE" 쿼리 실행해야 한다), Intention Lock(table-level) 걸린 후, Exclusive Lock(row-level) 걸리게 된다.

 

2. "SELECT ... FOR UPDATE" 이슈

=> 존재하지 않는 데이터에 대해서는 모든 세션에서 "SELECT FOR UPDATE"/"UPDATE"/"DELETE" 문을 실행할 수 있는데,

데이터 수가 1개 이상인 테이블에서는 존재하지 않는 데이터에 대해 여러 세션에서 "SELECT FOR UPDATE" 문을 실행하더라도 id가 동일한 데이터에 동시에 접근하지 않도록만 하면  Dead Lock이 발생하지 않지만

만약, 데이터 수가 0개인 테이블에 대해 여러 세션에서 "SELECT FOR UPDATE"를 실행시키면, 모든 세션에서 INSERT문을 아예 실행할 수 없다.

 

3. 테스트

(1) 데이터 수가 0개인 테이블에서 각 A, B 세션에서 "SELECT ... FOR UPDATE" 쿼리로 조회한 데이터가 아무것도 없는 경우

=> 두 세션 중 하나라도 트랜잭션을 종료(commit/rollback) 시키기 전까지는 두 세션 모두 INSERT 쿼리 자체를 실행할 수 없음. 해당 데이터가 아예 없기 때문에 두 세션에서 UPDATE/DELETE 쿼리는 실행 가능.

 

(2) id가 2인 데이터만 있는 상황에서

A세션이  "SELECT ... FOR UPDATE" 쿼리로 id가 1인 데이터를 조회하고

B세션이 "SELECT ... FOR UPDATE" 쿼리로 id가 3인 데이터를 조회한 경우

=> A세션에서는 id가 1인 데이터에 대해서 INSERT/UPDATE/DELETE 실행 가능하다.

B세션에서는 id가 3인 데이터에 대해서 INSERT/UPDATE/DELETE 실행 가능하다.

id가 2이거나 각 세션에서 "SELECT ... FOR UPDATE" 쿼리로 취급하지 않은 데이터에 대해서는 상황에 따라 다른 결과가 나와서 추가적으로 테스트가 필요하다.

 

 

따라서,

여러 세션에서 이미 commit되어 입력된 데이터를 대상으로 "SELECT ... FOR UPDATE" 쿼리를 실행하도록 해야 Dead Lock 문제를 예방할 수 있다.

 


[테스트 코드]

<세션1>

*******

SET autocommit = 1; 
INSERT INTO sss VALUES(2); 

SET autocommit = 0; 
SELECT * FROM sss WHERE id = 1 FOR UPDATE; 
INSERT INTO sss VALUES(4); 
UPDATE sss SET id = 3 WHERE id = 2; 
DELETE FROM sss WHERE id = 2; 
COMMIT; 

SELECT * FROM sss WHERE id = 2;
*******

 

-- 세션2
*******

SET autocommit = 1;
INSERT INTO sss VALUES(2);

SET autocommit = 0;
SELECT * FROM sss WHERE id = 2 FOR UPDATE;
INSERT INTO sss VALUES(4);
UPDATE sss SET id = 3 WHERE id = 1;
DELETE FROM sss WHERE id = 1;
COMMIT;

SELECT * FROM sss WHERE id = 1;
*******

- 참고: https://www.youtube.com/watch?v=kwafUKHqQ3E&list=PLD5ojEfJUayNmTeDDdRzQgqlb7A3QrijM&index=6

 

 

[삼국의 문화]

1. 불교 => 중앙집권화(왕권강화)

   - 호국불교 => 나라가 어려울 때, 부처의 힘을 빌려 나라를 구해보자!

   - 선진문물과 함께 받아 들임.

     ㄴ고구려: 전진(중국)으로부터 소수림왕 때 수용&공인

     ㄴ백제: 동진(중국)으로부터 침류왕 때 수용&공인.

     ㄴ신라: 고구려로부터 눌지왕 때 수용, 법흥왕 때 공인.

 

2. 도교

   - 산천(자연)숭배사상 + 신선사상

   - (자연에 파묻혀 살 수 있는) 귀족들한테 인기가 많았음.

   - 유물&유적

     ㄴ고구려: 사신도

     ㄴ백제: 산수무늬벽돌, 백제금동대향로

     ㄴ신라: 없음.

 

3. 학문(유교) => 유학

   - 목적: 왕권강화(충&효 중시했기 때문)

   - 고구려: 태학(수도에 설립. 유교 교육.), 경당(지방에 설립. 유교+무술 교육.)

   - 백제: 오경박사(유학 공부한 사람들), 의박사(의학 공부한 사람들), 역박사(천문학을 공부한 사람들)

   - 신라: 임신서기석(청소년들이 유학 공부)

 

4. 역사서

   - 목적: 국가의 발전과 국왕에 대한 존경심

   - 고구려: '유기'(서적) -> 이문진이 정리하여 '신집' 편찬 => 현존하지 않음

   - 백제: 고흥이 '서기' 편찬 => 현존하지 않음

   - 신라: 거칠부가 '국사' 편찬 => 현존하지 않음

 

5. 불상

   - 고구려: 금동연가7년명여래입상(긍정적 미소) => 북위의 영향을 받음.

   - 백제: 서산용현리마애여래삼존상(긍정적 미소) => 백제의 미소

   - 신라: 경주배동석조여래삼존입상(긍정적 미소) => 어린아이의 미소

   - 미륵보살 반가사유상 => 미륵 신앙. 어려운 현실 속의 삼국시대에 유행함.

 

6. 탑 => 부처의 사리를 모아 놓음.

   - 목탑은 보존이 어려워 훗날 석탑을 주로 쌓음.

   - 고구려: 모든 탑들이 목탑 => 불타 없어져 현존하지 않음.

   - 백제: 미륵사지석탑(5층. 최초의 석탑. 목탑 양식을 지님.)이 먼저 만들어지고 정림사지5지석탑(5층)이 만들어짐.

   - 신라: 황룡사9층목탑(불타 없어져 현존하지 않음.), 분황사모전석탑(전탑 = 벽돌탑)

 

7. 고분 = 무덤

   - 돌무지무덤 => 벽화 없음. 도굴 쉬움.

   - 굴식돌방무덤 => 벽화 있음. 도굴 쉬움.

   - 돌무지덧널무덤 => 벽화 없음. 도굴 어려움. 껴묻거리가 많음.

   - 고구려: 돌무지무덤(만주 지역에서 발견. 장군총.) -> 굴식돌방무덤(벽화에 고구려 생활 모습, 종교(사신도)가 그려짐. 무용총.)

   - 백제: 돌무지무덤(석촌동 지역에서 발견.) -> 굴식돌방무덤, 벽돌무덤(무령왕릉) -> 굴식돌방무덤

   - 신라: 돌무지덧널무덤(천마총 => 말안장에 그려진 천마도 발견.) -> 굴식돌방무덤

 

8. 삼국은 중국, 서역과 교류

   - 고구려: 중국/서역 => (왕궁, 음악) 벽화가 발견됨.

   - 백제: 중국 => 무령왕릉은 남조(벽돌)식

   - 신라: 서역 => 금속제품, 유리제품

 

9. 삼국은 일본(아스카문화 발달)과 교류

   - 고구려: 담징(종이, 먹, 호류사 금당벽화 전파), 혜자(쇼토쿠태자의 스승)

   - 백제: 오경박사, 의박사, 역박사 파견. 왕인, 아직기들이 논어, 천자문(유학) 전파. 노리사치계가 불교 전파.

   - 신라: 둑, 배 기술 전파.

   - 가야: 토기, 철(값옷, 투구) 전파.

 

 

   

   

'History' 카테고리의 다른 글

삼국의 발전과 가야  (0) 2019.10.22
삼국의 성립  (0) 2019.10.21
고조선과 여러나라의 성장  (0) 2019.10.21
문명의 발생과 국가의 형성  (0) 2019.10.21
인류의 출현과 선사 문화의 발전  (0) 2019.10.21
1) Shared Lock = Read Lock

SELECT 실행 => Shared Lock 설정 => Shared Lock이 걸린 데이터를 다른 트랜잭션들이 단순히 읽어 들여 Shared Lock을 계속 걸 수는 있지만 UPDATE/DELETE 실행(Exclusive Lock)은 불가능하다. 역시, 다른 트랜잭션에 의해 Exclusive Lock(INSERT/UPDATE/DELETE)이 걸린 데이터에는 Shared Lock(SELECT)을 걸 수 없어 읽을 수 없다.

2) Exclusive Lock = Write Lock

INSERT/UPDATE/DELETE 실행 => Exclusive Lock 설정 => 해당 트랜잭션이 완료될 때까지 유지되어 다른 트랜잭션은 해당 데이터에 접근(SELECT/UPDATE/DELETE)할 수 없다. 즉, 다른 트랜잭션에 의해 Shared/Exclusive Lock이 걸린 데이터에는 Shared Lock(SELECT), Exclusive Lock(UPDATE/DELETE)을 걸 수 없다.

[Read Uncommitted]
트랜잭션에서 처리(SELECT/INSERT/UPDATE/DELETE)중에 있는 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용한다

 

[Read Committed]
트랜잭션들이 Commit된 데이터만 읽게 함으로써 Dirty Read를 막는다. Commit된 데이터만 읽더라도 읽는 시점에 따라 결과가 다를 수 있어서 Non-Repeatable Read와 Phantom Read 현상이 발생할 수 있다. 한 트랜잭션 내에서 쿼리를 두 번 수행할 경우, 두 쿼리 사이에서 다른 트랜잭션에 의해 해당 데이터가 UPDATE/DELETE되거나 새로운 데이터가 INSERT되는 일이 발생할 수 있다. 

 

[Repeatable Read]
트랜잭션 내에서 쿼리를 두 번 이상 수행할 경우, 첫 번째 쿼리 관련 데이터가 UPDATE/DELETE되어 그 다음번째 쿼리에서부터 변경된 값을 읽게 되는 현상을 막는다. 그렇지만 Phantom Read 현상이 발생할 수 있다. 한 트랜잭션 내에서 쿼리를 두 번 수행할 경우, 두 쿼리 사이에서 다른 트랜잭션에 의해 새로운 데이터가 INSERT되어 두 쿼리의 결과가 서로 달라질 수 있다.

 

[Serializable Read]
트랜잭션 내에서 쿼리를 두 번 이상 수행할 경우, 두 쿼리 사이에서 첫 번째 쿼리 관련 데이터가 UPDATE/DELETE 되거나 새로운 데이터가 INSERT 되는 현상을 막는다.

- 일련의 로직 실행 과정에서 예외 또는 오류 발생 시에 관련 쿼리들을 모두 Rollback 시키기 위함.

'IT > Spring Framework' 카테고리의 다른 글

AtomicInteger와 Integer 비교  (0) 2020.04.25
@Transactional Rollback 조건  (0) 2020.03.19
@Component, @Service, @Repository, @Controller의 차이  (0) 2019.06.10
Netty 개념  (0) 2019.01.19
ORM, JPA, Hibernate란?  (0) 2018.02.14

- 참고: https://www.youtube.com/watch?v=haAGPLU_O3A&list=PLD5ojEfJUayNmTeDDdRzQgqlb7A3QrijM&index=5

 

 

[백제] - 4세기 근초고왕

 

 

[고구려] - 5세기

1. 광개토대왕 => 광개토대왕릉비(장수왕 때 제작) => 고구려 천하관

   - 만주지역 점령

   - 금관가야 공격 => 신라(내물왕 때)에 왜구 침입할 때, 광개토 대왕이 도와줬는데, 왜구가 금관가야로 도망가면서 광개토대왕이 금관가야를 공격함.

   - 한강 이북을 점령(한강 전체를 점령한 것이 아님)

   - 영락이라는 연호 사용. 자신을 태왕과 성왕이라고 칭함. => 고구려 천하관

 

2. 장수왕

   - 수도를 국내성->평양 천도

     ㄴ왕권강화 => 국내성의 귀족을 약화 시키기 위함.

     ㄴ남진정책 => 한강유역 점령 => 충주 고구려비 => 고구려 천하관

        ㄴ나제(신라와 백제) 동맹이 체결되게 함.

 

* 광개토대왕과 장수왕 중 한강유역을 점령한 장수왕이 더 전성기라 할 수 있다.

 

[백제]

# 장수왕 때 백제의 상황

   - 개로왕

   - 문주왕: 수도를 웅진(공주)으로 천도 

 

# 백제의 웅진 시대 => 왕권 약화, 귀족 강화

 

# 백제 중흥을 위해 노력한 왕들

   - (웅진 시대) 동성왕: 신라와 혼인정책을 시행

   - (웅진 시대) 무령왕

     ㄴ중국(남조)과 동맹 => 증거: 무령왕릉(벽돌 무덤)

     ㄴ22담로 설치 => 왕권 강화를 위해 22개 지방에 왕족을 파견해 귀족을 감시 함.

   - (사비 시대) 성왕 => 실제 중흥을 이루었음.

     ㄴ백제->남부여 국호 변경

     ㄴ불교 장려

     ㄴ중앙 22개의 실무관청 설립

     ㄴ수도를 사비로 천도

     ㄴ한강유역 탈환

     ㄴ관산성 전투에서 죽음 => 한강유역을 탈환했다가 신라(진흥왕)의 배신으로 인해 빼앗겨, 신라의 김무력(김유신의 조부) 장군과 벌인 전투를 벌이다 성왕이 전사 함.

 

# 백제의 수도 천도 순서: 유례성->웅진->사비

 

 

[신라]

1. 지증왕

   ㄴ'왕' 칭호 최초 사용

   ㄴ'신라' 국호 최초 사용

   ㄴ우산국(울릉도) 정벌

   ㄴ주-군-현 행정 시행

 

2. 법흥왕

   ㄴ불교 공인(=>수용한 것이 아님): 이차돈의 순교

   ㄴ율령(법) 반포

   ㄴ관등(관리등급)제도

   ㄴ관복(관리공복)제도

   ㄴ상대등 제도

   ㄴ병부 설치

   ㄴ'건원' 연호 사용 => 중국과 대등 => 자주의식

   ㄴ금관가야를 멸망 시킴

 

3. 진흥왕(6세기)

   ㄴ전성기

   ㄴ함흥평야 점령  => 증거: 진흥왕 순수비 4개, 단양적성비

   ㄴ한강 점령 => 증거: 진흥왕 순수비 4개, 단양적성비

      ㄴ중국과 황해 직접 교류  => 훗날 삼국통일에 기여

      ㄴ고구려와 백제의 연결 차단 => 훗날 삼국통일에 기여

      ㄴ경제력(교통 편리, 한강 주변 비옥한 평야 이용)을 갖춤 => 훗날 삼국통일에 기여 

   ㄴ대가야 점령 => 증거: 진흥왕 순수비 4개, 단양적성비

   ㄴ화랑도 개편

 

# 화랑도 => 청소년수련단체O, 군대X

 

 

[가야] => 6가야

- 초기, 전기: 금관가야 주도 => 광개토대왕의 공격을 받음

- 후기: 대가야

- 중앙집권화를 이루지 못함

  ㄴ소국들이 독자적으로 운영됨

  ㄴ신라와 백제 사이에서 압박 받음

 

 

# 금관가야와 대가야의 특징

- 철 생산 및 철을 매개로 무역

- 철, 토기를 일본에 전파 => 증거: 스에키 토기

- 금관가야는 법흥왕(신라)에게, 대가야는 진흥왕(신라)에게 점령 당함.

 

'History' 카테고리의 다른 글

삼국의 문화와 대외 교류  (0) 2019.10.24
삼국의 성립  (0) 2019.10.21
고조선과 여러나라의 성장  (0) 2019.10.21
문명의 발생과 국가의 형성  (0) 2019.10.21
인류의 출현과 선사 문화의 발전  (0) 2019.10.21

- 참고: https://www.youtube.com/watch?v=w-HYGCdEy-g&list=PLD5ojEfJUayNmTeDDdRzQgqlb7A3QrijM&index=4


[삼국]

- 고구려, 백제, 신라

- 한강 지역을 차지하기 위해 싸움

- 중앙집권화(=국가의 기틀을 갖추다)

  ㄴ고구려 => 1세기 태조왕

  ㄴ백제 => 3세기 고이왕

  ㄴ신라 => 4세기 내물왕

- 전성기(=한강 지역을 차지)

  ㄴ백제 => 4세기 근초고왕

  ㄴ고구려 => 5세기 광개토대왕, 장수왕

  ㄴ신라 => 6세기 진흥왕

- 왕권강화(=중앙집권화)

  1) 불교 수용

  2) 학교 => 유교 교육 => 왕에 대한 충, 효 중시

  3) 특정 성씨가 독점적 세습

  4) 형제상속 -> 부자상속 바꿈

  5) 관등(=관리등급) 제도

 

 

[고구려]

- 건국자: 주몽(건국자) => 부여계통 사람들 + 압록강 유역의 사람들

- 태조왕(1세기)

  ㄴ중앙집권화(=국가의 기틀)를 이룸

  ㄴ옥저, 동예 정복

  ㄴ5개 부족 중 계루부 고씨 독점 세습

- 고국천왕

  ㄴ(왕권강화) 부족적 5부 -> 행정적 5부 바꿈

  ㄴ(왕권강화) 형제상속 -> 부자상속 바꿈

- 미천왕

  ㄴ낙랑 정복, 대동강유역 확보

- 고국원왕

  ㄴ전연, 백제(근초고왕)와의 잦은 전쟁

- 소수림왕

  1) (왕권강화) 불교 수용

  2) (왕권강화) 학교(태학) 설립 => 유교 교육

  3) (왕권강화) 율령(법) 반포

 

 

[백제]

- 건국자: 고구려 계통 사람들 + 한강 주변의 토착민

<고구려 계통인 증거>

1) 석촌 돌무지 무덤 = 고구려의 돌무지 무덤

2) 온조설화

3) 부여 성씨를 가진 귀족들

- 고이왕(3세기)

  1) 중앙집권화(=국가의 기틀)를 이룸

  2) 목지국(삼한 중 마한의 54개국 중 하나) 병합

  3) 관등(=관리등급)제도, 공복제도, 율령 반포

- 근초고왕(4세기)

  1) 전성기

  2) 마한, 황해도 정복

  3) 요서(중국), 산둥(중국), 규슈(일본) 진출

  4) 동진 교류

  5) 형제상속 -> 부자상속 바꿈

 

 

[신라]

- 건국자: 박혁거세 거서간

- 내물왕

  1) 낙동강 유역 진출

  2) 마립간 칭호를 사용 => 거서간(귀한사람)->차차웅(무당)->이사금(연장자)->마립간(정상)->왕 순서로 사용.

  3) 김씨 독점적 세습

  4) (광개토대왕의 도움으로) 왜구 격퇴 => 증거: 호우명 그릇(고구려 군사들의 그릇) => 고구려가 신라에게 내정 간섭했음을 알 수 있다.

 

 

[정치제도]

1. 고구려

   - 행정: 수도 5부, 지방 5부

   - 귀족회의: 제가회의

   

2. 백제

   - 행정: 수도 5부, 지방 5방

   - 귀족회의: 정사암회의

3. 신라

   - 행정: 수도 6부, 지방 5주

   - 귀족회의: 화백회의(만장일치)

'History' 카테고리의 다른 글

삼국의 문화와 대외 교류  (0) 2019.10.24
삼국의 발전과 가야  (0) 2019.10.22
고조선과 여러나라의 성장  (0) 2019.10.21
문명의 발생과 국가의 형성  (0) 2019.10.21
인류의 출현과 선사 문화의 발전  (0) 2019.10.21

- 참고: https://www.youtube.com/watch?v=WWFI1ncf-MA&list=PLD5ojEfJUayNmTeDDdRzQgqlb7A3QrijM&index=3

[청동기]

- 계급 발생

   ㄴ(지도자의 무덤) 돌널무덤

   ㄴ(지도자의 무덤) 고인돌 => 계급사회, 노동력의 규모를 알 수 있다.

- 정복전쟁 -> 국가 발생

 

- 무기: 비파형동검   --> (철기시대) 세형동검

- 장신구

- 제사용품: 거치무늬 거울  --> (철기시대) 잔무의 거울

 

- 일반 생활도구, 농기구 => 돌, 나무 사용

 

* 벼농사 => 청동기시대부터 시작 => 반달돌칼(벼 추수에 쓰임), 맷돌

 

- 민무늬 토기 발달

 

- 구릉, 야산에 집을 짓기 시작

 

- 움집(직사각형, 원형)

 

- 제정일치 사회

 

- 고조선이 건국된 시기

 

 

 

[고조선]

- 비, 바람, 구름 => 농경사회

- 곰, 호랑이 => 토테미즘

- 단군왕검 => 제정일치 사회

 

 

- 고조선 위치 => 서북부+만주 => 기원전 2세기

                                                        ㄴ전성기 => 고조선이라 하지 않고 위만 조선이라고 칭함.

                                                        ㄴ철기 확산

                                                        ㄴ중계무역(한-진)

- 한 침입 => 왕검성(무거왕) 멸망

 

- 계급: 상, 대부, 장군

- 8조법(3개)  => 생명존중, 화폐사용, 계급사회, 사유재산

  ㄴ사형 

 

 

#위만: 잠시 중국에 살았던 조선인

 

 

[철기]

- 무기: 정복전쟁 => 한반도에 여러나라 등장 = 부여, 고구려, 옥저, 동예, 삼한(마한, 별한, 진한)

- 농기구, 생산력 증가 => 인구 증가(직업 다양, 전문화)

 

- 독무덤, 널무덤

- 부여, 고구려 => 왕 존재, 왕권 미약, 연맹왕국(5부족)

- 옥저, 동예, 삼한 => 군장(옥저, 동예에서는 읍군, 삼로라 칭함. 삼한에서는 신지, 읍차라 칭함.) 존재

 

- 부여, 고구려, 옥저, 동예 => 제정일치 사회

- 삼한 => 제정분리 사회

                 ㄴ정치: 군장

                 ㄴ제사장 => 천군이라 칭함. => 천군이 다스리는 땅은 소도

 

 

[부여]

-마가, 우가, 구가, 저가

- 순장 풍습, 흰 옷 선호

 

[고구려]

- 무예 숭상

- 서옥제(데릴사위제)

 

[옥저]

- 고구려의 지배

- 민며느리제

#민: 어리다는 의미.

- 가족 공동묘

 

[동예]

- 책화: 산천의 경계를 침범-> 소, 말을 주어 변상한다

- 족외혼

 

[삼한]

- 벼농사 발달

- 변한: 철 생산

 

'History' 카테고리의 다른 글

삼국의 문화와 대외 교류  (0) 2019.10.24
삼국의 발전과 가야  (0) 2019.10.22
삼국의 성립  (0) 2019.10.21
문명의 발생과 국가의 형성  (0) 2019.10.21
인류의 출현과 선사 문화의 발전  (0) 2019.10.21

+ Recent posts