[Effective-Java] Chapter7 #48. 스트림 병렬화는 주의해서 적용하라
·
Reference/Effective-Java
📌 동시성 프로그래밍 💡 동시성 프로그래밍에서는 안전성(safety)과 응답 가능(libeness) 상태를 유지해야 한다. 동시성 병렬성 동시에 실행되는 것처럼 보이는 것 실제로 동시에 여러 작업이 처리되는 것 싱글 코어에서 멀티 스레드 동작시키는 방식 멀티 코어에서 멀티 스레드 동작시키는 방식 한번에 많은 것을 처리 한번에 많은 일을 처리 논리적 개념 물리적 개념 주류 언어 중, 동시성 프로그래밍 측면에서 자바는 항상 앞서갔다. Java 7의 고성능 병렬 분해(parallel decom-position) 프레임워크인 포크-조인(fork-join) 패키지 Java 8의 Stream.parallel() 만으로 파이프라인 병렬 실행 ✒️ 포크-조인(Fork-Join) 프레임 워크 • 포크 단계에서 전체 데이..
[Effective-Java] Chapter7 #47. 반환 타입으로는 스트림보다 컬렉션이 낫다
·
Reference/Effective-Java
💡 핵심 정리 • 원소 시퀀스 반환 메서드 작성 시, Stream 처리와 Iterable 처리 양쪽을 모두 만족시키려 노력하라. • Collection을 반환할 수 있다면 그렇게 하라. • 반환 전부터 이미 원소들을 Collection에 담아 관리하고 있거나, 하나 더 만들어도 될 정도로 작다면 표준 컬렉션(ex. ArrayList)에 담아 반환하라. • 그렇지 않다면 전용 Collection 구현을 고민하라. • 컬렉션 반환이 불가능하다면 Stream과 Iterable 중 더 자연스러운 것을 반환하라. 📌 Java 8 이전 원소 시퀀스, 일련의 원소를 반환하는 메서드 반환 타입은 Collection, Set, List 같은 Collection 인터페이스, 혹은 Iterable이나 배열을 사용했다. Co..
[Docker] Docker Image
·
DevOps/Docker & Kubernetes
📕 목차 1. 도커 허브에 공유된 이미지 사용 2. Dockerfile 3. Container Image build 4. Docker Image Layer 5. Image Layer cache : Dockerfile Optimizing 6. 연습 문제 1. 도커 허브에 공유된 이미지 사용 📌 What is Docker Hub? Registry : 이미지를 제공하는 저장소 Docker Hub : Docker에서 공식 운영하는 무료 제공 공개 Registry 1️⃣ web-ping 애플리케이션 이미지 내려받기 docker image pull diamol/ch03-web-ping (web-ping 애플리케이션은 지정된 URL에 HTTP 요청을 3초마다 보내는 동작을 컨테이너 종료까지 반복한다.) docker ..
[Effective-Java] Chapter7 #46. 스트림에서는 부작용 없는 함수를 사용하라
·
Reference/Effective-Java
📌 Stream, 함수형 프로그래밍 그리고 순수 함수 Stream을 이해하고 싶다면 함수형 프로그래밍 패러다임까지 받아들여라 스트림 패러다임 핵심은 계산을 일련의 변환(transformation)으로 재구성하는 부분이다. 각 변환 단계는 가능한 한 이전 단계의 결과를 받아 처리하는 순수 함수여야 한다. 오직 입력만이 결과에 영향을 주는 함수 다른 가변 상태를 참조하지 않고, 함수 스스로도 외부 상태를 변경하지 않는다. 즉, 함수는 입력값에 의존하여 항상 동일한 결과만을 내놓아야 한다. 이를 보장하기 위해서는 스트림 연산에 건네는 함수 객체는 모두 side-effect가 없어야 한다. ✒️ Stream API 1. Java Stream API • 컬렉션에 저장되어 있는 element들을 추상화시키고, 간단..