반응형
SMALL

전체 글 200

Go의 고루틴과 채널

고루틴 Go에서는 동시에 수행되는 작업을 고루틴이라고 한다. 프로그램이 시작된 뒤 유일한 고루틴은 main 함수를 호출하는 것이므로 이를 메인 고루틴이라고 한다. 새 고루틴은 go문에 의해 생성된다. 문법적으로 go문은 키워드 go가 앞에 붙는 일반 함수 또는 메소드 호출이다. func handleConn(c net.Conn) { input := bufio.NewScanner(c) for input.Scan() { go echo(c, input.Text(), 1*time.Second) } c.close() } 채널 고루틴이 Go 프로그램의 동작이라면 채널은 고루틴 간의 연결이다. 채널은 한 고루틴이 다른 고루틴으로 값을 보내기 위한 통신 메커니즘이다. 각 채널은 채널의 요소 타입이라는 특정 타입 값의 통..

Go 2022.01.10

Go의 메소드와 인터페이스

메소드 메소드 선언 메소드는 일반 함수 선언을 변형해 함수명 앞에 부가적인 파라미터를 추가한 형태로 선언한다. 파라미터는 함수를 파라미터 타입에 추가한다. package geometry import "math" type Point struct{ X, Y float64 } type Path []Point // function func Distance(p, q Point) float64 { return math.Hypot(q.X-p.X, q.Y-p.Y) } // method func (p Point) Distance(q Point) float64 { return math.Hypot(q.X-p.X, q.Y-p.Y) } func (path Path) Distance() float64 { sum := 0.0 fo..

Go 2022.01.07

Go의 복합 타입과 함수

배열 배열은 0개 이상의 특정 타입 원소로 이뤄진 고정 길이 시퀀스다. 배열의 개별 원소는 기존 첨자 표기법으로 접근하며, 첨자의 범위는 0부터 배열 길이-1까지다. 내장 함수 len은 배열의 원소 수를 반환한다. var a [3]int // 정수 3개로 이뤄진 배열 fmt.Println(a[0])// 첫 번째 원소 출력 fmt.Println(a[len(a)-1])// 마지막 원소 출력 // 인덱스와 원소 출력 for i, v := range a { fmt.Printf("%d %d\n", i, v) } // 원소만 출력 for _, v := range a { fmt.Printf("%d\n", v) } var q [3]int = [3]int{1, 2, 3} var r [3]int = [3]int{1, 2}..

Go 2021.12.16

Go 프로그램의 기본 구성 요소

이름 Go 프로그램에서 이름은 문자(유니코드에서 문자로 간주하는 것 모두)나 밑줄로 시작하고, 그 뒤에 임의의 개수의 부가적인 문자, 숫자, 밑줄을 쓸 수 있다. Go에는 문법상 허용된 키워드 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 기 정의된 내장 상수, 타입, 함수의 이름 true false iota nil int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex12..

Go 2021.12.13

[Prometheus] 모니터링과 프로메테우스

프로메테우스(Prometheus) 메트릭 기반의 오픈소스 모니터링 시스템이다. 단순하지만 강력한 데이터 모델과 쿼리 언어(PromQL)를 통해 애플리케이션과 인프라의 성능을 분석할 수 있다. 메트릭 이외의 문제는 더 적절한 다른 도구가 처리하도록 남겨둔다. 2012년 몇 명의 개발자가 사운드클라우드(SoundCloud) 사에서 개발을 시작한 후, 관련 커뮤니티와 생태계는 꾸준히 성장해 왔다. 주로 Go 언어로 작성되었으며 Apache 2.0 라이센스를 따른다. 2016년 클라우드 네이티브 컴퓨팅 재단(CNCF, Cloud Native Computing Foundation)의 두 번째 멤버가 되었다. 간단한 텍스트 형식을 통해 쉽게 메트릭을 게시할 수 있다. 데이터 모델은 이름뿐 아니라 레이블로 불리는 키..

Monitoring 2021.08.18

[Node.js] 기능 알아보기

Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org Node.js의 공식 홈페이지에서 Node.js를 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임으로 설명하고 있습니다. 여기서 런타임은 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 의미하므로 노드는 Javascript 프로그램을 실행할 수 있습니다. [그림1]를 보면 노드는 V8과 libuv 라이브러리를 사용하고 있습니다. V8과 libuv는 C/C++로 구현되어 있고, 자바스크립트 코드를 노드가 V8과 libuv에 연결합니다. Node.js의 특징 이벤트 기반(event-driven) 이벤트가 발생할..

Node.js 2021.07.08

[Blockchain] 하이퍼레저 컴포저(Hyperledger Composer)

하이퍼레저 컴포저 하이퍼레저 패브릭과 마찬가지로 리눅스 재단의 하이퍼레저 산하 프로젝트다. 하이퍼레저 패브릭에서 개발을 지원하는 프레임워크다. 하이퍼레저 패브릭 환경에 대응해 자바스크립트 기반 프레임워크를 통해 응용 프로그램을 만들 수 있다. 하이퍼레저 패브릭 비즈니스 네트워크(.bna file) 비즈니스 네트워크는 모델, 트랜잭션 처리 기능을 담당하는 자바스크립트 기반의 스크립트, 접근 제어를 담당하는 ACL, 질의 정의를 수행하는 쿼리(Query)의 4가지 요소로 구성된다. 위의 4개의 정의 파일을 BNA(Business Network Archive) 파일에 모아 템플릿으로 만들 수 있다. # BNA 파일로 내보내기 composer archive create -a [BNA파일명] -sourceType..

Blockchain 2021.07.06

[Blockchain] 하이퍼레저 패브릭(Hyperledger Fabric) 환경 구성

1. VirtualBox 설치 버추얼박스는 Oracle에서 개발한 가상화 소프트웨어다. Downloads – Oracle VM VirtualBox Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.0 packages, see Virt www.virtualbox.org 2. Vagrant 설치 베이그런트는 Mitchell Hashimoto(..

Blockchain 2021.07.06

[Cloud] 클라우드 네이티브 애플리케이션(Cloud Native Application)

플랫폼 애플리케이션을 만들고 운영하는 것을 돕는 기능의 집합체를 의미한다. 애플리케이션의 비즈니스 요구사항을 충족시키는 데 필수적이지 않은 작업들을 자동화하여 비즈니스 가치를 차별화할 수 있는 기능 개발에 집중할 수 있다. 플랫폼을 구축할 때는 반복 가능한 관행(Practice)을 자동화하는 도구를 만들게 되며, 관행은 가치있는 아이디어를 계획으로 바꾸어줄 수 있는 제약 조건으로부터 도출된다. 제약 조건으로부터 도출되는 관행은 약속(Promise)의 모음이다. 아마존닷컴 플랫폼의 사례 아이디어 : 소프트웨어 컴포넌트들을 격리시키면 시스템의 일부를 더 빠르고 독립적으로 전달할 수 있게 된다. 제약조건 : 소프트웨어 컴포넌트는 독립적으로 배포 가능한 서비스로 만들어져야 한다. 서비스 안에 있는 모든 비즈니스..

Cloud 2021.05.31

[Operating System] 운영체제의 병행성 제어(Concurrency Control)

이번 학습 주제는 운영체제의 병행성 제어(Concurrency Control)입니다. 다수의 프로세스가 병렬로 처리되고, 이 프로세스들이 동일 자원에 접근하려고 한다면 자원의 무결성이 깨질 우려가 있습니다. 이 때, 운영체제는 상호배제를 통해 자원이 무결성을 보장합니다. 상호배제(Mutual Exclusion Techniques)는 공유 자원의 독점을 보장하는 코드 영역을 의미하는 임계영역(Critical Section)이라는 개념을 이용하게 되는데, 세마포어(Semaphore)나 모니터(Monitor)와 같은 메커니즘을 사용하고, 진입 구역(Entry section), 출구 구역(Exit section), 나머지 구역(Remainder section)이 있습니다. 여기서 진입 구역은 임계 영역에 진입하..

Operating System 2021.03.31
반응형
LIST