분류 전체보기

· 자바
슬라이싱슬라이싱 메서드는 필요한 데이터만 가져오는 데 유용하다.필요한 데이터만 가져오기 때문에 스트림을 끝까지 읽지 않고도 필요한 데이터를 처리할 수 있어 처리 시간을 단축하거나 메모리 사용량을 줄일 수 있다.이때 원하는 데이터를 얻기 위해서는 슬라이싱을 적용할 데이터는 이미 정렬되어 있어야 한다. takeWhile프레디케이트가 처음 참이 되는 지점부터 이후의 요소를 반환한다.dropWhile프레디케이트가 처음 거짓이 되는 지점까지 발견된 요소를 버린다.limit주어진 값 이하의 크기를 갖는 새로운 스트림을 반환한다.스트림이 정렬되어 있으면 최대 요소 n개를 반환할 수 있다.skip처음 n개 요소를 제외한 스트림을 반환한다.n개 이하의 요소를 포함하는 스트림에 skip을 호출하면 빈 스트림이 반환된다. ..
· 자바
모던 자바 인 액션 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); }}컬렉션은 데이터를 저장하기 위한 자료구조이다.컬렉션에 추가되는 데이터는 메모리에 올라가게 된다.그렇기에 ..
· 개발
메시지 큐와 이벤트 스트림메시지 큐와 이벤트 스트림의 차이용어메시지 큐에서는 주로 데이터를 생성하는 쪽을 생산자(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 가상 머신 구현은 단일 프로세스로 실행된다.  스레드스레드는 경량 프로세스라고도 한다. 프로세스와 스레드 모두 실행 환경을 제공하지만 새 스레드를 만드는 것이 새 프로세스를 만드는 것보다 더 적은 리소스를 필요로 한다. 스레드는 프로세스 내에 존재하며 모든 프로세스에는 적어도 하나가 있다. 스레드는 메모리와 오픈된 파일 등 프로세스의 리소스를 공유한다. 이는..