golang
-
golang: 런타임(Runtime)이란?Back-End/Golang 2024. 11. 27. 22:18
Go의 Runtime은 Go 프로그램의 실행을 관리하는 핵심 구성 요소입니다. 이는 Go 런타임이 제공하는 동작과 기능을 이해하면, 프로그램의 성능을 최적화하고 동작 방식을 효율적으로 활용할 수 있습니다. Go 런타임의 주요 구성 요소와 개념을 자세히 설명드리겠습니다.1. Go Runtime이란?Go의 런타임은 Go 프로그램이 실행되는 동안 메모리 관리, 병행성 처리, 가비지 컬렉션, 스케줄링 등의 작업을 담당하는 표준 라이브러리 및 런타임 시스템입니다.Go는 컴파일러 기반 언어로, C/C++처럼 런타임이 없는 언어에 가깝지만, 병행성과 메모리 관리 등의 기능을 위해 런타임 환경을 제공합니다.2. 주요 기능과 구성 요소2.1 가비지 컬렉터 (Garbage Collector)Go는 자동 메모리 관리를 위해..
-
golang: 고루틴(Goroutine) 연습해보기 초급편Back-End/Golang 2024. 11. 23. 14:58
고루틴 학습 교과서: Go로 배우는 동시성 프로그래밍서문Go 언어의 핵심인 고루틴은 경량 스레드로, 효율적이고 강력한 동시성 프로그래밍을 가능하게 합니다. 이 교과서는 고루틴의 기초부터 심화된 패턴까지 체계적으로 학습할 수 있도록 설계되었습니다. 각 단계별로 학습 포인트와 실습 예제를 통해 실력을 점진적으로 향상시킬 수 있습니다.1단계: 고루틴 기초학습 포인트고루틴의 정의 및 기본 사용법동기 실행과 비동기 실행의 차이점설명고루틴은 go 키워드를 사용하여 비동기로 함수를 실행할 수 있는 Go의 기본 단위입니다. OS 스레드와 비교해 메모리 오버헤드가 작으며, 런타임 스케줄러가 고루틴을 관리합니다.예제package mainimport ( "fmt" "time")func printMessage(msg stri..
-
Back-End: Golang(Next)와 Spring(Interceptor)Back-End 2024. 11. 22. 13:21
Back-End next란 무엇인가?1. Back-End에서 next란?next는 미들웨어 체인에서 다음 단계로 요청을 전달하기 위한 메커니즘입니다. 현대적인 백엔드 프레임워크(예: Golang, Java Spring Boot)에서는 요청 처리를 분리하고 재사용성을 높이기 위해 미들웨어 패턴을 사용합니다.이 과정에서 next는:요청 흐름을 제어합니다.미들웨어가 자신의 작업을 수행한 후 다음 미들웨어 또는 최종 핸들러로 요청을 넘깁니다.필요할 경우, 요청을 차단하여 더 이상 처리가 진행되지 않도록 할 수 있습니다.next는 요청 처리의 유연성과 가독성을 높이는 데 핵심적인 역할을 합니다.2. Golang과 Java Spring Boot에서의 예시Golang에서의 nextGolang에서는 net/http 패..
-
golang: init functionsBack-End/Golang 2024. 11. 21. 18:05
Go의 init 함수 다루기: 사용 방법 및 주의사항Go 언어에서 main 함수는 프로그램의 시작점을 나타내며, 해당 함수가 종료되면 프로그램의 실행도 종료됩니다. 그러나 init 함수는 main 함수와 함께 특별한 역할을 합니다. 이번 블로그에서는 Go의 init 함수에 대해 깊이 있게 알아보고, 그 사용 방법과 주의사항에 대해 살펴보겠습니다.init 함수란 무엇인가?init 함수는 패키지 블록 내에서 정의되며, 다음과 같은 목적으로 사용됩니다:복잡한 변수 초기화: 초기화 표현식으로 처리할 수 없는 복잡한 변수를 설정할 때.프로그램 상태 확인 및 수정: 시작 시 필요한 설정이나 상태를 확인하고 조정할 때.리소스 등록: 플러그인이나 핸들러를 등록할 때.일회성 작업 수행: 캐시 생성이나 데이터 로드 등 한..
-
라우터(Router)란?Back-End 2024. 11. 20. 22:28
라우터란 무엇인가?백엔드 개발에서 라우터(router)는 클라이언트 요청을 특정 핸들러로 전달하고, URL 경로 및 HTTP 메서드를 기반으로 적절한 로직을 실행하도록 하는 중요한 컴포넌트입니다. 이는 웹 서버나 API 서버의 기본 구성 요소로, 요청을 효율적으로 분류하고 처리할 수 있도록 설계됩니다.라우터의 역할라우터는 단순히 요청을 전달하는 역할만 하지 않습니다. 현대 웹 애플리케이션에서는 라우터가 비즈니스 로직과 클라이언트 간의 인터페이스 역할을 하며, 다음과 같은 기능을 제공합니다:요청 매핑 (Routing)클라이언트의 요청 경로와 HTTP 메서드(GET, POST, PUT, DELETE 등)를 분석하고 적합한 핸들러를 호출합니다.파라미터 처리동적인 URL 경로를 파싱하여 파라미터를 추출하고 핸들..
-
byte는 왜 사용하나요? (java, golang)Back-End/Language 2024. 11. 19. 22:06
Java와 Golang 모두에서 byte 데이터를 자주 사용합니다. 다만 두 언어의 설계 철학과 활용 사례에 따라 byte의 사용 빈도와 방식이 조금 다릅니다. 이를 간략히 정리하겠습니다.Java에서 byte 사용Java는 byte를 많이 사용하는 언어 중 하나입니다. 이는 주로 Java의 저수준 I/O 처리, 네트워크 통신, 데이터 직렬화와 같은 작업에서 필요하기 때문입니다.주요 사용 사례1. 파일 입출력Java의 InputStream과 OutputStream은 데이터를 byte 단위로 처리합니다.텍스트 데이터뿐만 아니라 이미지, 영상, 바이너리 파일을 처리할 때도 필수적입니다.FileInputStream fis = new FileInputStream("example.txt");byte[] buffer..
-
golang: godoc 철학과 사용방법Back-End/Golang 2024. 11. 18. 22:27
Go 언어는 문서화를 매우 중요하게 생각합니다. 좋은 문서는 소프트웨어를 더 접근 가능하고 유지보수하기 쉽게 만들어줍니다. 이를 위해 Go는 코드와 문서를 밀접하게 연계시키는 도구인 godoc을 제공합니다. 이번 글에서는 godoc의 철학과 사용 방법, 그리고 예시를 통해 godoc에 대해 자세히 알아보겠습니다.godoc의 철학godoc의 핵심 철학은 문서는 코드와 함께 발전해야 한다는 것입니다. 이를 위해 godoc은 Go 소스 코드와 그 주석을 파싱하여 HTML이나 텍스트 형식의 문서를 생성합니다. 이러한 접근 방식은 다음과 같은 장점을 제공합니다:코드와 문서의 일치성: 문서가 코드와 동일한 저장소에 있기 때문에, 코드 변경 시 문서도 함께 업데이트됩니다.간단한 주석 규칙: 특별한 문법이나 마크업 없..
-
자료구조: 그래프(Graph)Algorithm & Data Structure/DataStructure 2024. 11. 17. 21:24
1. 그래프란 무엇인가?그래프는 정점(Vertex)과 간선(Edge)으로 구성된 데이터 구조입니다. 각 정점은 데이터를 나타내며, 간선은 정점 간의 관계 또는 연결을 나타냅니다. 그래프는 네트워크 구조를 표현하는 데 매우 적합합니다. 예를 들어, 소셜 네트워크, 도로 지도, 인터넷의 링크 구조 등이 있습니다.그래프의 구성 요소정점(Vertex):데이터를 저장하는 노드입니다.예: 도시, 사람, 웹 페이지 등.간선(Edge):정점 간의 관계를 나타냅니다.방향이 있는 경우 유방향(Directed), 없는 경우 무방향(Undirected)입니다.가중치(Weight):간선에 추가 정보(예: 거리, 비용)를 저장하는 값입니다.2. 그래프의 종류무방향 그래프(Undirected Graph):간선에 방향이 없습니다.예..