분류 전체보기 (31) 썸네일형 리스트형 [Algorithms] 브루트 포스 알고리즘 Brute Force 알고리즘?브루트포스는 한국어로 무식한 힘이라는 뜻을 가졌으며 완전 탐색 알고리즘의 한 종류입니다.전공자 용어로는 하드코딩이며, 브루트포스 알고리즘은 완전탐색으로 답을 도출하는 알고리즘입니다. 모든 경우의 수를 전부 탐색하기 때문에, 100% 정확성을 보장하지만 그만큼의 높은 시간 복잡도를 갖습니다. 비전공자분들의 이해를 돕기위해 예시)자물쇠 비밀번호를 잊어버렸을 때 000 ~ 999까지 모든 조합을 시도해보는 방법입니다. 완전탐색과 브루트포스의 차이점완전탐색과 브루트포스는 같은 개념이다. 완전탐색 : 문제 해결 방법론적 관점에서의 용어모든 경우의 수를 전부 탐색하는 방식의 알고리즘 - 결과보다는 탐색 과정의 중점 브루트포스 : 구현 방식 관점에서의 용어모든 경우를 탐색하고 답을 도.. [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] 스프링부트에서 WebSocket, STOMP를 이용한 채팅기능 구현하기 (1) Spring Boot로 구현하는 실시간 채팅 시스템 - Part 1: 기본 구조 이해하기Spring Boot와 WebSocket, STOMP 프로토콜, Redis를 활용하여 실시간 채팅 시스템 구현 1. HTTP vs WebSocket HTTP 통신의 특징과 한계 HTTP 통신의 특징과 한계 기존의 웹 애플리케이션에서 주로 사용하는 HTTP 통신은 다음과 같은 특징이 있습니다. 1. 비연결성(Connectionless) - 클라이언트가 요청을 보내면 서버가 응답을 하고 바로 연결을 종료 - 실시간 통신에는 부적합 2. 단방향 통신 - 클라이언트의 요청이 있어야만 서버가 응답 가능 - 서버에서 클라이언트로 먼저 데이터를 보낼 수 없음 3. 무상태성(Stateless)- 서버가 클라이언트의 상.. [JAVA] equals()와 hashCode() 메서드 재정의 개발하다 보면 객체를 비교해야 할 일이 정말 많죠. "이 두 객체가 같은 걸까?", "이 객체들을 어떻게 정렬하지?" 이런 고민들을 한 번쯤은 해보셨을 겁니다. 오늘은 Java에서 객체 비교를 제대로 구현하는 방법에 대해 자세히 알아보겠습니다. 1. 객체 비교의 기본 개념1.1 동일성(Identity)과 동등성(Equality)동일성: 객체의 참조값(메모리 주소)이 같음 (== 연산자)동등성: 객체의 상태나 값이 같음 (equals() 메서드)1.2 equals() 메서드와 동등성equals() 메서드는 객체의 내용이나 상태를 기반으로 두 객체가 같은지를 판단Object 클래스의 기본 equals()는 == 연산과 마찬가지로 객체의 참조를 비교객체의 동등성 비교를 위해서는 equals() 메서드를 오버라.. 단위 테스트에서 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.. @requiredargsconstructor @autowired 차이 @Autowired란? Autowired는 스프링 프레임워크에서 제공하는 어노테이션으로, 필드, 생성자, 메서드에 사용할 수 있습니다. 스프링 컨테이너가 자동으로 해당 타입의 빈을 찾아 주입해줍니다.@Servicepublic class UserService { @Autowired private UserRepository userRepository; @Autowired private EmailService emailService;} @RequiredArgsConstructor란? @RequiredArgsConstructor는 Lombok 라이브러리에서 제공하는 어노테이션으로, final 또는 @NonNull로 표시된 필드에 대한 생성자를 자동으로 생성해줍니다.@Service.. [Network] 웹 통신 기초지식 1. HTTP와 HTTPSHTTP (Hypertext Transfer Protocol)HTTP는 웹에서 정보를 주고받는 기본적인 프로토콜로써클라이언트 (주로 웹 브라우저) 와 서버 간의 통신 방식을 정의함. 주요 특징텍스트 기반 프로토콜 상태를 저장하지 않는 (Stateless) 프로토콜 기본적으로 80번 포트 사용 Stateless : 상태 비기반예시) 아파트입구 경비실에서 들어올때도 검사하고 나갈때도 검사 Stateful : 상태 기반예시 ) 신분증 제출하고 출입증 받아가는 느낌HTTPS (HTTP Secure) HTTPS는 HTTP의 보안 강화 버전SSL/TLS 프로토콜을 사용하여 통신을 암호화합니다. 주요 특징1. 데이터 암호화로 보안성 향상 2. 기본적으로 443번 포트 사용 3. 인증서( S.. [Spring Boot] Discord API 사용중 Message Id provided was older than 2 weeks 해결 스프링부트에서 Discord의 Bot기능을 이용해서 API 명세서봇을 운영하다가스프링부트 서버 실행이 실패하며 해당 로그를 뱉어냈다.java.lang.IllegalArgumentException: Message Id provided was older than 2 weeks. Id: ~~~~~ 해당 로그는 주로 메시징 시스템 ( SNS , Kafka 등 ) 또는 소셜 미디어 API ( Slack, Discord 등 ) 와 상호작용을 할 때 발생하는 에러로써 사용중인 메시지 Id ( API )가 시스템에 유효하지 않다고 판단되는 경우에 반환되는 에러로그이다. 메시징 시스템, API 설계와 관련된 것이다. 주된 원인은 1. 오래된 메시지 ID : 메시지 ID가 생성된 이후 일정 기간이 지나면 더 이상 유.. 이전 1 2 3 4 다음