전체 글 239

스프링을 이용한 파일 업로드, 다운로드

스프링의 MultipartFile 인터페이스를 이용하여 파일 업로드를 쉽게 구현 가능하다. package com.example.upload.controller;import jakarta.servlet.http.HttpServletRequest;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;impor..

스프링 - 파일 업로드(1)

폼 전송의 두가지 방식은 다음과 같다.  application/x-www-form-urlencoded 방식  HTTP Body에 문자형식으로 &로 구분하여 전송한다. 하지만 이러한 방식에는 한계가 있는데, 파일을 업로드 할때는 바이너리 데이터를 전송해야 하는데 이러한 방식으로는 파일 업로드가 힘들다. 따라서 multipart/form-data 전송 방식을 사용해야 한다. multipart/form-data 방식이 방식을 사용하면 각각의 전송 항목이 Content-Disposition이라는 헤더로 구분된다. 폼의 일반 데이터는 각 항목별로 문자가 전송되고, 파일의 경우 파일 이름과 Content-Type이 추가되고 바이너리 데이터가 전송된다.  직접 서버에 파일 업로드 해보기 application.prop..

포맷터 - Formatter , @NumberFormat, @DateTimeFormat

웹 애플리케이션에서 객체를 문자로, 문자를 객체로 변환할때 유용하게 사용할 수 있는 포맷터에 대해서 공부했다. ex)숫자에 1000단위로 쉼표를 넣어야 하는 경우 OR"1,000"이라는 문자를 1000이라는 숫자로 변경 해야하는 경우  이때 사용할 수 있는것이 Locale이다.Locale ==> 날짜나 숫자표현 방법에 대한 현지화 정보  package com.example.typeconverter.formatter;import lombok.extern.slf4j.Slf4j;import org.springframework.format.Formatter;import java.text.NumberFormat;import java.text.ParseException;import java.util.Locale;@..

프로그래머스 - 더 맵게(Java)

문제 이해가 어렵지 않은 문제이고 최소힙 구현만 한다면 쉽게 풀 수 있는 문제이다. https://developerwoohyeon.tistory.com/163 [Java] PriorityQueue를 활용한 힙(Heap) 구현자바에서는 PriorityQueue를 활용하여 최소힙을 구현 가능하다. 최소 힙이란?최소 힙은 부모 노드가 항상 자식 노드보다 작거나 같은 값을 가지는 완전 이진 트리로, 최솟값이 루트에 위치한다. impdeveloperwoohyeon.tistory.com 문제 해결  우선 scoville 배열의 모든 숫자를 우선순위 큐에 삽입해준다. PriorityQueue minHeap = new PriorityQueue(); int answer = 0; for(int s..

알고리즘/힙 2025.01.09

[Java] PriorityQueue를 활용한 힙(Heap) 구현

자바에서는 PriorityQueue를 활용하여 최소힙을 구현 가능하다. 최소 힙이란?최소 힙은 부모 노드가 항상 자식 노드보다 작거나 같은 값을 가지는 완전 이진 트리로, 최솟값이 루트에 위치한다. import java.util.PriorityQueue;public class HeapExample { public static void main(String[] args) { // Integer를 저장하는 최소 힙 생성 PriorityQueue minHeap = new PriorityQueue(); // 요소 추가 minHeap.offer(5); minHeap.offer(2); minHeap.offer(8); min..

알고리즘/힙 2025.01.09

@ExceptionHandler

스프링에서 API예외 처리 문제를 해결하기 위해 @ExceptionHandler를 제공한다. 매우 편리하여 사용하기 쉽다. package com.example.exception.api;import com.example.exception.Exception.UserException;import com.example.exception.exhandler.ErrorResult;import lombok.AllArgsConstructor;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.sprin..

스프링 부트 - ExceptionResolver

스프링 부트에서 제공하는 ExceptionResolverExceptionHandlerExceptionResolver - @ ExceptionHandler를 처리함, API 예외 처리는 대부분 이 기능으로 해결한다.ResponseStatusExceptionResolver - HTTP 상태 코드를 지정해준다DefaultHandlerExceptionResolver - 스프링 내부 기본 예외를 처리한다   ResponseStatusExceptionResolver  1. @ResponseStatus 사용하여 예외 처리package com.example.exception.Exception;import org.springframework.http.HttpStatus;import org.springframework.w..

프로그래머스 - 의상(Java)

해시를 잘 이용하면 어려운 문제는 아니다. 저번에 풀었던 프로그래머스 - 완주하지 못한 선수 문제에서 해시맵의  getOrDefault 메서드를 이용해서 키가 해시맵에 삽입된 횟수를 계산하는 방식이 떠올라서 이번 문제도 이를 이용하여 풀었다.https://developerwoohyeon.tistory.com/155 프로그래머스 - 완주하지 못한 선수(Java)해시맵 클래스가 제공하는 함수를 적절히 사용해야 해시를 활용하여 풀 수 있었던 문제였다 정렬을 활용하여 검색import java.util.*;class Solution { public String solution(String[] participant, String[] completion) {developerwoohyeon.tistory.com 문제 ..

알고리즘/해시 2025.01.08

HandlerExceptionResolver

HandlerExceptionResolver을 통해 발생하는 예외에 따라서 400,404등등 다른 상태 코드로 처리하는 방법에 대해서 공부했다. @GetMapping("/api/members/{id}")public MemberDto getMember(@PathVariable("id") String id) throws IllegalAccessException { if(id.equals("ex")){ throw new RuntimeException("잘못된 사용자"); } if(id.equals("bad")){ throw new IllegalArgumentException("잘못된 입력 값"); } return new MemberDto(id,"hello"+..