목록Language/Java (4)
Arthur's Blog
JUnit 테스트는 당연히 스레드를 재사용해야 합니다. 테스트 케이스 하나하나를 실행할 때마다 스레드를 재할당하면 테스트가 하루종일 걸릴 수 있기 때문입니다. 최근 GitHub에서 진행한 프로젝트 leeseojune53/LearnBoot는 Spring Boot의 주요 기능을 학습하기 위해 보안 및 데이터베이스 접근 기능을 직접 구현해보는 실습용 프레임워크입니다.이 프레임워크를 통해 DB Access의 테스트 케이스(TC)를 작성하고 로직을 구현하여 실행하는 중, 아래와 같은 오류가 발생했습니다: java.lang.RuntimeException: java.sql.SQLNonTransientConnectionException: No operations allowed after connection close..
😵 차이점 Random은 seed값으로 생성될 때의 시간을 이용하지만, SecureRandom은 예측할 수 없는 seed를 사용한다.
📌 정의 멀티 스레드 환경에서 여러 스레드가 동시에 하나의 자원을 공유할 때 동시성 문제, 데드락 등 여러 문제가 발생한다. 해당 문제 중 동시성 문제를 제어하는 방법을 알아보자. 1️⃣ 암시적 잠금 하나의 스레드가 해당 메소드를 실행하고 있을 때 다른 스레드가 해당 메소드를 실행하지 못하고 대기하게 하는 방법. 잠금은 메소드, 변수에 각 각 걸 수 있다. 😎 예제 class Count { private int count; public synchronized int view() { return count++; } } 위의 예제는 메소드 잠금이다. class Count { private Integer count; public int view() { synchronized (this.count) { retu..
🐛 문제 상황 error: builder() in 자식객체 cannot hide builder() in 부모객체 라는 에러가 나오게 된다. 간단하게 직역하면 “자식객체의 builder()는 부모객체의 builder()에 숨을 수 없다.”라는 말인데 이것을 해결하려면 상속에 대한 기본적인 개념이 있어야한다. 🏴☠️ 원인 Builder 어노테이션을 사용하면 컴파일 시 해당 클래스에 Builder 클래스와 메소드가 생기게 된다. 자식 객체에서 동일하게 Builder 어노테이션을 사용하게 되면 builder() 메소드가 중복되게 되면서 error가 발생하게 된다. ♻ 해결법 자식객체 또는 부모객체에서 @Builder어노테이션의 property중 하나인 builderMethodName를 설정해주면 된다. 물론 ..