Computer Science

    [Design Pattern] 구조 패턴 - 프록시 패턴(Proxy Pattern)

    프록시 패턴(Proxy Pattern)이란? 프록시(Proxy)를 번역하면 대리자, 대변인의 의미를 갖고 있다. 무엇인가를 대신 처리하는 의미라고 할 수 있다. 일종의 비서라고 생각하면 된다. 사장님한테 사소한 질문을 하기보다는 비서한테 먼저 물어보는 개념이라고 생각할 수 있겠다. 이렇게 어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조 하는것이 아니라, 해당 객체를 대행(대리, proxy)하는 객체를 통해 대상객체에 접근하는 방식을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고 또한 실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있다. 더보기 구조 패턴(Structural Pattern)이란? 구조 패턴이란 작은 클래스들을 상속과 합성을..

    [Design Pattern] 행동 패턴 - 옵저버 패턴(Observer Pattern)

    옵저버 패턴(Observer Pattern)이란? 옵저버패턴(Observer Pattern)이란 객체의 상태 변화를 관찰하는 옵저버들(관찰) 목록을 객체에 등록하여 상태 변화가 있을 때마다 notify 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 어떤 객체의 상태가 변할 때 그와 연관된 객체 들에게 알림을 보내는 디자인 패턴 이라고 생각하면 된다. 옵저버 패턴에는 주체 객체와 상태의 변경을 알아야 하는 관찰 객체(Observer Object)가 존재하며 이들의 관계는 1:1이 될 수도 있고 1:N이 될 수도 있다. 주로 분산 이벤트 핸들링 시스템을 구현한다. 발행/ 구독 모델로 알려져 있기도 하다. notify 함수는 관찰 대상이 발행한 메시지 이외에, 옵저버 자..

    [Design Pattern] 생성 패턴 - 싱글톤 패턴(Singleton Pattern)

    싱글톤 패턴(Singleton Pattern)이란? 싱글톤 패턴이란 단 하나의 유일한 객체를 만들기 위한 코드 패턴이다. 쉽게 말하자면 메모리 절약을 위해, 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법을 말한다. 즉, 프로그램 시작부터 종료 시점까지 어떤 클래스의 인스턴스가 메모리 상에 단 하나만 존재할 수 있게 하고 이 인스턴스에 대해 어디에서나 접근할 수 있도록 하는 패턴이다. 우리가 전역 변수라는 걸 만들어 이용하는 이유는, 똑같은 데이터를 메서드마다 지역 변수로 선언해서 사용하면 무의미하기도 않고 낭비이기 때문에, 전역에서 한번만 데이터를 선언하고 가져와 사용하면 효율적이기 때문이다. 이러한 개념을 그대로 클래스에 대입한 것이 싱글톤 패턴이라고 ..

    디자인 패턴(Design Pattern)이란?

    디자인 패턴(Design Pattern)이란? 소프트웨어 개발 방법으로 사용되는 디자인패턴(Desigin Pattern)은 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 그 방법에 이름을 붙여서 이후에 재사용하기 좋은 형태로 특정 규약을 만들어서 정리한 것이다. 이는 코드에서 반복되는 디자인 문제들을 해결하기 위해 맞춤화할 수 있는 미리 만들어진 청사진과 비슷하다. 표준화된 라이브러리들이나 함수들은 코드에 복사해 사용하지만 패턴들을 붙여넣기식으로 사용할 수 없다. 패턴은 재사용할 수 있는 코드 조각이 아니라 특정 문제를 해결하는 방식을 알려주는 일반적인 개념이다. 패턴은 알고리즘과 자주 혼동된다. 왜냐하면 두 개념 모두 알려진 문제에 대한 일반적인 해결책을 설명하기 때문입니다. 알고리즘..

    클라우드 서비스의 종류(Iaas, Paas, Saas)

    클라우드 서비스의 종류(Iaas, Paas, Saas)

    클라우드란? 클라우드는 인터넷을 통해서 언제 어디서든지 원하는 때 원하는 만큼의 IT리소스(컴퓨팅, 스토리지, 네트워크)를 손쉽게 사용할 수 있게 하는 서비스를 말한다. 즉, 내 컴퓨터 장비를 사용하지 않고 컴퓨터 장비를 구축해 놓은 데이터 센터(Data Center, 클라우드)에 있는 컴퓨터를 온라인을 통해 작업하는 것을 말한다(IDC, '인터넷 데이터 센터'(Internet Data Center)라고도 말한다.) 이렇게 되면 서버를 직접 구매할 때 고려해야할 전력, 위치, 서버 세팅, 확장성 등을 고민하지 않고 서비스 운영에만 집중할 수 있다. 이를 오프프레미스(off-premise) 방식이라고 한다. 반면에 온프레미스(on-premise) 방식은 데이터 센터를 직접 보유하고 있는 네이버, 카카오 같..

    API란?

    API란?

    API란? API (API, Application Programming Interface) API는 “Application Programming Interface”의 준말이며 풀이 하자면, 둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층을 의미한다. 예를 들어 A라는 컴퓨터가 요청을 하고 B라는 컴퓨터가 응답을 한다고 했을 때!!! 이때 어떻게 통신을 할것인지? 어떤 데이터를 주고 받을 것인지? 등에 대한 방법 (HTTP, HTTPS 프로토콜을 사용할지, GET, POST 등의 방식인지 등...)이 정의된 중계 계층인 것이다. 즉, "어떠한 방식으로 정보를 요청해야 하는지, 그리고 그러한 요청을 보냈을 때 어떠한 형식으로 무슨 데이터를 전달받을 수 있는지"에 대해 정리한..

    데이터 포맷) XML

    XML 이란? XML은 데이터를 저장하고 전달할 목적으로 만들어졌으며, 저장되는 데이터의 구조를 기술하기 위한 언어이다. XML은 EXtensible Markup Language의 약자로, 수많은 응용 분야에서 데이터를 저장하고 전달하는 중요한 역할을 맡고 있다. XML은 HTML과 매우 비슷한 문자 기반의 마크업 언어(text-based markup language)이며 이 언어는 사람과 기계가 동시에 읽기 편한 구조로 되어 있다. 그러나 XML은 HTML처럼 데이터를 보여주는 목적이 아닌, 데이터를 저장하고 전달할 목적으로만 만들어졌다. 또한, XML 태그는 HTML 태그처럼 미리 정의되어 있지 않고, 사용자가 직접 정의할 수 있다. XML 의 특징 1. XML은 다른 목적의 마크업 언어를 만드는 데..

    [네트워크] OSI 7 계층 모델

    네크워크의 기본 OSI 7 계층개념OSI 7 계층은 네트워크 통신을 표준화한 모델로, 네트워크 통신이 일어나는 과정을 7단계로 나눈 것을 말한다.하지만 OSI 모델이 실무적으로 이용하기에 복잡한 탓에 실제 인터넷에서는 이를 단순화한 TCP/IP 4계층 모델을 기반으로 상업적이고 실무적으로 이용하고 있다.국제표준기(ISO, International Organization for Standardization)에서 네트워크 간의 호환을 위해 OSI 7 계층이라는 표준 네트워크 모델을 만들었다. ( 개방형 시스템 상호 연결 모델의 표준) OSI 7계층을 나눈 이유는?각 단계을 독립적으로 나누었기 때문에 흐름을 한눈에 알아보기 쉽고 사람들이 이해하기 쉽다네트워크에서 이상이 생기면, 7계층 중 어디에서 생긴 문제인..

    아키텍처(Architecture)

    아키텍처(Architecture)

    개발 문서나 블로그에서 종종 보이는 아키텍처라는 용어를 자주 봤던거 같다. 하지만 뭔가...느낌? 만 알고 제대로 된 설명을 하라고 하면 못할거 같아서 이번 기회에 정확하게 개념을 정리하려고 작성하였다. 본문 시스템 아키텍처(system Architecture)는 시스템의 구조, 행위, 더 많은 뷰를 정의하는 개념적 모형이다. 시스템 목적을 달성하기 위해 시스템의 각 컴포넌트가 무엇이며 어떻게 상호작용하는지, 정보가 어떻게 교환되는지를 설명한다. - 위키백과 위의 말이 약간 어렵긴 하지만 구체적인 하는 일은 다음과 같다. 시스템 구성 및 동작 원리를 나타내고 있다. 시스템 구성 요소(부품)에 대해 설계 및 구현을 지원하는 수준으로 자세히 기술된다. (IEEE 1471 또는 TOGAF 등) 구성 요소 간의..

    1.3.2.3. 관계(집합 관계)

    1.3.2.3. 관계(집합 관계)

    JAVA 객체지향 디자인 패턴 정리 UML 연관 관계의 특별 경우로 전체와 부분의 관계를 명확하게 명시하고자 할 때 사용한다. 1. 집약 관계(aggregation) 한 객체가 다른 객체를 포함하는 것 '부분'을 나타내는 객체를 다른 객체와 공유할 수 있다. '전체'를 가리키는 클래스 방향에 빈 마름모로 표시 전체 객체의 라이프타임과 부분 객체의 라이프타임은 독립적이다. 전체 객체가 메모리에서 사라진다 해도 부분 객체는 사라지지 않는다. // Ex) 생성자에서 참조값을 인자로 받아 필드를 세팅한다. public class Computer { private MainBoard mb; private CPU c; //생성자 public Computer(MainBoard mb, CPU c) { this.mb = ..