본문 바로가기

분류 전체보기

(42)
싱글톤 패턴 Singleton Pattern Definition 애플리케이션이 시작될 때, 어떤 클래스가 최초 한 번만 메모리를 할당(static)하고 해당 메모리에 인스턴스를 만들어 사용하는 패턴. 쉽게 얘기하면 싱글톤 패턴은 하나의 인스턴스만 생성하여 사용하는 디자인 패턴, 즉, 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 싱글톤 패턴을 구현하는 방법은 여러 가지가 있지만, 객체를 미리 생성해두고 가져오는 방법이 가장 단순하고 안전하다. Example Java public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { // ... } public static Singleton get..
Golang + DynamoDB 세팅 MacOS 환경에서 세팅하는 방법입니다. Homebrew 3.5.10 go version go1.19 darwin/arm64 aws-cli/2.7.27 Python/3.9.11 Darwin/21.6.0 exe/x86_64 prompt/off // 현재 설정입니다. 참고만 해주세요! GoLang 설치 MacOS 환경에서는 다음과 같이 간편하게 golang을 설치할 수 있습니다. brew install go 혹은 다음과 같은 절차로 다운로드 받을 수 있습니다. https://golang.org 에서 go linux용 파일을 다운받는다. 터미널을 열고 다운받은 파일이 있는 폴더에서 아래 명령을 실행한다. sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go..
프로세스 주소 공간 프로세스 주소 공간 프로세스는 운영체제가 자원을 할당하는 단위이다. 프로세스가 메모리를 할당 받으면, 자신만의 방법으로 메모리를 관리하기 위해 이 공간들을 어떤 구조로 관리하는데, 우리는 이를 프로세스 주소 공간이라고 부른다. 프로세스 주소공간은 다음과 같이 나뉘어진다. Stack 영역 함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 영역. Stack 영역의 값은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다. 메모리의 높은 주소에서 낮은 주소의 방향으로 할당된다. 재귀 함수가 너무 깊게 호출되거나 함수가 지역변수를 너무 많이 가지고 있어 stack 영역을 초과하면 stack overflow 에러가 발생한다. Heap 영역 런타임에 크기가 결정되는 영역. 사용자에 의해 공간이 동적으..
Race Condition Race Condition Definitions Race Condition이란 두 개 이상의 프로세스가 공통 자원을 Concurrently하게 읽거나 쓰는 동작을 할 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 같지 않고 달라지는 상황을 말한다. EXAMPLES 커널 작업을 수행하는 중에 인터럽트 발생 문제점 : 커널 모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우 해결법 : 커널모드에서 작업을 수행하는 동안, 인터럽트를 disable 시켜 CPU 제어권을 가져가지 못하도록 한다. 프로세스가 System Call을 하여 커널 모드로 진입하여 작업을 수행하는 도중 문맥 교환(Context Switching)이 발생할 때...
Redis Redis 빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어 Redis의 정의 Key - Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템이다. 데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소이다. db.engines.com에서 Key-value store중에 가장 순위가 높다 Redis의 특징 보통 데이터베이스는 하드 디스크나 SSD에 저장한다. 하지만 Redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠르다. 캐싱도 가능하기 때문에 실시간 채팅에 적합하며 세션 공유를 위해 세션 클러스터링에도 활용된다. 캐시 서버의 패턴 캐시 서버는 Look aside cache 패턴과 Write Ba..
IPFS와 파일코인 IPFS and Filcoin IPFS는 탈중앙화 웹이다. 하나의 서버가 다운되거나 파괴되더라도 우리는 파일을 잃지 않는다. 블록체인을 통해 탈중앙화된 토큰 economy를 구상할 때, IPFS는 파일 저장 및 보관의 측면에서도 탈중앙화를 실현할 수 있다. IPFS를 통해 우리는 모든 파일을 블록체인 상에 올릴 수 있다. 그러나 이것이 해당 파일을 직접 블록체인에 올린다는 의미는 아니다. 우리가 2GB 용량의 파일을 올린다면, 엄청난 양의 GAS를 소모하게 될 것이다. IPFS 네트워크에 해당 파일을 업로드(Merkle DAG==Git에 해당 파일을 추가)하면, 파일 고유의 해시값이 산출된다. 이제 이 해시값은 IPFS상에서 해당 파일의 영구적인 이름이 된다. Content-Addressing으로 해당 ..
Filecoin Filecoin Filecoin은 IPFS 팀에서 IPFS 형식의 파일 저장을 장려하기 위해 만들어낸 탈중앙화 저장소 네트워크이다. 따라서 IPFS 형태의 파일 표준만 맞춘다면, 용량 제공자(Filecoin에서의 마이너)의 유휴 데이터 용량을 활용할 수 있다. 이때 그 반대급부로 마이너에게 지불하게 되는 것이 'Filecoin'이라는 코인인데, 이렇게 되면 암호화폐를 지불하고 활용하게 되는 일종의 시장, 또는 공유 경제 모델이 형성된다. 정리하면 다음과 같다. Filecoin이란 클라우드 저장소를 알고리즘 시장으로 이끌어낸 탈중앙화 방식의 스토리지 네트워크이다. 이 알고리즘 시장은 프로토콜 토큰 ‘Filecoin’을 활용한 블록체인 위에서 형성되는데, 채굴자들은 자신들의 저장소를 클라이언트들에게 제공함으..
IPFS [InterPlanetary File System] IPFS의 등장 배경 IPFS는 분산형 파일 시스템에 데이터를 저장하고 인터넷으로 공유하기 위한 프로토콜이다. 조금 더 구체적으로 접근하면, 탈중앙화, 개인간(P2P), 무신뢰 방식으로 모든 종류의 파일을 저장하는 데 사용되는 블록체인 네트워크이다. 인터넷은 연결이며, HTTP 프로토콜은 서로 데이터를 주고 받는 방식에 대한 약속이다. Web은 인터넷 상에서 HTTP 프로토콜에 따라 주고 받는 공간이다. 일상적으로 우리는 인터넷과 웹을 동의어처럼 사용하지만, 엄밀하게 말하면 다르다. 인터넷은 방대한 네트워크, 혹은 네트워크 인프라를 의미한다. 인터넷이 연결되어 있다면, 컴퓨터는 다른 컴퓨터와 통신이 가능하다. 웹은 인터넷을 통해 데이터를 얻는 방법 중 하나에 지나지 않는다. 웹은 인터넷 계층 위에 설계된..