오블완
-
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는 자동 메모리 관리를 위해..
-
LeetCode: Two SumAlgorithm & Data Structure/LeetCode 2024. 11. 26. 22:28
Two Sum 문제 풀이: 두 가지 접근법문제 설명https://leetcode.com/problems/two-sum/ 배열 nums와 정수 target이 주어졌을 때, 합이 target이 되는 두 숫자의 인덱스를 반환하는 문제입니다.각 입력은 하나의 정답을 가지며, 동일한 요소를 두 번 사용할 수 없습니다.반환값은 인덱스 쌍으로, 순서는 상관없습니다.1. 브루트포스(Brute Force) 방법첫 번째로 떠오르는 직관적인 접근법은 모든 가능한 쌍을 검사하는 것입니다.이 방법은 단순하지만, 시간 복잡도가 높아 효율적이지 않습니다.시간 복잡도O(n²): 모든 요소를 두 번 반복하며 쌍을 검사하기 때문입니다.고랭 코드func twoSum(nums []int, target int) []int { for i..
-
오버 페치(Over-Fetch)와 언더 페치(Under-Fetch)란?Back-End 2024. 11. 25. 22:12
현대 웹 애플리케이션 개발에서는 클라이언트와 서버 간의 효율적인 데이터 통신이 매우 중요합니다. 그러나 이 과정에서 오버 페치(Over-Fetch)와 언더 페치(Under-Fetch)라는 문제가 발생할 수 있습니다. 이 두 가지 문제는 애플리케이션의 성능 저하, 사용자 경험 악화, 그리고 네트워크 리소스 낭비로 이어질 수 있습니다.오버 페치(Over-Fetch)란 무엇인가?오버 페치는 클라이언트가 실제로 필요로 하지 않는 불필요한 데이터까지 서버로부터 가져오는 상황을 말합니다. 이는 클라이언트가 요청한 데이터보다 더 많은 데이터를 받아오는 것으로, 네트워크 리소스의 낭비와 성능 저하를 초래합니다.예시사용자가 프로필 페이지에서 자신의 이름과 이메일만 확인하려고 합니다. 그러나 서버에서 프로필 정보를 요청하..
-
자료구조: 해시테이블(Hash Table)Algorithm & Data Structure/DataStructure 2024. 11. 24. 17:11
해시테이블은 효율적인 데이터 저장과 검색을 위해 해시 함수를 사용하여 키(key)를 해시값(hash value)으로 변환하고, 이를 통해 데이터의 위치를 결정하는 자료구조입니다. 해시맵과 해시테이블은 개념적으로 유사하지만, 구현 방식과 충돌 해결 방법에 따라 차이가 있습니다. 이번 글에서는 해시테이블의 기본 개념부터 다양한 충돌 해결 방법까지 자세히 알아보겠습니다.해시테이블이란?해시테이블(Hash Table)은 키를 해시 함수로 해시값으로 변환하고, 이 해시값을 인덱스로 사용하여 데이터를 저장하는 자료구조입니다. 이를 통해 평균적으로 O(1)의 시간 복잡도로 데이터에 접근할 수 있습니다. 그러나 해시 함수의 성능과 충돌 해결 방법에 따라 실제 성능은 달라질 수 있습니다.해시테이블의 동작 원리해시테이블의 ..
-
자료구조: 해시맵(Hash Map)Algorithm & Data Structure/DataStructure 2024. 11. 23. 10:52
해시맵은 키(key)와 값(value)을 효율적으로 저장하고 검색하기 위한 자료구조입니다. 해시 함수를 사용하여 키를 특정 인덱스로 매핑함으로써, 데이터에 대한 빠른 접근이 가능합니다. 이 글에서는 해시맵의 기본 개념부터 Concurrent HashMap과 Ordered HashMap에 이르기까지 자세히 알아보겠습니다.해시맵이란?해시맵(Hash Map)은 키-값 쌍을 저장하는 자료구조로, 키를 해시 함수(hash function)에 통과시켜 해시값(hash value)을 생성하고 이를 인덱스로 사용합니다. 이를 통해 평균적으로 O(1)의 시간 복잡도로 데이터에 접근할 수 있습니다.해시맵의 동작 원리해시맵은 다양한 개념과 용어로 구성되어 있으며, 각 요소가 유기적으로 작용하여 효율적인 데이터 저장과 검색을..
-
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 경로를 파싱하여 파라미터를 추출하고 핸들..