본문 바로가기

분류 전체보기361

[Infra 2편] JIT, HotSpot 정리 목차는 Infra 목차 에 있습니다. [Infra 2편] JIT, HotSpot 정리 JIT 란? just-in-time compilation 의 약자이며, 프로그램을 실행하는 시점에 기계어로 번역하는 컴파일 기법입니다. 정적 , 동적 컴파일 방식 기계어로 번역하는 방법에는 2가지가 있습니다. 정적, 동적 정적 컴파일은 실행하기 전에 프로그램 코드를 기계어로 번역하는 것입니다. 동적 컴파일은 프로그램 코드를 읽으면서 실행하는 것입니다. JIT 는 어떤 컴파일 방식인가? JIT 는 정적 + 동적 컴파일 방식을 합친 방식이며, 다음과 같은 FLOW 를 통해 거칩니다. Java Code --> 컴파일러 --> Java byte code (JVM 이 해석할수 있는) --> JVM(JIT 가 관여) --> 기계어.. 2024. 2. 17.
[테스트 및 리팩토링 9편] Junit5 정리 목차는 테스트 & 리팩토링 목차 에 있습니다. [테스트 및 리팩토링 9편] Junit5 정리 추후 찾아보기 위해 정리했습니다. 내용을 보강할 예정입니다. ExtendWith Junit5 의 라이프사이클 중 Test 에서 사용할 기능을 확장하는 것입니다. ExtendWith (SpringExtension.class) spring TestContext + Junit5 통합하여 사용합니다. 인터페이스 : BeforeAllCallback, AfterAllCallback, TestInstancePostProcessor, BeforeEachCallback, AfterEachCallback, BeforeTestExecutionCallback, AfterTestExecutionCallback, ParameterReso.. 2023. 10. 10.
[spring 22편] 멀티스레드 환경 로그 식별 (MDC, ThreadLocal) 목차는 spring series 목차 에 있습니다. [spring 22편] 멀티스레드 환경 로그 식별 (MDC, ThreadLocal) 나중에 볼려고 정리했습니다. 상황 멀티 스레드 환경에서 로그를 찍다보면 식별이 안되는 경우가 있습니다. 멀티스레드 환경에서는 컨텍스트 스위칭이 일어나 실행이 되기 때문에 로그가 섞이기 때문입니다. 이를 해결하는 방법중 Correlation ID 라는 것이 있습니다. Correlation ID, ThreadLocal 위와 같은 상황을 해결하기 위해 같은 스레드 요청에 대해 특정 ID 를 부여해 grouping 할 수 있습니다. 이를 Correlation ID 라고 합니다. 자바에서는 이를 구현하기 위해 ThreadLocal 을 제공하며, ThreadLocal 은 동일한 스.. 2023. 10. 6.
[spring redis 1편] 분산락 (redis, spring) 목차는 spring redis 목차 에 있습니다. [spring redis 1편] 분산락 (redis, spring, lettuce) RedisLockRegistry spring integration 에서 제공해주는 Redis 분산락 입니다. spin lock, pub-sub lock 옵션을 제공하며, pub-sub 이 성능상 이유로 선호 됩니다. spin lock 은 주기적으로 lock 을 획득하며, pub-sub 은 pub-sub 구조로 lock 을 획득하기에 성능상 유리합니다. 어떻게 동작하는지? LockRegistry 는 UUID 와 lock 의 map 을 메모리에 가지고 있습니다. lockRegistry 는 일종의 lock 저장소입니다. lockRegistry 에서 lock 을 획득하려고 할 때.. 2023. 10. 5.