yoongrammer

목차Raft Consensus Algorithm 알아보기Raft는 이해하기 쉽도록 설계된 분산 합의 알고리즘입니다.여러 서버들 중 일부 서버에 장애가 발생하더라도 기능을 유지하도록 하는 내결함성을 가지고 있습니다.분산 합의(Distributed Consensus)란?하나의 클라이언트와 서버가 있고 클라이언트가 서버에게 데이터를 전달한다고 가정해보겠습니다. 서버는 하나의 노드로 이루어져 있기 때문에 합의가 이루어지는 건 아주 쉬운 문제입니다.여기서 합의란 클라이언트와 서버가 동일한 데이터를 공유하는 상태(동기화)가 되는 것을 의미합니다.만일 위 그림처럼 여러 노드로 이루어진 분산 서버에서 합의를 할 때 발생하는 문제를 distributed consensus problem이라고 합니다.Raft 작동방식Raf..
목차 스택(Stack) 구현하기 in Go 스택은 후입 선출 (LIFO) 원리를 따라 정렬된 데이터 구조입니다. golang에서 Slice를 사용하면 쉽게 스택을 구현할 수 있습니다. built-in 함수인 append를 사용하여 push를 구현합니다. 배열의 마지막 요소를 잘라내는 방식으로 pop을 구현합니다. 구현 Go 언어로 구현하면 다음과 같습니다. package main import "fmt" type Stack []interface{} //IsEmpty - 스택이 비어있는지 확인하는 함수 func (s *Stack) IsEmpty() bool { return len(*s) == 0 } //Push - 스택에 값을 추가하는 함수. func (s *Stack) Push(data interface{..

목차스택(Stack) 구현하기 in C스택 자료형을 구현하는 방법은 일반적으로 다음 방법들을 사용합니다.배열 기반으로 구현동적 배열을 기반으로 구현연결 리스트로 구현배열 기반으로 구현배열을 사용하여 스택을 구현하는 방법입니다.배열 index를 추적하는 top변수를 사용합니다.top은 -1로 초기화합니다.top이 -1이라면 스택이 비어있다는 의미이고 배열 크기-1이라면 스택이 가득 찼다는 의미입니다.push연산은 top을 1 증가시키고 값을 top위치에 저장하도록 구현합니다.pop연산은 top을 1 감소시키도록 구현합니다. C 언어로 구현하면 다음과 같습니다.#include #include #include typedef struct ArrayStack { int top; int capacity; in..

목차 [Go] go get 알아보기 go get 명령어는 패키지 및 관련 종속성(dependency)을 다운로드 및 설치하는 명령어입니다. 패키지는 $GOPATH/src/ 경로에 저장됩니다. Usage: go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages] -d : 설치는 하지 않고 소스 파일만 다운로드합니다. -u : 패키지 및 해당 종속성을 업데이트합니다. -t : 패키지에 대한 테스트를 빌드하는 데 필요한 패키지도 다운로드합니다. -v : 진행 및 디버그 출력 자세한 옵션 설명은 go help get을 통해 확인할 수 있습니다. go get 사용하기 예를 통해 알아보도록 하겠습니다. 사전 작업 github에 있는 pl..

목차[자료구조] 큐 (Queue)큐는 먼저 집어넣은 데이터가 먼저 나오는 FIFO (First In First Out) 구조로 저장하는 선형 자료구조입니다.실제 예로 매표소 대기열에서 먼저 줄을 선 사람이 먼저 나갈 수 있는 상황과 비슷합니다. 나중에 집어넣은 데이터가 먼저 나오는 스택(Stack)과는 반대되는 개념입니다.큐 표현큐는 FIFO(First In First Out) / LILO(Last In Last Out) 순서를 따릅니다.FIFO : 처음 들어온 값이 처음에 나가는 것LILO : 마지막에 들어온 값이 마지막에 나가는 것큐에 끝(Rear)에서 요소를 추가하는 작업을 enqueue라고 하며 큐에 맨 앞(Front)에서 요소를 제거하는 작업을 dequeue라고 합니다. 가득 찬 큐에 요소를 추..