전체 글

전체 글

    Reflection

    Reflection ? 구체적인 클래스 타입을 알지 못해 그 클래스의 메소드와 타입 그리고 변수들에 접근할 수 있도록 해주는 자바 API이다. 즉, 구체적인 클래스 타입을 모를때 사용하는 방법 컴파일 시간(Compile Time)이 아닌 실행 시간(Run Time)에 동적으로 특정 클래스의 정보를 추출 Spring framework, Intellij 자동완성, jackson Library 등에서 사용 장점 확장성 특징 애플리케이션은 정규화된 이름을 사용하여 확장성 객체의 인스턴스를 생성하여 외부 사용자 정의 클래스를 사용할 수 있다. 클래스 브라우저 및 시각적 개발 환경 제공 클래스 브라우저는 클래스의 Method, Property, Consturctor를 열거할 수 있어야 한다. 시각적인 개발 환경은 ..

    리플렉션(Reflection) ?

    Reflection ? 구체적인 클래스 타입을 알지 못해 그 클래스의 메소드와 타입 그리고 변수들을 접근할 수 있도록 해주는 자바 API 즉, 구체적인 클래스 타입을 모를때 사용하는 방법 Spring framework, Hibernate ORM, jackson Library 등에서 사용 장점 확장성 특징 애플리케이션은 정규화된 이름을 사용하여 확장성 객체의 인스턴스를 생성하여 외부 사용자 정의 클래스를 사용할 수 있다. 클래스 브라우저 및 시각적 개발 환경 제공 클래스 브라우저는 클래스으 Method, Property, Consturctor를 열거할 수 있어야 한다. 시각저인 개발 환경은 개발자가 올바른 코드를 작성하는데 도움이 되도록 Reflection에서 사용할 수 있는 형식 정보를 사용하면 도움이 ..

    GC ( Garbage Collection ) ?

    GC ( Garbage Collection ) ?

    2021.11.10 Java Study // Stop-the-world GC을 실행하기 위해 JVM이 애플리케이션 실행을 정지 stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈추고 GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작 GC(Garbage Collection) ? 메모리 관리 기법 중 하나 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제 Young, Old 영역 1. Young 영역 ( Young Generation ) 새롭게 생성된 객체의 대부분이 위치 대부분의 객체가 금방 접근 가능 상태가 되기 때문에 많은 객체가 Young 영역에서 생성되었다 사라짐 Minor GC가 발생 2. Old 영역 ( Old Ge..

    제네릭 타입소거 (Generic type Erasure)

    Generic Type Erasure Java에서는 제네릭 클래스를 인스턴스화 할 때 해당 타입을 지운다. 그 타읍은 컴파일시에만 존재하고 컴파일된 코드에서는 어떠한 타입 파라미터의 정보를 찾아볼 수 없다. 제네릭의 컴파일의 과정 //자바코드 public void test(){ List strings = new ArrayList(); } //바이트 코드 public test()V L0 LINENUMBER 8 L0 NEW java/util/ArrayList DUP INVOKESPECIAL java/util/ArrayList. ()V ASTORE 1 L1 LINENUMBER 9 L1 RETURN L2 LOCALVARIABLE this Lexample/lezhin/timeline/controller/TestC..

    [NHN] git cherry-pick 다른 브랜치의 일부 커밋만 반영하고 싶을 때

    매일 기술블로그 Review 2021-11-05 / 링크 git cherry-pick: 다른 브랜치의 일부 커밋만 반영하고 싶을 때 : NHN Cloud Meetup / 정리 git cherry-pick: 다른 브랜치의 일부 커밋만 반영하고 싶을 때 git을 사용할 때 대부분 master 브랜치를 이용해서 운영을 한다. 가끔 중, 대규모 개편을 하게 되면 브랜치 두 개를 동시에 관리해야 할 애로사항이 생긴다. git branch master next-release 2개의 브랜치가 있을 때 master는 운영중인 브랜치고, next-release 는 대규모 개편때 반영될 코드이다. 만약 master와 next-release 둘 다 반영해야 할 오타가 발견되면 다음과 같이 하면 된다. git checkout..

    [NHN] Integer.valueOf(127) == Integer.valueOf(127) 는 참일까요?

    매일 기술블로그 Review 2021-11-03 / 링크 [Java] Integer.valueOf(127) == Integer.valueOf(127) 는 참일까요? : NHN Cloud Meetup / 정리 Integer.valueOf(127) == Integer.valueOf(127) is true ??? Integer a = 127; Integer b = 127; a == b (true ? false ?) 2개의 Integer의 객체가 있을 때 a == b 일까 ? int 리터럴을 Integer reference로 직접 대입하는 것은 auto-boxing 컨셉의 예 리터럴 값이 객체로 변환되는 코드는 컴파일러에 의해 수행되고, 컴파일 시간동안 컴파일러는 Integer a =127; 을 Integer ..

    자바의 컴파일 과정과 JVM에서 HEAP의 변화

    자바의 컴파일 과정과 JVM에서 HEAP의 변화

    자바의 컴파일 과정 개발자가 .java 자바 소스코드를 생성한다. 자바 컴파일러에 의해 .java가 컴파일되어 .class 파일로 아직 컴퓨터가 읽을 수 없는 상태인 Java bytecode로 만든다. 컴파일된 변환 코드를 JVM의 Class Loder로 전달한다. Class Loader는 동적로딩을 통해 필요한 클래스들을 로딩 및 링크하여 Runtime Data Area에 올린다. 클래스 로더의 세부 동작 로드 : 클래스 파일을 가져와서 JVM의 메모리에 로드한다. 검증 : 자바 언어 명세 및 JVM 명세에 명시된 대로 구성되어 있는지 검사한다. 준비 : 클래스가 필요로 하는 메모리에 할당한다. 분석 : 클래스의 상수 풀 내 모든 심볼릭 레퍼런스를 다이렉트 레퍼런스로 변경한다. 초기화 : 클래스 변수들..

    [네이버] OAuth와 춤을

    [네이버] OAuth와 춤을

    매일 기술블로그 Review 2021-11-02 / 링크 [NAVER D2]OAuth와 함께 춤을 / 정리 OAuth ? 인증을 위한 오픈 스탠더드 프로토콜 사용자가 Facebook이나 트위터 같은 인터넷 서비스의 기능을 다른 애플리케이션에서도 사용할 수 있게 한 것 2010년 IETF OAuth 워킹그룹에 의해 IETF 표준 프로토콜로 발표 Auth는 'Authentication(인증)' 뿐만 아니라 'Authorization(허가)' 를 포함 OAuth 인증을 진행할 때 해당 서비스 제공자는 '제 3자가 어떤 정보나 서비스에 사용자의 권한으로 접근하려 하는 허용하겠느냐'라는 안내 메시지를 보여준다. OpenID와 OAuth OpenID 주요 목적 → 인증(Authentication) Open ID를 ..