목록- (95)
olrlobt
java.lang.IllegalArgumentException: Name for argument of type [long] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. @PathVariable로 URL에서 변수를 받아오는 예제에서 위와 같은 에러가 발생했다. 문제가 된 Contoller @GetMapping("/{itemId}") public String item(@PathVariable long itemId, Model model) { Item item = itemRepository.findById(itemId); m..
다 쓴 객체 참조를 해제하라 다 쓴 객체는 GC의 대상이 되어, 자바에서는 자동으로 메모리 해제가 된다. 하지만 반대로, GC 언어에서 메모리 누수를 찾기가 아주 까다로운데, 다 쓴 객체의 참조가 하나라도 살아 있으면 GC의 대상이 되지 않기 때문이다. 예를 들어, 사용자가 임의로 만든 Stack.class 가 있다고 하자. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Obje..
"불필요한 객체 생성을 피하라"는 원칙은 성능 향상과 메모리 효율성을 높이는 데 기여할 수 있다. 실제로, 똑같은 기능을 하는 객체를 반복적으로 생성하기보다는 필요할 때 재사용하는 것이 더 나을 수 있고, 종종 더 빠르기도 하다. 하지만, 이 원칙을 "어떠한 상황에서도 불필요한 객체 생성을 하지 말라"로 오해해서는 안 된다. 현대의 자바 가상 머신(JVM)은 작은 객체의 생성과 회수에 매우 효율적으로 최적화되어 있다. 간단한 객체를 생성하는 것이 프로그램의 명확성, 간결성, 기능성을 향상하는 경우, 이를 피할 이유는 없다. 특히, 방어적 복사가 필요한 상황에서 객체를 재사용하는 것은 주의가 필요한데, 잘못된 객체 재사용은 예측 불가능한 버그와 심각한 보안 문제를 초래할 수 있다. 반면, 불필요한 객체 생..
싱글톤(Singleton) 싱글톤(Singleton)은 특정 클래스의 인스턴스가 애플리케이션 내에서 단 하나만 존재하도록 보장하는 패턴이다. 싱글톤은 전역 상태를 생성하거나, 리소스를 공유하는 데 유용하며, 객체의 중복 생성을 방지하고 전체 시스템에서 하나의 인스턴스만을 사용하도록 한다. 싱글톤을 쓰는 이유 싱글톤 패턴을 이용하는 이유는 다음과 같다. 리소스 관리 및 접근 제어 : 싱글톤 패턴은 특정 자원이나 서비스에 대한 접근을 제어하는 데 유용하다. 싱글톤은 한 번에 하나의 인스턴스만이 자원을 사용하도록 보장함으로써, 리소스의 과도한 사용을 방지할 수 있다. 메모리 효율성 : 싱글톤은 필요한 시점에만 인스턴스를 생성하고, 이후에는 동일 인스턴스를 재사용한다. 이는 메모리 사용을 줄이고 시스템의 전반적..
정적 팩토리 [Java] 생성자 대신 정적 팩토리 메서드를 고려하라 생성자 대신 정적 팩토리 메서드를 고려하라 생성자(constructor)는 객체 지향 프로그래밍에서 클래스의 인스턴스를 초기화하는 메서드이다. 주된 목적은 객체 생성시점에 필요한 초기화 작업을 olrlobt.tistory.com 생성자에 매개변수가 많다면 빌더를 고려하라 자바에서는 객체를 생성하기 위해, 생성자와 정적 팩토리 메서드를 사용한다. // 생성자를 이용한 객체 생성 Car electricCar = new Car("테슬라"); Car petrolCar = new Car("모닝", 50); // 정적 팩토리 메소드를 이용한 객체 생성 Car electricCar = Car.createElectricCar("테슬라"); Car pe..
생성자 대신 정적 팩토리 메서드를 고려하라 생성자(constructor)는 객체 지향 프로그래밍에서 클래스의 인스턴스를 초기화하는 메서드이다. 주된 목적은 객체 생성시점에 필요한 초기화 작업을 수행하는 것이다. 정적 팩토리 메서드(static factory method)는 생성자의 제한점에 대한 대안을 제공하는 재사용 가능한 소프트웨어 설계의 해결책이다. 정적 팩토리 메서드를 생성자 대신 사용함으로써 객체의 생성을 단순화하고 코드의 가독성을 높이는데 사용할 수 있다. 정적 팩토리 메서드가 생성자보다 좋은 이유 정적 팩토리 메서드가 생성자보다 좋은 이유 다섯 가지는 다음과 같다. 이름을 가질 수 있다. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 반환 타입의 하위 객체를 반환할 수 있는 능력이 ..
[회고록] 싸피9기 인터뷰 탈락 후기 싸피 9기 합격자가 발표된 지 2주가 지났다. 추가합격이 될지 모른다는 희망에 탈락 후기를 미루었었는데, 이제는 그냥 마음을 접고 공부를 열심히 하기로 정해서, 탈락 후기를 쓰며 실수를 반복 olrlobt.tistory.com [회고록] 싸피 10기 합격 후기 [회고록] 싸피9기 인터뷰 탈락 후기 싸피 9기 합격자가 발표된 지 2주가 지났다. 추가합격이 될지 모른다는 희망에 탈락 후기를 미루었었는데, 이제는 그냥 마음을 접고 공부를 열심히 하기로 정 olrlobt.tistory.com 내가 정말 들어가고 싶었던 삼성 청년 SW 아카데미의 5개월간의 1학기 과정이 모두 끝이 났다. 1학기를 마무리 지으며, 학기 중 코딩 집중과정은 어떤 식으로 진행되었고 나는 어떻게 학..
Garbage Collection (GC , 가비지 컬렉션) Garbage Collection은 JAVA의 메모리 관리 방법 중 하나이며, JVM에 내장된 가바지 컬렉터로 메모리를 관리하는 방법이다. 말 그대로 쓰레기, 개발자가 동적으로 할당한 메모리 영역 중 더 이상 사용하지 않는 객체나 데이터를 찾아내어 메모리를 회수하는 과정을 의미한다. 가비지 컬렉션은 자동 메모리 관리 방식으로, 개발자가 객체 생성을 자유롭게 하고 직접 메모리를 해제할 필요 없게 한다. Garbage Collector (가비지 컬렉터) Garbage Collector는 Garbage Collection을 수행하는 구체적인 시스템이나 알고리즘을 의미한다. JVM에 내장된 가비지 컬렉터는 Serial GC, Parallel GC, G..