목록Java (13)
빰_s
WebClient란?웹으로 API를 호출하기 위한 HTTP Client 모델WebClient의 특징싱글 스레드 & 비동기(Non-Blocking)각 요청은 Event Loop 내에 Job로써 등록됨Event Loop는 각 Job을 제공자(Worker)에게 요청한 후 결과를 기다리지 않고 다른 Job를 처리이후 제공자로부터 Callback으로 응답(Response)이 오면 해당 결과를 요청자에게 제공WebClient의 사용 배경같은 Http Client 모듈인 RestTemplate와의 비교RestTemplate : 멀티 스레드 & 동기(Blocking) (※ WebClient : 싱글 스레드 & 비동기)Client가 요청 시 큐에 쌓이고, 가용한 스레드가 있으면 이에 할당되어 요청 처리각 스레드는 동기 ..
개요 1/3 = 0.3333333333333... 이 숫자를 소숫점 2번째 자릿수까지만 출력하고 싶다.(1/3 => 0.33) 어떻게 해야 할까? 방법의 종류 . System.out.printf(); 가장 간단한 방법이지만, 리턴 값으로써 사용할 수가 없다. // a = 1, b = 2, c = 3 System.out.printf(".2f",a/b); // 출력 : 0.33 System.out.printf(".2f",b/c); // 출력 : 0.67 (반올림 처리됨) Math.ceil(), floor(), round() Ceil() : 올림 Floor() : 버림 Round() : 반올림 위 3가지 Math 함수를 활용하여도 소수를 자를 수 있다. 다만, 위 함수는 소수 첫째 자릿수에서 올리는 위 함수만..
요약 단일 책임의 원칙(Single Responsibility Principle) 개방 폐쇄 원칙(Open Close Principle) 리스코프 치환 원칙(Liskov Substitution Principle) 인터페이스 분리의 원칙(Interface Segregation Principle) 의존성 역전의 원칙(Dependency Inversion Principle) 1. 단일 책임의 원칙 (Single Responsibility Principle) - 하나의 클래스는 하나의 목적을 위해 생성됨. - 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는 데 집중되어 있어야 함. ( A라는 캐릭터를 조작하기 위해 만들어진 클래스는 다른 캐릭터를 사용하면 안됨) 2. 개방 폐쇄 원칙 (Open Close..
공통점 : 용도 문자열을 저장하고 관리하는 클래스 차이점 : 불변성 String은 불변 / StringBuilder와 StringBuffer은 가변 ex) String str = “hello“; // String str = new String(“hello“); str = str +”world“; // [hello world] 겉으로 보기엔 hello 값을 가지고 있던 String 클래스의 참조변수 str이 가리키는 곳에 저장된 “hello”에 world 문자열을 더해 “Hello world”로 변한 것이라고 생각 가능 실제론 기존에 “hello”라는 값을 가진 String 클래스의 참조변수 str이 “hello world”라는 값을 가지고 있는 새로운 메모리 영역을 가리키게 됨. (기존 “hello”값을..
JDK 1.5부터 추가된 기능. import 문을 사용하면 클래스의 패키지명을 생략할 수 있는 것과 같이 (ex. import java.lang.Math; => Math.max(a,b) // java.lang 을 생략할 수 있음.) static import를 사용하면 static 멤버를 호출할 때 클래스명을 생략할 수 있음. 아래는 그 예시를 보자. import static java.lang.Integer.*;// Integer 클래스의 모든 static 멤버 import static java.lang.Math.random;// Math.random()만 import. 괄호는 붙이지 않는다. import static java.lang.System.out;// 이렇게 하면 System.out을 out만으로..
AssertJ : Junit 기반 테스트 코드를 작성하는데 사용되는 라이브러리 장점 - 메서드 체이닝을 지원하기 위해 좀 더 깔끔하고 읽기 쉬운 테스트 코드 작성 가능 (Junit에서 기본적으로 제공하는 assertEquals에 비해 가독성이 좋다는 것이 장점) assertEquals(a,b); // a == b ? 같은지 : 다른지 assertThat(b).isEqualTo(a); // a == b ? 같은지 : 다른지 - 개발자가 테스트를 하면서 필요하다고 상상할 수 있는 거의 모든 메서드를 제공 라이브러리 의존성 설정 Java 8 이상 기반 프로젝트는 3.x 버전을, java 7 이하 기반 프로젝트는 2.x 버전을 사용해야함 Gradle - Java 8 이상 testCompile 'org.asser..