Java

Java

[이펙티브 자바] 아이템 64, 65, 66, 67, 6

이 포스팅은 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 64. 객체는 인터페이스를 사용해 참조하라아이템 51에서 매개변수 타입으로 클래스가 아니라 인터페이스를 사용하라는 원칙이 있었다. 이부분을 더 확장하여 적합한 인터페이스가 있는 경우 인터페이스를 통해 반환값, 변수, 필드를 선언하자. 실제 구현체를 사용하는 경우는 생성자의 경우이고 나머지는 인터페이스 메소드로 대체하는 것이다.// 좋은 예. 인터페이스를 타입으로 사용했다.Set sonSet = new LinkedHashSet();// 나쁜 예. 클래스를 타입으로 사용했다.LinkedHashSet sonSet = new LinkedHashSet();사실 대부분 인터페이스로 선언하는 규칙은 관례처럼 사용되고 있다. 두..

Java/스프링 부트

[JMeter] JMeter를 통해 테스트

JMeterhttps://jmeter.apache.org/ Apache JMeter - Apache JMeter™Apache JMeter™ The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to othjmeter.apache.orgJMeter는 자바기반의 테스트, 성능 테스트 오픈소스이다. Web-application 용도로 설계되었지만, 현재 다..

Java/스프링 부트

[Webflux] Publisher, Subscriber

이 포스팅은 공부목적으로 작성된 포스팅 입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 0. 개요webflux, reactor를 처음 사용하게 되면 Publisher(Mono, Flux)와 Subscriber에 대해 학습하게 된다. 아주 쉽게(?) 이야기하면 Publisher가 데이터를 발행하면 Subscriber가 데이터를 구독하게 되는데, 이러한 이해만으로 webflux를 사용하는데에는 문제가 있다.실제로 글쓴이는 아무런 이해도 없이 webflux를 구현하면서 다음과 같은 트러블 슈팅을 경험하게 된다.subscribe하지 않으면 실행조차 되지 않는 건가?그러면 모든 로직에 대해서 subscribe를 하면 되나?그런데 subcribe 하지 않아도 되는 경우도 있었는데?Publisher와 Subscr..

Java/스프링 부트

[Webflux] Mono, Flux.Block()

이 포스팅은 공부목적으로 작성된 포스팅 입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 0. 개요https://github.com/schananas/practical-reactor GitHub - schananas/practical-reactor: Practical Project Reactor and reactive programing workshopPractical Project Reactor and reactive programing workshop - schananas/practical-reactorgithub.com 위 포스팅은 해당 repo의 c1_introduction를 실습한 내용이다. 각각 chapter를 학습하면서 webflux에 사용되는 reactor를 정리하고자 한다. 학습하면서 ..

Java

[이펙티브 자바] 아이템 54, 55

이 포스팅은 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 54 null이 아닌, 빈 컬렉션이나 배열을 반환하라다음 코드를 보자private final List ObjectInStock = new ArrayList(); public List getObjects() { return ObjectInStock.isEmpty() ? null : new ArrayList(ObjectInStock);}Object들을 List Collection으로 가지고 있는 ObjectInStock에 대해 getObjects() 메소드는 Objects가 존재한다면 방어적 복사를 통해 ObjectInStock을 반환하고 Objects가 존재하지 않는다면 ..

Java

List.toArray()

이 포스팅은 공부 목적으로 작성된 포스팅입니다 왜곡된 내용이 포함되어 있을 수 있습니다.이번 글은 특히 심합니다 자바공부 도중 이해되지 않는 메소드가 있어서 포스팅을 작성한다.https://bluesparrow.tistory.com/60 [이펙티브 자바] 아이템 54, 55이 포스팅은 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있을 수 있습니다. 54 null이 아닌, 빈 컬렉션이나 배열을 반환하라다음 코드를 보자private final List ObjectInStock = new ArrayLibluesparrow.tistory.com 다음 코드를 보자public Cheese[] getCheeses(){ return cheesesInStock.toArray(new Cheese[0])..

Java

[이펙티브 자바] 아이템 47, 48, 49

이 포스팅은 공부 목적으로 작성된 포스팅입니다. 왜곡된 내용이 포함되어 있을 수 있습니다.   47. 반환 타입으로는 스트림보다 컬렉션이 낫다.원소의 시퀀스를 반환하기 위해 자바7까지는 Collection, Set, List 와 같은 컬렉션 인터페이스 이거나 부모인 Iterable 또는 배열을 사용했다. 일반적인 관례는 Collection을 사용하고 구현할 수 없는 경우에 Iterable을 사용합니다(래퍼클래스를 커스텀 하는경우) 만약에 성능을 높여야한다면 배열을 사용하기도 한다.(스트림은 스트림 생성비용과 상대적으로 부족한 최적화 상태로 아직 배열보다 낮은 성능을 가진다) 자바 8에서 스트림을 도입하면서 반환타입에 관한 논쟁이 되어 버렸다.스트림을 반복을 지원하지 않는다.(재사용 할 수 없다) 따라서 ..

Java/스프링 부트

[Webflux] Reactor 시작하기

공부 목적으로 작성된 글입니다 왜곡된 내용이 포함되어 있을 수 있습니다. Reactor reactor는 Spring Framework 주도하에 개발된 리액티브 스트림즈의 구현체로 Spring WebFlux 기발의 리액티브 애플리케이션을 제작하기 위한 핵심 역활을 담당한다. https://projectreactor.io/ Reactor는 다음과 같은 특징을 가지고 있다. Reactice Streams: 리액티브 스트림즈을 구현한 라이브러리이다. Non-Blocking: 비동기 방식을 지원한다. 가장 큰 특징중 하나이다. (공부 목적이기도 하다) Java's functional API: Publister와 Subscriber의 상호작을 JAVA의 함수형 프로그래밍을 통해 이루어진다. Flux[$N$]: Re..

Java

[이펙티브 자바] 아이템 39, 40, 41

이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 39 명명 패턴보다 에너테이션을 사용해라 명명 패턴: 전통적으로 도구, 프레임워크에서 특별히 다뤄야하는 경우 특벙 이름으로 이를 구별하는 것 getter, setter과 같은 것들이 명명 패턴이라고 할 수 있겠다. 이러한 명명 태펀을 사용하는경우 몇가지 단점이 존재하는데, 오타가 나면 안된다. 올바른 프로그램 요소에만 사용되리라 보증 할 방법이 없다.(해당 이름을 쓴다고 무조건 사용되는 것이 아니기 때문에, 클래스에 test를 붙인다고 해서 자동으로 테스트가 되는 것이 아니다.) 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없다.(명명 패턴을 이름으로 표현하는 것이기 떄문에) 이러한 명명 패턴이 문제가 되..

Java/스프링 부트

[Spring boot] @ConfigurationProperties 에서 "Failed to bind properties"

이 글은 공부목적으로 작성된 글 입니다. 왜곡된 정보가 포함되어 있을 수 있습니다 문제상황 yml에 작성된 환경변수를 사용하기 위한 properties 클래스 생성중 해당 값을 바인딩할 수 없다는 에러가 발생하였다. 기존에 문제가 없는 것을 확인하고 푸시까지한 코드여서 상당히 당황스러웠다,.. @ConfigurationProperties(prefix = "google") @Getter @RequiredArgsConstructor public class GoogleOAuthProperties { private final String clientId; private final String clientSecret; } Properties클래스로 OAuth2 Client 정보를 가지고 있다. Client 정보는..

bluesparrow
'Java' 카테고리의 글 목록