1. 함수형 인터페이스와 Predicate 먼저 함수형 인터페이스란 추상 메소드를 1개를 가지는 인터페이스를 의미하며 Predicate는 1개의 제네릭 타입 인자를 받아서 boolean 을 리턴하는 추상 메소드를 가지고 있습니다. 아래는 JDK 17 기준에서 Predicate 인터페이스입니다. 추상 메소드는 test이고 그 외에도 and, negate, or, isEqual 등 여러 개의 메소드가 구현되어 있는 것을 확인할 수 있습니다. 여러 개의 메소드가 있어서 함수형 인터페이스가 아니라고 생각할 수 있지만 추상 메소드가 1개 이기 때문에 Predicate는 함수형 인터페이스가 맞습니다. @FunctionalInterface public interface Predicate { boolean test(T..
22년 10월 Springboot 3.0이 릴리즈 되었습니다. Springboot 3.0은 Spring 6.0을 기반으로 하고 있기 때문에 이와 관련하여 변경된 내용에 대해 알아보겠습니다. 주요 변경 내용 - Java17 - Java EE를 Jakarta EE로 변경(javax.* → jakarta.* 로 변경) - AOT & GraalVM Java17 최소 버전으로 java 17이 필요합니다. 추가적으로 Java 19까지 테스트 완료되었다고 하네요 Java EE → Jakarta EE로 변경 기존의 Java EE 대신 Jakarta EE로 채택되었습니다. 이로 인해 javax.* 로 import 하던 코드들을 jakarta.* 코드로 변경이 필요합니다. AOT & GraalVM Java 애플리케이션을 ..
동시성제어란 동시에 실행되는 여러 개의 트랜잭션이 작업을 "성공적으로" 마칠 수 있도록 트랜잭션의 실행 순서를 제어할 수 있는 기법이다. 동시성 제어를 하지 않으면 다음과 같은 상황이 발생할 수 있다. 이벤트 상품의 재고가 100개가 있고 구매자는 각 1개씩만 구매할 수 있다. 즉 100명에게만 판매하려고 했는데 이벤트가 끝나고보니 구매자는 150명인 상황이다. 늦게 주문한 50명에게 주문 취소 안내를 나가야만 한다 ㄷㄷ.. 위와 같은 문제를 예방하기 위해서는 동시성을 제어해야 하는데 동시성을 제어하는 방법에는 Application Level, Database, Lock, Redis를 이용하는 방법이 있다. 1. 애플리케이션에서 동시성제어 1-1. synchronized 자바에서 지원하는 synchron..
1. 문제정보 https://school.programmers.co.kr/learn/courses/30/lessons/42883# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 해결전략 리스트를 순회하면서 뒤의 수가 앞의 수보다 크다면 앞의 수를 삭제하는 방식으로 진행했다. 다만 삭제 이후 아래와 같이 다시 첫번 째 인덱스로 돌아와서 다시 탐색을 진행해야 한다(백트래킹). numbers=314321, k=2 # 314321 -> 34321 # 34321 -> 4321 처음 시도는 스택을 이용해서 하려고했는데 백트래킹을 구현하는데 부담을 느껴서 인덱스..