yooputer's devlog

고정 헤더 영역

글 제목

메뉴 레이어

yooputer's devlog

메뉴 리스트

  • 홈
  • 분류 전체보기 (167)
    • Computer Science (10)
      • 알고리즘 (2)
      • 데이터베이스 (8)
    • Programming Language (3)
      • Java (1)
      • Python (1)
      • JavaScript (1)
    • Framework (9)
      • Spring | SpringBoot (6)
      • SwiftUI (0)
      • DBMS (2)
    • Project (37)
      • WithParents (18)
      • Meta ESG (7)
      • MugLog (1)
      • 영풍문고 리뉴얼 (3)
      • 정산타임 (1)
      • 포트폴리오(NextJS + Notion API) (6)
      • etc. (1)
    • Coding Test (43)
      • 개념 (0)
      • 문제풀이 (43)
    • 컴공 수업 (0)
      • 오픈소스 소프트웨어 (0)
      • 정보검색 (0)
      • 컴파일러 (0)
    • Development Study (57)
      • 개발 관련 도서 (7)
      • 이펙티브 자바 (15)
      • SQLP (2)
      • 잡기술 (14)
      • 도커 (4)
      • 대용량 트래픽 처리 (6)
      • AI 개발 활용기 (4)
      • HTML&CSS (2)
      • 프론트엔드 (2)
    • 취업준비 (1)
      • 면접후기 (0)
      • 면접준비 (0)
    • 주절주절 (4)

검색 레이어

yooputer's devlog

검색 영역

컨텐츠 검색

Development Study

  • [이펙티브 자바] Item 8. finalizer와 cleaner 사용을 피하라 | 2장

    2023.04.12 by yooputer

  • [이펙티브 자바] Item 7. 다 쓴 객체 참조를 해제하라 | 2장

    2023.04.05 by yooputer

  • [이펙티브 자바] Item 6. 불필요한 객체 생성을 피하라 | 2장

    2023.04.05 by yooputer

  • [이펙티브 자바] Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 | 2장

    2023.04.05 by yooputer

  • [이펙티브 자바] Item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 | 2장

    2023.03.29 by yooputer

  • [이펙티브 자바] Item 3. private 생성자나 열거타입으로 싱글턴임을 보증하라 | 2장

    2023.03.29 by yooputer

  • [이펙티브 자바] Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 | 2장

    2023.03.22 by yooputer

  • [이펙티브 자바] Item 1. 생성자 대신 정적 팩토리 메서드를 고려하라 | 2장

    2023.03.15 by yooputer

[이펙티브 자바] Item 8. finalizer와 cleaner 사용을 피하라 | 2장

이펙티브 자바 2장 Item8를 요약한 내용입니다. 자바의 객체소멸자 자바는 finalizer와 cleaner라는 객체 소멸자를 제공한다. finalizer와 cleaner은 많은 문제를 야기하므로 특정 상황을 제외하곤 사용하지 않는다 finalizer와 cleaner의 문제점 1. 즉시 수행된다는 보장이 없다. 언제 수행될지는 가비지 컬렉터 알고리즘에 달려있다. 2. 수행 여부조차 보장하지 않는다 System.gc나 System.runFinalization 메서드는 실행가능성을 높여주지만 실행을 보장하진 않는다 이들의 실행을 보장하는 System.runFinalizersOnExit와 Runtime.runFinalizerOnExit가 있지만 심각한 결함이 존재한다 3. finalizer 동작중 예외 발생..

Development Study/이펙티브 자바 2023. 4. 12. 14:04

[이펙티브 자바] Item 7. 다 쓴 객체 참조를 해제하라 | 2장

이펙티브 자바 2장 Item7를 요약한 내용입니다. 자바처럼 가비지 컬렉터를 갖춘 언어는 메모리 관리에 신경쓸 일이 줄어든다. 하지만 다 쓴 객체의 참조를 해제하지 않는 경우 메모리 누수가 발생할 수 있다. 다 쓴 참조(obsolete reference)란 앞으로 다시 쓰지 않을 참조라는 뜻이다. 다 쓴 참조라도 그 객체를 참조하는 객체가 존재한다면 가비지컬렉터가 회수해가지 못한다. 다 쓴 참조를 해제하는 가장 좋은 방법은 참조를 담은 변수를 유효 범위 밖으로 밀어내는 것이다 이것은 변수의 범위를 최소가 되게 정의하면 자연스럽게 이루어진다. 스스로 메모리를 관리하는 클래스는 사용하지 않는 참조를 null처리하여 가비지 컬렉터에게 해당 객체는 더이상 사용하지 않을 것임을 알려야 한다. 객체 참조를 캐시에 ..

Development Study/이펙티브 자바 2023. 4. 5. 11:00

[이펙티브 자바] Item 6. 불필요한 객체 생성을 피하라 | 2장

이펙티브 자바 2장 Item6를 요약한 내용입니다. 객체 생성 vs 객체 재사용 요즘 JVM의 가비지컬렉터는 최적화가 잘 되어 있어 가벼운 객체를 다룰 때는 객체 풀을 만들어 객체를 재사용하는 것보다 새로 생성하는게 훨씬 빠르다. 따라서 일반적으로 프로그램의 명확성, 간결성, 기능을 위해 객체를 추가로 생성하는 일은 문제가 되지 않는다. 하지만 굳이 필요하지 않는 객체 생성은 피하는 것이 좋다. 또한 객체를 재사용했을 때 문제가 없고, 객체 생성 비용이 큰 경우에는 객체를 재사용하는 것이 좋다. 불필요한 객체 생성을 줄이는 방법 불필요한 객체 생성을 줄이기 위해서는 생성자 대신 정적 팩터리 메서드를 사용하는 것이 좋다. 생성자는 호출할 때마다 새로운 객체를 만들지만 팩터리 메서드는 재사용되는 객체를 반환..

Development Study/이펙티브 자바 2023. 4. 5. 10:25

[이펙티브 자바] Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 | 2장

이펙티브 자바 2장 Item5를 요약한 내용입니다. 클래스에서 자원을 사용해야하는 경우 클래스 내에서 자원 인스턴스를 직접 생성하고 정적 유틸리티 클래스 혹은 싱글턴으로 구현하는 경우가 있다. 하지만 이 방법은 자원에 따라 다른 동작을 할 수 없고 테스트가 어려우며 멀티스레드 환경에서 사용할 수 없다. 대신 인스턴스를 생성할 때 생성자에게 필요한 자원을 넘겨주는 의존 객체 주입방식으로 구현하는 것이 좋다 의존객체주입은 생성자, 정적 팩터리, 빌더 모두에 똑같이 응용할 수 있다 이 패턴의 변형으로 생성자에 자원 팩터리를 넘겨주는 방식이 있다 자바8에서 등장한 Supplier 인터페이스가 팩터리의 예이다. 의존성이 큰 프로젝트는 코드가 어지러워진다. 스프랑 같은 의존객체주입 프레임워크를 사용하여 문제를 해결..

Development Study/이펙티브 자바 2023. 4. 5. 09:22

[이펙티브 자바] Item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 | 2장

이펙티브 자바 2장 Item4를 요약한 내용입니다. java.lang.Math와 java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓은 클래스, java.util.Collections처럼 정적메서드를 모아놓은 클래스, final 클래스와 관련 메서드를 모아놓은 클래스는 인스턴스로 만들어 사용하도록 설계된게 아니다. 따라서 인스턴스화를 막아야 한다. 추상클래스로 만드는 것은 인스턴스화를 막을 수 없다. 하위 클래스를 만들어 인스턴스화할 수 있기 때문이다. 인스턴스화를 막기 위해서 private 생성자를 사용한다. 생성자를 private로 설정하면 외부에서 호출할 수 없기 때문에 인스턴스를 생성할 수 없다. 하지만 클래스 내부에서는 생성자를 호출할 수 있는데 이를 막기 위해서 생성..

Development Study/이펙티브 자바 2023. 3. 29. 09:56

[이펙티브 자바] Item 3. private 생성자나 열거타입으로 싱글턴임을 보증하라 | 2장

이펙티브 자바 2장 Item3을 요약한 내용입니다. 싱글턴이란 인스턴스를 오직 하나만 생성할 수 있는 클래스이다. 싱글턴을 만드는 방법에는 public static final 필드를 이용하는 방법과 정적 팩터리 메서드를 구현하는 방법과 원소가 하나인 enum 타입으로 구현하는 방법이 있다. public static final 필드를 이용하는 방법의 예제는 아래와 같다. public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis(){...} } 생성자가 private이기 때문에 외부에서 호출할 수 없고 Elvis.INSTANCE를 초기화할 때 딱 한번만 실행된다. 이 방식의 장점은 해당 클래스가 싱글턴임이 명확하고..

Development Study/이펙티브 자바 2023. 3. 29. 09:42

[이펙티브 자바] Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 | 2장

선택적 매개변수가 많을 때 사용할 수 있는 패턴으로는 점층적 생성자 패턴, 자바빈즈 패턴, 빌더 패턴이 있다. 점층적 생성자 패턴이란 필요한 매개변수에 따라 생성자 혹은 정적 팩토리 메서드를 여러개 만드는 방식이다. 하지만 매개변수가 많아지면 잘못된 매개변수를 넘기거나 매개변수 순서가 바뀔 수도 있어서 버그를 유발한다 자바빈즈 패턴이란 매개변수가 없는 생성자로 객체를 만든 후 세터메서드를 통해 매개변수의 값을 설정하는 방식이다 객체 하나를 만들기 위해 여러 메서드를 호출해야 하고, 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태이다. 클래스를 불변으로 만들 수 없으며 스레드 안전성을 위해 프로그래머가 추가적으로 작업해줘야 한다. 빌더패턴이란 빌더객체를 생성하고 메서드체이닝을 통해 원하는 매개변수를 ..

Development Study/이펙티브 자바 2023. 3. 22. 10:06

[이펙티브 자바] Item 1. 생성자 대신 정적 팩토리 메서드를 고려하라 | 2장

클라이언트가 클래스의 인스턴스를 얻는 수단에는 public 생성자와 정적 팩토리 메서드가 있다. 일반적으로 생성자를 통해 객체를 생성하고 반환하는 경우가 많은데 정적 팩토리 메서드를 사용하면 많은 이점을 얻을 수 있다. 정적 팩토리 메소드를 사용해야하는 이유는 다음과 같다. 1. 이름을 가질 수 있다. 메소드의 이름을 통해 반환할 객체의 특성을 설명할 수 있다. 한 클래스에 시그니처가 같은 생성자가 여러개일 때 정적 팩토리 메서드를 사용하는 것이 효과적이다. 2. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. 정적 팩토리 메서드를 통해 반복되는 요청에 대해 같은 객체를 반환할 수 있다. 이런식으로 인스턴스를 통제하여 클래스를 싱글턴으로 만들 수도 있고 인스턴스화 불가로 만들 수도 있다. 3. 반환..

Development Study/이펙티브 자바 2023. 3. 15. 11:04

추가 정보

인기글

최신글

페이징

이전
1 ··· 4 5 6 7 8
다음
TISTORY
yooputer's devlog © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바