kotlin
-
Spring Boot 애플리케이션 종료 시 안전하게 파일 백업 처리하기Tech/SpringBoot 2025. 6. 8. 21:55
Spring Boot 애플리케이션을 개발할 때, 서비스 종료 시 파일 백업이나 리소스 정리 같은 작업이 필요한 경우가 많습니다. 이 글에서는 애플리케이션 종료 시 안전하게 파일을 백업하는 방법을 두 가지 방식으로 소개합니다.@PreDestroy를 이용한 Spring Bean 종료 훅JVM 레벨에서 작동하는 Shutdown Hook✅ 환경 설정 (Gradle)// build.gradle.ktsplugins { id("org.springframework.boot") version "3.2.5" id("io.spring.dependency-management") version "1.1.4" kotlin("jvm") version "1.9.23" kotlin("plugin.spring") ..
-
MongoDB 파일 저장소로 사용하기Tech/SpringBoot 2024. 11. 18. 21:34
MongoDB는 비정형 데이터를 관리하는 데 강점을 가진 NoSQL 데이터베이스로, 파일과 같은 대규모 바이너리 데이터를 손쉽게 저장하고 관리할 수 있는 GridFS 기능을 제공합니다. 이 글에서는 Spring Boot와 Kotlin을 이용하여 파일을 MongoDB에 저장하고 관리하는 방법을 소개합니다. 또한 파일을 MongoDB에 저장하는 것의 장단점과 유의할 점에 대해서도 다룹니다.1. 프로젝트 설정Spring Boot와 Kotlin을 사용하여 MongoDB와 연동하기 위해서는 다음과 같은 의존성을 추가해야 합니다.Gradle 설정 (build.gradle.kts):dependencies { implementation("org.springframework.boot:spring-boot-start..
-
-
문자열 압축Tech/Algorithm 2023. 10. 29. 12:55
fun compressString(s: String): String { if (s.isEmpty()) return "" val compressed = StringBuilder() var count = 1 for (i in 1 until s.length) { if (s[i] == s[i - 1]) { count++ } else { compressed.append(s[i - 1]).append(count) count = 1 } } compressed.append(s.last()).append(count) return compressed.toString() } fun main() { println(compressString("aaabbbbccdddda")) // "a3b4c2d4a1" }
-
가장 긴 공통 접두사 찾기Tech/Algorithm 2023. 10. 29. 12:54
fun longestCommonPrefix(strs: List): String { if (strs.isEmpty()) return "" val prefix = StringBuilder() strs.reduce { acc, s -> acc.commonPrefixWith(s) }.forEach { prefix.append(it) } return prefix.toString() } fun main() { println(longestCommonPrefix(listOf("flower", "flow", "flight"))) // "fl" }
-
스프링 클라우드 스트림과 카프카를 활용한 마이크로서비스 이벤트 처리Tech/SpringBoot 2023. 10. 22. 21:34
마이크로서비스 아키텍처에서 이벤트 기반 통신은 서비스 간의 느슨한 결합을 지원하며, 확장성과 유연성을 향상시킵니다. 이 포스팅에서는 스프링 클라우드 스트림(Spring Cloud Stream)과 Apache Kafka를 사용하여 마이크로서비스 간의 이벤트 기반 통신을 구현하는 방법을 소개합니다. 스프링 클라우드 스트림이란? 스프링 클라우드 스트림은 메시지 기반 마이크로서비스를 구축하기 위한 프레임워크입니다. 개발자가 특정 메시지 브로커의 API에 직접 의존하지 않고, 메시지 기반의 커뮤니케이션을 손쉽게 구현할 수 있게 해줍니다. 스프링 클라우드 스트림은 메시지 브로커를 추상화하는 바인더(binder)라는 개념을 도입하여, Kafka, RabbitMQ와 같은 다양한 메시지 브로커를 동일한 프로그래밍 모델로..
-
두 개의 스택을 사용하여 큐 구현하기Tech/Algorithm 2023. 10. 15. 15:16
스택과 큐의 기본 개념 스택 (Stack) 스택은 데이터를 후입선출(LIFO: Last-In-First-Out) 방식으로 저장하는 자료 구조입니다. 즉, 가장 나중에 들어간 데이터가 가장 먼저 나오게 됩니다. 큐 (Queue) 반면에 큐는 선입선출(FIFO: First-In-First-Out) 방식으로 데이터를 저장합니다. 처음 들어간 데이터가 가장 먼저 나오게 되죠. 스택 두 개로 큐를 만들기 스택 두 개를 사용하여 큐의 동작을 구현할 수 있습니다. 기본 알고리즘은 다음과 같습니다: Enqueue (데이터 추가): 첫 번째 스택을 사용하여 데이터를 추가합니다. Dequeue (데이터 제거): 만약 두 번째 스택이 비어 있다면, 첫 번째 스택의 모든 요소를 두 번째 스택으로 옮긴 후, 두 번째 스택에서 ..