본문 바로가기

전체 글15

Go와 의존성 주입 의존관계 역전 원칙 (Dependency Inversion Principle, DIP)문제를 작은 단위로 분할해서 해결책을 찾아내는 것은 소프트웨어 엔지니어링의 기본적인 접근법 중 하나다. 여기서 중요한 것은 분할한 문제들 간에 연결 고리를 약하게 하는 것이다. 각 문제의 의존 관계를 제거하고 분할된 작은 문제들을 분담해서 병렬로 문제를 해결할 수 있다. 상위 개념의 문제를 하위 개념의 문제와 독립해서 해결하기 위한 방법으로, SOLID 원칙 중 하나인 의존관계 역전 원칙(Dependency Inversion Principle, DIP)이 있다. 클린 소프트웨어에서는 다음과 같이 정의한다.상위 수준의 모듈은 하위 수준의 모듈에 의존해서는 안 된다. 둘 모두 추상화에 의존해야 한다. 추상화는 상세 구현에 .. 2024. 7. 5.
Heap Heap Data Structure  Heap은 각 상위 노드와 해당 하위 노드 사이에 고정된 관계가 있는 트리 기반 데이터 구조다. 최대 Heap의 경우 이는 상위 노드의 값이 해당 하위 노드보다 크거나 같아야 함을 의미한다. 이는 루트 노드가 항상 최댓값을 갖는다는 것을 의미한다. 최소 Heap의 경우 루트 노드는 항상 가장 작은 값을 갖는다.  Heap을 왜 사용하는가 힙을 유용하게 만드는 몇 가지 주요 속성은 다음과 같다.주어진 "n" 값 집합의 최댓값 또는 최솟값을 O(1) 시간 내에 찾을 수 있다. 배열 기반 목록을 사용하는 경우 일반적으로 O(n) 시간이 걸린다.값을 추가하고 제거하는 데는 O(log(n)) 시간이 걸리며, 최대 또는 최소 힙 속성을 유지한다. 이는 힙 정렬을 사용하여 항목 .. 2024. 6. 26.
WebSocket, HTTP WebSocketWebSocket 프로토콜은 클라이언트와 서버가 전이중 채널에서 통신하는 방법을 설명한다. 즉, 클라이언트와 서버 모두 오랫동안 지속되는 연결을 통해 동시에 데이터를 보내고 받을 수 있다. 이러한 유형의 통신은 HTTP 폴링보다 오버헤드가 적기 때문에 애플리케이션에 실시간 기능에 대한 여러 이점을 제공한다. 전이중 채널은 양방향 통신이 동시에 가능한 통신 방식으로, 송신과 수신을 동시에 할 수 있는 채널을 의미한다.  WebSocket 장점양방향 통신 연결된 양쪽에서 언제든지 메시지를 보낼 수 있다.WebSocket 서버가 대화를 조정하는 경우, 클라이언트는 서버에 메시지를 보낸 다음 연결된 다른 모든 클라이언트에 즉시 이를 전달한다. 사용자는 실시간으로 서로에게 메시지를 보낼 수 있다... 2024. 6. 25.