전체 글
-
java: Full GC란?Back-End/Java 2024. 12. 22. 15:15
Full GC(Full Garbage Collection)는 Java Virtual Machine(JVM)에서 Heap 메모리 전체를 검사하여 가비지 객체를 회수하는 작업을 의미합니다. 이것은 Java 런타임(JVM)에 의해 관리되는 메모리 정리 작업으로, Spring 프레임워크 자체의 기능은 아니며, Spring은 JVM 위에서 실행되는 하나의 애플리케이션일 뿐입니다.1. Full GC란?Full GC는 JVM이 Heap 메모리에서 모든 세대(Young, Old, Permanent 혹은 Metaspace)를 스캔하여, 더 이상 참조되지 않는 객체를 정리하는 작업입니다. 이는 메모리를 회수하고 새로운 객체를 저장할 공간을 확보하기 위해 실행됩니다. Full GC 동작 과정: 1. Stop-the-Worl..
-
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)의 시간 복잡도로 데이터에 접근할 수 있습니다. 그러나 해시 함수의 성능과 충돌 해결 방법에 따라 실제 성능은 달라질 수 있습니다.해시테이블의 동작 원리해시테이블의 ..
-
golang: 고루틴(Goroutine) 연습해보기 초급편Back-End/Golang 2024. 11. 23. 14:58
고루틴 학습 교과서: Go로 배우는 동시성 프로그래밍서문Go 언어의 핵심인 고루틴은 경량 스레드로, 효율적이고 강력한 동시성 프로그래밍을 가능하게 합니다. 이 교과서는 고루틴의 기초부터 심화된 패턴까지 체계적으로 학습할 수 있도록 설계되었습니다. 각 단계별로 학습 포인트와 실습 예제를 통해 실력을 점진적으로 향상시킬 수 있습니다.1단계: 고루틴 기초학습 포인트고루틴의 정의 및 기본 사용법동기 실행과 비동기 실행의 차이점설명고루틴은 go 키워드를 사용하여 비동기로 함수를 실행할 수 있는 Go의 기본 단위입니다. OS 스레드와 비교해 메모리 오버헤드가 작으며, 런타임 스케줄러가 고루틴을 관리합니다.예제package mainimport ( "fmt" "time")func printMessage(msg stri..
-
자료구조: 해시맵(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 패..