Joy's Devlog

Joy's Devlog

  • 분류 전체보기 (112)
    • 전공 (33)
      • 네트워크 (14)
      • 운영체제 (12)
      • 컴파일러 (7)
      • 인공지능 (0)
      • 데이터마이닝 (0)
    • BOOKS (44)
      • SQL 전문가 가이드 (30)
      • 이펙티브 자바 (6)
      • Real MySQL 8.0 (8)
    • LECTURES (34)
      • 스프링 핵심 원리 기본편 (9)
      • 모든 개발자를 위한 HTTP 웹 기본 지식 (8)
      • 실전! 스프링 부트와 JPA 활용 (11)
      • 실전! 스프링 데이터 JPA (6)
    • EXPERIENCES (1)
      • ChatGPT 질문 답변 (1)
      • 우리FISA (0)
  • 홈
  • 공지사항
  • 태그
  • 아카이브
  • 방명록
  • GITHUB
RSS 피드
로그인
로그아웃 글쓰기 관리

Joy's Devlog

컨텐츠 검색

태그

MySQL Spring Java 데이터통신 익스텐트 맵 RealMySQL 쿼리 수행 과정 운영체제 JPA Effective Java 네트워크 동반 클래스 DB 버퍼 캐시 더티페이지 스토어드 프로그램 HTTP 정적 유틸리티 클래스 컴파일러 gap lock sqld

최근글

공지사항

아카이브

Effective Java(6)

  • [아이템13] 이 거추장스러운 코드는 CloneNotSupportedException이 사실은 비검사 예외(unchecked exception)였어야 했다는 신호다.

    @0verride public PhoneNumber clone() { try { return (PhoneNumber) super.clone(); } catch (CloneNotSupportedException e) { throw new AssertionError(); // 일어날 수 없는 일이다. }}Object의 clone() 메서드와 CloneNotSupportedException: 자바의 모든 객체는 Object 클래스를 상속하며, Object 클래스에는 clone() 메서드가 정의되어 있습니다. clone() 메서드를 호출하면 해당 객체를 복제하는 시도를 합니다. 그러나 clone() 메서드가 복제를 지원하지 않는 경우, 즉 해당 클래스가 Cloneable..

    2024.07.01
  • [아이템12] 하위 클래스들이 공유해야 할 문자열 표현이 있는 추상 클래스라면 toString을 재정의해줘야 한다.

    대다수 컬렉션 구현체는 추상 컬렉션 클래스들의 toString 메서드를 상속해 쓴다.public class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable { ...}public abstract class AbstractSet extends AbstractCollection implements Set { ...}public abstract class AbstractCollection implements Collection { ... public String toString() { Iterator it = iterator(); if (..

    2024.07.01
  • [아이템12] 정적 유틸리티 클래스는 toString을 제공할 이유가 없다.

    정적 유틸리티 클래스는 일반적으로 정적 메서드만 가지는 클래스이고, 필드가 있더라도 클래스를 나타내는 정보가 아니라 메서드의 기능을 수행하기 위해 필요한 정보를 저장하는 필드이므로 toString으로 보여줄 만큼 유용한 정보가 없기 때문에 toString을 제공할 필요가 없다.정적 유틸리티 클래스란?정적 유틸리티 클래스(Static Utility Class)는 자바에서 유용한 기능을 제공하는 정적 메서드(Static Methods)로 구성된 클래스입니다. 이러한 클래스는 주로 인스턴스 변수를 가지지 않고, 객체를 생성하지 않고도 메서드를 직접 호출하여 작업을 수행합니다. 정적 유틸리티 클래스는 코드의 모듈화와 재사용을 촉진하며, 자주 사용되는 기능을 논리적으로 그룹화하는 데 유용합니다.정적 유틸리티 클래..

    2024.07.01
  • [아이템8] finalizer를 사용한 클래스는 finalizer 공격에 노출되어 심각한 보안 문제를 일으킬 수도 있다.

    finalizer는 정적 필드에 자신의 참조를 할당하여 가비지 컬렉터가 수집하지 못하게 막을 수 있다.public class Zombie { static Zombie zombie; public void finalize() { zombie = this; }}객체 생성을 막으려면 생성자에서 예외를 던지는 것만으로 충분하지만 finalizer 있다면 그렇지도 않다.public class Zombie2 { static Zombie2 zombie; int value; public Zombie2(int value) { if(value vlaue 값에 대한 유효성 검사가 있지만 finalizer로 인해 무효화

    2024.07.01
  • [아이템3] 직렬화된 인스턴스를 역직렬화할 때마다 새로운 인스턴스가 만들어진다.

    싱글턴 클래스는 생성자를 private으로 만들기 때문에 인스턴스를 하나로 유지할 수 있는 것인데 역직렬화는 생성자를 사용하는 것이 아니라 직렬화된 객체의 정보를 읽어 그대로 복원하는 것이기 때문에 별도의 조치를 취하지 않으면 새로운 인스턴스가 생기는 것을 막을 수 없음readResolve 메서드는 직렬화된 데이터를 역직렬화할 때 호출되는 특별한 메서드로, 해당 메서드를 사용하여 역직렬화된 객체를 임의로 대체하거나 수정할 수 있는 기능을 제공public class Elvis { private static final Elvis INSTANCE = new Elvis(); private Elvis() {...} public static Elvis getInstance() {return INSTANCE;}..

    2024.07.01
  • [아이템1] 자바 8부터는 인터페이스가 정적 메서드를 가질 수 없다는 제한이 풀렸기 때문에 인스턴스화 불가 동반 클래스를 둘 이유가 별로 없다.

    이펙티브 자바자바 6 출시 직후 출간된 『이펙티브 자바 2판』 이후로 자바는 커다란 변화를 겪었다. 그래서 졸트상에 빛나는 이 책도 자바 언어와 라이브러리의 최신 기능을 십분 활용하도록 내용 전반을 철저히 다시 썼다. 모던 자바가 여러 패러다임을 지원하기 시작하면서 자바 개발자들에게는 구체적인 모범 사례가 더욱 절실해졌고, 관련 조언을 이 책에 담아낸 것이다. 3판에는 자바 7, 8, 9에서 자바 언어와 라이브러리에 추가된 특성들을 녹여냈다. 특히 그동안 객체 지향에 치중하던 자바에 새로 도입된 함수형 프로그래밍 요소도 자세히 알아본다. 람다(lambda)와 스트림(stream)만을 다룬 장을 포함하여 새로운 아이템도 많이 추가되었다. 새롭게 다루는 주제들 - 함수형 인터페이스, 람다식, 메서드 참조, ..

    2024.07.01
이전
1
다음
GITHUB
© 2018 TISTORY. All rights reserved.

티스토리툴바