본문 바로가기

JAVA12

Jackson Library 이해하기(Feat. Jackson NullPointerException) [상황]기존 코드 유지 보수 중, 수정 API 1개가 500 Error가 뜨고 있었습니다.  PostMan으로 API 호출을 진행하였을 때, NullpointException이 발생하였지만, DB에는 데이터가 변경된 것을 확인하였습니다.  API 구조 ※ 참고, Hexagonal Architecture으로 구성되어 있습니다. DB에 데이터가 변경되었다?→ Business Layer가 아닌 InBound Layer에서는 잘못되었다는 것이라고 생각하고 접근하기 시작하였습니다. InBound Layer을 생각하고, 코드 분석 및 디버깅을 돌렸을 때 Domain 객체를 그대로 응답으로 출력하고 있는 것을 확인되었습니다. get(Ex. getSearch)으로 시작하는 비즈니스 로직 함수가 존재하였으며, 해당 함수.. 2024. 5. 4.
Spring에서 Notification을 구현해보자(WebFlux, Reactor Sinks, SSE) 주의!! → 알림을 구현하기 위해서 경험을 정리한 글이며 대규모 트래픽은 환경은 아니지만, 알림(포탈, SMS, Email, Kakao Alim Talk)이 발생하는 서비스를 제공한 내용을 정리한 글입니다. → 잘못된 부분이 있을 수 있으며, 해당 부분에서는 바로바로 지적해주시면 정말 감사하겠습니다. [상황] 알림 서비스를 구현해야 하는 상황에 맞닥뜨렸다. 나는… 알림을 구현해본적이 없는데 먼저 구현하는 방법에 대해서 먼저 찾아보자!! 알림을 구현하는 방법에는 크게 4가지가 존재하며, 저는 SSE(Server-Sent Event)을 사용하였습니다. [알림을 구현하는 방법 4가지] 1) Short-Polling 클라이언트는 설정한 주기(예:2초)로 서버에 대한 요청을 반복한다. 장점 Client와 Serv.. 2024. 2. 27.
Spring Cache를 파헤쳐 보자!(WebMvc, WebFlux) 상황 여러 로직에서 간단한 정보를 조회가 반복되어 DB I/O 지속적으로 생기는 상황 자주 변하지도 않는 정보를 계속 I/O 생기도록 유지하는 것이 맞는가?? 프로젝트 시연 중, 갑자기 조회하는 로직에서 시간을 무지막지하게 잡아먹는 상황 원인 파악하기에는 시간이 부족하고…. Redis와 같은 외부 캐시 서버를 사용할 상황이 아닐 때…. Redis는 너무 Over-Spec이야 어떻게 해야 하지??? ► Spring Cache!!! 원인을 파악할 시간이 없어… 일단 조회 관련 급한 불은 꺼야 하는데 ► Spring Cache!!! Caching? 오랜시간이 걸리는 작업의 결과를 저장해서 시간과 비용을 필요로 회피하는 기법 캐시가 있을 때 1 → 2 → 3 → 6 캐시가 없을 때 1 → 2 → 4 → 5 → .. 2023. 12. 13.
[JAVA] Character형 숫자, 알파벳인지 확인하기 Character.isDigit/Character.isAlphabetic 상황 import java.io.*; public class Main { //입력값이 항상 숫자와 알파벳으로 구성된 문자열이 들어온다고 가정! public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); for(int i=0;i= 65) System.out.println(c + "는 알파벳입니다."); else System.out.println(c + "는 숫자입니다."); } } } if문 + 아스키 코드를 사용하여 각 char의 문자가 숫자인지 알파벳인지 확인하고 있습니다.. 2023. 2. 19.
[JAVA] 이항계수 알고리즘 정리 상황 알고리즘 문제에서 주어진 선택지에서 몇 가지를 선택하도록 하는 경우가 많이 있습니다. 단순한 for문으로 재귀를 진행한다면 시간초과가 발생할 수 있습니다. 그래서 단순 for문, 메모이제이션을 사용한 동적계획법 등을 사용하여 알아보도록 하겠습니다. 이항계수란? 먼저 이항계수에 대하여 알아보도록 하겠습니다.내용은 아래 링크 위키백과에서 참조하여 작성하였습니다. https://ko.wikipedia.org/wiki/%EC%9D%B4%ED%95%AD_%EA%B3%84%EC%88%98 이항 계수 - 위키백과, 우리 모두의 백과사전 조합론에서, 이항 계수(二項係數, 영어: binomial coefficient)는 이항식을 이항 정리로 전개했을 때 각 항의 계수이며, 주어진 크기의 (순서 없는) 조합의 가짓수.. 2022. 2. 7.
[JAVA] 배열 및 객체 정렬하는 방법 Arrays.sort, Collections.sort 상황 여러가지 수를 받고 정렬해야하는 경우가 자주 생기게 됩니다. 수를 정렬하는 방법은 매우 다양하게 존재합니다. (계수 정렬, 선택 정렬, 버블 정렬, 힙 정렬, 퀵 정렬 등) 상황에 맞게 정렬을 선택하여 최선의 방식으로 시간복잡도를 줄이는 것이 매우 중요하지만 정렬을 상황에 맞게 사용한다는 것은 매우 어려운 일입니다. 그래서 JAVA에서 지원하는 명령어 Arrays.sort와 Collections.sort를 알아보도록 하겠습니다. 사용법 import java.io.*; import java.util.*; public class Test{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedR.. 2022. 1. 13.