전체 글 263

SSL이란? (Secure Sockets Layer)

🔍 SSL이란? (Secure Sockets Layer)SSL(Secure Sockets Layer)은 인터넷에서 데이터를 암호화하여 안전하게 전송하기 위한 보안 프로토콜이다! 🔒 ✅ 기본 개념클라이언트(웹 브라우저)와 서버 간의 데이터 전송을 암호화하여 해커가 중간에서 정보를 훔쳐보는 걸 방지하는 기술현재는 SSL의 후속 버전인 TLS(Transport Layer Security)가 사용되고 있지만, 관행적으로 SSL이라는 용어를 계속 사용📌 1. SSL의 핵심 기능✅ 1-1. 데이터 암호화 (Encryption)서버와 클라이언트 간 주고받는 데이터를 암호화해서 제3자가 내용을 볼 수 없도록 보호✅ 1-2. 데이터 무결성 (Integrity)데이터가 전송 중 변경되지 않도록 보호 (해커가 데이터를..

study/보안 2025.03.24

환경 변수 관리 (@Value, @ConfigurationProperties)

🔍 1. 환경 변수란? YAML 변수, 프로퍼티 변수, 설정 변수 라고도 부른다.환경 변수는 애플리케이션 실행 시 필요한 설정 값을 의미한다.이를 통해 코드 수정 없이 환경을 변경할 수 있고, 유지보수도 쉬워진다! 📌 2. 환경 변수 설정하기Spring Boot에서는 환경 변수를 application.yml 또는 application.properties에 저장한다. ➡️ 이 값들은 @Value나 @ConfigurationProperties를 사용해서 코드에서 가져올 수 있다!   📖 YAML 사용 (application.yml)atchfile: upload: path: /upload/files  📖 Properties 사용 (application.properties)atchfile.uplo..

Backend/spring 2025.02.26

[JAVA] 데이터 타입 Primitive Type vs Wrapped Type

📌 1. 자바의 데이터 타입 분류Wrapped Type을 알기 전에 Reference Type에 대해 먼저 알아보자.자바에서 데이터 타입은 크게 두 가지로 나뉜다! 1️⃣ 기본형(Primitive Type) → 값 자체를 저장2️⃣ 참조형(Reference Type) → 객체를 가리키는 참조값을 저장 ✅ 1. 기본형 (Primitive Type)boolean, char, byte, short, int, long, float, double객체가 아니며, 메모리에서 직접 값을 저장연산 속도가 빠르고 메모리 사용이 효율적✅ 2. 참조형 (Reference Type)배열(int[]), 클래스(String, Integer, Double 등), 인터페이스, 열거형(Enum)객체의 주소(참조값)를 저장메서드를 사용..

Backend/JAVA 2025.02.26

static 키워드

📌 1. static 키워드의 의미static은 "정적인"이라는 의미로,  static을 붙이면 객체(instance)와 관계없이 클래스(class) 단위로 관리된다는 뜻이다! 즉, 클래스가 메모리에 로드될 때 한 번만 생성되며, 모든 객체가 공유한다. ✅ 2. static 키워드의 사용1️⃣ static 변수 (클래스 변수)모든 객체가 공유하는 변수! (인스턴스와 관계 없음)클래스명.변수명으로 접근 가능객체를 생성하지 않아도 사용 가능📖 예제class Counter { static int count = 0; // 모든 객체가 공유하는 변수 Counter() { count++; // 생성될 때마다 count 증가 }}public class Main { public s..

Backend/JAVA 2025.02.26

JNDI란?

🔍 JNDI란? (Java Naming and Directory Interface) Java EE에서 사용되는 네이밍 서비스로, 리소스 (DataSource, JMS 등)를 애플리케이션에서 쉽게 찾고 사용할 수 있도록 도와줌.✅ 1. 기본 개념DataSource데이터베이스 연결을 관리하는 객체로, 직접 DriverManager.getConnection()을 사용하는 대신 JNDI를 통해 제공됨.Connection pool을 어플리케이션단에서 어떻게 관리할지를 구현하는 인터페이스  ⭐DriverManager.getConnection():실제 자바 프로그램과 데이터베이스를 네트워크상에서 연결해주는 메소드이다. Connection: 네트워크 상의 연결 자체를 의미 Connection Pool (커넥션 풀):..

Backend/JAVA 2025.02.26

[error] java.lang.IllegalArgumentException: Name for argument of type [int] not specified

🚨 Name for argument of type [int] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. java.lang.IllegalArgumentException: Name for argument of type [int] not specified Ensure that the compiler uses the '-parameters' flag. This application has no explicit mapping for /error, so you are seeing this as a fallback.Wed Fe..

Backend/spring 2025.02.23

[error] getOutputStream() has already been called for this response

🚨 Could not write JSON: getOutputStream() has already been called for this response  🔥 오류 원인HttpServletResponse의 getOutputStream() 또는 getWriter()가 여러 번 호출되었을 때 발생하는 문제!즉, 응답을 한 번 보낸 후에 또 응답을 보내려고 할 때 발생한다.  📖 에러 코드 (수정 전) ➡️ 쿠키를 response.addCookie()로 설정한 후, ResponseEntity로 JSON 응답을 반환. ➡️ 하지만 ResponseEntity가 HTTP 응답을 설정하는 과정에서 response.getOutputStream()을 다시 호출하기 때문에 충돌이 발생. @PostMapping("/l..

Backend/spring 2025.02.23

[JAVA] 쿠키(Cookie) 설정 방법

쿠키 설정 방법에 대해 알아보기전에 쿠키에 대해 간단히 알아보자!!🔍 쿠키(Cookie)란? 쿠키는 웹 브라우저에 저장되는 작은 데이터 조각!!서버가 클라이언트(브라우저)에 정보를 저장하고, 이후 요청에서 다시 전송하도록 도와주는 역할➡️ 쿠키는 웹에서 사용자 상태를 유지하는 중요한 메커니즘! 🍪 🚀 특징세션 유지: 로그인 상태 유지, 장바구니 정보 저장클라이언트 저장: 브라우저에 텍스트 형태로 저장됨자동 전송: 동일한 도메인에 대한 요청마다 자동 포함🎯 쿠키 설정 시 추가할 내용✅ HttpOnly → 자바스크립트에서 접근 불가능하게 해서 보안 강화✅ Secure → HTTPS에서만 쿠키 전송 (HTTPS 환경이라면 꼭 설정!)✅ Path=/ → 모든 경로에서 쿠키 사용 가능✅ Max-Age / ..

Backend/spring 2025.02.23

실시간 데이터 전송

HTTP 프로토콜은 비연결성(stateless) 구조라서 서버가 클라이언트와 지속적으로 연결될 수 없음. 그래서 서버가 데이터를 실시간으로 클라이언트에게 푸시(Push)하는 것이 어려움. 이를 해결하는 방법으로 Polling, Long Polling, WebSocket, SSE가 있음! 📌 1. Polling (폴링) 방식클라이언트가 일정 주기로 서버에 요청을 보내 데이터를 갱신하는 방식.서버는 새로운 데이터가 있으면 응답하고, 없으면 빈 응답을 보냄. ✔️ 장점 구현이 단순함 (HTTP 요청/응답 패턴 그대로 활용 가능) 요청 주기를 길게 설정하면 서버 부하를 줄일 수 있음 ❌ 단점변경 사항이 없을 때도 요청을 계속 보내야 하므로 리소스 낭비 발생실시간성이 떨어짐 (요청 주기에 따라 데이터 갱신이 지..

[Kafka] 고급 설정

📌 Kafka 운영 환경에서 필요한 고급 설정기본 개념만으로도 Kafka를 사용할 수는 있지만, 실제 운영 환경에서는 더 많은 걸 알아야 한다!🔗 기본 개념(필수!)토픽, 파티션, 브로커, 컨슈머 그룹, 오프셋 이해Producer & Consumer 동작 방식기본적인 명령어 (토픽 생성, 메시지 생산/소비, 오프셋 관리)➡️ 이 정도만 알아도 로컬 환경에서 테스트하고 간단한 서비스에 적용할 수 있다!! 🚀 📌 1. 파티션 할당 전략 (Partition Assignment Strategy) ✅ 컨슈머 그룹 최적화Kafka는 여러 개의 컨슈머가 동일한 토픽을 소비할 때, 파티션을 컨슈머들에게 자동으로 할당한다. 이때 파티션 할당 전략이 중요한 역할을 한다. ➡️ 운영 환경에서는 컨슈머 그룹의 부하 분..