본문 바로가기
반응형

Java10

스프링 핵심 원리 - (5) 관심사의 분리 배우(구현체)는 본인의 배역(인터페이스) 구현에만 집중 특정 배우는 상대 배우가 누가 됐든 같은 역할을 수행해야한다. 배역에 어떤 배우를 섭외할 지, 공연 기획자가 필요하다 공연기획자를 만들고. 배우와 기획자의 책임을 분리하자 AppConfig : 실제 사용할 구현체를 지정 public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); } public OrderService orderService() { return new OrderServiceImpl( new MemoryMemberRepository(), new FixDiscoun.. 2022. 8. 4.
The Java, 코드를 조작하는 다양한 방법 클래스 로더 .class 에서 바이트코드를 읽고 메모리에 저장 로딩 : 클래스를 읽어오기 링크 : 레퍼런스를 연결하는 과정 초기화 : static 값들 초기화 및 변수에 할당 메모리 메소드 영역 : 클래스 수준의 정보 (클래스 이름, 부모 클래스 이름, 메소드, 변수) 저장. 공유자원 힙 영역 : 객체를 저장. 공유자원 스택영역 : 쓰레드 마다 런타임 스택을 만들고, 그 안에 메소드 호출을 스택 프레임이라 부르는 블럭으로 쌓는다. (Exception에서 나오는 함수 스택) PC : 쓰레드 마다 쓰레드 내 현재 실행할 instruction의 위치를 가리키는 포인터 네이티브 메소드 스택 (JNI 사용시) 실행엔진 인터프리터 : 바이트 코드 한줄 씩 실행 JIT 컴파일러 : 인터프리터 효율을 높히기 위해, 반.. 2021. 9. 1.
Envers / spring-data-envers 개요 Envers 모듈은 Hibernate 및 JPA와 함께 작동하는 핵심 Hibernate 모델입니다. Envers 모듈은 엔티티 클래스를위한 쉬운 감사 / 버전 관리 솔루션을 제공하는 것을 목표로합니다. 하이버네이트 핵심 모듈 JPA 스펙에 정의된 모든 매핑 감사 엔티티의 변경 이력을 자동 관리 트랜잭션 단위의 통합 Revision 관리 (Snapshot) REVINFO 테이블은 revision_id 와 Timestamp만 가지고 있고, 이력 테이블은 별도로 존재함. 한 트랜잭션 내에서 발생한 변경사항을 revision_id 1이라는 이력으로 여러 이력테이블에 각각 저장, revision_id 1인 항목의 해당 트랜잭션에서 변경된 모든 이력을 감사(audit)가능함 의존성 implementation(.. 2021. 8. 3.
JVM STW 시간 : minor GC < full GC 기본적인 GC 방법으로 Minor GC에서 Copy & Scavenge 알고리즘을 사용하고, Full GC에서 Mark & Compact 알고리즘을 사용하는 방법입니다. Copy & Scavenge Minor GC가 발생하면 Eden과 Survivor1의 활성 객체를 Survivor2로 복사하고, Eden과 Survivor1 영역을 비웁니다. 다음 Minor GC가 발생하면 Eden과 Survivor2의 활성 객체를 Survivor1로 복사하고, Eden과 Survivor2 영역을 비웁니다. 다음과 같은 작업을 반복적으로 수행해 오래된 객체는 Old 영역으로 옮겨지게 됩니다. Hit(GC에서 살아남은 횟수)가 Tenuring Threshold 만큼 수행된.. 2021. 6. 28.
728x90
반응형