본문 바로가기

전체 글104

MQTT 기반 메시징 구성 요소(MQTT, Mosquitto, RabbitMQ) 정리 PUSH 서버 연동이 필요한 프로젝트를 진행하면서 관련 정보를 정리해 보았습니다.프로젝트에서는 빠르고 가벼운 Mosquitto를 채택하였습니다. MQTT MQTT(Message Queuing Telemetry Transport) 란 텔레메트리 장치, 모바일 기기에 최적화된 라이트 메시징 프로토콜 입니다.더 다양한 앱과 서비스의 등장으로 HTTP등의 기존 프로토콜만으로는 커뮤니케이션의 다양한 요구사항을 수용 할 수 없게 되었고, 제한된 통신 환경을 고려하여 디자인된 MQTT 프로토콜은 모바일 영역의 진화에 따라 최적의 프로토콜로 주목 받고 있습니다. [MQTT 프로토콜 설계의 의도]프로토콜이 차지하는 모든 면의 리소스 점유(footprint)를 최소화느리고 품질이 낮은 네트워크의 장애와 단절에 대비클라이.. 2025. 12. 5.
[Java]헥사고날 아키텍처 이번 프로젝트에서 헥사고날 아키텍처를 적용한다고 해서 블로그에 정리했습니다.1. 헥사고날 아키텍처 개요 헥사고날 아키텍처(또는 포트와 어댑터 아키텍처)는 소프트웨어 시스템을 외부 시스템과 격리하여 비즈니스 로직을 중심으로 개발하도록 돕는 아키텍처 패턴입니다.이 아키텍처는 외부 의존성을 관리하고 시스템을 더 쉽게 확장하고 테스트할 수 있도록 합니다.핵심 아이디어는 애플리케이션의 내부와 외부 시스템 간의 상호작용을 포트(Ports) 와 어댑터(Adapters) 라는 추상화로 나누어 설계하는 것입니다. 외부 시스템은 어댑터를 통해 시스템과 상호작용하며, 포트는 애플리케이션 내부의 핵심 도메인 로직과 외부 시스템 간의 인터페이스 역할을 합니다.2. 헥사고날 아키텍처의 구성 요소핵심 도메인(Core Domain).. 2025. 2. 5.
[알고리즘] java 버블 정렬 버블 정렬(bubble sort) 알고리즘의 특징  장점 - 구현이 매우 간단하다. 단점- 순서에 맞지 않은 요소를 인접한 요소와 교환한다.- 하나의 요소가 가장 왼쪽에서 가장 오른쪽으로 이동하기 위해서는 배열에서 모든 다른 요소들과 교환되어야 한다.- 특히 특정 요소가 최종 정렬 위치에 이미 있는 경우라도 교환되는 일이 일어난다.- 일반적으로 자료의 교환 작업(SWAP)이 자료의 이동 작업(MOVE)보다 더 복잡하기 때문에 버블 정렬은 단순성에도 불구하고 거의 쓰이지 않는다.버블 정렬(bubble sort)의 시간복잡도시간복잡도를 계산한다면비교 횟수최상, 평균, 최악 모두 일정n-1, n-2, … , 2, 1 번 = n(n-1)/2교환 횟수입력 자료가 역순으로 정렬되어 있는 최악의 경우, 한 번 교환하.. 2025. 2. 5.
[Spring]싱글톤 빈이 동시 요청을 처리하는 방법 Spring에서 여러 스레드에서 동일한 빈 인스턴스를 사용할 수 있는 이유Spring이 여러 스레드에서 동일한 빈 인스턴스를 사용할 수 있는 이유는 각 스레드에 대해 Java가 개인 스택 메모리를 생성하기 때문입니다. 즉, 멤버 변수를 사용하지 않고 지역 변수만 사용하면, 각 요청은 독립적인 데이터 공간을 가지므로 동시성 문제가 발생하지 않습니다. 각 스레드에 대해 Java가 개인 스택 메모리를 생성하기 때문입니다.스택 메모리는 스레드 실행 중 메서드 내부에서 사용되는 로컬 변수의 상태를 저장하는 역할을 합니다.이런 방식으로 Java는 병렬로 실행되는 스레드가 서로의 변수를 덮어쓰지 않도록 합니다.Spring의 싱글턴 빈은 힙 메모리에 생성되지만, 동기화나 개별 스레드 제한 없이 공유되므로 여러 스레드가.. 2025. 2. 2.
에라토스테네스_체 고대 그리스의 수학자 에라토스테네스가 만들어 낸 소수를 찾는 방법. 이 방법은 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체'라고 부른다. 따지고 보면 f(x)=x1P(x)f(x)=1P​(x)x​[1]의 수열을 표로 시각화한 것이라고 볼 수 있다. 1. solution(int n) - 에라토스테네스의 체public int solution(int n) { int answer = 0; int[] ch = new int[n+1]; for(int i=2; i 최종 복잡도O(nlog⁡log⁡n)에라토스테네스의 체의 특성상 매우 효율적임.2. solution2(int n) - 단순 소수 판별 구현시간 복잡도 분석외부 for 루프: O(n)2부터 n까지 모든 수를 순회내부 for 루프: O.. 2025. 2. 1.
파일 시스템과 DBMS 정리 1. 파일 시스템(File System)의 개념파일 시스템은 운영체제에서 데이터를 저장하고 관리하는 가장 기본적인 방법입니다. 하드디스크, SSD와 같은 저장장치에 데이터를 파일 형태로 저장하며, 파일을 읽고 쓰기 위한 규칙과 구조를 제공합니다. 특징데이터를 파일 단위로 저장.디렉토리 구조로 파일을 분류 및 관리.운영체제에 내장된 기본적인 데이터 관리 도구.텍스트, 이미지, 비디오 등 다양한 형태의 파일 저장 가능.장점단순한 구조로 빠르게 접근 가능.별도의 소프트웨어 설치 없이 운영체제만으로 사용 가능.단점데이터 중복 및 무결성 보장 어려움.파일 단위로 관리되어 대규모 데이터 관리 비효율적.복잡한 검색, 관계형 데이터 처리 기능 부족. 2. DBMS(Database Management System)의 개.. 2025. 1. 19.