본문 바로가기

반응형

Computer Science

(42)
[Design Pattern] Abstract Factory pattern 1. Abstract Factory pattern 추상 팩토리는 관련 객체들의 구현 클래스들을 지정하지 않고도 관련된 객체들의 모음을 생성할 수 있도록 인터페이스를 제공하는 생성 패턴이다. 이름을 들으면 마치 팩토리 메서드 패턴과 유사하다고 느낄 수 있다. 이 두 방식은 실제 객체를 생성하는 로직을 팩토리에 위임한다는 점에서 유사함을 가지고 있지만 명확한 차이도 있다. 팩토리 메서드 패턴의 경우 조건에 따라서 다른 객체를 생성하는데, 이때 조건을 확인하고 알맞는 객체를 생성하는 로직이 팩토리 클래스에 위임된다. 반면에 추상 팩토리 패턴은 서로 관련이 있는 객체들을 묶어서 팩토리 클래스로 만들고 이러한 팩토리들을 조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴이다. 항상 그런것은 아니지..
[Design Pattern] Builder Pattern 1. Builder pattern 빌더패턴은 객체 생성 디자인 패턴 중 하나로 복잡한 객체를 단계적으로 생성할 수 있도록 하는 설계 패턴이다. 빌더패턴을 사용하면 하나의 객체 생성 코드를 통해서 다른 타입과 표현 방식을 가지는 객체를 생성할 수 있다. - why Builder pattern? 어떤 객체를 생성해야 한다고 가정해보자. 우리는 이 객체를 생성하기 위한 필드들과 로직을 포함한 생성자를 구현하여 객체를 생성할 수 있다. 하지만 만약에 이 객체에 확장이 필요하다면 어떨까? 객체에 필요한 필드들이 늘어나고 복잡한 로직들이 추가되어야 할 것이다. 이러한 문제를 해결할 수 있는 가장 간단한 방법은 서브클래스를 만드는 것이다. 부모 클래스와 자식 클래스를 나누어서 필요한 파라미터 조합들에 대하여 서브클래..
[Network] SSL 암호화 (대칭키, 공개키, 개인키) 1. SSL SSL 은 Secure Socket Layer 의 줄임말로 웹서버와 브라우저 사이의 보안을 위해 사용되는 프로토콜이다. SSL 은 Certificate Authority (CA) 라고 불리는 3rd party 를 통해 서버와 클라이언트의 인증에 사용한다. - HTTPS SSL 적용한 대표적인 사례가 HTTPS 이다. HTTPS 는 HTTP 에 SSL 을 적용하여 보안을 강화한 프로토콜이다. HTTPS 는 공개키와 대칭키 방식을 혼합하여 데이터를 암호화하여 전달한다. 2. SSL 의 암호화 SSL 에서 데이터를 암호화 하기 위해서 사용하는 일종의 비밀번호를 키 (key) 라고 한다. 이 키에 따라서 암호화 된 결과가 달라지기 때문에 키를 모르면 복호화를 수행할 수 없다. 암호화의 방식은 이 키..
[DB] 트랜잭션 격리수준 (Transaction Isolation Level) 1. 트랜잭션 격리 수준 (transaction isolation level) 트랜잭션의 격리 수준이란 동시에 여러 건의 트랜잭션이 수행되는 경우, 트랜잭션들이 서로 얼마나 고립되어 있는지를 나타내는 정도이다. 간단하게 특정 트랜잭션이 다른 트랜잭션으로 인해 변경된 데이터를 볼 수 있도록 허용할지 말지를 결정하는 것이다. 격리 수준은 크게 아래의 4가지로 구분된다. - READ UNCOMMITTED - READ COMMITTED - REPEATABLE READ - SERIALIZABLE 아래로 내려갈수록 고립 정도가 높아지고, 성능이 떨어진다. 일반적인 온라인 서비스에서는 READ COMMITED 나 REPEATABLE READ 를 사용한다. 2. READ UNCOMMITED READ UNCOMMITED..
[Network] HTTP Header User-Agent 특정 사이트에서 프로그램을 다운로드하려고 할 때 페이지에서 현재 OS 에 맞는 버전의 프로그램을 추천해줄 때가 있다. Windows, Max, Ubuntu 등등 다양한 플랫폼에 맞는 버전의 프로그램들이 있는데, 이 사이트들은 어떻게 OS 를 감지하고 알맞는 버전을 추천해주는 걸까? 1. User-agent HTTP 통신을 할 때 헤더 값에는 다양한 정보들이 포함된다. 그 중에는 HTTP 요청을 보내는 사용자의 식별 정보를 담고 있는 항목이 있는데, 바로 User-Agent 이다. User-Agent 는 request header 에 포함되는 string 값으로 요청을 보내는 디바이스의 application, operating system, vendor, browser version 등의 정보를 포함하고있..
[DB] SQL 기본 정리 1. SQL SQL (Structured Query Language) 는 관계형 데이터베이스 관리 시스템, RDBMS의 데이터를 관리하기 위해 개발된 프로그래밍 언어이다. 관계형 데이터베이스에서 데이터의 검색과 관리, 스키마 생성과 수정, DB 객체 접근 조정 관리 등을 위해 고안되었다. SQL 문법의 종류는 다음 세가지로 구분할 수 있다. - DDL (Data Definition Language, 데이터 정의 언어) DB에서 새로운 데이터의 정의 및 제거, 기존에 존재하는 데이터의 재정의 등의 역할을 하는 언어이다. CREATE, DROP, ALTER, TRUNCATE 등이 존재한다. - DML (Data Manipulation Language, 데이터 조작 언어) DB에서 데이터 검색, 등록, 삭제,..
[DB] Transaction (트랜잭션) 1. Transaction 트랜잭션은 데이터베이스의 상태를 변화시키는 논리적인 작업 단위를 의미한다. 데이터베이스의 상태를 변화시키는 작업이란 데이터베이스에 접근하여 데이터를 읽고, 쓰고, 수정하고, 삭제하는 등의 작업을 의미한다. 이런 작업들, 트랜잭션은 성공과 실패가 분명하고, 상호 독립적이다. 트랜잭션을 조작함으로 인해 사용자는 데이터베이스의 완전성 (Integrity)를 유지한다. 단일 트랜잭션은 데이터베이스에 읽거나 쓰는 등의 작업을 수행하는 여러 개의 쿼리를 요구한다. 이때 트랜잭션을 수행하면서 쿼리의 일부만 수행되는 일이 없어야 한다. 모든 작업이 완벽하게 처리되거나 또는 처리되지 못하는 경우 원상태로 복구되어야 한다. 2. 트랜잭션의 특징 (ACID) 데이터베이스의 트랜잭션이 안전하게 수행..
[OS] Memory Management 1. 메모리 구조 메모리는 CPU 자원만큼 컴퓨터 사용에 중요한 자원 중 하나이다. 그렇기 때문에 메모리는 접근하는데 필요한 시간을 최소화 하는 방향으로 발전해왔다. 현재의 메모리 구조는 다음과 같다. - Secondary Memory (External Memory): Magnetic Disk, Optical Disk, Magnetic Tape으로 구성되어 있으며 I/O 모듈에 의해 접근 가능한 저장 장치이다. - Primary Memory (Internal Memory): Main Memory, Cache memory, CPU registers 로 구성되어 있으며 Processor에서 접근이 가능한 저장 장치이다. 2. Memory 메모리는 기본적으로 address 와 data 로 구성되어 있다. CP..

반응형