본문 바로가기

Java25

[Java / Stream] 정수 배열(int[])을 해시맵으로 변환하기 / Collectors.toMap() 활용 예제 상황 다음과 같은 정수 배열 arr가 있을 때, 이 배열의 원소 별 count를 담는 해시맵을 만들고자 할 때 Collectors.toMap() 메서드를 활용할 수 있다. 결과로서의 arrMap은 다음과 같은 Key : Value 쌍을 이룰 것이다. - 1 : 3 - 2 : 2 - 3 : 1 int[] arr = {1, 1, 1, 2, 2, 3}; Map arrMap = Arrays.stream(arr) .boxed() .collect( Collectors.toMap( x->x, x->1, Integer::sum)); toMap() 메서드 살펴보기 아래는 toMap()의 선언부이다. 인자로서 keyMapper, valueMapper, mergeFunction을 받는다. 이때 mergeFunction.. 2023. 5. 20.
[Stream 예제] int[]의 중복 원소 제거 (Set 활용) 다음과 같은 int 배열 arr가 있다고 가정했을 때, Set 자료구조의 특성을 활용하여 중복된 원소를 제거할 수 있다. int[] arr = new int[]{1, 2, 3, 2, 1}; // array -> set -> arrayList ArrayList distinct = new ArrayList( Arrays.stream(arr) .boxed() .collect(Collectors.toSet())); 2023. 5. 12.
[Spring Boot] 인증과 인가 0. 개요 서비스 운영에 있어서의 보안과 관련된 개념을 알아본다. 스프링에 보안을 적용할 때 사용하는 Spring Security에 대해 알아본다. 무상태(stateless) REST 애플리케이션 환경에 맞게 토큰값을 활용하는 보안 기법을 기본적으로 가정한다. * stateless: 클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않음 1. 인증과 인가는 무엇인가? 인증과 인가. 한국어로든 영어로든 서로 비슷해서 헷갈린다. 하지만 찬찬히 생각해보면 어감의 차이를 느낄 수 있다. 먼저 인가를 보면 '허락'의 뉘앙스가 풍긴다. 이를 중심으로 생각해보면 좀더 구분이 수월해지기도 한다. 놀이공원에 간 상황을 예로 들면, 놀이공원 입구에서 신분을 확인하여 입장하는 것이 인증이다. 그리고 입장 과정에.. 2023. 4. 29.
[Spring Boot] 서버 간 통신: RestTemplate과 WebClient 1. 서버 간 통신의 필요성 MSA(MicroService Architecture)의 등장 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어 있는 Monolithic Architecture는 서비스의 규모가 커질 수록 유지 보수 측면에서의 한계를 보인다. 이러한 문제를 보완하기 위해 하나의 애플리케이션이 하나의 기능만을 가지도록 구성한 형태인 MicroService Architecture가 등장하였다. 애플리케이션은 자신이 가진 기능을 API로 외부에 노출하고, 다른 서버(애플리케이션)가 그 API를 호출하여 사용한다. 이 과정에서 다른 서버로 웹 요청을 보내고 응답을 받을 수 있게 도와주는 기술이 RestTemplate과 WebClient이다. 2. RestTemplate 개요 RestTemplat.. 2023. 4. 22.