본문 바로가기

java56

[java8] java의 주요 functional interface - Predicate, Operator 안녕하세요. 오늘은 저번 포스팅에 이어서 functional interface를 알아보는 2번째 시간입니다. 오늘 알아볼 Functional Interface는 Predicate, Operate 2가지입니다. Predicate Predicate Interface는 T에대한 조건에 대해서 true / false를 반환하는 Fucntional Interface입니다. Predicate로 사용되며 T는 파라미터입니다. 해당 파라미터에 대해서 true / false를 return 할 수 있도록 작성해주면 됩니다. Predicate interface는 아래와 같습니다. @FunctionalInterface public interface Predicate { /** * Evaluates this predicate .. 2020. 5. 11.
[Junit5] Assertions과 Assumptions - Assumptions편 안녕하세요. 오늘은 JUnit5의 3번째 시간입니다. 이번 포스트에서는 Assertions와 Assumption중 Assumptions에 대해서 좀 더 자세히 알아보는 시간을 가지도록 하겠습니다. Assumptions Assumption 구문은 테스트 메서드가 특정한 조건에 대해서 실행하고자 할 때 사용하는 구문입니다. JUnit5에서는 org.junit.jupiter.api.assumptions 패키지의 내용물로 사용할 수 있습니다. 사전조건 테스트를 위한 사전 조건으로 사용하는 Class는 아래와 같습니다. 해당 Class는 사칙연산을 담당하는 클래스로 add, multiply, divide를 메서드로 가지고 있습니다. private final Calculator calculator = new Cal.. 2020. 5. 7.
[Junit5] Junit4에서 Junit5으로 안녕하세요. Spring Boot 2.2.x는 Junit5를 기본으로 제공하고 있습니다. 메이저 버전이 바뀌게 되었습니다. 과연 Junit4에서 Junit5로 변화하면서 어떤 부분이 변경되었을까요? 오늘은 Junit5를 사용하는 방법과 추가된 점에 대해서 알아보도록 하겠습니다. JUnit5 JUnit5는 차세대 Java Test 프레임워크로 3가지의 서브 패키지로 구성되어 있습니다. JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform : JUnit Platform은 JVM에서 테스트 프레임워크를 시작하기 위한 기초적인 역할을 수행합니다. 또한 테스트 개발을 위한 API를 제공합니다. JUnit Jupiter : JUnit5에서 테.. 2020. 5. 1.
[java] exception 처리하기 - try-catch-with-resources 안녕하세요. 오늘은 java7에서 추가된 exception을 좀 더 쉽게 처리할 수 있는 방법에 대해서 알아보는 시간을 가지도록 하겠습니다. 우리가 일반적으로 파일을 읽고 쓰는데 Stream을 이용합니다. Stream은 단방향으로 데이터를 전송할 수 있는 개념입니다. 일반적으로 FileInputStream Class를 이용하면 파일에 있는 데이터를 읽을 수 있습니다. 이때 InputStream을 연 후 파일을 읽고 마무리 후에는 Stream을 닫는 흐름을 일반적으로 가져가게 됩니다. 이런 흐름에서 exception이 발생할 수 있는 위치는 InputStream을 열때, 파일을 읽을 때, InputStream을 닫을 때 총 3군대입니다. 이럴때 exception 처리를 어떻게 할 수 있을지 다양하게 보도록.. 2020. 4. 26.
[java] exception 처리하기 - throws에 관하여 안녕하세요. 오늘은 이전 시간에 이어 exception에 대해서 좀 더 알아 보는 시간을 가지고자 합니다. 우리가 이전 포스터에서 확인한 바에 따르면 exception은 JVM에서 일어나고 call stack을 따라서 처리된다고 배웠습니다. 즉, Unchecked exception의 경우 메서드 체인에 의해서 호출한 곳에 exception에 해당하는 catch가 있으면해당 해당 catch method가 실행되는 것입니다. 그렇다면 throws는 왜 있는걸까요? 결론부터 말씀드리면 unchecked exception의 경우에는 즉, RuntimeException을 상속 받는 Exception의 경우 throws는 아무런 의미도 가지지 않습니다. throws는 checked exception의 처리 방법중 .. 2020. 4. 22.
[java] exception 처리하기 - 실전편 안녕하세요. 우리는 이전 포스팅에서 JVM에서 예외(exception) 처리가 어떻게 이루어 지는지를 살펴보았습니다. 예외를 처리하는 방법으로 예외복구, 예외처리 회피, 예외 전환이 있다라는 알려드렸습니다. 오늘은 실제 코드로 exception을 어떻게 처리하는지 공유하고자 합니다. 예외복구 예외복구는 예외가 발생하더라도 어플리케이션의 로직은 정상적으로 실행이 되게 하도록 처리한다는 의미입니다. 한 예로 통신의 재시도를 들 수 있습니다. 예외가 발생하면 일정 시간동안 대기를 시킨 후 다시 해당 로직을 시도하는 것입니다. 일정 횟수동안 재시도를 이런식으로 진행하며, 그래도 정상적인 응답이 오지 않는 경우 fail 처리하는 로직을 생각할 수 있습니다. 실제로 쓰이는 예제를 보도록 하겠습니다. 아래 예제는 s.. 2020. 4. 19.
[java] exception 처리하기 - 이론편 코딩을 하다보면 꼼꼼함의 중요성을 간과할 때가 많습니다. 새로운 기능, 새로운 기술은 정말 재미있고 시간가는 줄 모르고 할 때가 많습니다. 하지만 이러한 새로운 것들을 실제로 시스템에 적용하기 위해서는 기본이 탄탄해야 합니다. 해야함을 알면서도 프로그래밍을 하다보면 까먹게 되는 게 있습니다. 재미가 없어서지요. 재미가 없더라도 반드시 해야하는 것이 2가지 있습니다. 바로 validation과 exception 처리입니다. 반드시 이 2개는 코딩을 하면서 습관으로 가지시는걸 추천드립니다. :) 오늘은 exception에 대해서 알아보도록 하겠습니다. exception exception은 로직이 실행되는 중(Runtime)에 원하지 않는 이벤트가 발생하거나 예상하지 않은 이벤트가 일어났을때의 처리를 말합니다.. 2020. 4. 7.
[Spring] Spring의 IoC/DI Container 안녕하세요. 저번 포스팅에서 IoC와 DI의 개념에 대해서 알아보았습니다. IoC 개념을 설명하며 Spring의 IoC는 일반적인 IoC 개념에 DI를 의 개념을 추가한 IoC/DI Container라고 설명을 드렸습니다. 오늘은 구체적으로 일반적인 IoC에 어떤 개념이 추가 된것인지 한번 보도록 하겠습니다. 본편에 들어가기 전에 먼저 Spring에 대한 용어를 정리한 후 Spring Container의 구조에 대해서 알아보도록 하겠습니다. 용어 정리 Spring IoC를 공부하다보면 생소하지만 한번쯤은 흘려 들어본 용어들이 많이 나옵니다. 이러한 용어를 정리하는 시간을 가지도록 하겠습니다. 빈(Bean) 빈 또는 빈 오브젝트는 Spring이 IoC 방식으로 관리하는 오브젝트라는 뜻. 즉, 우리가 일반적.. 2020. 3. 21.
[java] java Enum의 개념과 기본 메서드 안녕하세요. 오늘은 java의 enum에 대해서 알아보도록 하겠습니다. java에서 정보를 나열할 때 enum class를 많이 사용합니다. enum은 java7에서 부터 등장하기 시작했는데요. 그거 아셨나요 ? enum은 Object Class를 상속 받은 class입니다. 우리가 기본적으로 사용하는 enum 이라고 선언하는 것은 사실 enum class를 상속받아 사용하는 것입니다. Enum 기본 enum을 기본적으로 선언하면 아래와 같습니다. public enum CompanyType { KAKAO, Naver, Coupang } 그리고 사용한다면 아래와 같이 사용할 수 있습니다. 아래 enum Type에는 KAKAO, Naver, Coupuang을 set하고 사용할 수 있습니다. public cl.. 2020. 3. 11.
[자료구조] 코드로 알아보는 java의 LinkedList Java에서 List를 구현하는 구현체는 대표적으로 ArrayList, LinkedList, Vector가 있습니다. 저희는 저번 포스팅에서 ArrayList에 대해서 코드를 보며 내부 구조와 실질적인 시간복잡도를 파악해 보았습니다. 오늘은 LinkedList에 대해서 코드를 보며 ArrayList와는 어떻게 다른지 그 구조와 시간복잡도를 파악해보도록 하겠습니다. ArrayList와 LinkedList 우리가 일반적으로 알고 있는 ArrayList의 이미지는 위와 같습니다. String 형태의 "Hello Wo" char 배열에 저장한다고 하면 위와같은 형태가 될 것입니다. index를 가지고 있으며 index에 값을 저장하고 있는 형태입니다. 이런형태를 가짐으로써 RandomAccess가 가능하고 군집.. 2020. 2. 14.
[자료구조] 코드로 알아보는 java의 ArrayList 안녕하세요. 오늘은 우리가 잘 사용하는 ArrayList에 대해 코드를 들여다 보고 내부는 어떻게 구성되어 있는지 확인해보도록 하겠습니다. 그리고 주요한 메서드 들은 어떤 로직으로 구현되어 있는지 알아보도록 하겠습니다. ArrayList ArrayList는 배열을 좀 더 편하게 쓸수있도록 Java에서 제공해주는 Class입니다. 일반 배열과는 다르게 메모리가 가능한한 추가할 수 있고 삭제에 대해서도 해당 index를 비워두기만 하는게 아니라 재정렬해주는 기능을 기본으로 제공해주고 있습니다. interface와 내부 변수 확인 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Seriali.. 2020. 2. 12.
[MSA] Spring Cloud Eureka에 관하여 - 이론편 안녕하세요. 오늘은 Spring Cloud의 구성요소 중 Eureka에 대해서 알아보도록 하겠습니다. Eureka 란 개요 Eureka는 AWS와 같은 Cloud 시스템에서 서비스의 로드 밸런싱과 실패처리 등을 유연하게 가져가 위해 각 서비스들의 IP / Port / InstanceId를 가지고 있는 REST 기반의 미들웨어 서버입니다. Eureka는 마이크로 서비스 기반의 아키텍처의 핵심 원칙 중 하나인 Service Discovery의 역할을 수행합니다. MSA에서는 Service의 IP와 Port가 일정하지 않고 지속적을 변화합니다. 그렇기 때문에 Client에 Service의 정보를 수동으로 입력하는 것은 한계가 분명합니다. Service Discovery란 이런 MSA의 상황에 적합합니다. 아키.. 2020. 2. 5.