본문 바로가기

전체 글

Etcd docker 설치 두개 노드 설치용 컴포즈 파일 version: '3.4' services: etcd0: image: quay.io/coreos/etcd:v3.5.0 ports: - "23790:2379" - "23800:2380" environment: ETCD_NAME: etcd0 ETCD_INITIAL_ADVERTISE_PEER_URLS: http://etcd0:2380 ETCD_LISTEN_PEER_URLS: http://0.0.0.0:2380 ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379 ETCD_ADVERTISE_CLIENT_URLS: http://etcd0:2379 ETCD_INITIAL_CLUSTER: etcd0=http://etcd0:2380,etcd1=http://etc.. 더보기
Etcd docker 설치 두개 노드 설치용 컴포즈 파일 version: '3.4' services: etcd0: image: quay.io/coreos/etcd:v3.5.0 ports: - "23790:2379" - "23800:2380" environment: ETCD_NAME: etcd0 ETCD_INITIAL_ADVERTISE_PEER_URLS: http://etcd0:2380 ETCD_LISTEN_PEER_URLS: http://0.0.0.0:2380 ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379 ETCD_ADVERTISE_CLIENT_URLS: http://etcd0:2379 ETCD_INITIAL_CLUSTER: etcd0=http://etcd0:2380,etcd1=http://etc.. 더보기
etcd란 무엇인가? 안녕하세요! 오늘은 분산 시스템에서 중요한 역할을 하는 etcd에 대해 이야기하려 합니다. etcd는 분산 키-값 스토어로, 특히 설정 데이터의 안정적인 저장과 관리에 큰 장점을 보입니다. 1. etcd의 핵심 특징 고가용성과 분산성: etcd는 멀티노드 클러스터에서 실행됩니다. 이를 통해 네트워크 문제나 노드 장애 같은 시나리오에서도 데이터의 가용성을 보장합니다. 강력한 일관성: etcd는 Raft 합의 알고리즘을 사용하여 데이터의 일관성을 보장합니다. 이는 데이터의 동기화와 동시에 가용성을 유지하는 데 필수적입니다. 변경 사항 감지: 특정 키의 변경을 실시간으로 감지할 수 있는 Watch 기능을 제공합니다. 2. 주요 사용 사례 구성 관리: 여러 서버나 서비스의 구성을 중앙에서 효율적으로 관리하고 분.. 더보기
스프링 부트와 코틀린으로 구현하는 온라인 쇼핑몰 결제 서비스 API 오늘은 스프링 부트와 코틀린을 활용하여 온라인 쇼핑몰의 다양한 결제 수단을 지원하는 API를 개발해볼 것입니다. 특히, 팩토리 패턴을 이용하여 각 결제 수단에 대응되는 서비스를 효과적으로 구현하는 방법에 대해서 알아보겠습니다. 1. 결제 수단 및 2차 결제 수단 Enum 타입 정의 먼저, 결제 수단 및 2차 결제 수단을 Enum 타입으로 정의합니다. enum class CashPaymentType { CREDIT_CARD, BANK_TRANSFER } enum class SecondaryPaymentType { POINT, COUPON } 📌 여기서, CashPaymentType은 현금 결제 수단을, SecondaryPaymentType은 포인트나 쿠폰과 같은 2차 결제 수단을 나타냅니다. 2. 결제 서.. 더보기
Kotlin으로 동일한 숫자가 연속적으로 포함되어 있는지 확인하기 fun containsConsecutiveNumbers(target: String, count: Int): Boolean { for (i in 0 until target.length - count + 1) { val substring = target.substring(i, i + count) if (substring.toSet().size == 1) { return true } } return false } 안녕하세요! 오늘은 Kotlin을 활용하여 숫자만 포함된 문자열에서 특정 숫자가 연속적으로 주어진 카운트 수만큼 포함되어 있는지 확인하는 방법에 대해 알아보겠습니다. 1. 함수 설명: 우리가 작성한 containsConsecutiveNumbers 함수는 두 개의 파라미터를 받습니다: target: 검.. 더보기
URL의 파라미터값을 Kotlin에서 Map으로 변환하는 방법 fun decodeUrlParams(url: String): Map { val result = mutableMapOf() val urlParts = url.split("?") if (urlParts.size > 1) { val query = urlParts[1] val pairs = query.split("&") for (pair in pairs) { val keyValue = pair.split("=") if (keyValue.size > 1) { result[keyValue[0]] = keyValue[1] } } } return result } 1. 함수 설명: URL은 주로 ? 뒤에 key-value 쌍의 파라미터들을 가집니다. 예를 들어, http://example.com/page?name=Joh.. 더보기
사용자 결제 패턴 인식을 위한 기반 데이터 결제 금액 사용자가 어떤 제품이나 서비스를 구매할 때 결제한 금액을 기록해야 합니다. 이를 통해 사용자의 구매 성향을 파악할 수 있습니다. 예를 들어, 사용자가 저렴한 제품을 선호하는지, 고가의 제품을 선호하는지 등을 알 수 있습니다. 결제 일자와 시간 사용자가 결제한 일자와 시간도 중요한 데이터입니다. 이를 통해 사용자의 결제 패턴을 파악할 수 있습니다. 예를 들어, 사용자가 주말에 더 많은 결제를 하는지, 특정 시간대에 더 많은 결제를 하는지 등을 파악할 수 있습니다. 결제 수단 사용자가 어떤 결제 수단을 사용하는지도 중요한 데이터입니다. 이를 통해 사용자의 선호하는 결제 수단을 파악할 수 있습니다. 예를 들어, 사용자가 신용카드를 선호하는지, 모바일 결제를 선호하는지 등을 파악할 수 있습니다. 구매.. 더보기
DBN(Deep Belief Networks) DBN(Deep Belief Networks)은 깊은 신뢰 신경망 구조를 사용하여 비지도 학습을 수행하는 머신러닝 알고리즘입니다. DBN은 RBM(제한된 볼츠만 머신)을 기본 블록으로 사용합니다. RBM은 양방향 그래프를 가진 노드들로 이루어져 있으며, 각 노드는 확률 분포를 가지고 있습니다. 두 개의 층으로 구성된 RBM은 입력 층과 숨겨진 층을 가지고 있습니다. 이전 층의 출력이 다음 층의 입력으로 사용되는 구조로 이루어져 있으며, 출력의 값은 확률로 나타내어집니다. DBN은 이러한 RBM을 여러 층으로 쌓은 구조를 가지고 있습니다. 층을 추가함으로써 더 복잡한 특징을 추출할 수 있습니다. 또한 DBN은 초기 가중치를 RBM의 학습을 통해 얻어집니다. 이후 역전파 알고리즘을 사용하여 미세 조정이 이루.. 더보기