profile
서버 프로그래머

[Go] select를 활용한 비동기 프로그래밍

버퍼 없는 채널 사용시 쓰기, 읽기가 동시에 일어나지 않으면 블락이 발생할 수 있음select를 통해 비동기로 구현아래 예시는 이번 주제를 설명하기에 적절하지 않을 수 있음 (채널과 고루틴 없이 충분히 구현 가능)하지만 핵심 부분만 간단하기 설명하기 위함실제 참고한 코

2022년 10월 23일
·
0개의 댓글
·

[Go] Channel send/receive 순서 보장

go 언어 프로그래밍 연습을 위해, 대기열 시스템을 구현수강신청이나 게임 로그인 대기열 등작업은 멀티쓰레드 환경에서 요청할 수 있다동일한 작업은 처리되기 전까지 다시 요청할 수 없다대신 앞에 남은 대기열을 알려준다 (ex. 수강신청 또는 게임 로그인 대기열)작업이 완료

2022년 9월 27일
·
0개의 댓글
·

[Go] Error, Panic 핸들링 (stacktrace)

개요 런타임중 panic이 발생했을 경우, stacktrace가 출력되고 프로그램이 종료됨 panic은 다른 언어의 Exception과 유사 recover 및 추가 작업을 통해 프로그램 종료 없이 stacktrace 출력 구현 recover는 다른 언어의 try

2022년 9월 18일
·
0개의 댓글
·

[Go] 가비지 콜렉션

개요 golang은 가비지 콜렉션으로 인한 성능 저하를 최소화 하기 위해 압축과 세대별GC를 사용하지 않음 java, C# 등 가상머신 기반에서는 압축과 세대별GC를 사용함 압축: 가비지 콜렉션 이후 메모리 단편화를 막기 위해 메모리 빈공간 없이 당겨오는 작업

2022년 8월 13일
·
0개의 댓글
·

[Go] 변수 메모리영역

코드 출력 추론 전역 변수와 로컬 변수의 메모리 주소대가 완전히 다름 ex. 0x1023~, 0x140001~ 메모리 영역은 일반 변수, Slice 포인터 변수, 포인터 변수 세 영역으로 나뉨 ex. 0x10239~, 0x102364~, 0x102363~ map,

2022년 8월 11일
·
0개의 댓글
·

[Go] 자료구조 구현

개요 golang에서 네이티브로 지원하지 않는 자료구조를 구현 다양한 타입 지원을 위해 빈 인터페이스 사용 이후 제네릭과 비교했을 때, 제네릭에 비해 성능이 떨어짐 https://velog.io/@natae/golang-generic-vs-empty-interf

2022년 8월 10일
·
0개의 댓글
·