Stream API - map, flatMap
자바 8의 Stream API 중 map과 flatMap의 차이에 대해 정리한 글이다. map VS flatMap map과 flatMap은 특정 데이터를 선택하는 매핑을 위한 메서드이다. 인수로 제공된 함수는 각 요소에 적용되며, 함수를 적용한 결과가 새로운 요소로 반환된다. 제공된 함수의 반환 타입에 따라 새로운 St...
자바 8의 Stream API 중 map과 flatMap의 차이에 대해 정리한 글이다. map VS flatMap map과 flatMap은 특정 데이터를 선택하는 매핑을 위한 메서드이다. 인수로 제공된 함수는 각 요소에 적용되며, 함수를 적용한 결과가 새로운 요소로 반환된다. 제공된 함수의 반환 타입에 따라 새로운 St...
메시지, 국제화 스프링에서는 다양한 메시지를 한 곳에서 관리하는 기능인 메시지 기능과 메시지의 국제화를 할 수 있는 기능을 제공한다. 메시지 우리가 어떤 개발한 애플리케이션에서 상품 이름과 관련된 문구를 상품명이라고 정했다고 가정하자. 근데 요구사항이 변경되어 상품명 -> 상품이름으로 변경해야 되고, ...
웹 시스템 구성 웹 서버 : 정적 리소스 처리 WAS : 애플리케이션 로직 처리 물론 WAS도 정적 리소스를 처리 할 수 있다 하지만 여러 문제점이 있다. WAS가 너무 많은 역할을 담당하게 되고 , 서버 과부하 우려가 있다. 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다. ...
자바 8에서는 메서드 파라미터에 코드 블록 그 자체를 포함시키는 동적 파라미터를 제공한다. 어떻게 변수나 객체가 아닌 코드 블록을 파라미터에 포함 시킬 수 있는 걸까? 단계 별로 진행하며 자바8에서 어떤 식으로 동적 파라미터를 지원하는지에 대해 알아보자. 동적 파라미터 도입 전 처음으로 우리가 농장의 사과를 농장 주인의 요구사항에 맞춰 필터링...
1629번 문제 풀다 배운 점을 정리한 글이다. BOJ 1629번 혼자 문제 푸는데 실패해 다른 풀이를 참고해서 풀었다. 그 과정에서 모듈러 연산과 지수 법칙 응용에 대해 공부할 수 있었다. 지수 법칙 1067번의 문제의 경우 지수에 큰 값이 들어올 수 있다. 이때 지수의 법칙을 응용한 재귀문을 활용해 효율적으로 해결할 수 있다. long ...
BindingResult를 통해 서버 사이드에서 검증할 때 MVC 패턴에서는 타임리프를 이용해 쉽게 error 메시지 출력이 가능했다. 그러다 프로젝트 중 요구사항이 변경되어 MVC가 아닌 Rest API 방식으로 검증 오류 메시지 출력이 필요해졌다. MVC에서의 BindingResult @PostMapping("edit") public Stri...
Exception의 종류 에러(Error) java.lang.Error 클래스의 하위 클래스들 Error는 메모리가 부족하다는 등과 같이 시스템이 비정상적인 상황인 경우에 발생 주로 JVM에서 발생해 애플리케이션 코드...
스프링의 ArgumentResolver를 이용해 로그인 세션을 확인하는 중복 로직을 줄여보자. 기존 로직 @GetMapping("/") public String homeController( @SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member l...
DTO에 대해 처음 공부했을 때 각 요청마다 DTO를 분리하는 이유가 단순히 로직 수행에 필요없는 데이터가 dto 객체에 같이 돌아다니기 때문이라고 생각했다. 하지만 시간이 지나 @Validated와 BindingResult 등 검증에 대해 공부하다보니 , 위와 같은 이유도 분명히 있지만 왜 각 요청마다 DTO를 분리해야하는지 깨닫게 되었다. It...
HTTP 프로토콜 등장 이전 IP 프로토콜 지정한 IP 주소에 데이터 전달 IP 주소가 담겨있는 IP 패킷에는 출발지 IP, 목적지 IP 등의 정보가 담겨있다 패킷을 통해 데이터 전달 한계 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 : 중간에 패킷이 사라지...