일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Spring
- DDL
- 바이너리 카운팅
- stream
- cache
- lambda
- jwt
- 인덱스
- MSA
- docker
- DI
- KEVISS
- Test
- 생성자 주입
- select_type
- AOP
- 필드 주입
- static
- jpa
- 조합
- 열 속성
- java
- hashcode
- 재정의
- redis
- equals
- 테스트 코드
- SQL
- VUE
- StringBuilder
- Today
- Total
목록전체 카테고리 (196)
백엔드 개발자 블로그
자바에서는 사용하지 않는 객체의 경우 GC(Garbage Collection)에서 알아서 회수를 해주며 메모리 관리를 해줍니다. 하지가비지 컬렉션에서는 특정 상황에서 메모리 누수가 발생하고, 우리는 그러한 상황을 인지하고 대응해줘야합니다. 메모리 누수는 언제 발생할까? 다 쓴 객체 참조(obsolete reference)를 해제하지 않고 갖고 있을 경우 메모리 누수가 발생합니다. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_CAPACITY]; } public..
똑같은 기능의 객체를 매번 생성하기보다 하나의 객체를 재사용하는 것이 나을 떄가 많다. 1. new String()은 사용하지 말아라 new String() : 코드가 실행될 때마다 새로운 인스턴스가 생성됩니다. "문자열" : 스트링 풀에서 재사용합니다. 2. 정적 팩터리 메서드를 통해 인스턴스를 재사용할 수 있다. 정적 팩터리 메서드에서도 Effective Java 1. 생성자 대신 정적 팩터리 메서드를 고려하라 에서 호출될 때 인스턴스를 새로 생성하지 않아도 됩니다. 또한 불변이 아닌 가변 객체라도 사용중에 변경되지 않는다면 재사용이 가능합니다. 3. 생성 비용이 비싼 객체는 캐싱을 하여 재사용을 하라. String.matches에 사용되는 Pattern는 인스턴스 생성비용이 큽니다. 이러한 클래스는..
정적 유틸리티와 싱글턴의 단점 대부분의 많은 클래스들은 하나의 자원에 의존합니다. // 정적 유틸리티를 잘못 사용한 예 public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} public static boolean isValid(String word) {...} public static List suggestions(String typo) {...} } // 싱글턴 패턴을 잘못 사용한 예 public class SpellChecker { private final Lexicon dictionary = ...; private SpellChecker() {} public static S..
상황 정적 메서드와 정적 필드만을 담은 유틸리티 클래스를 생성하고 싶을 때가 존재합니다. java.lang.Math, java.util.Arrays와 같이 기본 타입 값이나 배열 관련 메서드를 모아둔 것 java.util.Collectios와 같이 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아둔 것 final 클래스를 상속하여 하위 클래스에 메서드를 넣는 것이 불가능하기에 final 클래스와 관련된 메서드를 모아둘 때 이런 유틸리티 클래스는 인스턴스로 만드려고 설계한게 아니라서, 클래스의 인스턴스화를 막아줘야합니다. 해결책 private접근 제어자를 가진 기본 생성자를 만들어 클래스의 인스턴스화를 막아주면 됩니다. 해당 클래스가 인스턴스화 될 일이 발생하지 않습니다. 상속을 불가능하게 ..