목록전체 글 (20)
05AM

쿼리 실행 계획은 사용자가 SQL을 실행하여 데이터를 추출하려고 할 때 DBMS의 옵티마이저가 수립하는 작업 절차이다. 즉, 실행계획을 통해 쿼리가 어떻게, 어떤 순서로 실행되는지 구체적으로 볼 수 있다. MySQL에서는 `EXPLAIN`이나 `EXPLAIN ANALYZE` 명령어로 쿼리의 실행 계획을 분석할 수 있는데, 이번 포스팅에서는 실행 계획에 포함되는 정보가 무엇이 있는지, 해당 정보를 어떻게 해석하면 좋을지를 알아보자. 🔷 실행 계획 예시SELECT ml.*FROM mission_log ml JOIN user ON ml.user_id = user.idWHERE ml.created_at = :today;위는 오늘 수행한 미션 기록을 유저의 id로 조인하여 조회하는 쿼리문이다. 지금부터는 각 컬..
`Comparable`과 `Comparator`는 객체의 정렬을 위해 사용되는 인터페이스입니다. 두 인터페이스는 서로 다른 방식으로 정렬 기준을 정의합니다.🔷 `Comparable`Comparable 인터페이스는 객체 자체에 기본 정렬 기준을 정의하고자 할 때 사용됩니다. 이 인터페이스를 구현하는 클래스는 자연 정렬(natural ordering)을 가지게 됩니다. 예를 들어, 숫자는 오름차순, 문자열은 사전순 등이 있습니다. 사용 상황:클래스의 기본 정렬 순서를 정의하고 싶을 때객체의 기본 정렬 기준이 하나만 있을 때Comparable 인터페이스는 `compareTo` 메서드를 하나 가지고 있습니다.➡️ 구조public class ClassName implements Comparable { @O..
🔷 `collect()`Java Stream API의 메서드로, 스트림의 요소를 다양한 컬렉션으로 수집하거나 특정한 방식으로 집계하는데 사용된다.`collect` 메서드는 주로 Collector를 인수로 받아 스트림의 요소를 수집한다.// List로 수집List wordList = words.stream().collect(Collectors.toList());// Set으로 수집Set wordSet = words.stream().collect(Collectors.toSet());Stream (Java SE 11 & JDK 11 ) (oracle.com)🔷 `Collectors`다양한 유틸리티 메서드를 제공하는 클래스로, 주로 스트림의 요소를 컬렉션으로 수집하거나 특정한 집계 연산을 수행할 때 사용된다..
DDD(도메인 주도 설계)와 스프링 프레임워크를 사용하는 프로젝트 구조에서 "model", "domain", "entity"는 각각 다른 의미를 가지고 있으며, 특정한 종류의 클래스들을 포함합니다. 이 용어들은 종종 서로 교차하여 사용되기도 하지만, 각각의 역할과 책임이 있습니다. Domain 정의: 도메인은 소프트웨어로 해결하고자 하는 문제 영역입니다. DDD에서는 이 문제 영역을 중심으로 모델링을 진행합니다. 도메인 내에서 비즈니스 로직과 애플리케이션의 핵심 기능이 정의되고 구현됩니다. 패키지 구성: domain 패키지는 다음과 같은 클래스들을 포함할 수 있습니다. Entity: 도메인 내의 핵심 개념을 나타내는 객체로, 식별자(ID)에 의해 구별됩니다. 엔티티는 비즈니스 로직을 포함하며, 도메인의 ..
☀️ TCP 통신의 문제점 Packet Loss (손실) : 데이터 패킷이 송신자에서 수신자로 전송되는 도중에 네트워크 상에서 손실되는 현상 원인: 네트워크 혼잡, 잘못된 라우팅, 패킷 충돌, 하드웨어 결함 등 다양한 이유로 발생할 수 있습니다. 영향: 데이터의 전송 속도 감소, 연결의 비안정성, 데이터의 무결성 문제 등이 발생할 수 있습니다. 해결 방법: 재전송 요청(ARQ)와 같은 메커니즘을 사용하여 손실된 패킷을 다시 보내거나, 전송 제어 프로토콜(TCP)와 같은 프로토콜이 패킷 손실을 감지하고 재전송을 수행합니다. Out-of-Order Packets (순서 바뀜) : 데이터 패킷들이 송신자에서 보낸 순서와 다른 순서로 수신자에게 도착하는 현상 원인: 패킷들이 서로 다른 경로로 전송되거나, 네트워..