[Java & Kotlin] Stream
·
JVM/Java
Stream 은 왜 만들어졌나? Java , Kotlin 은 List, Set, Array 등 다양한 Collection 을 제공한다. Collection API 와 Iterate 방식은 표준화 되었지만 각 클래스는 같은 기능을 하는 메소드가 중복 정의되어 있다. List 를 정렬하는 방법만 해도 쉽게 2가지를 떠올릴 수 있다. List.sort Collection.sort 리스트 정렬 public class JavaStreamTest { @DisplayName("Sort list with two way ") @Test void forLoop() { List nums = Arrays.asList(5, 4, 3, 2, 1); nums.sort(new Comparator() { @Override public..
[Kafka] Error: Failed to change permissions for the directory
·
기타/Kafka
TL;DR; Kafka Streams' local state store (rocksDB) could not operate on windows because of permission issue. Environment Key Value OS Windows Kafka clients version v3.5.1 Kafka streams version v3.5.1 JDK OpenJDK 20.0.2 Kotlin version 1.9.10 Source Code KafkaConfig.kt @Configuration @EnableKafka @EnableKafkaStreams class KafkaConfig { companion object { const val SOURCE_TOPIC: String = "source-top..
[DB] RocksDB
·
기타
OverView In-Memory 임 Disk 임? 둘다 씀. (1) 우선 Memtable (In memory buffer) 에 쓰고 Memtable 이 가득차면 Immutable 상태로 변경시킨 후 (2) Level 0 Sorted Static File (SST) 로 flush (3) (1)(2) 와 별도로 Write Ahead Logs (WAL) 저장 모든 쓰기 연산(Put, Delete, Merge) 을 기록(Log) Disk storage 에 위치하고 이는 데이터 복원을 위해 쓰임. Compaction (SST file L0 -> L1) 은 뭐하는거임? 중복 제거 및 병합 정렬하는 작업. 이미 존재하는 key value 데이터가 오버래핑 되는 것을 막아줌. Reference RocksDB Over..
[Java] SpringBoot 없이 Yaml config 로드하기 (feat.SnakeYaml)
·
JVM/Java
개요 SpringBoot 를 사용하지 않는 프로젝트로 환경 설정 값을 yaml 에 지정하고 싶었다. 따라서 순수 Java code 로 `application.yaml` 을 로드할 필요가 있었다. 방법 SnakeYaml + Map 방식 간단한 yaml 은 주로 아래와 같은 코드 스니펫으로 Map을 사용해서 파싱할 수 있다. @Test public void whenLoadYAML_thenLoadCorrectImplicitTypes() { Yaml yaml = new Yaml(); Map document = yaml.load("3.0: 2018-07-22"); assertNotNull(document); assertEquals(1, document.size()); assertTrue(document.conta..
Kafka 설정 방법 on Windows, Mac
·
기타/Kafka
Cloud + UI -> Conduktor 사용 Localhost (127.0.0.1) 에서 사용 가능하게함. 단일 브로커 + 단일 주키퍼 사용 Windows (1) Kafka Cluster on Cloud Conduktor 라는 제품 사용. Get Started | Conduktor Choose the Conduktor Platform deployment that works for you and your Kafka. Available in Conduktor Cloud and Docker versions. www.conduktor.io (2) WSL 설치 (Windows) Microsoft Store - Ubuntu 설치. (3) Java 설치 How to Install Java on Ubuntu 22...
[k8s] Configuration.yaml
·
기타/Kubernetes
🎯 Goals service yaml 정의해본다. deployment yaml 을 정의해본다. 리소스 배포를 yaml 파일로 해본다. 전체 리소스가 담긴 1개 yaml 을 정의해본다. Selector & Label 사용 방법을 안다. service.yaml 정의 "type 'LoadBalancer' 로 port 80 - targetPort 8080" LB의 port 80 을 Listen 하여 Pod 의 노출된 포트 8080으로 보내주겠다. deployment.yaml 정의 여기서의 template 은 PodTemplate으로 자동 지정되어있다. (kind 가 Deploymenta인 경우/) 3개의 Pod ReplicaSet 을 갖는 deployment 파일을 정의했다. Deployment, Service..