-Xms -Xmx 는 무엇일까? Java vm 옵션이다. -Xms 는 Java 힙의 최초 크기를 지정하는 것 -Xmx 는 Java 힙의 최대 크기를 지정하는 것 즉, Java heap 메모리는 -Xms 로 지정한 메모리 크기로 시작하여 -Xmx 로 지정한 메모리 크키까지 커지게 된다. 예시로 다음과 같이 작성할 수 있다. java -Xms2048m -Xmx2048m -jar some-jar-file.jar Xms, Xmx는 왜 같은 값으로 지정하는 것일까? 상용 서비스 서버 빌드배포(CI/CD) 스크립트를 보다보면 -Xms, -Xmx 옵션에 같은 값이 적혀져 있는 경우를 많이 볼 수 있었다. 단순히 생각하면 같은 값을 준다는 것은 그냥 처음부터 최대크기의 heap 메모리를 사용하겠다 라는 것인데... 왜..
이 글에서는 Spring boot 프로젝트를 Container image로 만드는 법에 대해 알아보겠습니다. Spring Boot 공식문서에서는 2가지 방법을 소개하고 있습니다. 1. Dockerfiles 2. Cloud Native Buildpacks 이 2가지 방법에 대해 자세히 살펴보도록 하죠! Dockerfiles 일반적으로 container image로 만들 때 활용하는 Dockerfile을 정의해 사용하는 방법 Spring project의 결과물을 container image로 만들 때, 아주 간단히 Dockerfile 을 작성하면 다음과 같이 작성할 수 있습니다. Gradle인 경우, ./gradlew bootJar 을 통해 쉽게 jar로 패키징할 수 있습니다. 패키징 이후, docker b..
앞에 개인적인 이야기 많아서, Maven Profile 설정한 부분은 아래에 있습니다. 필요한 부분만 보세요 ! 경험 Spring을 올해 처음 학습하기 시작했는데, 그러다보니 빌드 도구에 있어 Gradle에만 익숙하고 Maven은 사용해본 적이 없었다. - 사실 여러 이야기를 들었을 때 Gradle이 더 관리하기 좋다고들 해서, Maven은 과거의 유물... 같은 느낌으로 보고 있었다. 그러다보니 당연히도 gradle로만 빌드하고 있었는데, Spring cloud function, Spring native 같은 최근 나온 기술들에 대한 문서들을 읽으니 빌드 구성에 있어 Maven을 더 활용하기도 하고, 해당 기술들을 다룰 땐 Maven이 더 적합하다는 말도 있었다. 나는 "그래도 gradle로 가보자"라..
Web Reactive Stack 공식문서의 WebClient 부분을 읽고 해석하며 작성했습니다. Web on Reactive Stack The original web framework included in the Spring Framework, Spring Web MVC, was purpose-built for the Servlet API and Servlet containers. The reactive-stack web framework, Spring WebFlux, was added later in version 5.0. It is fully non-blocking, supports docs.spring.io Markdown으로 작성 후에 블로그로 옮기게 되었는데, 깨지는 부분이 존재하네요 😢 만약..
Code: https://github.com/KimDoubleB/spring-learning/tree/master/http 개발을 하다보면, 직접 HTTP 요청을 수행해보며 테스트 해보고 싶을 때까 있다. 직접 테스트 코드를 짜는 것이 중요하고 좋지만, 시간 및 상황의 제약으로 인해 말이다. 이럴 땐, 보통 Postman을 사용한다. 워낙 오랫동안 사람들에게 사용되어 왔고, 유명하기도 하고, Collection 형태로 프로젝트 별로 요청들을 관리하기도 편하다. 근데 Intellij를 사용하다보면, 간단한 테스트 요청임에도 Postman을 키고 요청들을 구성해야하기 귀찮을 때가 있다. 그리고 요청을 많이 진행해야할 때는 프로그램 간 계속 왔다갔다 해야되서 더 귀찮아지기도 한다. 이런 경우엔 Intellij..
Optional NPE (Null Pointer Exception) 정의 Null 때문에 발생하는 Runtime Exception ( java.lang.NullPointerException ) 변수의 값이 Null임에도 그것을 인지하지 못하고 해당 자료/객체형의 메서드를 호출하는 등에서 문제가 발생 Null 자체의 의미가 모호해 개발/유지보수/디버깅 시 문제를 일으킴 NPE를 방지하기 위해선 어떤 방법을 사용했는가? 사용 전, Null check public int getAllPrice(Lotto lotto) { if (lotto != null) { return lotto.getCount() * lotto.getPrice(); } } 간단해보이지만, Null check 해야하는 변수가 하나가 아니라면? ..
Stream 정리 글들을 보다보면 종단 연산 전까지는 연산이 수행되지 않는다고 한다. -> 그럼 어떻게 연산을 하는 건가? 연산 과정은 대략적으로 아래와 같다. - 정확하지 않고 이해를 위해 쉽게 표현했다. - Stream 데이터를 가지고 Map, Filter 같은 중간 연산을 거쳐 foreach 같은 종단연산까지 여러 스트림 클래스들로 쌓여진다. - 종단연산을 만나면 이제 스트림으로 쌓아놨던 데이터들을 가져오기 시작한다. 맨 위 종단연산에서 기존 데이터가 필요해 아래 스트림을 까게 되고, 그 과정이 반복되다보면 맨 아래 본 데이터를 가지고 스트림 연산을 수행하고 그 결과를 가져오고 가져오고 하는 행위가 수행된다. - 그 과정에서 중간 연산으로 데이터들이 조정되고 수정되고 필터된다. 그렇게 마지막 종단 ..
- Total
- Today
- Yesterday
- Log
- 하루
- r2dbc
- sidecar
- 쿠버네티스
- python
- c++
- 이스티오
- boj
- gradle
- 백준
- docker
- 로그
- 알고리즘
- jasync
- 일상
- WebFlux
- Spring
- MySQL
- container
- 비동기
- Intellij
- k8s
- Kubernetes
- Algorithm
- tag
- Istio
- java
- Spring boot
- HTTP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |