본문 바로가기

전체 글56

[디자인 패턴] 디자인 패턴(Design Pattern)이란? 디자인 패턴(Design Pattern)이란? 소프트웨어 디자인 패턴(software design pattern)은 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 소스나 기계 코드로 바로 전환될수 있는 완성된 디자인은 아니며, 다른 상황에 맞게 사용될 수 있는 문제들을 해결하는데에 쓰이는 서술이나 템플릿이다. 디자인 패턴은 프로그래머가 어플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화 된 가장 좋은 관행이다. - 위키백과 - 디자인 패턴이란 개발하면서 생기는 문제들을 먼저 경험한 선배 개발자들이 만들어 놓은 해결책이다. 그래서 우리는 디자인 패턴을 잘 익혀두었다가 비슷한 문제가 발생할 여지가 있을 때 디자인 .. 2022. 9. 28.
[디자인 패턴] 싱글톤(Singleton) 패턴 이 글을 쓰게 된 이유 이번 글에서는 디자인 패턴의 종류 즁 하나인 싱글톤 패턴에 대해서 알아보자. 싱글톤 패턴은 디자인 패턴 중 가장 유명한 패턴 중 하나로, OOP를 공부한 사람이라면 알고 있는 패턴이다. 하지만 정작 사용하려고 하면 어슬프게 적용을 하거나 왜 써야하는지 모르는 경우가 많은 것 같다. 이번 글을 통해서 디자인 패턴 관점에서 개념과 역할에 대해 살펴보고, Java를 통해 예시 코드까지 작성해보자. 생성 패턴(싱글톤 패턴의 종류) 생성 패턴은 객체의 생성에 관련된 패턴으로 인스턴스의 생성 절차를 추상화하는 패턴이다. 객체를 생성, 합성, 표현 방법을 시스템과 분리한다. 생성 패턴은 다음과 같은 2가지 특징이 있다. 생성 패턴은 시스템이 어떤 구체 클래스(concrete class)를 사용.. 2022. 9. 28.
[디자인 패턴] 전략(Strategy) 패턴 이 글을 쓰게된 이유 이번 글에서는 디자인 패턴의 종류 즁 하나인 전략 패턴에 대해서 알아보자. 전략 패턴은 우리가 코드에서 은근히 많이 쓰는 패턴이다. 하지만 전략 패턴이 정확하게 무엇인지 알고 쓰는 경우가 많다. 이번 글을 통해서 전략 패턴에 대해서 자세하게 알아보고 적절하게 활용할 수 있도록 해보자. 행동패턴(Behavioral Patterns) 이란? 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴이다. 한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점을 둔다. 패턴을 주로 클래스에 적용하는지 아니면 객체에 적용하는지에 따라 구분되는 패턴이다. 전략(Strategy) 패턴이란? 전략 패턴은 알고리즘을 특정 기준에 따라 분류해 정의하고,.. 2022. 9. 28.
[컴퓨터 구조] 메모리 계층 구조 메모리 계층 구조란? 메모리 계층 구조란 메모리를 필요에 따라 여러가지 종류로 나누어 둠을 의미한다. 이때 필요한 대부분의 경우 CPU가 메모리에 더 빨리 접근하기 위함이다. -위키 백과- 메모리 계층 구조는 어떻게하면 컴퓨터를 최대한 빠르고 저렴하게 만들까에 대한 고민으로 고안된 구조이다. 보통 싼 메모리일 수록 용량이 크지만 느리고, 비싼 메모리는 용량이 작지만 빠르다. 그래서 성능이 좋고 비싼 메모리는 CPU 바로 옆에 작게 만들고, 느리고 용량이 큰 메모리는 먼 곳에 둔다. 이러한 원칙으로 만든 구조가 메모리 계층 구조이다. 메모리 계층 구조 메모리 계층 구조는 Register, Cache, Memory, Disk로 나눌 수 있다. 사진에서 볼 수 있듯 위로 갈수록 빠르고 용량이 작고, 아래로 갈.. 2022. 9. 28.
[운영체제] 멀티 프로세스(Multi-Process)와 멀티 스레드(Multi-Thread) 프로세스(Process) 프로세스는 CPU(프로세서)에 의해 실행되는 프로그램이다. 그림으로 보면 아래와 같다. 프로그램은 application 개발자가 작성한 코드이다. 프로그램은 실행이 되지 않는다면 그냥 데이터의 집합일 뿐이다. 이 프로그램을 작동 시키려면 CPU(프로세서)에서 코드를 읽고 명령어를 실행 시켜야한다. 하지만 현대의 거의 모든 컴퓨터들은 폰노이만 구조를 하고 있기 때문에 디스크에 있는 프로그램을 바로 CPU로 전달할 수 없다. 그래서 메인 메모리에 프로그램을 올리고 메모리에서 코드들을 한줄씩 CPU에 전달하여 실행 하게된다. 이렇게 메모리에 올려저서 실행 중인 프로그램을 프로세스라고 한다. (메모리에 올라간 것 자체가 실행 준비 상태로 볼 수 있기 때문에 메모리에 올라가는 자원 할당 .. 2022. 9. 28.
[네트워크] OSI 7 Layer OSI 7 Layer OSI 7 Layer란 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 즉, 다양한 컴퓨터 간 데이터 전송을 지원할 수 있는 추상 모델을 표준화한 것이다. 그렇다면 OSI 7 계층은 왜 필요할까? 컴퓨터(네트워크) 간 통신을 하려면 생각보다 많은 과정들이 필요하다. 예를 들자면 컴퓨터 간 식별도 해야하고 어떤 방식으로 전송을 할건지, 데이터에 손상은 없는지 확인하는 작업 등을 해야한다. 필요한 각 과정들을 표준화하여 7개의 계층으로 분리하여 각 계층 간 상호 작동하는 방식을 정해 놓은 것이다. 이는 실제로 쓰이는 모델이라기보다는 네트워크 통신을 할 때 이러한 프로토콜이 필요하다고 정해놓은 스펙에 불과하다. 실제로 우.. 2022. 9. 28.