본문 바로가기

java56

[Java + Redis] Spring Data Redis로 Redis와 연동하기 - RedisTemplate 편 [Redis] 캐시(Cache)와 Redis [Redis] Redis의 기본 명령어 [Java + Redis] Spring Data Redis로 Redis와 연동하기 - RedisTemplate 편 [Java + Redis] Spring Data Redis로 Redis와 연동하기 - RedisRepository 편 안녕하세요. 오늘은 Redis에 관련된 이야기 3번째입니다. 저번시간까지 우리는 캐시(Cache)에 대한 간단한 이론, 그리고 Redis의 기본 명령어에 대해서 알아보는 시간을 가졌습니다. 이번 포스팅에서는 Java에서 Spring Data Redis를 이용하여 Redis와 통신하는 방법에 대해서 알아보도록 하겠습니다. Redis에 접근하기 위해서 Spring Data Redis 라이브러리를 .. 2020. 8. 12.
[java8] 병렬 Stream Java에서는 다양한 방법으로 병렬 처리를 만들 수 있습니다. 기본적인 Thread 클래스를 이용할 수 있으며, ExecutorService를 이용하여 쓰레드풀도 쉽게 만들 수 있습니다. 그리고 CompleteFuture를 이용하면 쓰레드 간의 데이터 동기화, 실행 순서 등도 원하는 대로 조작할 수도 있습니다. 그리고 Java8애서 등장한 Stream은 병렬 처리를 쉽게 사용할 수 있게 메서드를 제공해줍니다. 만들어 놓은 Stream에 parallel를 추가하기만 하면 되죠. 오늘은 java8의 병렬 Stream에 대해서 알아보는 시간을 가져보겠습니다. Stream 예제 오늘 사용할 예제는 아래와 같습니다. 코드에는 java google style guide를 적용하였습니다. 메서드를 하나 만들도록 하겠.. 2020. 7. 26.
[Java9] Reactive Stream Flow - Processor 실습 안녕하세요. 우리는 이전 포스팅에서 Reactive Stream에 대해서 알아봤었습니다. Reactive Stream의 스펙으로 Publisher, Subscriber, Subscription을 소개해드렸었습니다. 하지만 저희가 알아보지 않은 스펙이 하나 더 존재합니다. 바로 Processor Interface 입니다. 오늘은 이 Interface에 대해서 간단하게 알아가보는 시간을 가지도록 하겠습니다. 개요 Processor는 리액티브 스트림에서 처리하는 이벤트의 변환 단계입니다. 예를 들어 Subscriber가 여러개 있을 때 하나의 Processor가 에러를 수신하면 이로부터 회복하거나 즉시 onError 신호를 모든 Subscriber에게 에러를 전파할 수 있습니다. 또한 Producer가 생성한.. 2020. 7. 17.
[Java9] Reactive Stream Flow - 실습편 안녕하세요. 이전 포스팅에서 Reactive Stream에 대해서 알아봤었습니다. 오늘은 Reactive Stream 스펙을 이용해 실제로 Reactive Stream으로 구현해보도록 하겠습니다. 예제를 만들어 보도록 하겠습니다. 스펙 이전 포스팅에서 확인했던 3가지의 Reactive Stream의 스펙은 아래와 같습니다. 자세한 내용은 이전 포스팅를 참고 부탁드립니다. public interface Publisher { public void subscribe(Subscriber 2020. 7. 15.
[Java] Reactive Stream 이란? reactive stream이란 non-blocking(넌블럭킹) backPressure(역압)을 이용하여 비동기 서비스를 할 때 기본이 되는 스펙입니다. java의 RxJava, Spring5 Webflux의 Core에 있는 ProjectReactor 프로젝트 모두 해당 스펙을 따르고 있습니다. 또한 Java9에 추가된 Flow 역시 reactvie stream 스펙을 채택하여 사용하고 있습니다. 따라서 비동기 프로젝트를 잘 이해하기 위해서는 기본 스펙이 되는 Reactive Stream에 대해서 이해가 필요합니다. 이 스펙은 다행스럽게도 공개된 사이트가 있습니다. 원 페이지 주소는 참조에 두도록 하겠습니다. 오늘은 Reactive Stream 스펙에 대해서 한번 알아보는 시간을 가져보겠습니다. 개요 .. 2020. 7. 2.
[Java] 자바에서 줄바꿈, 개행의 규칙 개발은 회사에 들어가면 혼자할 수 도 있지만 협업하는 경우가 훨씬 많습니다. 동일한 시간에 혼자서 만들 수 있는 프로젝트에는 한계가 있기 때문입니다. 무궁무진하게 쉴새없이 좋은 기술들이 나오고 있는 현재, 그리고 계속해서 바뀌는 요구사항. 모든 것을 만족시키려면 협업이 중요합니다. 여러명이서 만들지만 혼자서 만든것과 같은 결과물이 나온다면 그것은 더 없이 좋은 결과물이라고 생각합니다. 그러기 위해서는 코딩의 습관 등이 프로젝트에 일관적일 필요가 있습니다. 이럴 때 이용할 수 있는 것이 Coding Convention입니다. 오늘은 Coding Convention 중 Oracle docs에 나와있는 Coding Convention을 보면서 스스로 자신의 코딩 스타일에 대해서 되돌아보는 시간을 가지고자 합니.. 2020. 6. 26.
[Spring] Spring AOP - 실전편 안녕하세요. 오늘은 저번 포스팅, 기본 이론편에 이어서 Spring AOP에 대해서 실제 적용을 해보며 알아보는 시간을 가지도록 하겠습니다. 저번 포스팅에서 배운 이론이 어떻게 적용되는지 눈으로 확인하시며 쉽게 이해가 되셨으면 좋겠습니다. AOP 적용 타입 Spring AOP는 아래와 같은 type의 Advice를 제공합니다. @Before Before는 target 메서드가 실행되기 전에 Advice가 실행됩니다. target이 실행되지 못하도록 막는 방법은 가지고 있지 않습니다. (exception을 발생시키면 되기는 합니다.) @After After는 target 메서드가 실행된 후에 Advice가 실행됩니다. 정상적으로 메서드가 마무리되든 비정상적으로 exception이 발생하든 무조건 실행되는 .. 2020. 6. 23.
[Spring] Spring AOP - 기본 이론편 안녕하세요. 오늘은 Spring AOP에 대해서 알아보고 실제로 적용하는 방법에 대해서 이야기해보고자합니다. AOP는 [Spring] Spring의 정의와 기본 개념에서 Spring을 비침투적인 기술로 만들기위한 3가지 기술중 하나라고 언급한 적이있습니다. 오늘부터는 Spring AOP에 대해서 알아보는 시간을 가져보도록 하겠습니다. AOP 먼저 아래 코드의 상황을 보면서 문제를 이해해보도록 하겠습니다. doSomething이라는 메서드가 있습니다. 이 메서드는 어떤 바쁜 일을 합니다. 이렇게 운영하던 중 새로운 요구사항이 들어왔습니다. 바로 doSomething 메서드가 실행되는 시간을 찍어달라고 합니다. 그렇다면 우리는 아래와 같이 timeCheck 메서드를 만들어 코드를 작성할 수 있습니다. pub.. 2020. 6. 20.
[python] java 개발자가 배우는 python - dictionary 안녕하세요. 오늘은 java 개발자가 배우는 python 4번째 시간입니다. 오늘 배워볼 내용은 tuple과 마찬가지로 java에는 나오지 않는 자료형의 이름을 가진 dictionary입니다. 하지만 API를 개발해 보신분이라면 그렇게 생소하지 않을 것입니다. 빠르게 아래에서 dictionary에 대해서 알아보도록하겠습니다. dictionary dictionary는 java의 Map과 가장 유사한 자료구조를 가지고 있습니다. 즉, key - value Mapping의 자료구조라는 뜻입니다. dictionary는 list나 tuple 처럼 순차적으로 해당 요소값을 구하지 못하며 key를 통해 value의 값을 얻어옵니다. 이것이 dictionary의 가장 큰 특징이며 이때 hash를 사용하여 검색합니다. .. 2020. 6. 17.
[python] java 개발자가 배우는 python - tuple 안녕하세요. java 개발자가 배우는 python 3번째 시간입니다. 오늘 알아볼 것은 java 개발자가에게는 조금 생소한 개념일 수도 있는 tuple이라는 자료구조입니다. tuple tuple으 쉼표로 구분되는 여러 값으로 구성되는 자료구조입니다. 이 tuple은 python의 immutable(수정불가능한) list로써 python 함수의 다중리턴에 사용됩니다. 어떻게 사용하는 자료구조인지 예시를 들어가며 한번 확인해보도록 하겠습니다. 선언은 소괄호와 컴마를 이용해서 가능합니다. >>> test = () >>> type(test) >>> t = (1, 2, 3) >>> t (1, 2, 3) >>> type(t) 뿐만 아니라 선언시 초기화 할 경우에는 소괄호를 생략해도 tuple 자료형으로 선언됩니다... 2020. 6. 14.
[python] java 개발자가 배우는 python - List 안녕하세요. 오늘은 java 개발자가 배우는 python의 2번째 시간입니다. Java의 배열 및 List와 비교하여 python의 list는 어떤지 확인해보도록 하겠습니다. List python의 기본형 타입으로 int, float, string을 배웠습니다. 이런 데이터가 여러개의 순차적인 묶음으로써 필요할 때가 많이 있습니다. 이때 사용할 수 있는 python의 타입이 List 타입입니다. java에서 List java에서는 기본적으로 배열을 사용할 수 있습니다. java의 배열은 일반적으로 아래와 같이 사용합니다. // type[] name = new type[size] int[] array = new int[10]; 위와같이 선언하면 array는 int형의 10개의 사이즈의 크기를 가지는 메모리.. 2020. 6. 8.
[gradle] gradle을 이용하여 java 프로젝트 만들기 안녕하세요. 오늘은 gradle 빌드 도구에 대해서 알아보는 첫번째 시간입니다. 여러분들과 함께 진행해볼 내용은 gradle을 이용하여 java 프로젝트를 만드는 것입니다. gradle로 java 프로젝트를 만든다? 어떤거라고 생각하시나요? 일반적으로 프로젝트를 만든다면 IDE를 이용하여 만듭니다. intellij나 STS로 project를 gradle로 생성해서 만듭니다. 하지만 프로젝트 생성은 gradle의 명령어 만으로도 만들 수 있다는 사실 알고 계셨나요? 오늘은 gradle을 이용해서 java project를 생성해보도록 하겠습니다. 오늘 진행하는 프로젝트에서 제가 사용한 환경은 MAC입니다. windows환경은 다를 수 있음을 알려드립니다. gradle 설치 gradle 명령어를 이용하려면 먼.. 2020. 5. 17.