Application/JAVA & Kotlin

    [모던 자바 인 액션 정리] 7장. 병렬 데이터 처리와 성능

    자바 7 이전 병렬 처리 데이터를 서브 파트로 분할하고, 서브 파트를 각각의 스레드로 할당한다. 스레드로 할당한 다음에는 의도치 않은 레이스 컨디션이 발생하지 않도록 적절한 동기화를 추가해야 하며 마지막으로 부분 결과를 합쳐야 한다. 자바 7의 새로운 병렬 처리 방법 포크/조인 프레임워크 기능을 제공 자바 8의 새로운 병렬 처리 방법 스트림을 통한 병렬 처리 병렬 스트림 스트림에 parallelStream()을 호출하면 병렬 스트림이 생성된다. 병렬 스트림이란 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림. 병렬 스트림을 이용하면 모든 멀티코어 프로세서가 각각의 청크를 처리할 수 있도록 할당할 수 있다. Stream.iterate(1L, i -> i + 1) .limit(n..

    [모던 자바 인 액션 정리] 4장. 스트림 소개

    스트림 자바8에서 추가된 기능으로, 스트림을 이용하면 선언형으로 컬렉션 데이터를 처리할 수 있다. 선언형으로 구현함으로써, if 등의 제어 블록을 사용해서 어떻게 동작을 구현할지 지정할 필요 없이, 동작을 지정할 수 있다. 스트림을 이용하면 멀티스레드 코드를 구현하지 않아도 데이터를 투명하게 병렬로 처리할 수 있다. (parallelStream()) 예시 // 기존의 코드 public static List getLowCaloricDishesNamesInJava7(List dishes) { List lowCaloricDishes = new ArrayList(); for (Dish d : dishes) { if (d.getCalories() < 400) { lowCaloricDishes.add(d); } }..

    [모던 자바 인 액션 정리] 3장. 람다 표현식

    람다란? 메소드로 전달할 수 있는 익명 함수를 단순화한 것. 람다의 키 포인트 익명 함수 람다는 메소드처럼 특정 클래스에 종속되지 않으므로 함수로가 부른다. 전달 람다 표현식을 메소드 인수로 전달하거나 변수로 저장할 수 있다. 간결성 익명 클래스처럼 많은 자질구레한 코드를 구현할 필요가 없다. // 기존의 익명 클래스을 이용한 코드 Comparator byWeight = new Comparator() { public int compare(Apple a1, Apple a2) { return a1.getWeight().compareTo(a2.getWeight()); } } // 람다를 이용한 코드 Comparator byWeight = (a1, a2) -> a1.getWeight().compareTo(a2...

    [모던 자바 인 액션 정리] 2장. 동작 파라미터화 코드

    "소프트웨어의 모든 것은 변한다. 요구사항은 변한다. 설계도 변한다. 비지니스도 변한다. 기술도 변한다. 팀도 변한다. 팀 구성원도 변한다. 변화는 반드시 일어나기 때문에, 문제가 되는 것은 변화가 아니다. 변화를 극복하지 못하는 우리의 무능력이 문제다." - 켄트백 좋은 코드란 "변경하는 요구사항에 효율적으로 대응하는 코드" 임을 되뇌이며 들어갑시당 1. 동작 파라미터화란 (behavior parameterization) 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록 동작 파라미터화를 통해 자주 바뀌는 요구사항에 효과적으로 대응할 수 있다. 도대체 무슨 소리지?? 🙄 다음 예제를 통해 이해해봅시다~ 2. 변화하는 요구사항에 효과적으로 대응하기 사과 리스트에서 녹색 사과만 필터링하는 기능을 추가한..