반응형

전체 글 284

가십 프로토콜

1. 가십 프로토콜이란?가십 프로토콜은 분산 시스템에서 노드들이 정보를 교환하며 동기화하는 방식입니다. 이름 그대로, 소문(gossip)이 퍼지듯 정보가 네트워크 전체로 확산됩니다.가십 프로토콜의 주요 특징랜덤성: 정보가 무작위로 선택된 노드들에게 전파됩니다.확장성: 네트워크의 크기가 커져도 효율적으로 작동합니다.내결함성: 일부 노드가 고장 나더라도 전체 정보 전파에 문제가 없습니다.2. 가십 프로토콜의 동작 방식기본 개념정보의 전파:새로운 정보를 가진 노드가 무작위로 선택된 다른 노드에게 정보를 전달합니다.선택된 노드들은 다시 새로운 노드를 선택해 정보를 전파합니다.이 과정이 반복되면서 네트워크 전체로 정보가 확산됩니다.3. 전파 수(Fanout)전파 수란?전파 수는 한 번에 정보를 전파할 노드의 수를..

개발관련/ETC.. 2025.01.25

IAsyncStateMachine 과 Task

1. Task와 async/awaitasync/await: C#의 async와 await 키워드는 비동기 메서드를 쉽게 작성할 수 있게 해준다. async 키워드를 메서드에 붙이면 컴파일러는 해당 메서드를 상태 머신(state machine)코드로 변환한다. await는 비동기 작업이 완료될 때까지 메서드의 실행을 일시 중단(suspend)하고, 작업이 완료되면 메서드를 재개(resume)한다2. IAsyncStateMachine의 역할상태 머신(State Machine): async 키워드가 붙은 메서드는 내부적으로 컴파일러에 의해 상태 머신 클래스 코드로 변환된다. 이 상태 머신 클래스는 IAsyncStateMachine 인터페이스를 구현한다. 상태 머신는 비동기 작업의 흐름을 관리하며, await ..

개발관련/C# 2024.09.02

Task 사용 시의 흐름

Task 생성 및 시작:Task 객체가 생성되면, 아직 실행되지 않은 상태. 예를 들어, Task.Run() 또는 Task.Factory.StartNew() 메서드를 호출하면 Task가 실행 준비 상태가 된다.Task는 작업 내용을 정의한 delegate(예: Action 또는 Func)를 인자로 받는다.작업 대기열에 추가 (큐잉):Task가 시작되면, 작업은 스레드 풀의 작업 대기열에 큐잉된다.. 이 작업 대기열은 스레드 풀에서 관리하며, 실행 대기 중인 작업들을 순차적으로 처리한다.작업이 큐잉된 후, 스레드 풀은 사용 가능한 스레드를 선택하여 해당 작업을 할당한다.스레드 풀에서 스레드 선택:스레드 풀은 관리되는 스레드 풀 안에서 현재 유휴 상태인 스레드를 사용하거나, 필요에 따라 새로운 스레드를 생성..

개발관련/C# 2024.09.02

클래스 멤버 변수를 가진 구조체

구조체와 클래스는 C#에서 각각 값 타입과 참조 타입으로 다르게 동작한다. 구조체와 클래스의 메모리 기본적인 메모리 할당은 구조체는 스택, 클래스는 항상 힙에 할당이 된다. 아래의 코드를 보면 MyStruct는 MyClass를 멤버 변수로 가지고 있다.구조체의 ReferenceType는 스택에 올라갈까? 그렇지 않다.classInstance는 힙에 할당되고 structInstance는 스택에 할당된다. 구조체의 ReferenceType는 힙에 할당되어 있는 classInstance를 참조하게 된다.public class MyClass{ public int Value { get; set; } public MyClass(int value) { Value = value; }}..

개발관련/C# 2024.08.30

Dictionary 와 HashTable, SortedDictionary 차이

Dictionary와 HashTable은 모두 Key-Value 저장하는 자료구조이다. 몇 가지 차이점이 존재한다.차이점Dictionary :- 제너릭 타입을 사용한다. 키와 값을 명시적으로 지정해야한다.Hashtable- object 타입으로 키와 값을 저장한다.- 타입의 안정성을 제공하지 않음으로 런타임 에러가 발생할 수 있다.- 박싱, 언박싱이 발생 할 수 있다. HashTable의 문제점을 개선한 것이 Dictionary 자료 구조이다. Dictionary 내부 자료 구조는 HashTable을 사용한다.private int FindEntry(TKey key) { if( key == null) { ThrowHelper.ThrowArgumentNullException(Exceptio..

개발관련/C# 2024.08.30

Daemon.json 호스트 설정시 트러블 슈팅

daemon.json 등록sudo vi /etc/docker/daemon.json 호스트 입력{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]} 서비스를 확인한다.sudo vi /lib/systemd/system/docker.service 서비스에 -H 플래그가 있다면 Daemon.json의 호스트와 충돌이 발생할 수 있다.ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 아래와 같이 제거를 한다.ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock

개발관련/Docker 2024.05.12

MMF(Memory Mapping File)

메모리 매핑 파일(Memory-Mapped File)은 파일이나 장치의 내용을 메모리 주소 공간에 매핑하는 기술이다. 이 방법을 사용하면 파일이나 장치의 데이터에 대한 접근을 마치 메모리에 직접 있는 데이터에 접근하는 것처럼 수행할 수 있다. 이는 데이터의 읽기와 쓰기 속도를 향상시킬 수 있으며, 대용량 파일 처리에 특히 유용하다. 메모리 매핑 파일을 이용한 프로세스 간 공유는 고성능의 IPC 메커니즘을 제공하며, 파일 입출력보다 훨씬 빠른 데이터 접근 속도를 가능하게 한다. 그러나 공유 데이터에 대한 동시 접근을 관리하는 것이 중요하며, 적절한 동기화 방법을 선택하여 데이터의 일관성과 무결성을 보장해야 한다. 작동 원리 매핑 생성: 운영 체제는 파일의 내용을 프로세스의 가상 메모리 주소 공간에 매핑한다..

개발관련/ETC.. 2024.03.18

14503>로봇 청소기

https://www.acmicpc.net/problem/14503 로봇 청소기와 방의 상태가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 방은 N X M 크기의 직사각형으로 나타낼 수 있으며, 1 X 1 크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북 중 하나이다. 방의 각 칸은 좌표 (r, c)로 나타낼 수 있고, 가장 북쪽 줄의 가장 서쪽 칸의 좌표가 (0,0) 가장 남쪽 줄의 가장 동쪽 칸의 좌표가 (N-1, M-1)이다. 즉, 좌표 (r,c) 는 북쪽에서 (r + 1)번째에 있는 줄의 서쪽에서 (c + 1)번째 칸을 가리킨다. 처음에 빈 칸은 전부 청소되지 않은 상..

알고리즘 2024.03.13
반응형