전체 글 88

ARP(Address Resolution Protocol)

What is ARP Request? 데이터를 받는 기기의 맥주소를 알기 위한 방법이다. Process ARP는 브로드캐스트를 통해 맥주소를 알아낸다. 같은 네트워크 대역대의 모든 기기에 ARP Request Packet을 보낸다. ARP Request Packet은 "보내는 기기의 맥주소 + 보내는 기기의 IP주소 + 받는 기기의 IP주소"로 이루어져있다. ARP Request Packet에 해당하는 기기는 이에 응하는 ARP Reply Packet을 보낸다. ARP Reply Packet에는 "자신의 IP주소 + 자신의 맥주소"를 보낸다. 요청자는 ARP Cache Table을 업데이트 한다. 해당 테이블에는 IP 주소 + IP 주소에 해당하는 MAC 주소 + 유효기간이 기록되어 있다. Wrap Up..

Network 2023.09.13

Ping

Ping 이란 Ping은 프로그램이다. 해당 프로그램은 RTT(Round Trip Time)을 측정하기 위해 사용된다. RTT는 source server에서 dest server로 packet을 보낼 때 [ packet이 dest server로 가는 시간 + dest server에서 packet을 처리하는 시간 + source server로 packet이 가는 시간 + source에서 packet을 처리하는 시간]로 구성된다. RTT는 네트워크 속도에 반비례하고 네트워크 속도는 거리에 반비례한다.

Network 2023.08.29

HashTable

해쉬테이블은 데이터를 키와 값으로 저장하는 자료구조이다. 키를 인풋으로 해쉬 함수를 통해 값을 낸 뒤 모듈러 연산으로 다시 값(인덱스)을 내 배열의 특정 인덱스에 링크드리스트 자료구조 형태로 저장한다. 서로 값이 다른 키이지만 모듈러 연산 결과 값이 같을 경우 같은 인덱스에 데이터가 저장되게 되어 충돌이 발생하는데 이 때 해당 인덱스에 링크드리스트 형태로 값을 저장한다. 링크드리스트의 각 노드는 키를 참조하고 있으므로 충돌이 발생한 키값에 대한 값을 찾는 경우 노드가 참조하고 있는 값을 통해 원하는 값에 접근할 수 있다. 데이터를 삽입, 삭제, 탐색 하는 시간복잡도의 경우 평균적으로 O(1) 시간 복잡도를 갖는다. 최악의 경우 O(n)의 시간 복잡도를 갖는다.현대의 해쉬테이블은 강력한 해쉬 함수를 제공하..

DataStructure 2023.08.22

전략패턴

선행 개념 의존관계 객체와 객체 간 관계의 지속기간이 짧은 경우 특정 클래스 내부 메서드에서 인자로 특정 객체를 인자로 받을 때 위의 상황에서 객체의 지속 기간이 짧은 이유는 해당 메서드를 사용할 때 마다 필요한 객체를 사용하고 역할이 끝나면 객체를 사용한 객체와 연관성이 없기 때문 연관 관계 객체와 객체 간 관계의 지속기간이 긴 경우 특정 클래스의 생성자 메서드에서 인자로 특정 객체를 받을 때 위의 상황에서 객체의 지속 기간이 긴 이유는 생성자 메서드에서 해당 객체를 생성 후 해당 객체를 계속해서 가지고 있기 때문 전체 객체 다른 객체의 기능을 사용하는 객체 부분객체 전체 객체에게 사용되는 객체 집합 관계의 종류 집약 관계 한 객체가 다른 객체를 포함 할 때 부분객체를 포함한다 전체 객체의 라이프타임과..

Design Pattern 2023.07.24

옵저버 패턴

옵저버 패턴 구성 옵저버 패턴의 구성은 다음과 같다. 2개의 인터페이스 그리고 각각의 인터페이스를 구현한 구상클래스로 파악할 수 있다. 옵저버 인터페이스 주제 인터페이스 주제클래스 옵저버 클래스 주제 인터페이스(Subject Interface) 해당 인터페이스에서 최소한으로 가지고 있어야 할 변수와 메서드는 아래와 같다. 옵저버 명단부터 알아보자. 해당 배열에 들어가는 데이터 타입은 옵저버 객체이다. 옵저버 객체는 옵저버 인터페이스를 구현한 옵저버 객체를 의미한다. 해당 명단에 등록할 때에는 주제 인터페이스를 구현된 구상 클래스 주제 내 register 함수를 통해 옵저버 객체를 등록한다. 해당 명단에 옵저버 객체를 등록하는 이유는 notify 함수를 통해서 옵저버 객체 내부에 각각 구현된 update ..

Design Pattern 2023.07.24

추상 팩토리 패턴

추상팩토리 패턴 예제 추상팩토리는(animal_factory)는 Class 또는 method 그 자체를 받는다. 그리고 추상팩토리를 정의한 클래스 내 메서드 안에서 추상팩토리를 사용한다. import random class PetShop: def __init__(self, animal_factory=None): self.pet_factory = animal_factory def show_pet(self): pet = self.pet_factory() print("We have a lovely {}".format(pet)) print("It says {}".format(pet.speak())) class Dog: def speak(self): return "woof" def __str__(self): re..

Design Pattern 2023.06.09

OOP 스럽게 Python 작성하기

추상 클래스의 선언과 구현 그리고 생성자 주입 class Switchable(ABC): @abstractmethod def turn_on(self): pass @abstractmethod def turn_off(self): pass class LightBulb(Switchable): def turn_on(self): print("Lightbulb: turned on") def turn_off(self): print("Lightbulb: turned off") class Fan(Switchable): def turn_on(self): print("Fan: turned on") def turn_off(self): print("Fan: turned off") class PowerSwitch: def __ini..

Programming/PYTHON 2023.05.31