전체 글
-
Select 쿼리는 S락이 아니다. (X락과 S락의 차이)데이터베이스 2021. 7. 11. 13:10
이 글에서 사용한 dbms는 MySQL 8.x 버전이고 innoDB engine 기준입니다. 아~주 기본적인 레벨, 거의 시작점 수준의 이야기이니 감안해주세요. 이 글을 쓰게된 이유 저는 Real MySQL을 통해 DB를 공부하던 중 S-Lock 과 X-Lock에 대해 알게 되었습니다. 그리고 SELECT - FOR UPDATE 쿼리는 해당 레코드의 X-lock을 획득한다는 사실도 알게되었고, 이 사실을 이용해 직접 실습을 해보던 중 저의 뇌가 꼬이기 시작했습니다. '1번 트랜잭션에서 A레코드의 X-Lock을 획득했으니 B트랜잭션에서는 A레코드를 읽을 수 없어야 하지. 1번 트랜잭션의 작업이 끝날때 까지 2번 트랜잭션의 SELECT는 대기상태가 되겠군...?' '아니... 조회가 왜 돼?😯' S-Lock..
-
헥사고날(포트와 어댑터) 아키텍처개발/OOP, Design Pattern 2021. 7. 11. 12:45
저는 저희 팀 프로젝트를 확장 가능한 구조로 만들고자 포트어댑터 아키텍처를 알아보았습니다. 포트와 어댑터를 간단하게 설명하자면 애플리케이션이 외부 요소(인프라)등에 관련없이 지속가능하게 만드는 것이 목표이며, 포트는 인터페이스고 어댑터는 구현하는 클래스를 말합니다. 외부에 의해 동작하는 포트를 주포트 (구현은 주어댑터) ex) MVC의 Controller와 같은 외부에서 애플리케이션과 통신하고자 할때 필요한 포트 내부적으로 외부의 프로토콜과 통신하는 것을 부포트 (구현은 부어댑터)ex) MVC의 DAO와 같은 애플리케이션이 외부와 통신할 때 필요한 필요한 포트 현재는 MVC구조로 HTTP API → 서비스 → Repository(MySQL) 로 구성되어있는데 이중 HTTP API가 grpc로 변경되거나,..
-
JVM Run-Time Data Area개발/Java 2021. 4. 6. 16:50
이전에 JVM에 대해 정리한 내용이 있는데, 좀 더 추가할 내용이 있어서 작성하였다. (Constant Pool, Static은 어디에, Heap, Garbage Collection 등..) Live-Study 1주차 정리내용 - JVM soongjamm.tistory.com/95 [live-study] 1: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. 백기선님이 진행하시는 live-study 1주차 과제 1주차 과제 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. 학습할 것 JVM이란 무엇인가 컴파일 하는 방법 실행하는 방법 바이트코드란 soongjamm.tistory.com JVM JVM과 추상화 Run-Time Data Areas static 변수는 어디에 저장될까..