[개발일지] 230721 Redis Sorted Set(ZSET)
·
성장이야기/TIL
Redis Sorted Set Redis의 Sorted Set(ZSET) 자료구조에 대해 알아보자. Sorted Set은 저장된 데이터의 정렬된 순서를 가지는 집합 데이터 구조이다. Set 구조이기 때문에 각 멤버(member)에 대해 고유한 식별자(key)와 함께 점수(score)를 지정하여 데이터를 저장한다. 아래 그림을 보면 구조를 파악하기 쉽다. key안에 고유한 member가 존재하고 각 member에 대한 점수가 있다. 만일 동일한 점수가 존재할 경우 member의 사전순으로 정렬을 한다. Sorted Set 특징 정렬된 순서: Sorted Set의 멤버는 각 멤버의 점수를 기준으로 오름차순에 따라 정렬되어 저장된다 고유한 멤버: Sorted Set은 각 멤버를 식별자로 구분할 수 있어 중복되..
[개발일지] 230706 Java BiFunction 인터페이스
·
성장이야기/TIL
새로운 메서드를 추가하는데 기존에 존재하는 코드와 중복되는 부분이 많아 코드를 재사용하기 위해 BiFunction이라는 것을 사용할 수 있다는 것을 알게 되었다. 그래서 오늘은 BiFunction에 대해 알아보려고 한다. BiFunction BiFunction은 Java 8에서 도입된 함수형 인터페이스 중 하나로, 두 개의 입력을 받아 결과를 반환하는 함수를 모델링합니다. BiFunction 인터페이스 인터페이스에서 T와 U는 함수의 입력 타입이고, R은 반환 타입이다. BiFunction을 사용하는 간단한 예제 코드를 살펴보자. BiFunction biFunction = (x, y) -> x + y; String biFunctionResult = biFunction.apply("Hello", " Wor..
[개발일지] 230704 no main manifest attribute error (With Manifest, jar)
·
성장이야기/TIL
현재 Spring boot 파일을 docker 환경에서 독립적으로 실행해야 하는 상황인데 no main manifest attribute error가 발생했다. main mainfest 속성이 없다는데 manifest가 뭔지 알아보자. JAR (Java Archive) MANIFEST.MF 파일을 알아보기 전에 jar파일부터 간단하게 알아보자. jar파일은 여러 개의 Java 클래스 파일, 메타데이터 및 리소스를 하나의 파일로 모아서 사용되는 패키지 파일 포맷이다. 쉽게 생각하면 Java 프로젝트를 압축한 파일이라고 생각하면된다. 이 jar파일 안에 존재하는 MANIFEST.MF 파일을 이용해 독립적으로 실행될 수 있는 애플리케이션으로 사용될 수 있는데 이 MANIFEST.MF에 대해 알아보자 Manif..
[개발일지] 230630 Spring WebClient (Mono)
·
성장이야기/TIL
지난 포스팅에 이어 Spring WebClient에 대해 정리해 보자. Spring WebClient WebClient는 Spring 5에서 도입된 클라이언트 측에서 HTTP 요청 작업을 처리할 때 사용되는 비동기, Non-Blocking 방식의 웹 클라이언트이다. Spring에서 제공하는 기존의 HTTP 클라이언트인 RestTemplate의 리액티브 버전으로 생각할 수 있다. RestTemplate은 Blocking I/O를 기반이기 때문에 하나의 요청을 처리하는 동안에는 해당 스레드는 다른 작업을 처리할 수 없다는 특징이 있다. 반면, WebClient는 비동기적이고 Non-Blocking 기반이기 때문에 HTTP 요청을 보내고 응답을 비동기적으로 처리하는 것이 가능하다. 하나의 요청을 처리하는 동안..
[개발일지] 230629 Spring WebFlux란? (with. Reactive programming)
·
성장이야기/TIL
오늘은 기존에 작성되어 있던 코드에서 별도의 프로젝트 모듈을 만들어서 분리하는 작업을 했다. 프로젝트 세팅하고 코드만 옮기면(ctrl c + ctrl v만 하면 되는 줄..) 되는 간단한 문제인 줄 알았는데 생각보다 변경되어야 할 점이 많아 시간을 많이 잡아먹었다.. 우선 기존 프로젝트는 Quarkus라는 프레임워크를 이용해 AppSync를 통해 실시간 데이터를 전송하고 있던 프로젝트였는데 분리해서 만들어야하는 프로젝트는 Quarkus 프레임워크가 아닌 Spring 프레임워크를 이용해서 새로운 프로젝트를 세팅해야 했다. Spring 프로젝트를 만들어서 코드를 옮기는데 Quarkus에만 존재하는 어노테이션들이나 기능들이 있어서 Spring으로 마이그레이션하는데 찾느라 시간을 많이 잡아먹었던 것이었다. 그중..
[개발일지] 230628 AWS DynamoDB Partition
·
성장이야기/TIL
Partition DynamoDB는 테이블을 생성할 때 partition key와 선택적으로 sort key를 지정할 수 있다. DynamoDB는 방금 생성해준 partition key를 기반으로 자동으로 partition(DynamoDB 내부의 물리적 저장소)이라는 물리적 저장 공간을 생성하는데 하나의 partition key는 하나의 partition에만 할당할 수 있다. 하지만 partition에 데이터가 많아질수록 DynamoDB는 partition을 자동으로 분할하여 더 많은 저장 공간을 제공하고 처리량을 늘린다. DynamoDB는 같은 partition key를 가진 item들을 같은 partition에 저장되도록 설계되어 있기 때문에 같은 partition key를 가진 item을 다른 pa..