본문 바로가기

스터디22

버퍼, 캐시, 레지스터 (Buffer, Cache, and Register) 캐시와 버퍼, 그리고 레지스터는 데이터를 임시적으로 저장한다는 공통점이 있습니다. 그렇다면 어떤 경우에 어떤 것을 사용하게 될까요? 그리고 각자 어떤 특징이 있을까요?? 캐시(Cache) 먼저 캐시는 속도가 빠른 장치(CPU)와 느린 장치(메인 메모리) 사이에서 속도 차이에 따른 병목현상을 줄이기 위한 범용 메모리를 뜻합니다. 즉, 어떤 시스템 내에서 데이터의 집중적인 사용으로 인해 전체 시스템에 절대적인 영향을 미치는 부분의 사용 빈도가 늘어나 그 부분의 성능이 저하되어 전체 시스템이 마비되는 현상을 줄이기 위한 것입니다. 캐시는 자주 사용하는 데이터나 값을 복사해 놓는 임시 저장소라고 생각할 수 있는데, 이때 캐시의 접근 시간에 비해 원래 데이터(서버의 균일한 api 데이터 등)를 접근하는 시간이 오.. 2020. 10. 3.
커널 (Kernel) 우리가 항상 운영체제를 공부하다 보면 자주 볼 수 있는 단어가 있다. 바로, '커널(Kernel)' 이다. 뭐만 하면 커널에 의해서 관리된다. 커널에 의해 보호된다. 어쩌구 저쩌구..... 도대체 커널이 뭐길래, 이렇게 자주 언급될까??? 커널이란, 프로세스/메모리/저장장치/입출력 시스템 등을 관리하는 운영체제의 핵심적인 기능을 모아놓은 프로그램이다. 그만큼 운영체제의 핵심이라고 할 수 있으며, 운영체제의 성능은 커널이 좌우하게 된다. 컴퓨터가 부팅하는 순간 커널 코드가 메모리에 올라가고, 다른 프로그램과 다르게 항상 메모리에 상주(Memory Resident)한다. 여기서 잠깐 운영체제를 말하자면, 운영체제는 크게 커널과 인터페이스로 나눌 수 있는데 인터페이스는 커널에 사용자의 명령을 전달하고 실행 결.. 2020. 9. 3.
HTTP와 HTTPS 1. HTTP와 HTTPS 차이점 HTTP HTTPS - HyperText Transfer Protocol의 약자 - 포트번호 : 80 - 인터넷에서 사용하는 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위한 통신 규약 - 암호화가 전혀 되어 있지 않아, 그냥 텍스트 그대로 전송 - wireshark*와 같은 패킷캡쳐 프로그램으로 패킷캡쳐를 해보면 정보가 그대로 노출되어 있는 것을 볼 수 있습니다. * wireshark : 네트워크 패킷을 캡처하고 분석하는 오픈소스 도구 - HTTPS보다 트래픽이 적게 발생 - HyperText Transfer Protocol over Secure Socket Layer(SSL)의 약자 - 포트번호 : 443 - HTTP 프로토콜의 보안성을 강화한 프로토콜.. 2020. 7. 27.
디자인 패턴 - MVC 패턴 (Model-View-Controller) MVC는 Model-View-Controller의 약자입니다. Model, View, Controller. 3가지의 형태로 역할을 나누어 개발하는 방법론입니다. 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행할 수 있도록 하는 것이 장점입니다. Model 애플리케이션이 "무엇"을 할 것인지를 정의합니다. 비즈니스 로직과 데이터를 다루는 영역으로, View나 Controller에 대한 정보를 알면 안됩니다. Model의 상태에 변화가 있을 때, Controller와 View에 통보합니다. 예 : 처리되는 알고리즘, DB, 데이터 등등 View 화면에 무엇인가를 보여주기 위한 역할을 합니다. (UI) 컨트롤러 하위에 종속되어, 모델이나 컨트롤러가 보여주려고 하는 모든 필요한 것을 보여줍니다. .. 2020. 6. 2.
디자인 패턴 - 전략 패턴 (Strategy Pattern) 전략 패턴 (Strategy Pattern) - 행위 패턴 (Behavioral Pattern) 중 하나 => 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 => 1. 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지에 대해서 중점을 둔다. => 2. 객체 사이의 결합도를 최소화 하는 것에 중점을 둔다. 1. 객체들이 할 수 있는 행위 각각에 대해 전략 클래스 생성 2. 유사한 행위들을 캡슐화 하는 인터페이스 정의 3. 객체의 행위를 동적으로 바꾸고 싶은 경우, 직접 행위를 수정하지 않고 전략을 바꿔주므로써 행위를 유연하게 확장하는 방법 인터페이스 (MovableStrategy) 아래 예시에서 운송 수단을 정해주는 전략 클래스들을 캡슐화 하기 위한 인터페이스 publ.. 2020. 5. 31.
디자인 패턴 - 옵저버 패턴 (Observer Pattern) 옵저버 패턴 (Observer Pattern) - 행위 패턴 (Behavioral Pattern) 중 하나 => 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 => 1. 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지에 대해서 중점을 둔다. => 2. 객체 사이의 결합도를 최소화 하는 것에 중점을 둔다. - 관찰 대상의 상태가 변화했을 때, 관찰자(Observer)에게 통지하는 패턴 - 상태 변화에 따른 처리를 기술할 때 효과적으로 활용 (MVC 패턴에서 Model과 View의 분리 등..) - Observer 클래스에 상태 변화를 알려주고, Observer는 다시 그 변화에 맞는 결과를 나타낸다. "한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 정보.. 2020. 5. 30.
디자인 패턴 - 추상 팩토리 패턴 ( Abstract Factory Pattern ) 추상 팩토리 패턴 (Abstract Factory Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. - 팩토리 클래스에서 서브 클래스를 생성할 때 if-else 문을 쓰지 않아요. => 팩토리 패턴의 조건문으로부터 벗어납니다 - 구현보다 인터페이스를 위한 코드 접근법을 제공 - 서브 클래스를 확장하기 쉽게 할 수 있어요. Super Class (Computer) public abstract class Computer { public.. 2020. 5. 30.
디자인 패턴 - 팩토리 메소드 패턴 (Factory Method Pattern) 팩토리 패턴 (Factory Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. - 객체 생성 처리를 서브 클래스로 분리하여 처리 => 캡슐화 - 클래스의 인스턴스를 만드는 시점을 서브 클래스로 미뤄요. - 추상화 된 것에 의존하도록, 구상 클래스에 의존하지 않도록 합니다. - 서로 간의 종속성을 낮추고, 결합도를 느슨하게 하며, 확장을 쉽게 합니다. => 예를 들어, PC 클래스에 대해 수정이 일어나더라도, 클라이언트는 알 수 없기.. 2020. 5. 30.
디자인 패턴 - 싱글턴 패턴 (Singleton Pattern) 싱글턴 패턴 (Singleton Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. // 장점 // - 한 번의 new 생성으로 인스턴스를 사용하기 때문에 메모리 낭비 방지 - 싱글톤 패턴으로 만들어진 클래스의 인스턴스는 전역 인스턴스(static instance)이기 때문에, 다른 클래스의 인스턴스들이 데이터를 공유하기 쉬움 - Android App의 경우, 각 액티비티나 클래스 별로 주요 클래스들을 일일이 전달하기가 번거롭기 때문.. 2020. 5. 30.
디자인 패턴 - 프로토타입 패턴 (Prototype Pattern) 프로토타입 패턴 (Prototype Pattern) - 생성 패턴 (Creational Pattern) 중 하나 => 인스턴스를 만드는 절차를 추상화 => 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. => 무엇이 생성되고, 누가 이것을 생성하는지, 어떻게 생성되는지, 언제 생성되는지 결정하는 데 있어서 유연성을 높일 수 있습니다. - 이미 만들어진 객체를 복사해서 객체를 생성하는 방식 - 어떠한 객체를 여러 개 만들어야 할 경우, 객체 생성에 드는 코딩 분량을 현저히 줄일 수 있다. - 프로토타입 패턴을 사용하면, 여러 객체 생성 및 초기화에서 발생하는 오버헤드(Overhead)를 줄일 수 있다. - 클래스로부터 객체를 생성하기 어려운 경우에도 사용 아래 예시에 사용될 St.. 2020. 5. 29.