Flame Graph ? show the CPU time spent in Java methods, system libraries, and the kernel, all in one visualization. 해석하기 각 사각형은 stack frame을 나타낸다(즉, 함수). 사각형의 가로(width)는 현재 프로파일에 얼마나 존재하는지(실행되는지)를 나타낸다. Graph x축 왼쪽과 오른쪽 순서는 중요하지 않다. stack은 단순히 알파벳 순서대로 정렬된 것이다. y축 stack depth. 함수들간의 호출 depth. Stack의 색상들은 code type에 따라 설정된다. 보통 Java code는 초록색, C++ code는 노란색, System은 빨간색으로 설정된다. 하지만 다른 color scheme..
WebClient 를 사용하되, block 을 사용한다? 이게 RestTemplate 같은 Blocking 기반의 http client를 사용하는 것과 무엇이 다를까? 사실 단일으로 하나의 request를 다루는 것이라면 성능이 거의 같을 것이다. 어느정도 각 http client 구현도에 차이가 있을 수 있지만, 유의미한 차이가 있지는 않을 것이다. 아래는 아주 대충 작성해 본 예시 // WebClient var webclientResponse = WebClient.create("some-url").get().retrieve().bodyToMono(String.class); webclientResponse.block(); // RestTemplate var restTemplateResponse = ne..
작성하고 나니 여러 개념에 대해 단어들을 통일 시 못한 것 같네요. 혹시 이상한 점 있으면 편하게 피드백 부탁드립니다. 요즘 프로젝트에서 WebFlux를 적극적으로 다루고 있는데, just/defer/fromCallable를 다루다보니 조금 헷갈리는 점이 있어 정리해놓으려 한다. 모든 메서드는 Mono 를 중심으로 정리했다. just just는 구독 시 특정 값을 반환(emit)하는 메서드이다. 제일 기본적인 메서드이기 때문에 처음 Reactor를 공부하면 거의 제일 처음에 배웠던 것 같다. 공식문서를 보면 설명이 다음과 같다. Create a new Mono that emits the specified item, which is captured at instantiation time. 여기서 insta..
예시 코드는 여길 참조해주세요. https://github.com/KimDoubleB/spring-learning/tree/master/junit5/tag Tag JUnit5에서는 Tag 어노테이션을 제공하고 있습니다. Overview Tag는 어떤 기능을 하는 어노테이션일까요? 공식문서에 의하면 다음과 같습니다. Tags are a JUnit Platform concept for marking and filtering tests. The programming model for adding tags to containers and tests is defined by the testing framework. For example, in JUnit Jupiter based tests, the @Tag ann..
Spring boot 웹 서버를 개발하고 Kubernetes에 배포할 때, Profile(local, dev, prd, ...)을 설정하는 법을 알아보자. Dockerfile을 사용해 컨테이너 이미지 빌드 Dockerfile을 통해 이미지 빌드 시, ENTRYPOINT에서 Jar 파일을 실행하며 Dspring.profiles.active 옵션을 통해 설정할 수 있다. ... ENTRYPOINT ["java", "-Dspring.profiles.active=dev", "-jar", "some.jar"] 해당 컨테이너 이미지를 실행시키면, dev profile로 설정되어 Spring boot 웹 서버가 실행된다. Buildpacks(ex. gradle bootBuildImage)를 통해 컨테이너 이미지 빌드..
@ApplicationScoped 어플리케이션에서 사용되는 bean instance. 주입 시점에 공유되며 기본적으로 해당 어노테이션을 사용해 bean을 생성하면 지연(lazy) 생성된다. 즉, Client proxy를 통해 메서드가 호출될 때 초기화되며 생성된다. @Singleton Client proxy가 사용되지 않는다는 점 빼고는 @ApplicationScoped 와 같다. 즉, 주입 시점에 인스턴스가 생성(eager)된다. @RequestScoped Current request(보통 Http request)와 관련이 있는 bean instance. Spring에서 사용하는 @RequestScope 와 유사하다. @Dependent pseudo-scope 을 가지는 bean instance. In..
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 팀의 서버 개발자 김보배..
- Total
- Today
- Yesterday
- 백준
- HTTP
- k8s
- OpenTelemetry
- jasync
- 로그
- Clean Architecture
- python
- 쿠버네티스
- 하루
- java
- Algorithm
- boj
- tag
- container
- gradle
- Spring boot
- Istio
- docker
- WebFlux
- c++
- 일상
- MySQL
- 알고리즘
- Intellij
- 비동기
- Spring
- 클린 아키텍처
- Log
- Kubernetes
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |