반응형

전체 글 92

Integer와 Long의 차이점

프로그래밍에서 정수를 다룰 때 Integer와 Long은 가장 흔히 사용되는 두 타입입니다. 이들은 자바를 비롯한 여러 프로그래밍 언어에서 정수 값을 저장하는 데 사용되며, 각각 고유의 특성과 사용 사례를 가지고 있습니다. Integer란? Integer는 32비트 정수를 저장하는 데이터 타입입니다. 이는 -2,147,483,648부터 2,147,483,647까지의 범위를 포함합니다. Integer는 4바이트의 메모리 공간을 사용하며, 일반적인 수치 계산에 널리 사용됩니다. 작은 수치를 다룰 때는 Integer가 메모리 효율성과 성능 면에서 유리합니다. Long이란? 반면에 Long은 64비트 정수를 저장하는 데이터 타입으로, -9,223,372,036,854,775,808부터 9,223,372,036,..

IT/Java 2024.01.20

스프링 부트: 윈도우와 맥에서 한글 파일명 다운로드 문제 해결하기

문제 상황 스프링 부트(Spring Boot) 기반의 웹 애플리케이션에서 파일 다운로드 기능을 구현할 때, 맥(MacOS)에서는 한글 파일명이 정상적으로 다운로드되지만, 윈도우(Windows)에서는 한글 파일명이 깨지는 문제를 경험했습니다. 이는 운영 체제 간의 문자 인코딩 처리 방식의 차이 때문에 발생하는 일반적인 문제입니다. 해결 방법 이 문제를 해결하기 위해, 한글 파일명을 UTF-8 인코딩으로 처리한 후, ISO-8859-1로 다시 인코딩하는 방식을 사용했습니다. 또한, Content-Disposition 헤더를 적절히 설정하여 브라우저가 파일명을 올바르게 해석하도록 했습니다. 구현 코드 다음은 파일 다운로드를 처리하는 스프링 부트 컨트롤러의 일부 코드입니다: try { // 파일 데이터 조회 R..

IT/Java 2024.01.20

warning: unknown enum constant When.MAYBEreason: class file for javax.annotation.meta.When not found

문제 상황 Gradle을 사용하여 Java 애플리케이션을 빌드할 때 다음과 같은 경고 메시지가 나타났습니다: warning: unknown enum constant When.MAYBE reason: class file for javax.annotation.meta.When not found 이 경고는 javax.annotation.meta.When 클래스 파일을 찾을 수 없기 때문에 발생합니다. 이는 종종 Gradle 프로젝트에서 의존성 문제로 인해 발생하는 일반적인 경고입니다. 해결 방법 이 문제를 해결하기 위해, Gradle 의존성에 com.google.code.findbugs:jsr305 라이브러리를 추가했습니다. 이 라이브러리는 javax.annotation API의 일부로 사용되며, 필요한 클래..

IT/Java 2024.01.19

[JAVA] Loading class 'com.mysql.jdbc.Driver'. This is deprecated. The new driver class is 'com.mysql.cj.jdbc.Driver'.

스프링 부트에서 MySQL 연결 드라이버 경고 해결하기 문제 상황 스프링 부트(Spring Boot) 애플리케이션을 빌드할 때 다음과 같은 경고 메시지가 나타났습니다: [JAVA] Loading class 'com.mysql.jdbc.Driver'. This is deprecated. The new driver class is 'com.mysql.cj.jdbc.Driver'. 이 메시지는 사용 중인 MySQL JDBC 드라이버가 구형(com.mysql.jdbc.Driver)이라는 것을 알려주며, 새로운 드라이버(com.mysql.cj.jdbc.Driver)를 사용하도록 권장합니다. 해결 방법 이 경고를 해결하기 위해, 로그 관련 설정을 변경하였습니다. 아래는 단계별 해결 방법입니다: 1. log4jdb..

IT/Java 2024.01.19

Request의 Header에서 토큰값이 안가져와지는 문제

문제 상황 로컬 개발 환경에서는 Execute_menu라는 사용자 정의 HTTP 헤더를 스프링 부트 서버로 잘 전송하고 처리할 수 있었습니다. 그러나 실제 서버 환경으로 배포한 후에는 동일한 요청을 보냈음에도 불구하고, 서버에서 이 헤더의 값을 null로 받는 문제가 발생했습니다. 이는 많은 개발자들이 실제 운영 환경에서 자주 마주치는 문제 중 하나입니다. 원인 분석 이 문제의 원인은 Nginx의 기본 설정 때문입니다. Nginx는 기본적으로 헤더 이름에 밑줄(_)이 포함된 헤더를 무시합니다. 이는 보안상의 이유로, 헤더를 조작하는 일부 공격을 방지하기 위한 조치입니다. 그러나, 사용자 정의 헤더에 밑줄을 사용하는 경우, 이 기본 설정 때문에 문제가 발생할 수 있습니다. 해결 방안: underscores..

IT/Java 2024.01.19
반응형