전체 글49 Kotlin inline 함수 Kotlin inline 함수란?inline 키워드로 생성된 함수를 호출하는 경우, 함수의 본문이 바이트코드로 변환될 때 그대로 인라인(inline)이 된다.즉, 바이트코드로 변환 시, 함수를 호출하는 코드로 변환되는 것이 아니라 함수 본문자체가 복사되어 변환되는 것이다.언제 쓸까?람다를 인자로 받는 함수의 경우함수 호출비용을 줄일 수 있음코틀린에서는 보통 람다를 무명클래스로 컴파일하고, 람다가 변수를 포획하는 경우에는 람다 생성 시점마다 무명클래스 객체가 생성이 된다. -> Heap 할당/ 람다 클래스 생성 / GC 비용이 발생해당 경우에 inline 함수를 사용하면 람다 클래스를 생성하거나 인스턴스를 생성하는 일이 없어지므로 메모리 성능상 이점을 가질 수 있음.예시inline을 적용하지 않은 함수에서.. 2025. 9. 29. @SpringbootApplication의 baseScanPackage 설정 이슈 이슈상황로컬에서 코드 수정하고 springboot 구동했을 때 애플리케이션은 띄워짐그런데 aws에 배포하니까 health 체크 실패하고 이벤트 수신도 못함Controller를 정의하여 /health api 호출 시 200응답 보내는 코드가 있음에도 health 체크 실패.AWS 설정에서 health 체크 path도 /health로 설정되어 있는 부분 확인하였음.이벤트 수신관련한 코드도 건드린적 없음.원인현재 패키지가 com.example.a 이고, com.domain에 있는 컴포넌트를 의존성주입 받을 일이 있어 @SpringbootApplication(scanBasePackages={"com.domain"})을 사용이 설정을 하고 Springboot 구동하니까 구동은 잘되는데, com.example.a .. 2024. 7. 13. Mockito verify()에서 파라미터 까지 검증하고 싶은 경우 Junit5 + Mockito를 함께 사용하는 예제를 준비했습니다.배경Mockito 사용 시 특정 메서드가 수행됐는지 확인하기 위해 verify()를 사용하는 경우가 많다.보통 이런 식으로 많이 사용할 것이다.verify(mock).doSomething(any(Person.class)); 이 때 메서드에 전달되는 파라미터 값까지 동일한지 확인하고 싶다면 어떤 방법이 있을까?(any()로 검증하는건 타입만 확인하는 것이라 불안하다.)ArgumentMatcher로 검증하기ArgumentMatcher 를 implements 혹은 익명 객체로 생성하여 파라미터를 검증할 수 있다.verify(list, times(2)).add(argThat(new ArgumentMatcher(){ public boolea.. 2024. 5. 29. java List.of에는 null이 포함될 수 없다. Java List.of() 에는 null이 요소로 포함될 수 없다.List.of()의 설명을 살펴보면 'Throws: NullPointerException - if an element is null' 리스트 요소가 null인 경우 NullPointerException을 발생한다고 명시되어있다. 위의 of()에서 호출하고 있는 ListN() 메서드의 구현을 살펴보면, Objects.requreNonNull()로 null 체크를 하고 있다. list.contains(null) 수행 시 NPE가 발생한다.추가로 List.of()로 생성된 불변리스트에 contains(null) 수행 시에도 NPE가 발생한다.이것도 코드 구현을 따라가보면 원인을 알 수 있다.contains() 내에서 indexOf() 라는 메서.. 2024. 5. 28. Kotlin gradle plugin 의존 타입 (api, implemantation, compileOnly, runtimeOnly) 의존 타입 (Dependency types)에 대한 설명 타입 설명 언제 사용할까? api Used both during compilation and at runtime and is exported to library consumers. 컴파일, 런타임 시 모두 적용하고 싶을 때 사용함. 해당 라이브러리 사용자들에게 의존한 라이브러리가 노출됨. If any type from a dependency is used in the public API of the current module, use an api dependency. 의존하는 타입이 현재 모듈의 public API에 사용될 때. implementation Used during compilation and at runtime for the curre.. 2024. 4. 1. [카프카 이론] '아파치 카프카 애플리케이션 프로그래밍 with Java' 를 읽고 1 1. 카프카의 탄생 링크드인 팀은 단방향 통신을 통해 source application에서 target application으로 연동하는 코드를 작성하여 시스템 운영을 하고 있었음. 시스템이 커질수록 단방향 파이프라인은 점점 많아졌고, target application에 장애가 생기면 source application까지 문제가 전파되었음. 이러한 문제를 해결하기 위해 링크드인 팀은 신규 시스템을 만들게 되었고, 이 것이 아파치 카프카. 각각의 애플리케이션 끼리 연결하는 방식이 아니라 한 곳에 데이터를 중앙집중할 수 있도록 구성하였음. 카프카를 중앙에 배치함으로써 애플리케이션 사이의 결합도를 낮추게 되었음. 카프카의 특징 1. 카프카 내부에 데이터를 저장하는 파티션(partition)은 FIFO Queu.. 2023. 9. 24. 이전 1 2 3 4 ··· 9 다음