Java 17이 LTS로 공개되었고, Spring boot도 2.5.5 버전에서 지원하고 있어 새로운 프로젝트에 Java 17을 사용하기로 했다. 그래서 start.spring.io에서 Java 17/Boot 2.5.5로 만들어서 intellij에서 바로 Run 했는데, 아래와 같은 오류가 나왔다. error: invalid source release: 17 이전 java 버전 변경할 때, 자주 겪었던 오류라 preference 및 project structure가서 java 버전을 명시하고 있는 것은 다 17로 바꿔주었다. 근데도 같은 오류를 계속 내뿜었다 ㅠㅠ 상세 설명도 없이.... 진짜 눈에 보이는 JDK 버전은 다 변경한 것 같은데 '뭐지...' 하고 싶던 찰나 gradle 버전 변경하는 것을 ..
Java엔 정말 다양한 Http Client가 있다. 주로 URLConnection, Apache HttpClient, RestTemplate, Feign를 사용하게 되는데 각각의 Proxy를 설정하는 법 또는 System property를 사용해 Proxy를 설정하는 법이 있다. 이런 Proxy 설정에 관하여 회사에서 위키로 작성해 전체 개발 팀에 공유를 했었는데, 좋게 봐주셔서 어쩌다보니 회사 기술 블로그에 글을 작성하게 되었다. 관련하여 궁금한 내용이 있으시다면, 아래 블로그 내용을 참조하시면 도움이 될 것 같습니다 :) Java proxy setting guide | 11번가 TechBlog — 11번가 기술블로그 안녕하세요. 11번가 Platform Engineering 팀의 서버 개발자 김보배..
최근 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++를 최근 다뤄오고 있다. 그래서 인지 몰라도, 아무튼 다음과..
- Total
- Today
- Yesterday
- Algorithm
- MySQL
- docker
- WebFlux
- tag
- Istio
- gradle
- 하루
- Intellij
- boj
- OpenTelemetry
- Log
- Kubernetes
- Clean Architecture
- 일상
- container
- java
- HTTP
- jasync
- Spring
- 클린 아키텍처
- k8s
- 백준
- python
- c++
- 쿠버네티스
- Spring boot
- 알고리즘
- 로그
- 비동기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |