JAVA 54

[MODERN JAVA] 람다(Lambda)의 활용 - Predicate, Consumer, Function

[MODERN JAVA] 람다(Lambda)의 활용 - 실행 어라운드 패턴 [MODERN JAVA] 람다(Lambda)란? 파라미터로 값이 아닌 '코드'를 넘겨야 하는 순간이 있다. 이때 사용하는 기술이 '동적 파라미터화'이다. '람다'가 등장하기 전에는 동적 파라미터화는 무겁게 구현되었 lordofkangs.tistory.com 지난 포스팅에서는 람다가 사용되는 패턴을 알아보았다. 이번 포스팅에서는 자바API의 함수형 인터페이스 몇 가지를 알아보겠다. 함수형 인터페이스는 동적파라미터를 구현하기 위한 그릇이다. 동적 파라미터란, 파라미터 인수로 '코드(Code)'를 넘기는 기술로 일회적이거나 로직이 계속 변경되는 경우에 사용된다. Predicate Predicate는 참,거짓을 Return하는 함수형 인..

JAVA/Modern JAVA 2023.03.15

[MODERN JAVA] 람다(Lambda)의 활용 - 실행 어라운드 패턴

[MODERN JAVA] 람다(Lambda)란? 파라미터로 값이 아닌 '코드'를 넘겨야 하는 순간이 있다. 이때 사용하는 기술이 '동적 파라미터화'이다. '람다'가 등장하기 전에는 동적 파라미터화는 무겁게 구현되었다. 1) 구현객체 넘기기 Lis lordofkangs.tistory.com 지난 포스팅에서는 람다의 개념을 알아보았다. 이번 포스팅에서는 람다가 활용되는 예를 알아보겠다. 람다가 활용되는 대표적인 예는 '실행 어라운드 패턴'이다. 실행어라운드패턴 파일처리는 자원을 열고(OPEN) 자원을 처리하고(PROCESS) 자원을 닫는 과정(CLOSE)을 반복한다. 이를 순환패턴이라 한다. 그렇다면 파일을 처리하는 코드는 자원을 설정(SetUp)하고 자원을 처리(Process)하고 자원을 정리(CleanU..

JAVA/Modern JAVA 2023.03.08

[MODERN JAVA] 람다(Lambda)란?

파라미터로 값이 아닌 '코드'를 넘겨야 하는 순간이 있다. 이때 사용하는 기술이 '동적 파라미터화'이다. '람다'가 등장하기 전에는 동적 파라미터화는 무겁게 구현되었다. 1) 구현객체 넘기기 List result1 = getFilteredApples(apples,new ColorPredicate()); // new ColorPredicate() 구현객체 넘기기 List result2 = getFilteredApples(apples,new ColorPredicate()); // new ColorPredicate() 구현객체 넘기기 위와 같이, '코드'를 포함한 구현객체를 파라미터로 넣는 방법이 있고 2) 익명클래스 사용 //Runnable 익명클래스 넘기기 Thread t = new Thread(new R..

JAVA/Modern JAVA 2023.02.14

[MODERN JAVA] 동작 파라미터화 - Comparator,Runnable,Callable

[MODERN JAVA] 동작 파라미터화 - 익명 클래스(Anonymous Class) [MODERN JAVA] 동작 파라미터화 - 전략 디자인 패턴 ( Strategy Pattern ) 변화에 대처 가능한 코드를 짜려면 어떻게 해야할까? 컴파일에 결정되는 코드가 아닌 런타임에 결정되는 코드를 짜야 한다. 대표 lordofkangs.tistory.com 지난 포스팅에서 동적파라미터화를 구현하기 위해 익명클래스를 이용해보았다. 이번 포스팅에서는 익명클래스를 사용하여 동적파라미터화를 구현한 대표적인 예시들을 알아보겠다. Comparator List 클래스는 sort 메소드를 갖는다. List 자료구조 안 객체를 정렬하는 메소드인데, 정렬 기준이 되는 '소스'를 파라미터로 넘기는 동적 파라미터화가 구현되어 있..

JAVA/Modern JAVA 2023.01.25

[MODERN JAVA] 동작 파라미터화 - 익명 클래스(Anonymous Class)

[MODERN JAVA] 동작 파라미터화 - 전략 디자인 패턴 ( Strategy Pattern ) 변화에 대처 가능한 코드를 짜려면 어떻게 해야할까? 컴파일에 결정되는 코드가 아닌 런타임에 결정되는 코드를 짜야 한다. 대표적으로 동작 파라미터화(behavior parameterization)이 있다. 많은 데이 lordofkangs.tistory.com 지난 포스팅에 이어 동작 파라미터화에 대해서 알아보겠다. '동작 파라미터화'란 메소드의 파라미터로 값이 아닌 '코드(Code)'를 넘기는 기술이다. 이전 포스팅에서는 인터페이스를 만들고 구현클래스를 생성하여 동작 파라미터화를 구현했다. 하지만 매번 구현클래스를 생성하는 것도 낭비이다. 단 한 번 파라미터로 코드를 넘기기 위해, 클래스를 생성하는 것은 메..

JAVA/Modern JAVA 2023.01.16

[MODERN JAVA] 동작 파라미터화 - 전략 디자인 패턴 ( Strategy Pattern )

변화에 대처 가능한 코드를 짜려면 어떻게 해야할까? 컴파일에 결정되는 코드가 아닌 런타임에 결정되는 코드를 짜야 한다. 대표적으로 동작 파라미터화(behavior parameterization)가 있다. 많은 데이터 중 원하는 데이터만 필터링 하려한다. 가볍게 데이터를 파라미터로 받아 조건문으로 필터링하면 된다. 하지만 요구사항은 바뀐다. 필터링 조건은 끊임없이 바뀌고 그럴 때마다 필터링하는 메소드도 복잡해진다. 요구사항이 변함에 따라 필터로직도 수없이 바뀐다. 그렇다면 우리는 어떻게 변화에 대응해야할까? 첫 번째 대응 방법은 '전략 디자인 패턴(Strategy Pattern)'이다. 전략 디자인 패턴은 문제해결을 위한 여러가지 전략이 존재할 때, 전략의 패밀리를 인터페이스로 구현하고 런타임시, 상황에 ..

JAVA/Modern JAVA 2022.10.24

[ JAVA ] InputStreamReader : 인코딩

[ JAVA ] 기반 스트림, 보조 스트림 [ JAVA ] 스트림이란? ( 바이트 기반 스트림 , 문자 기반 스트림 ) 스트림(Stream)에 대해서 파헤쳐보자. [ JAVA ] 문자 인코딩(Character Encoding)이란? 인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언 lordofkangs.tistory.com 지난 포스팅에서 바이트 스트림의 기반스트림과 보조스트림의 개념을 알아보았다. 개인적으로 문자스트림에서 가장 중요한 클래스는 InputStreamReader 클래스라 생각한다. Reader 추상클래스는 유니코드 문자를 읽기 위해 존재한다. 그러나 인코딩에는 다양한 방식이 존재한다. 인코딩의 종류마다 문자를 표현하는 바이트 수도 다르다. UTF-8 인코딩은 한글을 3byte로 표현하고 ..

JAVA/JAVA Basic 2021.07.12

[ JAVA ] 기반 스트림, 보조 스트림

[ JAVA ] 스트림이란? ( 바이트 기반 스트림 , 문자 기반 스트림 ) 스트림(Stream)에 대해서 파헤쳐보자. [ JAVA ] 문자 인코딩(Character Encoding)이란? 인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언어는 문자, 이미지, 동영상, 소리 등이 있다. 그러나 컴퓨터는 1 lordofkangs.tistory.com 지난 포스팅에서 스트림(Stream)에 대해서 알아보았다. 간단히 정리하면 데이터는 스트림의 형태로 전송된다. 스트림(Stream)이란, 바이트의 흐름을 의미한다. 프로그램은 외부의 데이터를 스트림의 형태로 입출력한다. 이때, 1byte는 아스키코드 문자와 이미지, 영상 데이터의 기본 단위가 된다. 그러므로 1byte 단위로 스트림을 읽을 필요가 있는데, 이때..

JAVA/JAVA Basic 2021.07.12

[ JAVA ] 스트림이란? ( 바이트 기반 스트림 , 문자 기반 스트림 )

스트림(Stream)에 대해서 파헤쳐보자. [ JAVA ] 문자 인코딩(Character Encoding)이란? 인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언어는 문자, 이미지, 동영상, 소리 등이 있다. 그러나 컴퓨터는 1과 0밖에 모른다. 그러므로 우리는 문자, 이미지, 동영상, 소리를 1과 0에 대응 lordofkangs.tistory.com [ JAVA ] JVM이 문자열을 UTF-16 방식으로 저장하는 이유 포스팅 전 이 글은 아래 사이트 글을 토대로 한 저의 추측임을 알립니다. Why Java char uses UTF-16? Recently I read lots of things about Unicode code points and how they evolved over time and ..

JAVA/JAVA Basic 2021.07.08

[ JAVA ] JVM이 문자열을 UTF-16 방식으로 저장하는 이유

포스팅 전 이 글은 아래 사이트 글을 토대로 한 저의 추측임을 알립니다. Why Java char uses UTF-16? Recently I read lots of things about Unicode code points and how they evolved over time and sure I read http://www.joelonsoftware.com/articles/Unicode.html this also. But something I couldn't find... stackoverflow.com 윈도우는 기본적으로 MS사가 자체 개발한 EUC-KR의 확장형인 MS949 인코딩 방식을 사용한다. 그래서 윈도우 OS에 설치된 이클립스는 파일 인코딩 방식이 디폴트로 MS949가 지정되어 있다. ( ..

JAVA/JAVA Basic 2021.07.06