java
-
static 변수와 메서드Back-End/Java 2025. 7. 10. 14:14
Java를 다루다 보면 static이라는 키워드를 마주치게 됩니다.처음엔 단순히 “공유된다”는 설명으로 접근하지만, 실무에선 객체지향 설계 철학과 메모리 구조, 그리고 테스트 전략까지 얽히기 때문에 더 깊은 이해가 필요합니다.static이란 무엇인가?static은 클래스 레벨에서 존재함을 의미합니다.즉, 객체 인스턴스를 생성하지 않고도 접근할 수 있으며, 모든 인스턴스가 공유합니다.static 변수 (클래스 변수)정의클래스가 메모리에 로딩될 때 JVM의 메서드 영역(Method Area) 에 단 한 번 할당됩니다.public class Counter { static int count = 0; public Counter() { count++; }}위 코드를 통해 new Coun..
-
오버로딩 (Overloading)과 오버라이딩 (Overriding)Back-End/Java 2025. 7. 9. 13:36
오버로딩 (Overloading)같은 이름의 메서드를 "매개변수만 다르게" 여러 개 정의하는 것 특징같은 클래스 안에서 발생메서드 이름은 같고, **매개변수(타입/개수/순서)**가 달라야 함반환 타입만 다르면 오버로딩이 안 됨 예시public class Calculator { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; }} ✔️ 같은 이름 add지만 매개변수가 다름 → 오버로딩오버라이딩 (Overr..
-
Spring: 빈(Bean)이란?Back-End/Spring 2025. 4. 11. 21:35
🫘 스프링의 빈이란? – 객체를 관리하는 스프링의 핵심 메커니즘“Spring에서 Bean이란, 단순한 객체가 아닙니다.생성부터 소멸까지, 프레임워크가 관리하는 살아있는 객체입니다.” 1. 들어가며 – 객체는 누가 관리하나요?Java 애플리케이션에서 객체를 생성하는 가장 기본적인 방법은 new 키워드를 사용하는 것입니다.MyService myService = new MyService();하지만 이 객체가 여러 클래스에서 공통으로 필요하다면, 매번 new로 만들면 비효율적이고, 객체 간 의존성이 복잡해지며, 테스트도 어려워집니다.이런 문제를 해결하기 위해 Spring은 IOC(제어의 역전, Inversion of Control) 이라는 개념을 도입합니다.객체를 직접 만들고 연결하지 않고, Spring이 ..
-
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..
-
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..
-
자료구조: 해시테이블(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 패..