공부집

코멘토 실무PT 후기 챌린지_쿠버네티스 강의 1주차 후기 본문

comento/Kubernetes

코멘토 실무PT 후기 챌린지_쿠버네티스 강의 1주차 후기

ikemen_hk 2022. 10. 7. 19:29

필수링크: https://bit.ly/3D9XCOz

1주차 Go 언어

 

환경변수 설정

% go env | grep "GOPATH"
GOPATH="/Users/park/go"

init: go.mod,go.sum 패키지 관리 파일을 생성함

% go mod init go-test
go: creating new go.mod: module go-test

tidy: 불필요 모듈을 정리하는 명령어?

vendor: 패키지들을 보관해두는 곳, 외부 패키지가 아닌 필요한 패키지만 보관하여 용량이 줄어듬

 

go.mod: 모듈을 정의한 파일

go.sum: go.mod에 정의된 모듈의 해시값을 저장

 

패키지 관리를 위해서 노드단에서 볼륨 마운트는 비효율적

 

배열은 고정된 크기를 가지고, 슬라이스는 동적인 크기

array  := [6]int            //<- 배열임
slice  := []int             //<- 크기를 지정해주지 않으면 슬라이스
slice2 := make([]int, 3, 3) //make로 슬라이스 만들 수 있음 ([]T, length, capacity)

슬라이스는 배열을 참조할 뿐 데이터를 저장할 수 없음, 그래서 수정하면 다른 슬레이스의 요소도 수정됨

Generic: 여러 타입에서 동작하는 함수를 만들 수 있음
type Float interface {
	float32 | float64
}

func add[T Float](a, b T) T {
	return a + b
}
// 타입 파라미터는 일반적으로 대문자 알파벳 한 글자 "T"

Async

goroutine: Go 런타임에 의해 관리되는 경량 쓰레드라서 컨텍스트 스위칭이 발생해도 OS단 쓰레드에서 발생하는 스위칭보다 큰 비용이 발생하지 않음 => 고루틴 많이 써도 성능 크게 저하되지 않음

・고루틴의 동시성 문제는 sync.Mutex 의 Lock으로 해결 가능
・wg.Add(1) // 작업 갯수 1개 추가
・wg.Done() // 각 고루틴이 끝났음을 알림, defer를 넣어서 마지막에 실행되도록 함
・wg.Wait() // 작업 갯수가 0이 될 때 까지 대기

 

Channel: 비동기 돌아가는 관(파이프) [FIFO], 채널 연산자 "<-"

채널을 사용하면 고루틴에서 뮤텍스를 사용안해도 됨

Comments