분류 전체보기 557

[헤드퍼스트 디자인 패턴] 5. 싱글턴 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 싱글턴 패턴애플리케이션에 하나만 있어도 되는 객체두개 이상일 경우자원을 불필요하게 많이 잡아먹음결과에 일관성 X전역 접근 가능필요할 때만 객체를 생성할 수 있음 사용스레드 풀, 캐시, 다이얼로그, 디바이스 드라이버, 설정 등 2. 구현public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) uniqueInstance = new Singleton(); re..

Java/Design Pattern 2024.12.16

[헤드퍼스트 디자인 패턴] 4. 팩토리 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. new 키워드특정 구현이 아닌 인터페이스로 프로그래밍해야 함그러나, 객체 생성시 특정 구현체를 생성해야 함구현체 클래스에 의존적인 코드가 발생함변경에만 닫혀있는 코드가 생겨남 2. 팩토리 메서드 패턴객체를 생성할 때, 어떤 클래스의 인스턴스를 만들지를 서브클래스에서 결정하도록 하는 패턴클라이언트 코드와 구현체 생성 코드를 분리시킴 Factorypublic class PizzaStore { SimplePizzaFactory factory; public PizzaStore(SimplePizzaFactory factory) { this.factory = factory; } public Pizza ord..

Java/Design Pattern 2024.12.16

[헤드퍼스트 디자인 패턴] 3. 데코레이터 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. OCP새로운 행동을 추가하여 확장기존 코드를 수정 필요 없음 2. 데코레이터 패턴모든 서브클래스를 위한 필드들을 슈퍼클래스에서 가질 경우, 일부 서브클래스에서는 적합하지 않은 필드를 가져야 함이를 해결하기 위해 장식을 달고, 장식에게 위임 데코레이터 형식감싸는 객체의 형식과 같음 (상속을 사용해서 형식을 맞춤) 이점객체에 추가 요소를 동적으로 더할 수 있음여러 개의 데코레이터로 감쌀 수 있음자신이 장식하고 있는 객체에게 작업을 위임하는 일 말고도 추가 작업을 수행할 수 있음 3. 스타버즈Beveragepublic abstract class Beverage { private String descript; publ..

Java/Design Pattern 2024.12.16

[헤드퍼스트 디자인 패턴] 2. 옵저버 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 옵저버 패턴한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 자동으로 통보되고, 변경 내용을 반영할 수 있도록 하는 디자인패턴일대다 형식으로 객체간 관계를 정의합니다. 요소Subject상태 관리상태가 변경될 때, 이를 옵저버들에게 통보옵저버 관리 ObserverSubject에 의존Subject의 상태 변화에 반응 느슨한 결합서로 강하게 연결되어 있지 않지만, 상호작용 할 수 있는 관계 추상화Subject는 Observer 인터페이스만 의존서로의 세부 구현 몰라도 됨 유연성변경 및 추가가 쉬움코드 변경이 일어나도 서로에게 영향 없음  재사용성Subject와 Observer는 서로 독립적으로 재사용 가능 사용이벤트 기반 프..

Java/Design Pattern 2024.12.16

[헤드퍼스트 디자인 패턴] 0. 디자인 패턴이란

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다1. 디자인 패턴객체지향 설계에서 자주 발생하는 문제에 대한 해결책코드의 재사용성, 관리 용이성, 유연성을 높일 수 있음 장점서로 이해할 수 있는 용어 제공표준화된 해결방법 제공유연성 및 유지보수 용이성구조 개선 2. 객체지향 기초객체와 클래스를 중심으로 소프트웨어를 설계하고 구현하는 방법론 주요 개념추상화중요한 정보는 드러내고 불필요한 세부 사항은 숨김 캡슐화데이터와 그 데이터를 처리하는 메서드를 하나로 묶어 객체를 만듬 다형성동일한 인터페이스를 통해 서로 다른 객체를 다룰 수 있게 해줌 상속기존 클래스를 확장하여 새로운 클래스를 정의상위 클래스의 속성이나 메서드를 하위 클래스에서 재사용 및 재정의 가능 3. 객체지향 원칙캡슐화변경이..

Java/Design Pattern 2024.12.16

[헤드퍼스트 디자인 패턴] 1. 전략 패턴

에릭 프리먼 님의 "헤드퍼스트 디자인 패턴" 책을 정리한 포스팅 입니다 1. 오리 시뮬레이션 게임Duck 클래스를 슈퍼클래스로 생성각 오리 종류를 서브클래스로 두어 상속을 활용함 (MallardDuck, RedheadDuck, RubberDuck) 심각한 문제 발생슈퍼클래스에 추상메서드 추가 시, 모든 서브클래스에서 구현이 강제됨몇몇 서브클래스에만 적용되어야 할 메서드일 경우, 논리적으로 오류가 발생함 ex: fly() 추가MallardDuck, RedheadDuck에는 가질 수 있는 행동RubberDuck에는 가져서는 안되는 행동 상속 생각하기해당 메서드를 구현할 서브클래스는 구현하고, 나머지는 공백으로 오버라이딩 해두기결국 모든 서브클래스에서 해당 메서드를 구현해야 해서, 올바른 방법이 아님 인터페이..

Java/Design Pattern 2024.12.16

[쉽게 배우는 운영체제] 11. 파일 시스템

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 1. 파일논리적인 데이터 집합여러 개의 블록으로 구성됨제 2 저장장치에 저장됨 블록일정한 크기의 데이터 단위파일은 블록 단위로 나뉘어 저장됨 UnitMemory: byteHDD: ClusterFile System: 4KB (ext4, NTFS) 속성파일 헤더구성 요소설명첫 블록 주소파일의 첫 번째 데이터 블록의 주소를 나타냄name파일 이름type파일 유형 (예: 텍스트, 이진 등)size파일 크기 (바이트 단위)time파일 생성, 수정, 접근 시간location파일이 저장된 위치 (디스크 상의 물리적 위치)accessibility파일의 접근 권한 (읽기, 쓰기, 실행 등)owner파일 소유자파일 테이블에서 관리됨 파일 디스크립터파일 식별자..

OS 2024.12.14

[쉽게 배우는 운영체제] 9. 가상 메모리 관리

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다 가져오기 정책: 프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정 1. 요구 페이징사용자가 요구할 때 해당 페이지를 메모리로 가져오는 것 미리 가져오기앞으로 필요할 것이라고 예상되는 페이지를 미리 가져오는 방식고속의 캐시 메모리에 가져다놓음으로써 시스템의 성능을 향상시킴 지역성기억장치에 접근하는 패턴이 특정 영역에 집중되는 성질지역성 유형설명공간 지역성현재 위치에서 가까운 데이터에 접근할 확률이 높음시간 지역성현재를 기준으로 가장 가까운 시간에 접근한 데이터가 다시 접근할 확률이 높음순차적 지역성여러 작업이 순서대로 진행되는 경향이 있음 페이지 테이블 엔트리 구조필드설명페이지 번호가상 주소의 페이지 번호프레임 번호물리 메모리에서 ..

OS 2024.12.13

[쉽게 배우는 운영체제] 8. 가상 메모리의 기초

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다1. 개요메모리의 크기는 컴퓨터마다 다름OS가 물리 메모리의 크기에 의존한다면, 메모리 크기별로 프로그램이 동작하지 않을 수 있음 가상 메모리물리 메모리의 크기와 관계없이 프로세스에 큰 메모리 공간을 제공하는 기술프로세스는 특별한 고려 없이 메모리를 사용할 수 있습니다 (물리 메모리 크기, 위치 등)  프로세스 가상 주소프로세스는 0번지부터 시작하는 연속된 메모리 공간을 가집니다.자신이 어느 위치에 있는지 신경쓰지 않아도 됩니다. 메모리 분할 방식운영체제를 제외한 나머지 메모리 영역을 일정한 크기로 나누어 프로세스에게 할당함ex) 페이징, 세그먼테이션, 세그먼테이션-페이징 혼용 메모리 관리자메모리 자원을 효율적으로 관리하고 프로세스들이 요구하..

OS 2024.12.12

[쉽게 배우는 운영체제] 7. 물리 메모리 관리

조성호 님의 "쉽게 배우는 운영체제" 책을 정리한 포스팅 입니다1. 개요메모리 관리의 복잡성CPU메모리의 내용을 가져오거나, 작업 결과를 메모리에 저장하기 위해 MAR을 사용함MAR에 필요한 메모리 주소를 넣으면 데이터를 가져오거나 기록할 수 있음 시분할 시스템모든 응용 프로그램이 메모리에 올라와 실행되므로 메모리 관리가 복잡함 메모리 관리의 이중성프로세스 입장에서는 메모리를 독차지하려 하고, 메모리 관리자 입장에서는 되도록 효율적으로 쓰고싶어 하는 것 메모리 관리자이러한 복잡한 메모리 관리는 메모리 관리 시스템(MMS)에서 담당함 관리법메모리가 부족할 경우, 새로운 공간을 확보옆의 프로세스를 밀어냄더 큰 공간으로 해당 프로세스를 옮겨줌빈 공간이 생기면합쳐서 하나의 큰 공간을 만듬 과정fetch프로세스와..

OS 2024.12.12