[Effective-Java] Chapter7 #46. 스트림에서는 부작용 없는 함수를 사용하라
·
Reference/Effective-Java
📌 Stream, 함수형 프로그래밍 그리고 순수 함수 Stream을 이해하고 싶다면 함수형 프로그래밍 패러다임까지 받아들여라 스트림 패러다임 핵심은 계산을 일련의 변환(transformation)으로 재구성하는 부분이다. 각 변환 단계는 가능한 한 이전 단계의 결과를 받아 처리하는 순수 함수여야 한다. 오직 입력만이 결과에 영향을 주는 함수 다른 가변 상태를 참조하지 않고, 함수 스스로도 외부 상태를 변경하지 않는다. 즉, 함수는 입력값에 의존하여 항상 동일한 결과만을 내놓아야 한다. 이를 보장하기 위해서는 스트림 연산에 건네는 함수 객체는 모두 side-effect가 없어야 한다. ✒️ Stream API 1. Java Stream API • 컬렉션에 저장되어 있는 element들을 추상화시키고, 간단..
[MSA] 2. How apply Microservice Architecture?
·
Reference/Microservice Architecture
김동욱님의 "마이크로서비스 아키텍처 구축 가이드"를 기반으로 공부한 내용입니다. 📕 목차 1. 우리 시스템에 MSA가 적합한가? 2. 엔터프라이즈 시스템에도 어울리는가? 3. 프로젝트 일정을 어떻게 수립하는가? 4. 프로젝트 비용을 어떻게 산정하는가? 5. 서비스는 분리하고 데이터베이스만 열어주면 안 되는가? 6. 데이터베이스는 어디까지 분리해야 충분한가? 7. 도메인 주도 설계를 배워야 하는가? 8. 우리 시스템은 왜 MSA를 도입했는가? 9. 우리 시스템은 MSA가 맞는가? 1. 우리 시스템에 MSA가 적합한가? "아키텍처 스타일이 시스템에 적합하다"는 "다른 아키텍처 스타일 보다 시스템의 중요한 비기능 요구 사항을 잘 달성할 수 있다"는 의미다. 마이크로서비스 아키텍처의 3가지 장점으로 시스템의 비..
[JPA] Association Mapping
·
Backend/Spring Boot & JPA
이 포스트는 김영한님의 "자바 ORM 표준 JPA 프로그래밍"을 참조하였음을 알립니다. Spring Boot를 어느정도 만져보다 포스팅하는 거라 모든 내용을 정리하긴 좀 그렇고.. 다시 정리할 만한 내용들만 중점으로 다룰 예정 📕 목차 1. 양방향 연관관계 주의점 • 순수한 객체까지 고려한 양방향 연관관계 • 연관관계 편의 메서드 • 연관관계 편의 메서드 주의사항 2. 다대다 관계 분리 p. 226 • 복합 키 사용 • 새로운 기본 키 사용 1. 양방향 연관관계 주의점 Team과 Member가 일대다 관계라 가정했을 때, 일반적으로 저장 방식은 이렇다. public void testSave() { Team team1 = new Team("team1", "팀1"); em.persist(team1); Mem..
[Effective-Java] Chapter7 #45. 스트림은 주의해서 사용하라
·
Reference/Effective-Java
💡 스트림과 반복 중 어느 쪽이 나은지 확신하기 어렵다면 둘 다 해보고 나은 쪽을 택하라 📌 Stream API 다량의 데이터 처리 작업(순차 혹은 병렬)을 돕고자 자바 8에 추가되었다. collection.stream() // 소스 스트림 .filter(x -> x.flag == true) // 중간 연산 .count(); // 종단 연산 stream 데이터 원소의 유한 혹은 무한 시퀀스(sequence) 스트림 원소는 컬렉션, 배열, 파일, 정규표현식 패턴 매처(matcher), 난수 생성기, 혹은 다른 스트림 등 어디로부터든 올 수 있다. 일반적인 stream은 객체 참조에 대한 Stream 기본 타입 값으로 int, long, double 세 가지를 지원 (intStream, longStream,..