PROGRAMMING11 [MySQL]동시성 제어와 낙관적 락, 비관적 더보기회사 프로젝트 진행 중에 예약 시스템을 개발하게 되었다. 관리자에서 설정해놓은 숫자 만큼 예약이 되는 구조(선착순) 구조 였는데 서버가 이중화되어있어서 그런건지 예약 전에 Validation 비지니스 로직을 추가해도 밀리초까지 동일하게 들어오는 예약들의 오버부킹 현상이 발생했다. 동시성 제어를 위해 여러가지 시도해보았는데 결국 비관적 락으로 해결했는데. 공부한 내용을 적어보려고 한다. 동시성 제어를 위해 synchronized 와 데이터베이스(DB)의 락(비관적 락과 낙관적 락)의 활용, 각 방법의 장단점을 정리해보겠다.1. synchronized 이용장점Java 내부에서 제공하는 키워드로 사용이 간편.하나의 스레드만이 특정 자원에 접근 가능하게 하여, 데이터의 일관성을 유지단점멀티 프로세스 환경에.. 2024. 4. 25. SRP(단일 책임 원칙) 클래스를 변경하는 이유는 단 한 가지여야 한다. 단일 책임 원칙(SRP: Single Responsibility Principle)은 다섯 가지 SOLID 애자일 원칙 중 하나입니다. 클래스를 변경하는 이유가 한 가지이기 위해서는 하나의 액터에 대한 책임만 가지고 있어야 합니다. 여기서 책임은 하나의 특정 액터를 위한 기능 집합이고, 액터란 기능(=클래스 ,모듈)을 사용하는 주체 Responsibility(책임) -SW의 변경을 요청하는 특정 사용자들에 대해 클래스/함수가 갖는 것 “변경의 원인” → 변경의 원인이 같은 것들은 같은 책임 -SRP에서는 메소드의 변경을 유발하는 사용자에 의해 분류함 사용자(User) -사용자들은 그들이 수행하는 Roledp 따라 나눠야한다. -사용자가 특정 역할을 수행할 .. 2022. 9. 23. SOLID 좋은설계를 위한 3가지 Rigidity Fragility Immobility Rigidity 시스템의 의존성으로 인해 변경하기 어려워지는것 ex) 많은 시간이 소요되는 테스트와 빌드 -전체 리빌드를 유발하는 아주 작은 변화 → SOLID를 지켜서 작성 Fragility 한 모듈의 수정이 다른 모듈에 영향을 미칠 때 ex)자동차를 sw로 제어 라디오 버튼을 수정하는데 자동창문이 영향을 받은 경우 → 모듈간의 의존성을 제거 Immobility 모듈이 쉽게 추출되지 않고 재사용 되지 않는 경우 ex) 로그인 모듈이 특정 DB의 스키마를 사용하고, 특정 UI 를 사용하는 경우 → DB,UI,Framework 등과 결합도를 없애야한다. OOP(객체지향 프로그래밍) 좋은 코드? -런타임의 코드는 상위레벨에서 하위레.. 2022. 9. 23. [JAVA] 백준 알고리즘 1110 더하기 사이클 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 .. 2022. 6. 9. 이전 1 2 3 다음