최근 Serverless 애플리케이션들을 개발하면서 그것에 초점이 맞춰진 Framework들을 살펴본 적이 있다. 그 때 봤던 것이 quarkus, micronaut 인데, 때마침 국내 quarkus 온라인 컨퍼런스가 열려 참여한 적이 있다. 여러 신박한 기능들이 있어서 다음에 꼭 써봐야하지 했다가 오늘 생각나서 getting started를 해봤는데... Spring boot (Spring native)에선 상상도 못했던 부분들이 많았다. (좋았던 부분이 많았다) - native에 대한 문서화가 잘되어있음 - 개발 중 수정이 가능함... 미쳤음.... 코드 변경을 감지하자마자 테스트도 바로 돌림 (멈춤 가능)..... - 개발자 감성 FANCY 그 자체... 사실 아직 native로 실행은 못해봤는데,..
-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 메모리를 사용하겠다 라는 것인데... 왜..
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 같은 종단연산까지 여러 스트림 클래스들로 쌓여진다. - 종단연산을 만나면 이제 스트림으로 쌓아놨던 데이터들을 가져오기 시작한다. 맨 위 종단연산에서 기존 데이터가 필요해 아래 스트림을 까게 되고, 그 과정이 반복되다보면 맨 아래 본 데이터를 가지고 스트림 연산을 수행하고 그 결과를 가져오고 가져오고 하는 행위가 수행된다. - 그 과정에서 중간 연산으로 데이터들이 조정되고 수정되고 필터된다. 그렇게 마지막 종단 ..
그냥 내가 잊지 않기위해 작성하는 포스트. 2년만에 다시 공부하는 Java. Type casting부터 애를 먹기 시작했다. 생각해보면 언어별 Type casting을 하는 방식이 다 다르다는 것을 인식해서, 그걸 좀 정리해보고자 한다. Type casting에 대해 깊게 파고들면 명시적, 암묵적 형변환으로 나뉘며 많은 이야기들이 나오는데 그런 깊은 내용들은 나중에 다뤄보기로 하고 여기서는 단순히 명시적 형변환을 하는 법에 대해 다뤄보고자 한다. 또한, 여기서는 단순히 숫자 문자 데이터를 숫자로 바꾸는 것이 아닌 말 그대로 문자를 아스키코드 형 숫자로 바꾸는 것을 이야기한다. 일단, 나는 Python, Javascript(Node.js), C++를 최근 다뤄오고 있다. 그래서 인지 몰라도, 아무튼 다음과..
맨날 헷갈리는 3가지. 기본적인 지식이 부족한 것과 비슷한 이름으로 계속 혼동이 온다. 이전에도 정리했던 것 같은데 다시 정리 ! JDK: Java Development Kit / 자바 개발 도구 JRE : Java Runtime Environment / 자바 실행 환경 JVM : Java Virtual Machine / 자바 가상 기계 각 관계는 아래 그림으로 이해하면 된다. JDK - JRE - JVM 순으로 존재하고, JVM이 OS에 의존적이기 때문에 그것에 맞게 JVM을 포함하는 JRE가 존재하고, JRE를 포함한 개발 킷인 JDK가 존재한다.
메서드의 매개변수 개수를 동적으로 지정해주는 방법이다.‘타입… 변수명’ 형식으로 선언할 수 있고, 사용된 예를 찾자면 PrintStream Class의 printf()가 대표적인 예라고 할 수 있다. public PrintStream printf(String format, Object ...args) { ... } 여러 다른 예를 들어보자. 이런 식으로 만들어 사용할 수 있다. 가변인자라는 것 자체가 몇 개의 인자가 들어올지 정해두는 것이 아니기 때문에 개수를 랜덤으로 넣어도 상관없다. 근데 이러한 예들을 보면 한 가지 궁금점이 생길 이다. “매개변수로 배열을 넘겨주는 것과 뭐가 다른가?” 가변인자가 사용되는 것을 설명하자면 사실 가변인자가 사용된 메서드를 선언하면 배열이 새로 생기면서 사용되는 것이다...
- Total
- Today
- Yesterday
- Kubernetes
- boj
- Istio
- c++
- 일상
- r2dbc
- sidecar
- gradle
- MySQL
- 하루
- WebFlux
- Spring boot
- container
- jasync
- 알고리즘
- python
- docker
- Log
- HTTP
- tag
- 백준
- 이스티오
- Algorithm
- 쿠버네티스
- Spring
- k8s
- 비동기
- java
- Intellij
- 로그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |