Java) new int[Integer.MAX_VALUE]

Large arrays public static void main(String[] args) { int[] arr = new int[Integer.MAX_VALUE]; } 카운팅 정렬(Counting sort)를 실습해 보려고 이것 저것 배열을 만들어 보던 도중, 위의 코드를 실행하자 에러가 발생 했습니다. Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit 2,147,483,647 의 크기로 생성을 시도 했는데, Java Virtual Machine이 배열의 크기에 제한을 걸어 두었다며 에러가 던져졌습니다. 실제 openjdk 의 코드를 조금 살펴보니, VM마다 각기 다른 배열 크기 제한을..

Programming/Java 2022.04.29
SpringBoot의 JSON 직렬화시 날짜 처리

Intro SpringBoot 버전을 1.5에서 2.5로 마이그레이션 한 이후로 인지하지 못했던 여러가지 변화 들이 하나 둘 씩 더 발견되고 있습니다. 이번에 발견된 변화는 꽤나 당황스러웠는데.. Date 객체를 JSON으로 직렬화 할 때, 그 형태가 달라졌다는 겁니다. API 를 제공하는 입장에서는 일관적인 포맷으로 제공해주는게 굉장히 중요한데 API 스펙 자체가 변경되어 버릴 수 있는 큰 문제 입니다. 비교를 해 보면 Spring Boot 1.5 에 의존하는 프로젝트 Spring Boot 2.5 에 의존하는 프로젝트 스프링 부트 버전이 달라졌을 뿐인데 반환하던 API의 포맷이 변경 되어 버렸습니다. 이 변경을 추적 해 보겠습니다. 다소 내용이 길기 때문에 과정을 건너 띄고 설정 방법만 보려면 Spri..

Programming/JPA ⁄ Spring 2022.04.28
IntelliJ IDEA에서 Lombok 패키지를 못 찾을 때

Intro 이제 스프링 부트 2.5 버전으로 마이그레이션 해서 프로젝트를 진행한지도 한달이 넘었습니다. 간만에 확인할게 좀 생겨서 다시 예전 버전으로 돌린 뒤에 인텔리제이에서 프로젝트를 실행 하려고 했는데 빌드가 맘처럼 되질 않았습니다. java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process "jps.track.ap.dependencies" VM flag to enable/disable incremental annotation processing environment. 위와 같은 에러가 먼저 뜨고 이어서 java:..

Development/Daily Error 2022.04.27
Apache JMeter를 활용한 부하테스트

Intro 부하테스트는 여러명의 사용자가 동시에 어플리케이션에 요청을 보내는 상황을 시뮬레이션 하여 다양한 부하조건에서의 응답을 테스트 하는 과정 입니다. 얼마만큼의 요청을 견딜 수 있는지 테스트 함으로서 병목 구간을 찾아 성능 개선을 하거나 서버를 증설하는 등의 필요한 대응을 할 수 있습니다. 다양한 테스트 툴이 있지만, 사용하기 쉬운 JMeter를 활용해 간단한 테스트를 진행 해 보겠습니다. 설치 Apt-cache로 검색을 해 봤더니 이미 apt 저장소에 있길래 apt를 이용해 설치 해 보았습니다. sudo apt install jmeter https://jmeter.apache.org/download_jmeter.cgi MacOS 유저라면 brew로 설치 하셔도 되고, Apache 홈페이지를 통해 ..

Development/DevOps 2022.04.26
Spring Boot 단독실행시 no main manifest attribute 에러 해결

Intro no main manifest attribute, in 에러 발생 지금까지는 외장 톰캣을 이용해서 어플리케이션을 배포 해 왔습니다. 하지만 스프링부트는 내장 톰캣을 가지고 있기 때문에 단독실행이 가능한데요, 단독 실행 했을때와 외장 톰캣으로 띄웠을때 각각의 성능 및 부하 테스트를 진행 해 보고 더 나은 방향으로 진행하기로 하여 기존에 만들어둔 war 파일을 바로 실행 해 보았습니다. 문제 그런데 기대와는 다르게 manifest 관련 에러가 발생 했는데요, 복잡한 문제는 아니지만 생각보다 검색했을 때 뚜렷한 해법을 찾기가 어려웠기 떄문에 글로 남겨 보려고 합니다 실행이 안되는 상황의 war 패키지 내 트리 구조 원인 말그대로 manifest 파일을 찾지 못했기 때문입니다. jar 혹은 war파일..

Development/Daily Error 2022.04.26