JAVA 6

[Spring Boot] Websocket + STOMP를 이용한 세션 기반 채팅

1. 전체 아키텍처Spring Boot채팅 시스템은 RESTful API와 WebSocket API를 조합한 하이브리드 아키텍처를 채택REST API는 채팅방 생성, 목록 조회, 이전 대화 내역 로딩과 같은 상태 관리를 담당WebSocket과 STOMP 프로토콜은 사용자들이 실시간으로 메시지를 주고받는 통신 채널의 역할을 수행2. WebSocket + STOMP 설정- 모든 실시간 통신의 기반이 되는 설정은 WebSocketConfig.java 파일에서 정의- 이 설정은 STOMP 메시지 프로토콜을 사용하여 WebSocket 통신을 구조화STOMP 엔드포인트: - /ws-stomp는 클라이언트가 최초로 WebSocket 연결을 맺는 진입점- SockJS 지원을 통해 브라우저 호환성을 확보메시지 브로커: ..

JAVA 2025.09.23

[SpingBoot] Api 호출시 Redis를 활용한 캐시 저장

백엔드에서는 controller에서 Api를 호출하면, service에서 이를 처리해서 반환함.자주 호출하는 Api의 경우, 결과를 미리 다른 곳에 저장해 놓으면, 이 후에 같은 Api를 호출했을 때, 데이터베이스를 조회하지 않고 저장소에서 가져다 쓰면 되지 않을까??이는 Redis를 사용하여 key와 value의 형식으로 값을 저장해 놓음으로서 가능만약, 동아리 목록을 호출하는 Api가 있다면 Redis를 사용하여 데이터베이스 조회 수를 줄일 수 있음.(Cacheable)하지만, 동아리가 삭제가 되거나, 추가될 경우에 기존에 Redis에 저장된 정보가 최신의 정보를 반영하지 못하므로 삭제가 필요( CacheEvict ) 1. Redis 캐시 설정캐시를 설정하기 위해 CacheConfig 클래스를 생성하..

JAVA 2025.04.04

[프로그래머스] 가장 많이 받은 선물(2024 KAKAO WINTER INTERNSHIP)

문제 요약친구들이 주고받은 선물 기록을 바탕으로, 다음 달에 가장 많은 선물을 받을 친구가 몇 개를 받을지 예측하는 문제 선물 주고 받는 규칙두 사람이 선물을 주고받은 적이 있다면더 많은 선물을 줬던 사람이 다음 달에 하나 받음.선물을 주고받은 적이 없거나 동일한 개수로 주고받았다면**선물 지수(준 선물 - 받은 선물)**가 더 큰 사람이 작은 사람에게 하나 받음.선물 지수도 같다면선물을 주고받지 않음.입출력 예시friends: 친구들의 목록gifts: "A B" 형식의 선물 기록 (A가 B에게 선물 줌)result: 다음 달 가장 많은 선물을 받는 친구가 받을 선물 개수friends 목록주고받은 선물 기록 (gifts)결과["muzi", "ryan", "frodo", "neo"]["muzi frodo"..

JAVA 2025.03.07

[Spring Boot] 빈(Bean)이란? Autowired 란?

1. 빈(Bean)이란? 빈(Bean)은 스프링 프레임워크에서 관리하는 객체(인스턴스)!!스프링 컨테이너(Spring Container)가 생성하고, 필요한 곳에서 사용할 수 있도록 관리함.💡 즉, "스프링이 직접 관리하는 객체이다.빈 없이 객체를 생성하는 경우public class UserService { private UserRepository userRepository = new UserRepository(); // 직접 생성 public void processUser() { userRepository.save(new User("홍길동")); }}  단점 빈을 사용하지 않으면 객체를 new를 사용해서 위와 같이 직접 생성해야함.UserRepository의 구현이 바뀌면..

JAVA 2025.03.07

[Java] Set, Map, ArrayList, 2D Array

1. set (중복을 허용하지 않는 집합)중복을 허용하지 않으며, 순서가 중요하지 않은 데이터를 저장종류정렬중복 허용순서 유지특징HashSetXXX가장 빠름LinkedHashSetXXO입력 순서를 유지TreeSet오름차순 자동 정렬XX자동정렬import java.util.*;public class SetExample { public static void main(String[] args) { // 1️⃣ HashSet (중복X, 순서X) Set hashSet = new HashSet(); hashSet.add("Apple"); hashSet.add("Banana"); hashSet.add("Cherry"); hashSet.a..

JAVA 2025.03.05

[Spring Boot] IntelliJ에서 Spring Boot와 MySQL 연동하기

Mysql과 IntelliJ가 설치되어 있다는 가정하에 연동을 준비하겠습니다.  IntelliJ에서는 프로젝트를 만들 때 의존성을 " Dependencies" 에서 추가할 수 있기 때문에 필요한 의존성을 미리 설정한다.  Spring Boot DevTools // 개발 중 변경사항을 자동으로 감지하여 서버를 다시 시작하지 않고도 적용Spring Web // 웹 애플리케이션 개발을 위한 기본 필수 의존성Spring Data JPA // Java Persistence API(JPA)를 쉽게 사용할 수 있도록 지원하는 모듈MySQL Driver // MySQL 데이터베이스와 Java 애플리케이션을 연결하기 위한 JDBC 드라이버Lombok (선택 사항) // Getter, Setter, Constructor ..

JAVA 2025.02.19