일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- b3-propagation
- java
- traceId
- Spring JPA
- traceasynccustomautoconfiguration
- micrometer tracing
- ResponseBody
- @FunctionalInterface
- spring3 spring2 traceid
- HashMap
- map
- aws secretmanager
- asynccustomautoconfiguration
- spring
- java list
- awssecretsmanagerpropertysources
- CompletableFuture
- elasticsearch
- Sleuth
- spring MVC
- jpa
- java lambda
- SpringMVC
- java.util.list
- list
- EnableWebMvc
- Spring Boot
- kotlin
- DeferredImportSelector
- asyncconfigurer
- Today
- Total
목록java (14)
du.study기록공간
새로운 프로젝트를 실행하면서 로컬 캐시 라이브러리인 Ehcache 를 사용하는 일이 있었습니다. 기존에도 자주 사용하는 라이브러리 였기에 큰 걱정없이 사용했으나, 다음과 같은 에러가 갑자기 노출되기 시작했습니다. The JVM is preventing Ehcache from accessing the subgraph beneath 'transient java.util.HashMap$Node[] java.util.HashMap.table' - cache sizes may be underestimated as a result 음.. 우선 원인이 되는 프로젝트의 코드를 찾아봅니다. ehcache 내부의 ObjectGraphWalker 클래스에서 아래 코드에서 해당 에러를 뱉고있었습니다. 예시를 위해서 아래 테..
이번엔 java프로젝트에서 sentry environment 설정 코드를 한번 보려고합니다. 프로젝트를 진행하면서 sentry설정을 하는도중, local에서 계속 production으로(찾고나니 default설정이 production이네요) 작성이 되어있는 부분이 거슬려서 environment 설정은 어떻게 하는지 한번 확인해봤고 이를 기록하고자 합니다. 우선 결론부터 작성하면 저는 아래와 같이 적용하였습니다. - 리소스 아래에 sentry.properties 를 생성하여 아래 문구 적용 dsn= 본인의 sentry의 dsn를 사용합시다! environment=local servername=project이름 - java 실행의 변수를 담는곳에 -Dsentry.environment=${SPRING_PROF..
코드리뷰를 하던도중 간단하면서도 실수하기 좋은 부분을 기록하고 넘어가고자 합니다. Arrays.asList 나 Collections.singletonList 등을 이용하여 List를 생성하는 경우를 종종 보고있는데요 이번엔 Arrays.asList를 사용해서 add를 하는경우에 발생하는 에러를 기록하고 넘어가고자 합니다. 예시코드는 아래와 같습니다. List list = Arrays.asList("A","B"); list.add("C"); System.out.println(list); 이 경우 [A, B, C] 가 출력될거라 생각할 수 있지만, 결과는 아래 에러를 맞이하게 됩니다. java.lang.UnsupportedOperationException 왜 그럴까? 를 확인하기위해 Arrays.asList..
이번에는 @FunctionalInterface 하나인 Function에 대해 기록하고자 합니다. Function을 간략하게 설명한다면 객체(T)를 받아 객체(R)을 리턴하는 함수형 인터페이스 입니다. 코드를 보면 아래와같은 기능을 가지고 있습니다. public interface Function { R apply(T t); default Function compose(Function
이직 후, 너무 게시글 작성이 뜸해져서 스스로 습관도 들일겸, 기존에 쓰던 내용도 정리할겸 이번엔 java lambda에 대해 하나씩 정리해보려합니다. 그중에서 이번엔 Consumer를 기록하고자합니다. Consumer는 리턴값이 void이며, 특정 타입을 받아 해당 값을 사용하는 것이 특입니다. @FunctionalInterface public interface Consumer { void accept(T t); default Consumer andThen(Consumer
나름 중복이 덜 발생하면서, 일렬번호를 만들되, 짧게 만들 수 있는 방법이 어떤것이 있을가 찾아보던 도중, millisecond를 Base64 String 으로 만들면 어떨까 하는 생각이 들어, 해당방식을 찾아 작성합니다. 우선 사용한 모듈은 다음과 같습니다. dependencies{ implementation("commons-codec:commons-codec:1.5") } 해당 모듈에서 Base64.encodeBase64URLSafeString 을 사용하기 위함입니다. 아래코드는 전체 플로우를 나타낸 코드입니다. public static byte[] longToByte(Long x){ ByteBuffer buffer = ByteBuffer.allocate(java.lang.Long.BYTES); bu..
이번에는 자바로 JPA Null 처리하는 방법에 대해 기록하려합니다. 당연하게 db조회시, 객체가 없을경우 null이 발생할 수 있고, 우리는 null을 대비해야만 합니다. 1. Optional 이전에 Java8 부터 등장한 Optional에 대해 포스팅을 한 적이 있습니다. duooo-story.tistory.com/38?category=881766 Java Optional 사용하기 이번에는 Optional 사용법에 대해 기록해보려 합니다. 먼저 Optional은 NULL 처리( 또는 반환값이 없는 ) 에 유용하게 사용되며 이 덕분에 런타임에서 발생되는 NullPointerException를 좀 더 깔끔하도록?(사� duooo-story.tistory.com JPA에서 단일 엔티티를 조회하는 경우, O..
이번에는 자바 8부터 비동기를 기능을 지원해주는 CompletableFuture에 대해 기록하려합니다. 이 글은 https://www.youtube.com/watch?v=PzxV-bmLSFY&t=8s토비좌 의 강의를 듣고 공부를 위해 작성하고 있습니다. 기존에 자바에서 비동기 작업을 진행한다 하면 별도의 쓰레드풀 생성, Future, FutureTask 을 통한 비동기처리 또는 ThreadPoolTaskExecutor등 다양한 방법이 있긴했습니다. 하지만 8에서 보다 간단하면서 비동기 작업의 결과를 만들어 낼 수 있는 CompletableFuture가 등장했습니다. 특징으로는 1. CompletionStage 을 implement하고있어 비동기 작업을 의존적으로 또다른 기능을 수행할 수 있게 해줍니다. ..
stream을 사용하는 도중 자주 사용하지만 자꾸 까먹어 다시 찾아보는 기능을 기록하려합니다. 우리는 객체를 사용하면서 정렬을 하거나, 정렬을 하고 출력을 하는등에 대한 기능을 사용할 때가 많습니다. 이 기능은 스트림을 사용하면 간단하게 사용할 수 있습니다. 다음은 예제 코드입니다. // Integer List를 reverseOrder한 결과 public static void main(String[] args) { List list = new ArrayList(); list.add(1); list.add(2); list.add(45); list.add(6); list.add(3); list.add(7); list.add(11); list.add(13); list.add(1); list.stream().s..
이전 글로 Map interface에 대해서 기록한 적이 있습니다. : https://duooo-story.tistory.com/18 Map중에서도 학생때부터, 그리고 실무에서도 진짜 많이 사용하는 HashMap을 기준으로 put을 진행했을때, 내부 코드가 어떻게 진행되는지에 대해서 이번에 기록하려 합니다. 먼저 hashMap 이란 에 대해서 간략하게 정리하겠습니다. HashMap은 key,value pair로 데이터를 저장하며, key의 중복을 허용하지 않습니다. 또한 순서를 보장하지 않으며 key,value 값으로 null을 허용합니다. 내부적으로 데이터를 Burket이라는 걔념을 통하여 데이터를 저장합니다. key값 Object의 key.hashCode() 함수를 이용하여 어떤 버켓의 데이터 리스트..