분류 전체보기
-
카프카 producer - 확실한 도착 보장을 위한 옵션 설정Web, Server, Cloud 2023. 7. 22. 08:09
확실한 도착 보장을 위한 옵션 delivery.timeout.ms ≥ request.timeout.ms + linger.ms Kafka에서 delivery.timeout.ms는 프로듀서가 메시지를 브로커에 성공적으로 전달하는 데까지 기다리는 최대 시간을 설정하는 속성이다. 반면에 request.timeout.ms는 프로듀서가 브로커로부터 응답을 기다리는 최대 시간을 설정하는 속성이다. linger.ms는 프로듀서가 메시지를 배치로 모아서 보내는 데 사용되는 시간이다. 메세지가 전달될 때 까지 기다리는 최대 시간 (delivery.timeout.ms) 을 응답을 기다리는 최대 시간 (request.timeout.ms) 과 새로운 메세지를 보내기 위해 배치로 메세지를 모으는 최대 시간 (linger.ms) ..
-
spring cloud function 에 대해서Java, Kotlin, Spring 2023. 5. 16. 17:21
https://cloud.spring.io/spring-cloud-function/reference/html/ Spring Cloud Function 은 AWS, Azure, GCP 와 같은 클라우드 서비스에서 제공하는 서버리스 Function 기능을 쉽게 활용할 수 있도록 지원하기 위하여 추가된 모듈이다. 놀라운 점은 1. Spring container 에 등록된 bean 을 바로 endpoint 로 노출시킨다는 점과 2. 모든 bean 이 아닌 Functional Interface 를 구현한 bean 만 그 대상이 된다는 점이었다. CoC(Convention Over Configuration) 를 활용하여 사용하기에 간단하고, 기능 집약적인 코드를 손쉽게 구현하도록 하여 생산성을 높이는 관행은 소프트..
-
GraalVM 메모리 관리 간단 정리Java, Kotlin, Spring 2023. 4. 7. 16:03
Heap 메모리 GraalVM에서는 전체 메모리 중 일부를 Heap 메모리로 사용한다. Heap 메모리는 객체 인스턴스를 저장하기 위한 공간이고, Young Generation과 Old Generation이라는 두 개의 영역이 있다. Young Generation은 새로운 객체가 생성되는 공간이며, Old Generation은 Young Generation에서 살아남은 객체가 이동하는 공간이다. Heap 메모리는 가비지 컬렉션이 발생하는 공간이기도 하다. Native 메모리 GraalVM에서는 Native 메모리를 사용한다. Native 메모리는 JVM 바깥에서 할당되는 메모리 공간으로, C/C++ 등의 네이티브 코드에서 사용된다. Code Cache GraalVM에서는 Code Cache라는 공간을 사..
-
Spring 6, Springboot 3.0 새로운 기능Java, Kotlin, Spring 2023. 4. 7. 14:36
Spring 6에서 새롭게 도입된 기능 1.1. Reactive Database Access Spring 6에서는 새로운 Reactive Database Access 기능이 도입되었다. 이를 이용하면 반응형 웹 어플리케이션을 개발할 때 Reactive Programming의 이점을 최대한 활용할 수 있다. Reactive Database Access는 Reactive Streams를 기반으로 하며, R2DBC, MongoDB Reactive Driver, Cassandra Reactive Driver 등의 Reactive Database Driver를 지원한다. 1.2. WebFlux Test Client Spring 6에서는 WebFlux Test Client가 도입되었다. 이를 이용하면 WebFlux..
-
Spring 6 Http InterfaceJava, Kotlin, Spring 2023. 4. 7. 14:12
Spring 6에서 도입된 Http Interface는 Java 인터페이스를 사용하여 HTTP 서비스를 정의하고 HTTP 요청을 위한 어노테이션된 메서드를 사용하는 기능이다. https://docs.spring.io/spring-framework/docs/6.0.7/reference/html/integration.html#rest-http-interface 공식문서에 소개된 예제를 바탕으로 아래 글을 작성하였다. 이 기능을 사용하면 해당 인터페이스를 구현하는 프록시를 생성하여 요청을 수행할 수 있다. 이는 HTTP 원격 액세스를 간편하게 할 수 있으며 종종 기본 HTTP 클라이언트를 사용하는 세부 정보를 감싸는 퍼사드(facade)가 필요한 경우에도 도움이 된다. 아래 예제코드에서는 Github API에..
-
거품 정렬 (Bubble Sort)Algorithms/정렬 2022. 8. 23. 09:41
정의 거품 정렬은 1번째와 2번째, 2번째와 3번째, 3번째와 4번째, ... 와 같이 인접한 두 원소를 비교하여 정렬한다. 인접한 두 원소끼리 반복적으로 비교하는 모습이 마치 '거품'과 같다고 하여 거품 정렬이라고 이름이 붙여졌다. 1회전을 수행하고 나면 가장 큰 자료가 맨 뒤로 이동하므로, 2회전에서는 맨 끝에 있는 자료는 정렬에서 제외할 수 있다. 마찬가지로 2회전을 수행하고 나면 끝에서 두번째 자료까지는 정렬에서 제외된다. 설명 [5, 4, 3, 2, 1] 위 배열을 오름차순 정렬해보자. 1번째와 2번째를 비교한 후, 2번째 원소가 더 작을 경우 1번째 원소와 교체해 준다. [4, 5, 3, 2, 1] 이번에는 2번째와 3번째를 비교하여 교체해주자. [4, 3, 5, 2, 1] 같은 방식으로 마지..
-
삽입 정렬 (Insertion Sort)Algorithms/정렬 2022. 8. 22. 09:20
정의 2번째 원소부터 시작해서 그 앞의 원소들과 비교하여 삽입할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 값을 삽입하는 정렬 알고리즘이다. 선택 정렬 이 원소가 들어갈 자리를 정해두고 해당 자리에 들어올 원소를 찾는 정렬인 것과는 반대로, 삽입 정렬은 원소가 들어갈 자리를 정해두지 않고, 값을 먼저 결정한 다음 해당 값이 들어갈 자리를 앞에서 부터 찾는 알고리즘이다. 즉, 삽입 정렬에서 '삽입'은 값을 특정 자리에 삽입한다는 의미이고, 값이 들어갈 자리를 찾는 알고리즘이라고 생각하면 된다. 설명 [5, 4, 3, 2, 1] 위 배열을 오름차순 정렬해보자. 2번째 원소인 4부터 시작하여 앞 원소들과 대소 비교를 진행한다. 5는 4보다 큰 값이므로 2번째 자리의 원소를 5로 바꿔준다. [5, 5..
-
선택 정렬 (Selection Sort)Algorithms/정렬 2022. 8. 21. 16:14
정의 자리를 정해두고 해당 자리에 들어올 값을 선택하는 알고리즘이다. 선택 정렬의 '선택'은 들어올 값을 선택하는 것이라고 생각하자. 설명 [5, 4, 3, 2, 1] 위 배열을 오름차순 정렬해보자. 자리를 순회하며 해당 자리에 올 값을 찾아 넣는다. 값을 찾는 방법은 해당 자리에 위치해있던 값과 나머지 모든 값을 비교한다. 1. 첫번째 자리에 올 값 선택 오름차순 정렬이니, 첫번째 자리에는 1이 와야한다. 5를 제외한 나머지 모든 수 [4, 3, 2, 1] 을 순회하여 가장 작은 값인 1을 찾아 5와 바꾼다. [1, 4, 3, 2, 5] 2. 두번째 자리에 올 값 선택 두번째 자리에는 두번째로 큰 값인 2가 와야한다. 1과 4를 제외한 나머지 모든 수 [3, 2, 5] 을 순회하여 가장 작은 값이 2를..