전체 글

네트워크 토폴로지란?네트워크 토폴로지란 노드와 링크가 어떻게 구성되어 있는지를 뜻한다.종류버스특징하나의 회선에 여러 개의 노드노드 추가, 삭제 쉬움설치비용 적음장점소규모 네트워크를 구축하기 쉬움한 노드에 장애가 발생해도 다른 노드에 영향이 없음.단점메인 링크에 많은 트래픽이 생기면 정체현상 발생 가능성 높음.메인 링크 망가지면 큰 일남.스타특징중앙에 있는 노드를 기반으로 연결된 형태노드 추가, 삭제 쉬움장점중앙노드가 아닌 한 노드에 장애가 발생해도 다른 노드에 영향 없음.안정성이 높음. 중앙 노드가 아닌 곳에 장애가 발생해도 다른 노드로 전이되기 어려운 구조이기 때문. 다른 노드에 영향을 미치기 위해서는 무조건 중앙 노드를 거쳐야 하기 때문에 보통 이런 현상을 방지하기 위해 중앙 노드에 방지 장치를 해 ..
네트워크의 정의네트워크란 노드와 링크가 서로 연결되어 있으며 리소스를 공유하는 집합이다.노드: 서버, 라우터, 스위치 등 네트워크 장치링크(엣지): 유선 또는 무선과 같은 연결매체트래픽의 정의트래픽은 특정시점에 링크 내에 흐르는 데이터의 양이다.서버에 저장된 파일을 클라이언트가 다운로드시 발생되는 데이터의 누적량이다.단위는 bps(bits per second)이다. (초당 전송 또는 수신되는 비트)트래픽과 처리량의 차이트래픽이 많아졌다 = 흐르는 데이터가 많아졌다.처리량이 많아졌다 = 처리되는 트래픽이 많아졌다.처리량의 정의처리량(throughput)은 링크 내에서 성공적으로 전달된 데이터의 양이다.대역폭의 정의대역폭(bandwidth)는 주어진 시간동안 네트워크 연결을 통해 흐를 수 있는 최대 비트수를..
정의주체가 어떤 객체의 상태변화를 관찰하다가 상태변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 패턴.예시유튜브 채널의 알림을 생각해보면 유튜브 채널이 변화를 감지해야 하는 객체이고 구독자들이 옵저버들이라고 볼 수 있다 출처CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 - 큰돌https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95/dashboard
정의전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴.대표적인 예시로 node.js에서 로그인할 때 널리 쓰는 모듈인 passport를 보면 여러 전략을 갈아끼는 방식으로 로그인을 쉽게 구현할 수 있다. 출처CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 - 큰돌https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95/dashboard
DI의존성주입(DI, Dependency Injection)메인 모듈이 직접 다른 하위 모듈에 대한 의존성을 주는 것이 아닌 중간에 의존성 주입자(dependency injector)를 두어서 간접적으로 의존성을 주입하는 방식이다.이를 통해 메인 모듈과 하위 모듈간의 의존성을 느슨하게 만들 수 있다.DIP의존관계역전원칙(DIP, Dependency inversion Principle)상위 모듈은 하위 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다.추상화는 세부사항에 의존해서는 안 된다. 세부 사항은 추상화에 따라 달라져야 한다.장점모듈을 쉽게 교체할 수 있는 구조단위 테스팅, 마이그레이션이 쉬워진다.애플리케이션 의존성 방향이 일관되어 코드를 추론하기 쉬워진다.단점결론적으로 모듈 수가 더 많이..
정의상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴.상위 클래스에서는 객체 생성방식에 대해 알 필요가 없어서 유연성을 갖게 되고 객체 생성 로직은 하위 클래스에서만 관리되기 때문에 유지보수성이 향상된다.예시enum CoffeeType { LATTE, ESPRESSO}abstract class Coffee { protected String name; public String getName() { return name; }}class Latte extends Coffee { public Latte() { name = "latte"; }}class Espresso extends Coffee { public Espresso..
1. 정의- 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. 2. 장점- 하나의 인스턴스를 다른 모듈이 공유하여 사용하기 때문에 인스턴스 생성비용이 줄어든다.- 따라서 인스턴스생성에 많은 비용이 드는 I/O 바운드 작업에 많이 사용한다. (네트워크, DB 연결, File system 등) 3. 단점- 의존성이 높아지는 문제가 있다.- TDD를 방해하는 문제가 있다.- 단위 테스트 시에는 각 테스트가 독립적이어야 하는데 싱글톤 패턴으로 만든 인스턴스를 공유하기 때문에 각 테스트마다 독립적인 인스턴스를 만들기 어렵다. 4. 싱글톤 패턴을 구현하는 방법단순한 메서드 호출public class Singleton { private static Singleton instance; private Singl..
1. 정의- 디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것.- 라이브러리, 프레임워크를 만드는 데 기초적인 원리가 된다. 2. 대분류- 생성패턴  - 객체 생성 방법이 들어간 디자인패턴  - 싱글톤, 팩토리, 추상팩토리, 빌더, 프로토타입 패턴이 있다.- 구조패턴  - 객체, 클래스 등으로 큰 구조를 만들 때 유연하고 효율적으로 만드는 방법  - 프록시, 어댑터, 브리지, 복합체, 데코레이터, 퍼사드, 플라이웨이트 패턴이 있다.- 행동패턴  - 객체나 클래스 간의 알고리즘, 책임 할당에 관한 패턴.  - 이터레이터, 옵저버, 전략, 책임연쇄, 커맨드, 중재자, 메멘토, 상태, 템플릿메서드, 비지터 패턴이..
Purewater
프로그램 공부 일기장