함수형 인터페이스 추상 메서드가 하나만 존재하는 인터페이스이며, FunctionalInterface 어노테이션이 사용된 것만약, 추상 메서드가 두 개 존재한다면 Multiple non-overriding abstract methods found 에러가 뜬다. 커스텀 예시 함수형 인터페이스 생성@FunctionalInterfacepublic interface FuncInterface { T uniqueMethod(); default void printDefault() { System.out.println("print default!"); }} default, static 메서드의 개수는 무관하고, 추상 메서드만 하나 존재하면 된다. 함수형 인터페이스 사용public cl..
Map 초기화를 한 번만 해야 하는 이유Map을 사용하여 데이터를 매핑할 수 있습니다. 대신 사용하려면 사전에 데이터를 초기화해줘야 합니다.Map의 초기화를 인스턴스를 생성할 때 마다 한다면 성능 이슈가 발생할 수 있습니다. 어떻게 하면 static map 의 초기화를 한 번만 할지 고민하고 작성한 글입니다. 문제 상황public class AreaCode { private static Map areaCodeMap = new HashMap(); public AreaCode() { areaCodeMap.put("02", "서울"); areaCodeMap.put("064", "제주도"); System.out.println("Map 인스턴스 생성됐다!!!"); ..
용어 정리 Garbage Collector (이하 GC) C언어는 유효하지 않은 메모리인 가비지를 개발자가 직접 해제해 준다고 합니다. Java는 개발자가 가비지를 직접 해제해 주는 일이 없습니다. JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해 주기 때문입니다. 가비지 컬렉터는 주기적으로 JVM의 heap 메모리를 점검하여 스택에서 참조되지 않는 객체를 메모리에서 해제하는 장치입니다. Stop The World (이하 STW) 가비지 컬렉션을 실행하기 위해 JVM이 애플리케이션의 실행을 멈추는 작업입니다. GC가 실행될 때는 GC를 실행하는 쓰레드를 제외한 모든 쓰레드들의 작업이 중단되고, GC가 완료되면 작업이 재개됩니다. 모든 GC는 STW를 발생시키는데 Minor GC는 객체의 수명이 짧..
소나 큐브 소나 큐브는 정적 분석을 수행하는 오픈 소스 툴입니다. 중복 코드, 코딩 표준, 유닛 테스트, 코드 복잡도, 주석, 버그 및 보안 취약점에 대해서 검사하고 결과 보고서로 작성합니다. 정적 코드 분석 정적 분석은 프로그램을 실행(동적)하지 않고 소스 코드나 컴파일된 코드를 분석하는 작업을 말합니다. 왜 사용할까? - 개발 단계에서 코드의 구조적인 문제나 실수를 찾아냄 - 코드 작성 단계에서 차후 코드를 실행했을 때 발생할 가능성이 높은 문제를 미리 찾고 대처할 수 있음 - 단순이 버그나 오류를 찾아내는 것 뿐만 아니라 더 좋은 코드를 위한 개선점을 제시해 줌 사용법 1. Java JDK SE 17 설치 https://www.oracle.com/java/technologies/javase/jdk1..