전체 글
-
[디자인 패턴] Factory Method 패턴Programming Language/java 2023. 8. 20. 20:07
1. Factory Method 패턴이 무엇인지 정리하고 2. 어느 상황에 유용한지 생각해보자 인스턴스 생성을 Factory에게 맡기는 것이 팩토리 메서드 패턴인데 예시와 함께 살펴보자 // Product: 문서의 공통 인터페이스 interface Document { void write(String content); } // ConcreteProduct: 텍스트 문서 클래스 class TextDocument implements Document { @Override public void write(String content) { System.out.println("Writing text: " + content); } } // ConcreteProduct: PDF 문서 클래스 class PdfDocument..
-
[디자인 패턴] Template Method 패턴Programming Language/java 2023. 8. 20. 19:02
1. Template Method 패턴이 무엇인지 2. 언제 사용하는지 알아보자 Template Method 패턴은 상위 클래스에서 뼈대를 결정하고 하위 클래스에서 구체적인 내용을 결정하는 패턴이라고 한다. 이 내용만 보고 이해가 되지 않으니 실제 예시를 들어서 살펴보자 AbstractDisplay 라는 추상 클래스에서 다음과 같이 정의한다. public abstract class AbstractDisplay { // 하위 클래스에서 상속받아 구체적으로 구현할 추상 메서드들 public abstract void open(); public abstract void print(); public abstract void close(); // 추상 클래스에서도 일반 메서드를 정의할 수 있다 public fina..
-
[디자인 패턴] Adapter 패턴Programming Language/java 2023. 8. 19. 16:23
1. Adpater 패턴이 언제 사용하고 2. Adapter 패턴을 어떻게 사용할까? 가령 기존 사용하고 있던 클래스 혹은 라이브러리 A가 있다고 하자. 이 A를 새로운 클래스 B에 편입시켜서 그대로 A의 기능을 사용하고자 할 때 Adapter 패턴이 사용된다. A를 Wrapping 하는 행위와 마찬가지여서 Wrapper 패턴이라고도 한다. 구현하는 방법은 2가지가 있는데 클래스(상속)을 사용한 패턴, 객체(인스턴스)를 사용한 패턴이 있다. 클래스를 사용한 패턴 public class A { public A(String str) { } public void method1() { ... } public void method2() { ... } } 기존 클래스 A가 존재하고 public interface N..
-
[디자인 패턴] Iterator 패턴Programming Language/java 2023. 8. 19. 15:02
1. Iterator 패턴이 무엇이고 2. Iterator 패턴을 왜 사용할까? for 문을 사용해서 반복을 돌리면 될텐데 왜 굳이 Iterator 패턴을 사용할까? => 반복의 대상이 되는 객체가 변경되어도 반복을 사용하는 측에서 신경쓰지 않아도 된다. => 즉 유지보수 측면에서 유리하다. 어떻게 가능한지 Iterator 패턴이 무엇인지부터 살펴보자 Iterable 인터페이스와 Iterator 인터페이스 public interface Iterable { public abstract Iterator iterator(); } public interface Iterator { public abstract boolean hasNext(); public abstract E next(); } Iterable 는 ..
-
파일 시스템Computer Science/OS 2023. 8. 19. 13:52
파일 시스템 FAT 파일 시스템과 유닉스 파일 시스템이 있다. 보조기억장치에 먼저 파티셔닝과 포매팅을 해야한다. 파티셔닝 : 논리적으로 영역을 구획하는 작업 포매팅 : 파일 시스템 결정하고 새로 데이터를 쓸 준비를 하는 작업 디렉터리 엔트리 디렉터리도 파일이고 테이블 형태로 데이터가 저장됨 파일이름, 위치 유추할 수 있는 정보, 생성 시간, 수정된 시간, 크기 등이 저장됨 파일 할당 방법 운영체제는 ‘블록’단위로 파일과 디렉터리를 읽고 쓴다. 이때 여러 블록 사용하는데 연속 할당과 불연속 할당(연결 할당, 색인 할당) 으로 나뉨 연속 할당 : 구현이 단순하지만 ‘외부 단편화’ 발생 (빈 공간이 남아도 사용하기 힘들다) 연결 할당 : 각 블록이 다음 블록을 가리키는 형태. 불연속적 이여도 괜찮다. C언어의..
-
가상 메모리Computer Science/OS 2023. 8. 17. 21:19
스와핑 메모리에 적재된 프로세스 중 오랫동안 사용되지 않거나 입출력 대기를 하는 프로세스들을 보조기억장치로 일부 영역 내쫓고 메모리의 빈 공간에 다른 프로세스를 적재하는 방식. 스왑 영역 : 보조기억장치에서 쫓겨난 프로세스들의 영역 스왑 아웃 : 프로세스가 메모리 -> 보조기억장치로 쫓겨남 스왑 인 : 보조기억장치 -> 메모리로 다시 복귀 스와핑으로 프로세스들의 요구 공간이 실제 메모리 크기보다 커도 실행 가능하게 된다. free -h 로 스왑영역 확인 가능 메모리 할당 프로세스의 메모리를 메모리 내에 빈 공간이 여러 개 있다면 어디에 적재하게 될까? 최초 적합 방식 : 가장 먼저 발견하는 빈 공간에 적재 최적 적합 방식 : 프로세스를 적재할 수 있는 공간 중 가장 작은 공간에 적재 최악 적합 방식 : ..
-
레지스터와 명령어 사이클Computer Science/컴퓨터 구조 2023. 8. 11. 00:42
레지스터 : CPU 제조사마다 다름. 여러 제조사가 공통 포함하는 레지스터 프로그램 카운터 : 메모리에서 읽어들일 명령어의 주소 저장 명령어 레지스터 : 메모리에서 읽어들인 명령어를 저장 -> 제어 장치가 이 레지스터의 명령어를 받아들임 메모리 주소 레지스터 : 메모리 주소를 저장. CPU가 읽어들이고자 하는 주소값을 버스로 보낼 때 주소 레지스터 거침 메모리 버퍼 레지스터 : 메모리와 주고 받을 값 저장. 메모리에 쓰고 싶은 값이나 전달 받은 값 저장. 데이터 버스로 주고 받고 이 레지스터를 거침 플래그 레지스터 : 연산 결과의 플래그 저장 범용 레지스터 : 자유롭게 사용하는 레지스터 스택 포인터 : 스택의 꼭대기를 가리키는 레지스터 (스택 영역이라는 공간이 메모리에 따로 있다) 베이스 레지스터 : 기..
-
명령어의 구조Computer Science/컴퓨터 구조 2023. 8. 5. 16:08
기계어나 어셈블리어가 이루는 하나하나가 명령어이다. 명령어는 연산코드 (operation code) 와 오퍼랜드 (operand)로 이루어져 있음. 오퍼랜드는 없을 수도, 하나 있을 수도, 2개, 3개 있을 수도 있다. 연산코드는 CPU마다 다르지만 공통으로 사용하는 대표적인 연산 코드들이 있다. 그 종류는 아래와 같다. 1. 데이터 전송 2. 산술/논리 연산 3. 제어 흐름 변경 4. 입출력 제어 대표적인 연산 코드는 아래와 같다. 데이터 전송 MOVE : 데이터를 옮겨라 STORE : 메모리에 저장하라 LOAD (FETCH) : 메모리에서 CPU로 데이터를 가져와라 PUSH : 스택에 데이터를 저장하라 POP : 스택의 최상단 데이터를 가져와라 스택 ? 산술/논리 연산 ADD / SUBTRACT / ..