전체 글
-
데이터베이스는 설계는 어떻게 할까?학교 공부 2025. 6. 23. 02:37
서비스를 개발할 때 데이터는 체계적으로 관리해야 한다. 필요할 때마다 엑셀에 열을 추가하는 방식으로는 명백한 한계가 존재한다.초기에는 이런 방식이 편리할 수 있지만, 데이터가 축적되면서 중복이 발생하고 수정이 어려워지는 문제를 마주하게 된다. 이 문제를 해결하기 위해 '데이터베이스 설계'라는 체계적인 과정이 필요하다.그렇기에 이번에는 데이터베이스 수업을 들으면서 알게된 데이터베이스 설계 5단계에 대해 블로그를 쓰면서 학습하려고 한다.요구사항 분석: 뭘 만들어야 할지 정하는 단계개념적 설계: DBMS에 독립된 데이터의 전체적인 뼈대를 그리는 단계논리적 설계: 특정 DBMS에 맞게 설계도를 구체화하는 단계물리적 설계: 데이터를 디스크에 어떻게 저장할지 정하는 단계구현: 설계도를 바탕으로 실제 DB를 만드는 ..
-
Strategy Patturn (전략 패턴)학교 공부 2025. 6. 4. 12:46
전략 패턴(Strategy Patturn) — 헤드 퍼스트 디자인 전략패턴은 알고리즘 군을 정의하고 캡슐화해서 각각의 알고리즘 군을 수정해서 쓸 수 있게 해줍니다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있습니다.오리 클래스 만들기우리가 다양한 종류의 오리 클래스들을 만들 때 중복되는 함수와 변수들을 모아 하나의 슈퍼 클래스를 만든 다음 그 클래스를 확장해서 다른 종류의 오리들을 만들 수 있다.하지만 이 경우 새로운 종류의 오리를 만들 때 문제가 생길 수 있다.MarllardDuck의 경우 하늘을 날 수 있고 소리를 낼 수 있기 때문에 quack() 함수와 fly() 함수를 그대로 사용할 수 있다.반면에 RubberDuck의 경우 소리는 낼 수 있지만 하늘은 날 수..
-
동적 배열 기반의 리스트와 Amortized Analysis학교 공부 2025. 6. 3. 19:56
배열 기반의 리스트java에서 우리가 보통 접하는 배열의 경우 선언할 때 그 배열의 크기를 처음부터 정해야 한다.그렇기 때문에 충분히 큰 배열의 크기 N을 선택하고 원소의 개수 n은 배열의 크기인 N보다 작다. (N ≥ n)배열기반의 리스트 ADT 구현public class ArrayList implements List { private E[] data; int size = 0; // size -> n ... public ArrayList(int capacity) { // capacity -> N data = (E[]) new Object[capacity]; } ...근데 이 경우 당연하게도 N이 처음부터 정해져 있기에 리스트의 용량이 N으로 고정되어 있다는 단점을 갖게 된다.Dynamic Array로..
-
[Android] PdfRendererAndroid 2023. 2. 26. 04:09
안드로이드를 공부하려고 간단한 pdf 뷰어를 만들어 보다가 안드로이드에서 제공하는 PdfRenderer 클래스를 발견했다. https://developer.android.com/reference/android/graphics/pdf/PdfRendererPdfRendererandroid developers에서는 PDF를 렌더링하는 일반적인 방법을 다음과 같이 설명하고 있다. // new renderer PdfRenderer renderer = new PdfRenderer(getSeekableFileDescriptor()); // let us just render all pages final int pageCount = renderer.getPageCount(); for (int i = 0; i 간단한 예..