Transaction 트랜잭션은 DB와 Java 언어 데이터를 주고받는 과정에 원자성을 부여하는 수단 어떤 작업 프로세스를 하나로 묶어 실행 중인 하나의 작업이라도 실패하면 모두 실패처리하고, 전체 작업이 성공하면 성공처리 ex. 결제와 동시에 좌석 할당 결제 수행 + 결제내역 저장 + 구매내역 저장 Transaction ACID 원자성 Atomicity 트랜잭션은 하나 이상의 동작을 논리적으로 한 개의 작업단위로 묶는다. 원자성은 트랜잭션 범위에 있는 모든 동작이 모두 실행되거나 모두 실행 취소됨을 보장하는 것 일관성 Consistency 트랜잭션이 종료되면 시스템은 비즈니스에서 기대하는 상태가 된다. 예를 들어, 서적 구매 트랜잭션이 성공적으로 실행되면 결제 내역, 구매 내역, 잔고 정보가 비즈니스에..
✏️ 문제 K개의 팀이 박 터트리기 게임을 한다. 각 팀은 하나의 바구니를 가지고 있고, 바구니에 들어있는 공을 던져서 자기 팀의 박을 터트려야 한다. 우리는 게임을 준비하기 위해서, N개의 공을 K개의 바구니에 나눠 담아야 한다. 이때, 게임의 재미를 위해서 바구니에 담기는 공의 개수를 모두 다르게 하고 싶다. 즉, N개의 공을 K개의 바구니에 빠짐없이 나누어 담는데, 각 바구니에는 1개 이상의 공이 있어야 하고, 바구니에 담긴 공의 개수가 모두 달라야 한다. 게임의 불공정함을 줄이기 위해서, 가장 많이 담긴 바구니와 가장 적게 담긴 바구니의 공의 개수 차이가 최소가 되도록 담을 것이다. 공을 바구니에 나눠 담기 위한 규칙을 정리하면 다음과 같다. N개의 공을 K개의 바구니에 빠짐없이 나누어 담는다.각..
✏️ 문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다. 🤖 알고리즘 #스택 🤯 풀이 방법 마지막 인덱스부터 거꾸로 탐색하며 최대값을 저장한다. 위에서부터 차례로 꺼내며 더 큰 값을 찾으면 그 값이 오큰수 현재 인덱스..
예외처리 @RequestMapping 메서드는 모든 타입의 예외를 발생시킬 수 있다. 예외를 발생시킬 경우 웹 브라우저는 500 응답코드와 함께 서블릿 컨테이너가 출력한 에러 페이지가 출력된다. 예외 타입에 따라 스프링 MVC와 연동된 뷰를 이용해서 에러 페이지를 출력할 수 있다. 예외 발생시 사용자에게 보여줄 특정 페이지를 만들어 출력한다. (공통의 예외를 한 페이지에서 처리 가능) 처리 방법 @ExceptionHandler 어노테이션을 이용한 예외처리 @ExceptionHandler 메소드를 만든 Controller 영역에서만 유효함 @ExceptionHandler(ArrayIndexOutOfBoundsException.class) public String arithmetic(ArrayIndexOut..
@Autowired: 객체 주입 xml에서 ref="" @Value("Spring 01"): 기본형 주입 + String xml에서 value=""
IoC (Inversion of Control) IoC(제어의 역전)이란 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미 컴포넌트 간의 의존관계 결정(Component dependency resolution), 설정(configuration) 및 생명 주기(lifecycle)를 해결하기 위한 디자인 패턴(Design Pattern) DI (Dependency Injection) 각 클래스간의 의존관계를 빈 설정 (Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것 개발자들은 빈 설정 파일에서 의존관계가 필요하다는 정보를 추가하면 된다. 객체 레퍼런스를 컨테이너로부터 주입받아서 실행 시에 동적으로 의존관계가 생성된다. 컨테이너가 흐름의 주체가..