모던 자바 인 액션 4~6장을 보며 정리한 내용 스트림이란?데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소.자바 8에 추가된 선언형 API 스트림과 컬렉션컬렉션// 컬렉션: 모든 데이터를 메모리에 미리 준비List collection = Arrays.asList(1, 2, 3, 4, 5);List collectionResult = new ArrayList();for(int i : collection) { // 데이터가 계산된다. if(i % 2 == 0) { // 데이터가 추가된다. 메모리에 올라간다. collectionResult.add(i); }}컬렉션은 데이터를 저장하기 위한 자료구조이다.컬렉션에 추가되는 데이터는 메모리에 올라가게 된다.그렇기에 ..
전체 글
github: https://github.com/belljun3395 email: belljun3395@gmail.com메시지 큐와 이벤트 스트림메시지 큐와 이벤트 스트림의 차이용어메시지 큐에서는 주로 데이터를 생성하는 쪽을 생산자(producer)로, 데이터를 수신하는 쪽을 소비자(consumer)로 지칭한다.이벤트 스트림에서는 데이터를 생성하는 쪽을 발행자(publisher)로, 데이터를 조회하는 쪽을 구독자(subscriber)로 지칭한다. 방향성메시지 큐의 생산자는 소비자의 큐로 데이터를 직접 푸시한다.2개의 서비스에 같은 메시지를 보내야 할 때 메시지 큐를 이용한다면 생산자는 2개의 각각 다른 메시지 큐에 각각 데이터를 푸시해야 한다.반면 스트림을 이용한다면 생산자는 스트림의 특정 저장소에 하나의 메시지를 보낼 수 있고, 메시지를 읽어가고자 하는 소비자들은 스트림에서 같은 메시지를 풀(pull) 해갈 수 있기 때..
더미 객체(Dummy)더미는 테스트 대상 클래스에 전달되지만 절대 사용되지 않는 객체다.객체가 필요할 뿐 객체의 기능까지는 필요하지 않은 경우 사용한다. 페이크 객체(Fake)페이크 객체는 시뮬레이션하려는 클래스 같이 실제로 동작하는 구현체를 가진다.하지만 대개 똑같이 동작하는 것은 아니고 훨씬 단순한 방법으로 동작한다. 스텁(Stub)스텁은 테스트 과정에서 수행된 호출에 대해 하드 코딩된 응답을 제공한다.페이크 객체와는 달리 스텁은 실제로 동작하는 구현체가 없다. 모의 객체(Mock)모의 객체는 메서드의 응답을 설정할 수 있다는 점에서 스텁 같은 역할을 한다.하지만 모의 객체는 모든 상호작용을 저장해서 나중에 단언문에 활용할 수 있도록 해준다. 모의 객체의 단점모의 객체를 사용한 테스트는 자연스럽게 모..
MC/DC 커버리지란?각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식의 결과에 독립적으로 영향을 주도록 함으로써, 조건 커버리지와 분기 커버리지를 보완해서 만든 테스트 커버리지 접근 방법이다.다른 상태들의 변동이 없고 자신의 상태가 변경되었을 때 결과 값에 영향을 미치는 경우 해당 상태는 MC/DC를 만족한다고 할 수 있다. MC/DC의 특징결과에 독립적Condition / Decision 커버리지를 만족하고 결정에서 각 조건들은 결과에 독립적이어야 한다. N+1 테스트 케이스일반적으로 N개 입력을 가진 결정에서 N+1 개의 테스트 케이스 필요하다.모든 테스트 케이스 작성하는 것이 아닌 N+1의 보다 적은 테스트 케이스 작성을 통해 효율적으로 테스트를 진행할 수 있다. MC/DC 결정..

프로세스와 스레드프로세스프로세스는 독립된 실행 환경을 가지고 있고 일반적으로 비공개 기본 런타임 리소스 집합을 가지고 있으며, 특히 각 프로세스에는 자체 메모리 공간이 있다.프로세스는 종종 프로그램 또는 애플리케이션과 동의어로 간주된다. 그러나 사용자가 하나의 애플리케이션으로 보는 것은 실제로는 협력하는 프로세스의 집합일 수 있다. 대부분의 Java 가상 머신 구현은 단일 프로세스로 실행된다. 스레드스레드는 경량 프로세스라고도 한다. 프로세스와 스레드 모두 실행 환경을 제공하지만 새 스레드를 만드는 것이 새 프로세스를 만드는 것보다 더 적은 리소스를 필요로 한다. 스레드는 프로세스 내에 존재하며 모든 프로세스에는 적어도 하나가 있다. 스레드는 메모리와 오픈된 파일 등 프로세스의 리소스를 공유한다. 이는..

공식 문서에 @EnableWebMvc를 붙이지 말라고 나와 있다.이미 Spring MVC 자동설정이 @EnableWebMvc가 설정하는 것을 수행하고 있기에 둘을 같이 사용하지 않아도 된다고 한다. @EnableWebMVC를 사용하는 경우자동설정을 사용하지 않고 Spring MVC에 대한 완전한 제어를 원할 때 @Configuration과 함께 @EnableWebMVC를 사용하면 된다고 한다.동일한 방법으로 @Configuration과 DelegatingWebMvcConfiguration을 사용하는 방법이 있다고 한다. WebMvcAutoConfiguration에서 @EnableWebMvc와 동일한 역할을 하는 Configuration이 존재한다.@Retention(RetentionPolicy.RUNTI..