ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • java
    Dev Language/JAVA 2010. 12. 21. 17:10
    java HotSpot VM - use a two machine-word obnject header(cf: 3 word in the classic VM)
            - to reduce space consumption (the average java object size is small) -> 보통 8% heap size 줄임
            - first header : identity hash code and GC status information
            - second header : a reference to the object's class

    GC - fully accurate collector



    http://download.oracle.com/javase/1.3/docs/guide/performance/hotspot.html

    java HotSpot Architecture white paper :
    Memory management in the java HotSpot VM : http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf


    JDBC의 경우,
    Connection 인터페이스 : 서비스 인터페이스 역할 담당
    driverManager.registerDriver : 제공자 등록 api
    driverManager.getconnection : 서비스 접근 api
    driver : 서비스 제공자 인터페이스


    생성자
    - construct overloading 대신 builder 패턴 활용
    - 매개변수가 4개 이상일때?

    싱글톤 특성유지 - private 생성자, enum 타입

    finalizer : 객체가 사용할 수 없게 되는 시점부터 파이널라이저가 실행되는 시점까지 긴 시간이 소요
    - finalizer 스레드가 app의 다른 스레드 보다 우선 순위가 낮게 실행되어서 그 객체들이 finalize 되지 않았던 점

    객체의 참조만 비교할 경우, == 연산자 사용
    instanceof 연산자를 사용해서 전달된 인자가 올바른 타입인지 확인

    toString 메소드는 항상 오버라이드 하자
    - @override public String toString() {...}


    for-each
    배열 인덱스 수에 맞게. 딱
    int[] num={1,2,3,4,5}
    for (int i:num) System.our.println(i);
    결과 : 1 \n 2\n 3\n 4\n 5\n


    항목 19. 타입을 정의할때만 인터페이스를 사용하자.
    - 인터페이스 사용이유. : 상속의 유연성을 확보하기 위해서이지 않나., sub-class의 자유로운 구현?
    - No. 상수 인터페이스
      ※ 상수 인터페이스? 메소드는 갖지 않으면서, static final 필드만으로 구성
      . java.io.ObjectStreamConstants 존재
    - 상수 인터페이스 안티패턴

    항목 20. Tagged class 보다 클래스 계층을 사용하자
    how - abstract class - subclass 1
                         - subclass 2
    why 
    1. 가독성 저해, 복잡성 증가
    2. 불필요한 메모리 할당과 해지 증가 -> overhead
    ok~~~
    ※ switch-case : 런타임 에러 발생 가능..
    항목 21. 전략을 표현할때 함수 객체를 사용하자???
    Q - 전략? 함수객체?-함수포인터 지원?
    자바는 함수포인터 지원x but. 객체 참조를 사용해서 유사한 효과를 얻을 수 있다?
    Strategy 패턴? strategy interface
    function object - 메소드 하나만 달랑 외부에 제공하는 클래스의 인스턴스는 사실상 메소드 포인터 역할?
    항목 22. static 멤버 클래스를 많이 사용하자
    nested class = innner class
    - 다른 클래스 내부에 정의된 클래스
    - 유형 : static 멤버 클래스, static이 아닌 멤버 클래스, anonymous 클래스 local 클래스
      . static member class
        .. outer class의 static  멤버 -> 다른 static 멤버와 동일한 접근 규칙준수
        .. 용도 : public 지원 class
      . static이 아닌 member class
        .. 용도 : adapter 패턴 구현
      . anonymous 클래스
        .. 용도 : funtion object을 생성하는데 많이 사용

    chapter 5. Generics
    항목 23. 새로 작성하는 코드에서는 원천 타입을 사용하지 말자
    - 용어
      . 제네릭 클래스, 제네릭 인터페이스 : type parameter를 선언하고 있는 class or interface
       . 제네릭 타입 : 제네릭 클래스와 인터페이스
    - LIst interface : 하나의 타입 매개변수로 E, E는 list에 저장되는 요소의 타입
    migration compatibility 이주 호환성
    unbounded wildcard type
    - generic type Set<E>의 unbounded wildcard type Set<?> ("임의 타입의 set"이라 읽음)
    항목 24. 컴파일 경고 메시지가 없게 하자
    @SuppressWarnings("unchecked") 주석을 사용해서 경고 메시지를 안 나타나게 억제할 수 있다.
    항목 25. 배열보다는 list를 사용하자
    항목 26. 제네릭 타입을 애용하자
    항목 27. 제네릭 메소드를 애용하자.
    제네릭화 대상 : static 유틸리티 메소드
    항목 28. 바운드 와일드 카드를 사용해서 API의 유연성을 높이자
    와일드 카드 : 타입 매개변수가 있을 자리에 ?
    제네릭 프로그래밍 - http://sunfuture.springnote.com/pages/3088784
    바운드 와일드 카드 - sub type으로서의 와일드 카드
    PECS - producer - extends, consumer-super

    update : cvs repository -> local
    checkout : cvs repository -> local
    commit : local -> cvs repository
    issue tracking system
    - open tool : Matis, Bugzilla, Trac
    -----
    effective java
    항목 29. 타입안전이 보장되는 혼성(heterogenenous) 컨테이너의 사용을 고려
    - container : 객체를 저장하는 역할을 하는 클래스들을 포괄석으로 컨테이너..
    - type token :
    - 혼성 컨테이너 : 컨테이너를 매개변수화 하지 않고 저장되는 요소의 키 등을 매개변수화 함으로써 서로 다른 타입의 객체들이 같은 컨테이너에 저장 및 검색 될수 있는 것을 혼성 컨테이너라고 부름

    제약사항
    1. 클라이언트가 class 객체를 원천 타입의 형태로 사용하면, favorites 인스턴스의 타입 안전을 쉽게 훼손시킬수 있다는 것
    2. non-reifiable type(비구체화 타입)에 사용될 수 없다.
      - 구체화 타입 : 컴파일 시보다 런타임 시의 정보(타입과 같은)가 더 많은 타입. ex) 배열
      - 비구체화 타입 : 컴파일시의 정보(특히 타입 관련한)는 많지만, 런타임 시의 정보가 거의 없는 타입
         . 제네릭은 컴파일 시의 타입 정보는 있지만, 런타임시에는 그 정보가 없어지므로 비구체화 타입

    chapter 6.
    java 1.5 배포판 이후(현재 1.6) 추가된 타입 - enum 타입(열거형), annotation 타입(주석)
    enum 타입 - 클래스임, final,
     
    java print() 개행문자 - %n cf)c - \n


    @override
    public String toString() { return String.format("%s%d%n:, id, priority);}
    public String toString() { return symbol;}

     

    댓글

Written by Skymaker.