전체 글
자바 변수를 메모리 관점에서 뜯어보기
메모리 JVM에서 메모리는 크게 3가지 영역으로 나누어 집니다. '아래 그림은 많이 보셨을 건데요, 자바에서 지역변수와 참조변수를 사용하게 되면 각각의 메모리 영역 어느 부분에 할당이 되는지, 어떻게 사용이 되는지에 대해 지금부터 살펴보도록 하겠습니다. 메모리 영역에 대해 살펴보기 이전에, 변수에 대해 먼저 보도록 하겠습니다. 자바의 변수는 크게 클래스 변수, 인스턴스 변수, 지역변수, 매게변수로 나뉩니다. 클래스 변수 - 클래스 영역에서 타입 앞에 static이 붙은 변수를 뜻합니다. 하나의 클래스를 통해 많은 객체가 생성 될 수 있는데, 해당 객체 모두가 공유하는 변수입니다. 인스턴스 변수 - 클래스 영역에서 static이 붙어 있지 않은 변수입니다. 객체마다 개별적인 값을 지닐 수 있습니다. 지역 ..
이진 탐색 트리(BST)에 대하여
이진 탐색 트리란? 이진트리는 자식 노드가 최대 두 개인 노드들로 구성된 트리를 뜻합니다. 이진탐색 트리(Binary Search Tree)는 이진 탐색(Binary Search)와 연결 리스트(Linked list)를 결합한 이진트리입니다. 이진 탐색은 시간복잡도가 O(logN)이지만 정렬된 상태를 유지해야 함으로 삽입이나 삭제가 불가능합니다. 연결 리스트는 삽입이나 삭제시 O(1)의 상수 시간복잡도로 처리 가능하지만, 탐색 시간복잡도가 O(N)입니다. 정리하자면 이 둘의 장점을 챙긴 자료구조가 이진 탐색트리입니다. 이진 탐색 트리의 특징 - 모든 왼쪽 자식의 노드의 값이 부모 노드의 값보다 작습니다. - 모든 오른쪽 자식의 노드의 값이 부모 노드의 값보다 큽니다. - 각 노드들은 서로 유일한 값을 가..
식별관계와 비식별관계
외래키를 사용하여 테이블 간 관계를 정립해줄 때 사용하는 전략은 크게 식별 및 비식별 관계가 있습니다. 현재 진행하고 있는 프로젝트와 관련된 내용이라, 이번 기회에 각각에 대해 자세하게 살펴보도록 하겠습니다. 식별관계 식별 관계는 부모 테이블의 기본키가 자식 테이블의 기본키이면서 동시에 외래키가 되는 관계를 뜻합니다. 즉 자식 테이블의 존재 유무는 부모 테이블에 의존적이라 할 수 있습니다. 비식별관계 비식별 관계는 부모 테이블의 기본키가 자식 테이블의 외래키로만 이용되는 관계를 뜻합니다. 또한 외래 키에 NULL의 허용 여부에 따라 필수적 비식별 관계와 선택적 비식별 관계로 나뉩니다 필수적 비식별 관계는 외래키에 NULL을 허용하지 않으며, 연관관계를 필수적으로 맺어야합니다. 선택적 비식별 관계는 외래키..
Array와 List의 차이는?
배열(Array)과 리스트(List)는 모두 선형 자료구조입니다. 선형 자료구조란 원소들을 순서대로 나열한 집합을 뜻합니다. 지금 부터 각각에 대해서 특징과 차이가 무엇인지 살펴보도록 하겠습니다! 배열 (Array) 배열이란 같은 성질을 같은 항목들의 집합을 뜻합니다. 아래 그림과 같이 모든 요소들이 정수(int)를 자료형으로 갖고 있는 것을 확인할 수 있습니다. 중간에 문자열이나 다른 성질을 갖는 요소들이 들어올 수 없습니다. 또한 메모리 상에 연속적으로 데이터가 저장됩니다. 순차적으로 저장된 데이터를 참조하는데 Index가 사용됩니다. 이러한 배열에는 몇가지 특징들이 있습니다. 차례대로 살펴보도록 하겠습니다. 배열은 고정된 크기를 같습니다. 배열을 사용하기 전에 크기를 미리 지정을 하고 사용하기 때문..