1. Stream.ofNullable() 을 사용한 안전한 코드코드/** * Stream.ofNullable() */log.info("########## Stream.ofNullable() ##########");// Optional 사용하는 기존 방식List emails = Arrays.asList("user@gmail.com", null, "admin@gmail.com", null);List filteredEmails = emails.stream() .map(Optional::ofNullable) .filter(Optional::isPresent) .map(Optional::get) .collect(Collectors.toList());log.info("Null 제거: {}", ..
if-else 문은 Java 프로그래밍에서 흔히 사용되는 제어 구조입니다.그러나 복잡한 조건 로직을 다룰 때 코드가 지저분해지고 유지보수가 어려워질 수 있습니다.이 글에서는 enum을 사용하여 if-else 문을 대체하는 더 깔끔하고 유지보수가 쉬운 접근 방식을 살펴보겠습니다1. 문제 : 복잡한 if-else 문다음과 같은 코드를 살펴 봅시다.public class PaymentProcessor { public void processPayment(String paymentMethod, double amount) { if (paymentMethod.equals("CREDIT_CARD")) { System.out.println("신용카드로 " + amount + " 결제..
1. 프론트엔드 TracingTracing은 각 요청에 고유 식별자(traceId)를 부여하고, 이를 애플리케이션의 여러 계층과 서비스를 거치며 따라가는 과정입니다. 이는 복잡한 시스템에서 문제 해결과 성능 최적화에 큰 도움이 됩니다. 프론트엔드에서의 traceId 생성 이점전체 시스템 가시성: 사용자 인터랙션부터 백엔드 처리까지 전 과정을 추적할 수 있습니다.일관된 모니터링: 모든 서비스에서 동일한 traceId를 사용하여 요청을 추적합니다.세션 단위 분석: 사용자 세션 전체에 걸친 활동을 종합적으로 분석할 수 있습니다.2. 구현2.1. React에서 traceId 생성 및 전송프론트엔드 애플리케이션에서 traceId를 생성하고 API 요청에 포함시킵니다.// traceId 생성 유틸리티import {..
1. WebSocket을 이용한 실시간 알림 기능실시간 알림은 사용자가 새로 고침하거나 업데이트를 반복적으로 수행할 필요 없이 변경된 내용을 즉시 사용자에게 푸시합니다. 채팅앱이나 주식앱, 대시보드 알람같은 기능으로 사용할 수 있습니다. 이번 글에서는 Spring Boot와 WebSocket을 사용하여 실시간 알림 시스템을 구축하는 방법을 보여드리겠습니다. 2. Spring Boot 애플리케이션 설정2.1. 의존성 추가먼저 새 Spring Boot 프로젝트를 생성하거나 기존 프로젝트에 다음 의존성을 추가합니다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springfra..
#1. Spring 캐싱캐싱은 자주 요청되는 데이터를 임시로 저장하여 애플리케이션 성능을 향상시키는 데 중요한 방법입니다. 데이터베이스 검색 및 API 요청과 같은 비용이 많이 드는 작업을 줄여 응답 시간을 단축하고, 백엔드 부담을 줄이며, 사용자 경험을 향상시킵니다. Spring Boot는 캐싱을 간편하게 구현할 수 있도록 다음과 같은 어노테이션을 제공합니다.@Cacheable: 메서드 파라미터를 기반으로 메서드 결과를 캐시합니다.@CachePut: 메서드 결과로 캐시를 업데이트합니다@CacheEvict: 캐시에서 데이터를 제거합니다@Caching: 단일 메서드에 여러 캐싱 어노테이션을 조합할 수 있습니다#2. Spring 캐시 구현Spring Boot 애플리케이션에서 캐싱을 활성화하려면 설정 클래스..
Java의 Stream API는 데이터 처리를 간결하고 효율적으로 수행할 수 있는 강력한 도구입니다. 이 글에서는 Stream API의 주요 개념과 예제를 통해 이를 마스터하는 방법을 다룹니다. #1. 샘플데이터 생성BabyVOX클래스 정의BabyVOX클래스는 다음과 같은 필드를 포함합니다:id (Integer)name (String)position(String)instagramFollowers (Double)age (Integer)@AllArgsConstructor@Getter@ToStringstatic class BabyVOX { private int id; private String name; private String position; private double instagr..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.