본문 바로가기

전체 글156

[데이터베이스] Storage and File Structure - Block, File organization, Fixed/Variable Records 저장 방식 Overview of Physical Storage Media 데이터의 이동 : CPU ↔ 메인메모리 ↔ 디스크 디스크에서 필요한 데이터가 있는 블록을 메인 메모리로 이동 메인 메모리에서 CPU가 원하는 데이터를 찾음 Blocks : 데이터에 접근하고 이동하는 기본 단위 - DB 시스템은 블록의 전환 최소화를 추구함 Buffer : 메인메모리의 영역으로, 디스크의 블록을 복사해해서 저장한다 Buffer manager : 메인메모리 안의 버퍼 공간을 할당하는 서브 시스템 Buffer manage의 동작 필요한 블록이 현재 버퍼 안에 있는 경우, 블록의 주소를 반환 필요한 블록이 현재 버퍼 안에 없는 경우 버퍼에 공간을 할당한다 필요한 경우 새 블록과 교체함 Replaced block written back.. 2021. 12. 19.
[데이터베이스] Entity-Relationship Model - 모델링, ERD, 관계형 스키마 Modeling 데이터베이스는 entity와 그 관계로 모델링 될 수 있다. -> Entity-Relationship(E-R) Model attribute type simple / composite : 속성을 subpart로 나눌 수 있고 없음 name -> {first_name, middle_name, lasst_name} single-valued / multi-valued : 여러 개 값을 가지는 속성 phone_number -> 한 사람당 2 개 이상의 전화번호를 가질 수 있음 derived attributes : 다른 속성으로부터 유추될 수 있는 속성 age로부터 date_of_birth를 유추할 수 있다. composite, multi-valued, derived 속성은 뒤에서 스키마 표현 방식.. 2021. 12. 14.
[디자인패턴] 컴포짓 패턴 (Composite Pattern) 목적 클라이언트가 각 객체와 객체의 묶음을 동일하게 다룰 수 있도록 함 요소 문제 : 프로그램에서 각각의 객체(개별 객체) 또는 계층 구조로 이루어진 객체 묶음(복합 객체)을 다뤄야 함 해결 : 개별 객체와 복합 객체에 대해 동일한 작업을 적용. 대부분의 경우에 개별 객체와 복합 객체의 차이를 무시할 수 있도록 함 결과 : 유지보수에 유리 정의 컴포넌트 개별 객체와 개별 객체들을 계층 구조로 포함하는 복함 객체를 나타내는 인터페이스 또는 추상 클래스 개별 객체(Leaf) 다른 컴포넌트를 포함할 수 없는 컴포넌트 복합 객체(Composite) 개별 객체 또는 다른 복합 객체를 포함할 수 있음 컴포짓 패턴을 이용한 메뉴 디자인 MenuItem은 개별객체(Leaf), Menu는 복합 객체(Composite) .. 2021. 12. 13.
[디자인패턴] MVC 패턴 목적 업무 로직(Business Logic) 및 데이터(Model)와 보이는 부분(View)을 분리 요소 문제 : 데이터와 해당 데이터를 보여주는 부분(뷰)의 코드가 섞여있음 해결 : 데이터와 뷰를 분리하고 이들을 연동시키는 컨트롤러를 추가 결과 : loose coupling, 재사용성 설계 모델 : 데이터를 관리하는 부분 뷰 : 화면에 보이는 부분 컨트롤러 : 사용자의 입력을 처리하고, 모델과 뷰 사이에서 상호작용을 할 수 있도록 지원 MVC 패턴의 장단점 장점 클래스간 정보 공유를 최소화시킴 - 모델과 뷰가 서로에 대해 잘 몰라도 됨 같은 모델에서 여러 개의 뷰를 지원할 수 있음 단점 뷰가 업데이트 되어야 함을 알려줘야함 - 모델이 뷰에게 데이터를 직접 전달하는 것 보다 비효율적임 컨트롤러의 역할이 .. 2021. 12. 12.
[디자인패턴] 템플릿 메소드 패턴 (Tempalate Method Pattern) 목적 알고리즘의 뼈대를 정의하고, 일부를 서브 클래스로 위임. 알고리즘의 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의 할 수 있도록 함 요소 문제 : 알고리즘들을 캡슐화시키면서 중복되는 코드가 여러 클래스에 존재함 해결 : 알고리즘의 중복되는 부분을 부모 클래스에 캡슐화, 달라지는 부분만 서브 클래스에 구현 결과 : 중복되는 코드를 줄임 정의 추상 클래스에서 고정된 알고리즘 즉, 알고리즘 뼈대를 구현 - templateMethod. 구현체마다 다를 수 있는 primitivOperation은 추상 메소드로 구현 상속받은 Concrete 클래스는 primitiveOperation 메소드를 구현하여 전체 알고리즘을 완성한다. 음료 레시피 구현 "물을 끓인다 (boilWater)"와 "컵.. 2021. 12. 11.
[디자인패턴] 상태 패턴 (State Pattern) 목적 객체의 내부 상태가 바뀔 때 객체의 동작을 변경할 수 있도록 함. 객체는 자신의 클래스를 바꾸는 것 처럼 보임. 요소 문제 : 상태가 여러개 있고, 이를 if 문으로 통제함 해결 : 상태를 한 곳에서 관리 결과 : 변경 최소화 정의 A상태의 handle과 B상태의 handle의 동작이 다르다. -> 상태가 다르면 객체의 동작이 다름 뽑기 기계 구현 뽑기 기계는 4 가지의 상태(매진, 동전없음, 동전있음, 판매)가 있고, 다음의 4 가지 메소드(동전 투입, 반환, 손잡이 돌림, 알맹이 내보냄)가 있다. 상태 패턴을 사용하지 않고 이를 구현하려면 메소드마다 state에 대한 조건문을 구현해야 한다. (4*4 = 16가지를 구현) 만약 state가 추가된다면 조건문을 모든 메소드에 추가해야 된다 -> 문.. 2021. 12. 11.
[코틀린] 함수형 프로그래밍 - 고차 함수, 람다식 함수형 프로그래밍이란 함수형 프로그래밍(FP) 순수 함수를 작성하여 프로그램의 부작용을 줄이는 기법 정의와 특징 순수 함수를 사용해야 한다. 람다식을 사용할 수 있다. 고차함수를 사용할 수 있다. 순수 함수 같은 인자에 대하여 항상 같은 값을 반환한다 (부작용이 없는 함수) 함수 외부의 어떤 상태도 바꾸지 않는다 람다식 수학에서 람다 대수는 이름이 없는 함수로 2 개 이상의 입력을 1개의 출력으로 단순화한다는 개념 FP에서는 다음을 의미 다른 함수의 인자로 넘기는 함수 함수의 결괏값을 반환하는 함수 변수에 저장하는 함수 일급 객체에 이름이 없는 경우, 이를 '람다식' 함수 또는 '람다식'이라 부름 일급 객체 FP에서는 함수를 일급 객체로 생각한다 일급 객체의 특징 일급 객체는 함수의 인자로 전달할 수 있.. 2021. 12. 10.
[코틀린] 코틀린 함수 코틀린 함수의 기본 구조 fun 함수명([변수명: 타입], ...): [반환 타입]{ ... } fun sum(a: Int, b: Int): Int { var sum = a + b return sum } fun sum(a: Int, b: Int): Int = a + b fun sum(a: Int, b: Int) = a + b 함수 반환값 생략 fun printSum(a: Int, b: Int): Unit{ println("sum of $a and $b is ${a+b}") } fun printSum(a: Int, b: Int) { println("sum of $a and $b is ${a+b}") } 반환값이 없을 경우 코틀린의 특수한 자료형인 Unit을 반환값으로 사용. 반환값의 타입이 없을 경우 코틀.. 2021. 12. 10.