STOMP (Simple Text Oriented Messaging Protocol) was originally created for scripting languages (such as Ruby, Python, and Perl) to connect to enterprise message brokers. It is designed to address a minimal subset of commonly used messaging patterns. STOMP can be used over any reliable two-way streaming network protocol, such as TCP and WebSocket. Although STOMP is a text-oriented protocol, messa..
다음학기에 스프링부트 + 플러터 + AI로 졸업 프로젝트를 진행합니다. 저는 백엔드로 스프링부트를 맡았습니다. 채팅 기능이 필요한데 한 번도 해본 적이 없어서 미리 공부해 둘 겸 찾아보았습니다. 아는 게 하나도 없는 상태라 우선 실행되는 걸 확인하고 더 찾아보면서 순차적으로 발전시켜 나가 보고자 합니다. 채팅은 보통 웹소켓을 사용한다고 합니다. 프로젝트 생성 start.spring.io 에서 Spring Web, WebSocket, Lombok 의존관계만 추가해서 프로젝트를 새로 생성해 주었습니다. config/WebSocketConfig.java package com.example.chat.config; import com.example.chat.handler.ChatHandler; import lom..
람다 표현식 람다 표현식은 Java 8부터 추가된 기능이다. 람다 표현식은 이름이 없는 함수면서 메서드 인수로 전달할 수 있는 표현식이다. 익명 클래스를 좀 더 간단하게 줄인 형태라고도 생각할 수 있다. 람다 표현식에 이름은 없지만 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트는 가질 수 있다. 람다 표현식은 파라미터, 화살표, 바디로 이루어진다. 람다 표현식의 기본 문법은 위와 같다. 자바 컴파일러는 람다 표현식이 상요된 콘텍스트를 이용해서 람다 표현식과 관련되 함수형 인터페이스를 추론하므로 함수 디스크립터를 알 수 있고 람다의 시그니처도 추론할 수 있다. 따라서 람다 표현식의 파라미터에도 접근할 수 있으므로 파라미터에서 타입을 생략할 수 있다. 또 파라미터가 한개라면 왼쪽의 소괄호..
동작 파라미터화(behavior parameterization) 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블럭을 의미한다. 동작 파라미터화를 사용하면 자주 바뀌는 요구사항에 효과적으로 대응할 수 있다. 예를들어 정수 리스트에서 특정 정수만 필터링하는 기능을 구현하고 싶다고 한다면 일반 메서드를 사용 2로 나누어 떨어지는 값들을 필터링하는 기능을 일반 메서드로 만든다면 아래와 같다. public static List filterDivideByTwo(List list) { List result = new ArrayList(); for(int x : list) { if(x % 2 == 0) { result.add(x); } } return result; } 하지만 만약 2뿐만 아니라 ..
컬렉션 프레임워크(Collections Framework) ? 컬렉션 프레임워크는 다수의 데이터를 저장, 구성 및 접근에 도움을 주는 인터페이스의 집합이고 여러 구현체들을 제공한다. 상황에 맞게 적절한 구현체를 사용할 수 있다. 컬렉션 프레임워크는 1998년 Java SE 2에 처음 도입되었으며 , 그 뒤로 Java SE 5에서 제네릭이 추가되었을 때, Java 8에서 람다 표현식과 인터페이스의 default 메소드가 추가되었을 때 두 번 추가로 작성되었다. 인터페이스 특징 구현 클래스 List 순서가 있고, 중복을 허용한다. ArrayList, LinkedList, Vector 등 Queue 순서가 있고, 중복을 허용한다. FIFO 구조로 동작한다. LinkedList, PriorityQueue 등 D..