[WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 [WebFlux]자주 사용하는 연산자 정리(4) + 목차 마지막으로 연산자를 정리한 게 벌써 거의 세 달 전이다. 회사에 들어와 웹플럭스로 개발을 하며 정리하고 싶은 건 산더미 같았지만 다른 공부할 것이 너무 많고 바쁜 데다가 프로젝트까지 겹쳐 전혀 정리를 하지 못했다. 그래서 오랜만에 돌아온 연산자 정리 시간. 웹플럭스 연산자 사전이라도 있으면 좋겠다. defer() defer 연산자는 Mono와 Flux 둘 모두에서 사용가능한 연산자이다. 이 연산자는 리액티브 프로그래밍에서 지연 평가(Lazy Evaluation)를 수행하기 위한 연..
목차 언젠가 언급했지만, 뜻하지 않게 자바 17과 웹플럭스를 이용한 웹 개발을 하게 되었다. 리액티브 프로그래밍 자체에 흥미가 있어 웹플럭스는 공부도 하고 써보기도 했지만, 갑작스러운 자바 17 사용은 당황이 될 수밖에 없었다. 물론 자바 자체가 강력한 하위호환을 지원해서 당장 힘든 일은 없었지만, 레거시 코드를 구성하신 개발자 분들께 물어봐도 왜 자바 17을 선택했는지 아는 분이 계시지 않아 아쉬웠다. 그렇다고 한참 전에 틀을 잡은 개발자분의 연락처를 물어보기도 그렇고... 해서 처음부터 정리하고 싶었지만 미루고 미뤘던 자바 17의 특징에 대해 가볍게 정리하려고 한다. 추가로 에러메시지를 출력하는 System.err.println()까지. Java 17 기존에 사용하던 자바 11과의 비교보다는 17의 ..
[WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 목차 WebFlux Operators [WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(3), 그리고 글의 순서는 연산자의 중요도나 로직의 흐름과는 아무 관련이 없다. 그저 내가 코드를 읽다가 마주친 순서를 마구잡이로 적어놓은 메모장에 근거할 뿐. 글 제목에 '+'가 붙어있는 이유는 연산자가 아니더라도 처음 봤거나 알아야 할 것 같은 경우라 판단이 들면 이 글에 같이 추가해 버렸기 때문이다. 굳이 연산자와 그 외 클래스를 나누어야 할..
[WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(2) - buffer [WebFlux]자주 사용하는 연산자 정리(4) + 목차 flatMapMany() Mono를 받아 Flux를 반환하는 연산자이다. 하나의 값에서 시작해 여러 개의 값을 리턴한다는 점에서 reduce()와 반대되는 기능을 하는 것처럼 보이기도 한다. 사용 예시는 아래와 같다. public class Example { public static void main(String[] args) { Mono numbers = Mono.just(3); Flux result = numbers.flatMapMany(num -> Flux.just( num, num + 2, num * 2, num * num ) )..
목차 Variable Arguments 가변인자는 JDK 1.5부터 도입된 개념이다. 이름 그대로 개수가 동적으로 변하는 인자를 처리하기 위한 기능이다. 가변인자가 도입되기 전까지는 배열을 사용했다고 하며, 현재도 내부적으로는 배열로 처리되고 배열로 다룰 수 있다고 한다. 사용하는 방법은 매개변수의 타입 뒤에 '...'을 붙여서 표시하며, 이상의 주요 특징을 요약하면 아래와 같다. 개수가 변하는 인자를 메서드의 매개변수로 전달 가능 메서드 내부에서는 배열로 처리되므로 유사하게 다룰 수 있음 필요에 따라 다른 매개변수와 함께 사용하는 것도 가능 나는 이제야 경험해 보았지만 코드의 가독성이 좋아지고 작성이 제법 간결해진다. 얼른 익숙해져서 마음껏 사용해야 하는데... Example 가장 간단한 예는 아래와 ..
[WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(3), 그리고 [WebFlux]자주 사용하는 연산자 정리(4) + 목차 지난 글에선 작은 프로젝트를 마이그레이션 하며 사용한 연산자에 대해 정리했다. [WebFlux]자주 사용하는 연산자 정리(1) [WebFlux]자주 사용하는 연산자 정리(1) 목차 Method vs. Operator 별생각 없이 메서드나 연산자라는 단어를 마구 뒤섞어 쓰다가 의문이 들었다. 같은 뜻의 단어를 두 개나 사용할 필요가 있을까? 하고. 해서 연산자 정리도 할 겸 아주 얕게 gnidinger.tistory.com 회사에 들어와 그보다 훨씬 규모가 있고 잘 짜인 코드를 공부하는 중인데, 처음 보는 데다 모르는 연산자가 마구 쏟아져 나와서..
목차 Strategy Pattern 전략 패턴은 정책 패턴(Policy Pattern)이라 불리기도 하며, 소프트웨어의 실행 중 상황에 맞는 알고리즘을 선택해 실행할 수 있도록 하는 객체 지향 디자인 패턴이다. 예를 들자면 배열을 정렬하는 sort()라는 메서드가 있을 때, 요청한 알고리즘이 어떤 정렬인지에 따라 다른 로직을 실행하도록 소프트웨어를 디자인하는 것이라고 할 수 있다. 위키백과에 따르면 전략 패턴은 대략 아래와 같은 절차에 따라 구성되며, 복수의 알고리즘을 정의 정의한 알고리즘을 캡슐화 해당 알고리즘을 전략에 맞춰 상호 교체 가능하도록 구성 이어서 아래와 같은 세 부분으로 구성된다. 전략 인터페이스(Strategy Interface) 알고리즘을 정의하는 인터페이스. 일반적으로 알고리즘을 수행..
목차 Singleton Pattern 싱글톤 패턴은 자바에서 이용되는 디자인 패턴 중 하나다(스프링 부트가 아니다!). 주로 아래와 같은 상황을 해결하기 위해 사용되며, 공유자원 관리 디비 연결, 로깅, 캐싱과 같은 자원은 시스템 전체에서 한 번만 생성되면 충분하다. 비용이 많이 드는 객체 생성 같은 객체가 빈번하게 생성되는 경우 비용이 많이 든다. 이 경우 싱글톤 패턴을 이용해 하나의 인스턴스를 생성한 뒤에 해당 인스턴스를 재사용함으로써 리소스 낭비를 줄일 수 있다. 전역 변수 사용 제한 전역 변수는 시스템 복잡도를 증가시키고 지역 변수와 충돌할 가능성도 있다. 이를 해결하기 위해 싱글톤 패턴을 이용해 전역변수의 사용을 최소화할 수 있다. 보통 아래와 같은 방식으로 구현하게 된다. 생성자를 privat..
처음 써보는 웹플럭스에 처음 써보는 리액티브 몽고+레디스를 사용해 마이그레이션을 시도할 때 가장 먼저 당황한 부분이 바로 이 부분이다. MVC패턴에선 당연히, 아주 손쉽게 이루어졌던 이 함수형 엔드포인트를 사용하는 웹플럭스에서는 작동하지 않았던 것. 물론 내 경험의 산물이라 100% 확신할 수는 없지만, 여태까지 내가 알기론 함수형 엔드포인트에서 기존의 방식대로 간편하게 유효성 검증을 하는 방법은 없다, 혹은 다른 라이브러리를 불러서 사용해야 한다. 아이 그럼 어쩌라고? 에 대해 헤매면서 얻은 답을 정리한다. Validator 결론부터 말하자면, 웹플럭스에서는 검증이 필요한 클래스(DTO와 같은)마다 개별 검증 클래스를 구현해야 한다. 따라서 CRUD에 따라 검증 로직이 다르고 복잡하다면, 패키지 안에 ..
목차 웹플럭스로 개발을 하는 방법은 크게 두 가지로 나뉜다. 기존의 엔드포인트 패턴 활용 함수형 엔드포인트 사용 물론 두 가지 방법 다 비동기 처리를 구현할 수 있고, 초심자 입장에선 뭐가 더 나은 방식이라고 말할 수 없다. 그래도 이왕 웹플럭스를 사용하는 김에 함수형 엔드포인트를 적용해 보자! 하고 한 달 정도 삽질을 한 뒤에 느낀 점을 정리하기 위해 이 글을 적는다. 결론부터 말하면 일단 적응하고 나면 일반 엔드포인트보다 훨씬 직관적인 코드 작성이 가능하다. Router 함수형 엔드포인트를 사용하려면 라우터 클래스의 작성이 필수적이다. 라우터는 이름 그대로 매핑하는 역할을 하는데, 여기서 매핑이란 URL 패턴과 핸들러메서드의 매핑을 가리킨다. 즉 사용자의 요청이 라우터를 거쳐 해당 엔드포인트의 핸들러..
- Total
- Today
- Yesterday
- 지지
- spring
- 스프링
- 야경
- 유럽
- BOJ
- 면접 준비
- 중남미
- 세계여행
- 알고리즘
- Backjoon
- 세계일주
- 리스트
- 칼이사
- 유럽여행
- 백준
- Algorithm
- 스트림
- 자바
- 기술면접
- RX100M5
- 남미
- java
- 동적계획법
- 맛집
- 여행
- 세모
- Python
- a6000
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |