전체 글
-
[네트워크] 서브넷과 서브넷 마스크Computer Science/Network 2022. 12. 28. 15:00
등장 배경 - IPv4는 초기에 IP클래스로 나누어 할당하였고, 자원의 비효율 발생 (ex. 어떤 기업이 필요한 아이피는 10,000개 정도인데 클래스 B는 65,000개 클래스 C는 256개로 B를 부여, 50,000개 의 아이피는 사용이 되지 않은채로 해당 기업에게 점유만 됨) - IP를 사용하는 네트워크 장치 수에 따라 효율적으로 사용 가능한 서브넷 등장 서브넷, 서브넷 마스크 서브넷: IP 주소에서 네트워크 영역을 부분적으로 나눈 부분망, 부분 네트워크 서브넷 마스크: IP주소를 네트워크 주소와 호스트 주소로 분리하는 역할(32비트 숫자로 '0' 비트는 호스트, '1'비트는 네트워크 의미) - IP 주소는 IP 클래스에 의해 분리되는 Network Prefix와 나머지 Host Number로 분리..
-
[네트워크] HTTP와 HTTPSComputer Science/Network 2022. 12. 20. 20:44
HTTP란? - WWW 상에서 정보를 주고 받을 수 있는 프로토콜로, 클라이언트와 서버 사이에 이루어지는 요청/응담 프로토콜 - 주로 HTML 문서를 주고 받는데 사용되며, TCP(HTTP/1, HTTP/2)와 UDP(HTTP/3)를 사용 - 클라이언트(웹브라우저)가 HTTP를 통해 서버에게 정보 요청 → 서버가 해당 정보를 전달 → 웹 브라우저를 통해 출력 구분 설명 HTTP/1.0 - 한 연결당 하나의 요청을 처리하도록 설계 - 서버로부터 파일을 가져올때마다 TCP의 3웨이 핸드셰이크를 계속 열어야해서 RTT 증가하는 단점 (RTT: 패킷이 목적지에 도달하고나서 다시 출발지로 돌아오기까지 걸리는 시간) HTTP/1.1 - 매번 TCP에 연결하지 않고, 한 번 TCP를 초기화한 후 keep-alive ..
-
[네트워크] OSI 7 계층 (OSI 7 Layers)Computer Science/Network 2022. 12. 20. 01:37
OSI 7 계층이란? (Open Systems Interconnection Reference Model) - 개방형 시스템 상호 연결을 위한 기초 참조 모델로서, 현재 네트워크 시스템의 기반이 된 모델 - 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것으로, 프로토콜을 기능별로 나누어 설명 - 각 계층은 하위 계층의 기능만을 이용하고, 상위 계층에게 기능을 제공 - '프로토콜 스택' 혹은 '스택'은 이러한 계층으로 구성된 프로토콜 시스템이 구현된 시스템을 말하며, 프로토콜 스택은 하드웨어나 소프트웨어 혹은 둘의 혼합으로 구현 - 일반적으로 하위 계층은 하드웨어, 상위 계층은 소프트웨어로 구현됨 ➡️ 통신이 일어나는 과정을 계층화함으로써, 계층별로 제공하는 서비스의 구현 변경을 쉽게 함..
-
[디자인 패턴] 이터레이터 패턴 (Iterator Pattern)Computer Science/Design Pattern 2022. 12. 14. 00:55
이터레이터 패턴이란? : 이터레이터를 사용하여 컬렉션의 요소들에 접근하는 디자인 패턴 - 컬렉션 구현을 노출시키지 않으면서도 그 안에 있는 모든 항목에 접근할 수 있게 함 - 집합체 내에서 어떤 식으로 일이 처리되는지 몰라도 안에 있는 항목에 대해 반복작업 수행 가능 [ 장점 ] - 집합체 클래스의 응집도 증가 - 모든 항목에 일일이 접근하는 작업을 이터레이터 객체에서 진행함으로써, 집합체에서는 반복 작업이 아닌 원래 자신의 역할에 전념할 수 있음 [ 단점 ] - 단순 순회만을 구현할 경우 클래스만 많아져 복잡도가 증가함 참조: [Design Pattern] 이터레이터 패턴 (iterator pattern)
-
[디자인 패턴] 프록시 패턴 (Proxy Pattern)Computer Science/Design Pattern 2022. 12. 13. 17:24
프록시 패턴이란? : 대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴 - 이를 통해 객체의 속성, 변환 등을 보완 - 보안, 데이터 검증, 캐싱, 로깅에 사용 - 흐름제어만 할 뿐 결과값을 조작하거나 변경하지 않음 [ 종류 ] 1. Virtual Proxy : 주체 클래스가 리소스 집약적인 경우 - 해상도가 높은 이미지를 처리해야 할 경우, 인스턴스화시 많은 메모리를 사용하게 됨. - 프록시 클래스에서 자잘한 작업을 처리하고 리소스가 많이 요구되는 작업이 필요할 때만 주체 클래스를 사용하도록 구현 2. Protection Proxy : 주체 클래스에 대한 접근을 제어하기 위한 경우 - 프록시 클래스에서 클라이언트가 주체 클래스에 대해 접근을 허..
-
[디자인 패턴] 옵저버 패턴 (Observer Pattern)Computer Science/Design Pattern 2022. 12. 13. 16:51
옵저버 패턴이란? : 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴 - 주체: 객체의 상태 변화를 보고 있는 관찰자 - 옵저버: 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 '추가 변화 사항'이 생기는 객체 - 한 객체의 상태 변화에 따라 다른 객체 상태도 연동되도록 1:N 의존 관계를 구성 - Java는 기본적으로 옵저버 패턴을 적용한 Observer 인터페이스, Observable 클래스를 제공 (Observable은 상속을 해야하기 때문에 다른 상속을 함께 사용할 수 없는 단점 존재) [ 구현 방법 ] interface Subject { public void register(Observer..
-
[디자인 패턴] 전략 패턴 (Strategy Pattern)Computer Science/Design Pattern 2022. 12. 13. 14:09
전략패턴이란? : 실행 중에 알고리즘을 선택할 수 있게 하는 행위(Behavioral) 소프트웨어 디자인 패턴 - 특정한 계열의 알고리즘을 정의하고 각각 캡슐화하며 해당 계열내에서 상호 교체가 가능하게 함 - 어떤 동작을 하는 로직을 정의하고, 이것을 캡슐화하여 관리하는 패턴 (ex. 결제할 때 네이버페이, 카카오페이 등 '전략'만 바꿔서 결제가 가능하게 함) - 독립적으로 알고리즘을 다양하게 변경할 수 있으며 기능 추가, 로직 변경시 유연하게 확장 가능 - 어떤 전략을 사용할지 외부에서 데이터 입력이 필요 - 클래스를 수정하지 않고도 기능을 추가하거나 변경할 수 있음 [ 구현 방법 ] // 결제 전략 인터페이스 interface PaymentStartegy { public void pay(int amo..
-
[디자인 패턴] 팩토리 패턴 (factory pattern)Computer Science/Design Pattern 2022. 12. 13. 00:09
팩토리패턴이란? : 객체 생성 처리를 하위 클래스로 분리해 처리하도록 캡슐화하는 패턴 - 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화 - 상속 관계에 있는 두 클래스에서 상위클래스는 중요한 뼈대를 결정하고 하위클래스는 객체 생성에 관한 구체적인 내용을 결정 - 상위 클래스에서는 인스턴스 생성 방식에 대해 관여하지 않기 때문에 더 많은 유연성을 가짐 - 객체 생성로직이 따로 있기 때문에 코드 리팩토링에 있어서 편의성 증가 [ 구현 방법 ] abstract class Coffee { public abstract int getPrice(); @Override public String toString() { return "This coffee is " + this.getPrice(); } } cla..