𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA / 모던 자바 인 액션] 리액티브 프로그래밍

수년 전까지 대규모 어플리케이션은 수십 대의 서버, GB의 데이터, 수초의 응답시간 등 당연하게 여겨졌던 몇 시간의 유지보수 등의 특징이 있음. (이전에는 몇초정도 걸리는 응답시간이 당연했지만, 요새는 수초의 응답이 걸리는 페이지는 그냥 닫아버린다…) 하지만 오늘날은 다음과 같은 변화를 이유로 리액티브 프로그래밍 패러다임의 중요성이 점차 커지고 있다. 빅데이터 : 보통 빅데이터는 페타바이트(Petabyte, PB, 10 bytes) 단위로 구성되며 매일 증가한다. 다양한 환경 : 모바일 디바이스에서 수천 개의 멀티 코어 프로세서로 실행되는 클라우드 기반 클러스터에 이르기 까지 다양한 환경에 애플리케이션이 배포된다. 사용 패턴 : 사용자는 1년 내내 항상 서비스를 이용할 수 있으며 밀리초 단위의 응답 시간..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA / 모던 자바 인 액션] JAVA 8 부터의 컬렉션 API 개선

두 번째 스터디에서는 컬렉션 API의 개선에 대해서 공부해보았다. Java 8 부터는 기존의 컬렉션 API를 더 간결하고 효율적으로 사용할 수 있도록 개선되었다고 한다! 본문을 통해 더 자세히 알아보자. 8.1 컬렉션 팩토리 기존 작은 컬렉션을 만드는 팩토리 메서드로는Arrays.asList() 가 존재했다. List dogs = Arrays.asList("Poodle", "Jindo", "Schnauzer"); 하지만 고정 크기의 리스트를 만들었으므로, 요소를 갱신할 순 있지만 새 요소를 추가하거나 요소를 삭제할 순 없다. (UnsupportedOperationException 발생) List dogs = Arrays.asList("Poodle", "Jindo", "Schnauzer"); dog.add..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA] Collection - Map (HashMap, Hashing)

오늘은 Map에 대해서 알아보자! Map은 한 쌍으로 묶인 데이터를 사용할 때 사용하게 되는데, 이번 포스팅을 통해 자세히 정리해보도록 하자! Map 이란? 맵(Map)은 Key를 Value에 매핑하는 객체이다. 조금 더 쉽게 말해보자면, 각각의 대응 관계를 쉽게 표현하는 자료형이다. 예를 들어 "이름" : "기영이"의 경우, Key에 "이름"이, Value(값)에 "기영이"가 들어가는 것이다. 박응용님의 점프 투 자바에서는 Map을 사전과 같다고 표현한다. 한 단어(Key)에 뜻(Value)이 부합되는 것 처럼, Map은 Key와 Value를 한 쌍으로 갖는 자료형이기 때문이다. 자바의 공식 문서에서도 Map 인터페이스는 추상 클래스인 Dictionary class를 대신한다고 한다. HashMap 이..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA / 모던 자바 인 액션] 람다 표현식

Modern Java in action이라는 책의 스터디를 시작했다! 첫번째 주제로 나는 세번째 챕터였던 람다 표현식을 선택했다. 왜냐하면 람다 표현식은 막상 어렵다고 느껴져서인지 잘 안쓰게 되더라... 오늘 이 정리를 계기로 람다 표현식을 더 자주 사용할 수 있었으면 좋겠다. 3.1 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이다. 즉, 함수(메서드)를 간단한 식(expression)으로 표현하는 방법이다. 람다의 특징 익명 : 보통의 메서드와 달리 이름이 없는 함수이므로 익명이라 표현 int max(int a, int b){return a > b ? a : b;} (a, b) -> a > b ? a : b 처럼 이름이 없다. 함수 : 특정 클래스에 종속되지 않으므..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA] Optional 개념 및 사용법

REST API 코드리뷰에서 받은 피드백 중, get() 사용 시 NoSuchElementException이 발생할 수 있어 orElseThrow를 사용해보라는 피드백을 받았다. 코드를 수정하면서 Optional의 주의사항을 간단히 찾아보았는데, 블로그에 정리를 하면 좋을 것 같다고 생각이 되어 글을 작성하게 되었다! Optional 이란? 먼저 공식문서에서 정의하는 Optional은 위와 같다. 해석하자면, Optional은 non-null값을 가지고 있을 수도 있고 가지고 있지 않을 수도 있는 컨테이너 객체이다. 만약 값이 존재한다면 isPresent() 메소드 사용 시, true를 리턴하게 된다. 반면 값이 존재하지 않는다면, 객체는 비어있는 것(empty)으로 여겨지고, isPresent() 메소..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA] Stream API 살펴보기 - findFirst() vs findAny() + 병렬 처리

REST API를 공부하는데, 한 아이디에 관련된 Task를 가져오는 getTask 메소드를 만들었고, Task를 가져오기 위해 stream() 을 사용해 해당 id를 필터링 후 findFirst() 메소드를 사용하였다. 그런데 findAny()를 사용하지 않은 이유에 대해 질문이 들어왔고, 이에 대해 공부한 내용을 정리하고자 한다. findFirst() stream에서 가장 첫번째 값의 Optional을 반환하고, stream이 비어있을 경우에는 empty Optional을 반환한다. 만약 stream에 따로 순서가 없을 경우에는 무작위의 (any element) Optional을 리턴한다. findAny() stream의 '일부' 요소를 기술하는 Optional 값을 반환하고, stream이 비어있는..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA] enum 이란?

REST API에 대해서 다시 공부중인데, 코드 리뷰 중 enum을 사용해보라는 피드백을 받았다. 오늘은 enum 에 대해서 공부한 것들을 정리해보겠다! Enum Class 보통 상수를 정의할 때는 final로 String 과 같은 문자열이나 숫자들을 나타내는 기본 자료형의 값을 '고정'한다. 하지만 이렇게 상수를 정의해서 코딩을 하게 되면 다양한 문제가 발생하게 된다 (문제점에 대해서는 아래 예시들을 통해 알아보자). 따라서 이러한 문제점을 보완하기 위해 만들어진 것이 Enum 이다. Enum은 enumeration(열거, 목록)의 앞부분을 따서 만든 예약어로, 열거형이라고 불리며 서로 연관된 상수들의 집합을 의미한다. Enum의 장점 코드가 단순해지며, 가독성이 좋다. 인스턴스 생성과 상속을 방지하여..

기누
'𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴' 카테고리의 글 목록