최신글
- 알고리즘 [Algorithms] 브루트 포스 알고리즘 Brute Force 알고리즘?브루트포스는 한국어로 무식한 힘이라는 뜻을 가졌으며 완전 탐색 알고리즘의 한 종류입니다.전공자 용어로는 하드코딩이며, 브루트포스 알고리즘은 완전탐색으로 답을 도출하는 알고리즘입니다. 모든 경우의 수를 전부 탐색하기 때문에, 100% 정확성을 보장하지만 그만큼의 높은 시간 복잡도를 갖습니다. 비전공자분들의 이해를 돕기위해 예시)자물쇠 비밀번호를 잊어버렸을 때 000 ~ 999까지 모든 조합을 시도해보는 방법입니다. 완전탐색과 브루트포스의 차이점완전탐색과 브루트포스는 같은 개념이다. 완전탐색 : 문제 해결 방법론적 관점에서의 용어모든 경우의 수를 전부 탐색하는 방식의 알고리즘 - 결과보다는 탐색 과정의 중점 브루트포스 : 구현 방식 관점에서의 용어모든 경우를 탐색하고 답을 도..
- Spring Boot [Spring Boot] 스프링부트에서 WebSocket, STOMP를 이용한 채팅기능 구현하기 (2) - 도메인 모델과 Redis 연동 사용된 플러그인 : Lombok, Slf4j implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.webjars:webjars-locator-core' implementation 'org.webjars:sockjs-client:1.5.1' implementation 'org.webjars:stomp-websocket:2.3.4' implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'it.ozimov:embedded-redis:0.7.2' 1. 채팅 도메인 모델 구현 이번 포스팅에서 구현할 단..
-
Spring Boot
[Spring Boot] 스프링부트에서 WebSocket, STOMP를 이용한 채팅기능 구현하기 (1)
Spring Boot로 구현하는 실시간 채팅 시스템 - Part 1: 기본 구조 이해하기Spring Boot와 WebSocket, STOMP 프로토콜, Redis를 활용하여 실시간 채팅 시스템 구현 1. HTTP vs WebSocket HTTP 통신의 특징과 한계 HTTP 통신의 특징과 한계 기존의 웹 애플리케이션에서 주로 사용하는 HTTP 통신은 다음과 같은 특징이 있습니다. 1. 비연결성(Connectionless) - 클라이언트가 요청을 보내면 서버가 응답을 하고 바로 연결을 종료 - 실시간 통신에는 부적합 2. 단방향 통신 - 클라이언트의 요청이 있어야만 서버가 응답 가능 - 서버에서 클라이언트로 먼저 데이터를 보낼 수 없음 3. 무상태성(Stateless)- 서버가 클라이언트의 상..
- CS지식 [JAVA] equals()와 hashCode() 메서드 재정의 개발하다 보면 객체를 비교해야 할 일이 정말 많죠. "이 두 객체가 같은 걸까?", "이 객체들을 어떻게 정렬하지?" 이런 고민들을 한 번쯤은 해보셨을 겁니다. 오늘은 Java에서 객체 비교를 제대로 구현하는 방법에 대해 자세히 알아보겠습니다. 1. 객체 비교의 기본 개념1.1 동일성(Identity)과 동등성(Equality)동일성: 객체의 참조값(메모리 주소)이 같음 (== 연산자)동등성: 객체의 상태나 값이 같음 (equals() 메서드)1.2 equals() 메서드와 동등성equals() 메서드는 객체의 내용이나 상태를 기반으로 두 객체가 같은지를 판단Object 클래스의 기본 equals()는 == 연산과 마찬가지로 객체의 참조를 비교객체의 동등성 비교를 위해서는 equals() 메서드를 오버라..
- Spring Boot 단위 테스트에서 private 메소드 테스트가 필요한가? 정답 : https://shoulditestprivatemethods.com/1. Private 메소드 테스트가 불필요한 이유 1.1 캡슐화 원칙 위배Private 메소드는 클래스의 내부 구현 세부사항외부에서 직접 접근하여 테스트하는 것이 캡슐화 원칙에 위배됨1.2 간접적인 테스트 커버리지public class OrderService { public Order processOrder(OrderRequest request) { validateOrder(request); // private 메소드 return createOrder(request); // private 메소드 } private void validateOrder(OrderRequest requ..
-
알고리즘 [Algorithms] 브루트 포스 알고리즘 Brute Force 알고리즘?브루트포스는 한국어로 무식한 힘이라는 뜻을 가졌으며 완전 탐색 알고리즘의 한 종류입니다.전공자 용어로는 하드코딩이며, 브루트포스 알고리즘은 완전탐색으로 답을 도출하는 알고리즘입니다. 모든 경우의 수를 전부 탐색하기 때문에, 100% 정확성을 보장하지만 그만큼의 높은 시간 복잡도를 갖습니다. 비전공자분들의 이해를 돕기위해 예시)자물쇠 비밀번호를 잊어버렸을 때 000 ~ 999까지 모든 조합을 시도해보는 방법입니다. 완전탐색과 브루트포스의 차이점완전탐색과 브루트포스는 같은 개념이다. 완전탐색 : 문제 해결 방법론적 관점에서의 용어모든 경우의 수를 전부 탐색하는 방식의 알고리즘 - 결과보다는 탐색 과정의 중점 브루트포스 : 구현 방식 관점에서의 용어모든 경우를 탐색하고 답을 도.. -
Spring Boot [Spring Boot] 스프링부트에서 WebSocket, STOMP를 이용한 채팅기능 구현하기 (2) - 도메인 모델과 Redis 연동 사용된 플러그인 : Lombok, Slf4j implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.webjars:webjars-locator-core' implementation 'org.webjars:sockjs-client:1.5.1' implementation 'org.webjars:stomp-websocket:2.3.4' implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'it.ozimov:embedded-redis:0.7.2' 1. 채팅 도메인 모델 구현 이번 포스팅에서 구현할 단.. -
Spring Boot [Spring Boot] 스프링부트에서 WebSocket, STOMP를 이용한 채팅기능 구현하기 (1) Spring Boot로 구현하는 실시간 채팅 시스템 - Part 1: 기본 구조 이해하기Spring Boot와 WebSocket, STOMP 프로토콜, Redis를 활용하여 실시간 채팅 시스템 구현 1. HTTP vs WebSocket HTTP 통신의 특징과 한계 HTTP 통신의 특징과 한계 기존의 웹 애플리케이션에서 주로 사용하는 HTTP 통신은 다음과 같은 특징이 있습니다. 1. 비연결성(Connectionless) - 클라이언트가 요청을 보내면 서버가 응답을 하고 바로 연결을 종료 - 실시간 통신에는 부적합 2. 단방향 통신 - 클라이언트의 요청이 있어야만 서버가 응답 가능 - 서버에서 클라이언트로 먼저 데이터를 보낼 수 없음 3. 무상태성(Stateless)- 서버가 클라이언트의 상..