본문 바로가기

분류 전체보기

(92)
[GopherCon 2021] Go Scheduler 스케줄러는 go 프로그램의 뒤에서 지휘하는 orchestrator이다.go의 스케줄러가 어떻게 동작하는지 알아본다.1. 왜 스케줄러를 갖고 있지?고루틴은 OS가 아닌 go runtime에 의해 관리되는 user-space 스레드들이다.커널 스레드보다 경량이다.생성, 삭제, context switch가 스레드보다 빠르다.메모리 사용이 더 적다.고루틴의 목표작은 커널 스레드를 유지한다.높은 동시성을 제공한다.core 갯수만큼 고루틴을 병렬로 실행한다.2. 어떻게 thread들 사이에서 고루틴을 분산하지?실행할 준비가 되어 있고 스케줄되어야 하는 고루틴은 heap에 할당된 FIFO unqueue에 저장된다.single thread에서 모든 고루틴을 돌린다면?동시성, 병렬성 제공 불가고루틴마다 thread를 ..
[learning go] 2. 기본 데이터 타입과 선언 1. 할당되지 않은 변수 - zero 값 할당 bool - fales int - 0 문자열 - empty string 자연스럽게 null object 패턴 적용 가능하다. 2. 리터럴 리터럴(literal) = 소스 코드에서 값을 나타내는 표기법 integer 0b, 0o, 0x 1_234 floating 6.03e23 0x, p (지수) rune(문자) '와 " 혼용 불가 'a', '\141'=8진 숫자, 'x61'=8bt 16진수 숫자, '\u0061'=16bit 16진수 숫자, 'U00000061'=32bit 유니코드 8진수 - 권한 플래그, 16진수/이진수 - 비트 필터, 네트워킹, 인프라 응용 프로그램에 사용 문자 리터럴 "Greetings and\n\"Salutations\"" `Greetin..
[learning go] 1. 개발환경 설정하기 1. 맥북에 설치하기 brew install go ➜ ~ go version go version go1.22.1 darwin/arm64 ➜ ~ which go /opt/homebrew/bin/go 2. go 작업 공간 go install -> 단일 작업 공간(workspace)가 있어야 한다. 기본 디렉터리 : $HOME/go go 패키지 예제 코드 : $HOME/go/src 컴파일한 바이너리 : $HOME/go/bin GOPATH를 명시적으로 설정, $GOPATH/bin을 실행가능한 경로로 환경변수에 추가하자. 작업 공간의 위치를 명확하게 한다. $GOPATH 환경변수를 설정 - go install로 설치된 서드 파티 도구들을 쉽게 실행하도록 해준다. vi ~/.zshrc export GOPATH="$..
[프로그래머스/그래프] - 가장 먼 노드 문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한사항 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. vertex 배열 각 행 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미입니다. 입출력 예 n verte..
[프로그래머스/2020 KAKAO BLIND RECRUITMENT] 가사 검색 문제 설명 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 친구들로부터 천재 프로그래머로 불리는 "프로도"는 음악을 하는 친구로부터 자신이 좋아하는 노래 가사에 사용된 단어들 중에 특정 키워드가 몇 개 포함되어 있는지 궁금하니 프로그램으로 개발해 달라는 제안을 받았습니다. 그 제안 사항 중, 키워드는 와일드카드 문자중 하나인 '?'가 포함된 패턴 형태의 문자열을 뜻합니다. 와일드카드 문자인 '?'는 글자 하나를 의미하며, 어떤 문자에도 매치된다고 가정합니다. 예를 들어 "fro??"는 "frodo", "front", "frost" 등에 매치되지만 "frame", "frozen"에는 매치되지 않습니다. 가사에 사용된 모든 단어들이 담긴 배열 words와 찾고자 하는 키워드가 담긴 배열 ..
[프로그래머스/2020 KAKAO BLIND RECRUITMENT] 자물쇠와 열쇠 문제 설명 고고학자인 "튜브"는 고대 유적지에서 보물과 유적이 가득할 것으로 추정되는 비밀의 문을 발견하였습니다. 그런데 문을 열려고 살펴보니 특이한 형태의 자물쇠로 잠겨 있었고 문 앞에는 특이한 형태의 열쇠와 함께 자물쇠를 푸는 방법에 대해 다음과 같이 설명해 주는 종이가 발견되었습니다. 잠겨있는 자물쇠는 격자 한 칸의 크기가 1 x 1인 N x N 크기의 정사각 격자 형태이고 특이한 모양의 열쇠는 M x M 크기인 정사각 격자 형태로 되어 있습니다. 자물쇠에는 홈이 파여 있고 열쇠 또한 홈과 돌기 부분이 있습니다. 열쇠는 회전과 이동이 가능하며 열쇠의 돌기 부분을 자물쇠의 홈 부분에 딱 맞게 채우면 자물쇠가 열리게 되는 구조입니다. 자물쇠 영역을 벗어난 부분에 있는 열쇠의 홈과 돌기는 자물쇠를 여는 ..
[프로그래머스/정렬] 가장 큰 수 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 numbers return [6, 10, ..
[프로그래머스/정렬] K번째수 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..