일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- producer
- Java8
- 카프카
- Clean Code
- effective java
- Factory Method Pattern
- Stream
- orelse
- Spring Security
- git cli
- Functional Programming
- 인텔리제이 단축키
- 함수형 프로그래밍
- SpringBoot
- consumer
- orElseGet
- TDD
- 디자인패턴
- 싱글톤
- junit5
- Java
- mokito
- optional
- JWT
- signWith
- thread
- Authentication
- kafka
- topic
- Today
- Total
목록분류 전체보기 (29)
goodbye
1. 개요클라이언트가 클래스의 인스턴스를 얻는 수단은 아래와 같이 두가지로 나눌수 있다1) public 생성자public Utils() { }2) 정적 팩터리 메서드publuc static Utils createJob() { return instance(); } public 생성자에 비해서 정적 팩터리 메서드는 다양한 장점을 가지고 있는데 장점을 살펴보면 아래와 같다. 2. 정적 팩터리 메서드 장점장점1. 이름을 가질수 있다(가독성) 아래와 같이 Order 클래스가 있다고 가정할때 boolean urgent 필드를 추가하려는 경우 매개변수의 이름이 다르더라도 같은 타입으로는 생성자를 생성 할 수 없다. 즉 동일한 시그니처의 생성자를 두개 가질수 없기 때문이다.public class Order { priv..
프로듀서의 기본 흐름카프카 프류듀서 어플리케이션은 카프카에 필요한 데이터를 선언하고 브로커의 특정 토픽의 파티션에 전송합니다. 프로듀서는 데이터를 전송할 때 리더 파티션을 가지고 있는 카프카 브로커와 직접 통신합니다. 프로듀서는 카프카 브로커로 데이터를 전송할 때 내부적으로 파티셔너 배치 생성 단계를 거칩니다. 프로듀서 내부 구조는 아래와 같은 구조를 가지고 있습니다. ProducerRecord 는 프로듀서에서 생성하는 레코들 오프셋을 포함하지 않습니다. send() 메서드를 통해 레코드를 전송 요청하게 되면 Partitioner 가 어느 파티션으로 전송할지 지정합니다 (기본값으로 DefaultParitioner 설정) 그리고 Accumulator 가 높은 데이터 처리량을 위해 전송 할 데이터를 배치로 ..
폴더 구조카프카 공식 사이트 에서 Binary 파일을 다운로드하고 압축해제하면 아래와 같은 구조를 확인 할수 있습니다.zookeeper 와 kafka binary 파일이 모두 포함되어 있으며 모두 JVM 환경에서 실행되기때문에 사전에 Java 8 이상이 설치되어 있어야 합니다. bin 디렉토리는 CLI Script 파일들이 모여있는곳으로 주키퍼, 카프카를 시작하거나 카프카 토픽을 생성하는등의 스크립트 명령어를 실행할 수 있는 파일들이 모여 있습니다. config 디렉토리는 환경설정 파일들이 모여 있는곳으로 local 에서 카프카를 테스트하려는 경우 아래와 같이 설정 변경이 필요합니다 server.properties custom 변경 (kakka broker 실행 할 때 필요한 설정 파일, 네트워크설정)#..

1. 개요아래에서 인용한 글에 따르면 Optional은 null을 반환하면 오류가 발생활 가능성이 매우 높은 경우에 결과 없음(반환 값이 없음)을 나타나는 명확한 방법을 제공하기 위한 의도로 설계되었지만 실제로는 이러한 의도와 다르게 사용되는것에 대해서 우려하고 있으며, 그로 인해 많은 부작용이 발생 할 수 있기 때문에 아래의 내용을 참고하셔서 Optional 을 올바르게 사용하길 바랍니다Java Language Architect Brian Goetz 는 스택오버플로우 에서 Optional 을 만든 의도에 대해서 다음과 같이 설명하고 있습니다. Of course, people will do what they want. But we did have a clear intention when adding th..

1. 개요Optional 사용하면 코드가 Null-Safe 해지고, 메서드 체이닝을 통해 가독성이 좋아지면서 어플리케이션이 안정적이 될 수 있는 장점이 있습니다. 하지만 이러한 장점은 Optional 을 설계한 의도에 맞게 올바르게 사용했을때 해당하는 내용으로 Optional 을 남용하는 경우나 잘못 사용하는 코드는 아래와 같은 부작용이 발생 할 수 있으니 주의해서 사용해야 합니다 2. Optional 의 부작용 2.1 overhead 가능성(시간적, 공간적 비용 증가)Optional 안의 객체를 얻기 위해서는 Optional 객체를 통해 접근해야 하므로 접근비용이 증가합니다. 그리고 성능테스트 결과 nullables 를 사용하는 접근 방식보다 2~3배 느리다고 합니다 그리고 Optional은 객체를 감..
1. Optional 개요Optional 은 결과가 없음을 나타나는 방법을 제공하는 라이브러리로 null 일수도 있는 객체를 감싸는 일종의 Wrapper 클래스를 의미합니다. Java8 에서 최초로 도입되었으며 null 때문에 발생하는 문제 대표적으로 NullPointerException 를 방지할 수 있도록 클래스를 통해 각종 메서드들을 제공해줍니다 💡Optional is intended to provide a limited mechanism for library method return types where there needed to be a clear way to represent “no result," and using null for such was overwhelmingly likely to..