나누고 싶은 개발 이야기

Data Engineer로서 기록하고 공유하고 싶은 기술들. 책과 함께 이야기합니다.

Java 17

[spring] cache

캐시는 미래의 데이터 요청에 빠르게 응답하기 위한 데이터 저장의 한 방법이다. (wikipedia) 캐시의 활용은 다양한데, 동일한 데이터를 계속해서 활용할 경우 계산 작업을 중복해서 하지 않도록 하거나 계산 시간이 오래 걸리는 작업을 미리 처리하고 추후 요청이 왔을 때 응답하도록 할 수 있다. spring에서는 cache 서비스를 추상화하며 여러 데이터 저장소를 활용할 수 있도록 구성하였다. org.springframework.cache.Cache 와 org.springframework.cache.CacheManager 인터페이스로 구체화된다. 해당 추상화에 대한 여러가지 구현들이 있는데 우리는 가장 기본이 되는 JDK의 java.util.concurrent.ConcurrentMap를 활용한 구현법을 ..

Framework/spring 2017.08.29

[Java8] 람다란 무엇인가?

Java8의 추가된 큰 기능 중 하나로 람다를 첫번째로 든다. 그러면 람다란 무엇일까? 정리해보자. 람다를 한마디로 표현하면 메서드로 전달할 수 있는 익명 클래스를 단순화한 표현식이다. 익명클래스(anonymous class)는 무엇인가? 익명클래스는 이름이 없는 로컬 클래스 입니다. 익명 클래스는 new 연산자를 사용하여 하나의 간결한 표현식으로 정의되고 인스턴스화된다. 로컬 클래스는 Java 코드 블럭이지만 익명클래스는 표현식이므로 메서드 호출과 같은 표현식의 일부로 포함될 수 있다. 아래 코드를 살펴보면 Thread를 생성할 때, 파마미터로 익명클래스를 생성해서 전달함을 볼 수 있다. public class ThreadTest { public static void main(String[] args)..

Language/Java 2017.08.09

[Java8] CompletableFuture 정리

기존 Future 인터페이스는 비동기 계산의 결과로 제공하기 위해 Java5에서 추가되었지만, 이런 계산들을 결합하거나 오류를 처리할 방법이 없었다. 그래서 Java 8에서 CompletableFuture가 추가되었다. CompletableFuture은 Future 뿐만 아니라 CompletionStage도 상속하는데, CompletionStage의 특징을 살펴보면 CompletableFuture의 장점을 알 수 있다. CompletionStage는 결국은 계산이 완료될 것이라는 의미의 약속이다.계산의 완료는 단일 단계의 완료 뿐만 아니라 다른 여러 단계 혹은 다른 여러 단계 중의 하나로 이어질 수 있음도 포함한다. 뿐만 아니라 각 단계에서 발생한 에러를 관리하고 전달할 수 있다. 지금부터 Complet..

Language/Java 2017.08.09

스프링 팁: *Utils 클래스 활용

spring 블로그에 게시되어 있는 spring *Utils 클래스들에 대한 활용 팁이다. 블로그에 youtube 영상과 함께 자세히 설명하고 있다. Spring Tips: The Spring Framework *Utils Classes 크게 보면 아래 Utils들의 설명을 하고 있다.BeanUtils : JavaBean의 util 클래스로 bean의 초기화, property의 검사, property 복사 등의 함수 포함.ClassUtils : Class의 name, method 확인 및 reflection util을 포함. ReflectionUtils와 기능의 차이 비교가 필요하다.SystemPropertyUtils : system property의 값을 손쉽게 가지고 올 수 있는 utilFileCop..

Framework/spring 2017.04.03

이름 재사용과 관련된 기술

자바 퍼즐러를 읽는 중에 이름 재사용과 관련되어 개념을 명확히 하지 않으면 버그가 나올 가능성이 많아 정리를 해보았다.(물론 책에 나온 내용을 정리하는 수준이다) 오버라이딩자식 클래스에 있는 인스턴스 메서드가 부모 클래스의 접근 가능한 메서드와 동일한 이름과 매개변수를 가지면 오버라이딩 합니다.오버라이딩되면 동적 디스패치가 가능해집니다. 여기서 동적 디스패치란 무엇인가? 동적 디스패치는 동적바인딩과 동일한 개념이다.동적 바인딩 설명 가상머신은 실행 중에 인스턴스의 자료형에 기반해서 호출할 메서드를 결정한다.class Base { public void f() { }} class Derived extends Base { public void f() { }} 하이딩부모 클래스의 필드, 정적 메서드, 클래스, ..

Language/Java 2016.10.13
반응형