[Java] 메모리 구조
·
Backend/Java
메모리 구조를 공부하는 이유는 ? 1. 같은 기능의 프로그램이더라도 메모리 관리에 따라 성능이 좌우된다. 2. 메모리 관리가 되지 않은 경우 속도저하 현상이나 튕김 현상 등이 일어날 수 있다. 3. 한정된 메모리를 효율적으로 사용하여 최고의 성능을 내기 위함이다. 메모리 - 프로그램을 실행하기 위한 데이터 및 명령어를 저장하는 공간 JAVA 실행구조 프로그램이 실행되기 위해서는 windows나 linux같은 운영체제(OS)가 제어하고 있는 시스템의 리소스의 일부인 메모리(RAM : 주기억장치)를 제어할 수 있어야 한다. JAVA 이전에 C 같은 대부분의 언어로 만들어진 프로그램은 이러한 이유 때문에 OS에 종속되어 실행되게 되어 있었다. JAVA 프로그램은 JVM(Java Virtual Machine :..
[Java] UML 다이어그램 3️⃣ - 연관, 집합, 합성
·
Backend/Java
https://steady-developer-hyemin.tistory.com/23 [Java] UML 다이어그램 1️⃣ UML 이란 ? - 시스템을 모델로 표현해주는 대표적인 모델링 언어 클래스 다이어그램이란 ? - 시간에 따라 변하지 않는 시스템의 정적인 면을 보여주는 대표적은 UML 구조 다이어그램 UML 클래스의 steady-developer-hyemin.tistory.com [Java] UML 다이어그램 2️⃣ - 일반화, 실체화, 의존 클래스간의 관계 클래스 다이어그램의 주 목적은 클래스 간의 관계를 한 눈에 쉽게 보고 의존 관계를 파악하는 것에 있다. 그래서 클래스 다이어그램에서 가장 중요한 것이 클래스 간의 관계이 steady-developer-hyemin.tistory.com Associ..
[Java] UML 다이어그램 2️⃣ - 일반화, 실체화, 의존
·
Backend/Java
클래스간의 관계 클래스 다이어그램의 주 목적은 클래스 간의 관계를 한 눈에 쉽게 보고 의존 관계를 파악하는 것에 있다. 그래서 클래스 다이어그램에서 가장 중요한 것이 클래스 간의 관계이다. Generalization (일반화) 일반화는 부모 클래스와 자식 클래스간의 상속(Ingerit) 관계를 나타낸다. 일반화란, 서브 클래스가 주체가 되어 자식 클래스를 부모 클래스로 일반화 하는 것을 말하고 반대의 개념은 부모 클래스를 자식 클래스로 구체화(Specialize) 하는 것이다. 상속은 부모 클래스의 필드 및 메서드를 사용하며 구체화 하여 필드 및 메서드를 추가하거나 필요에 따라 메서드를 오버라이딩(overriding)하여 재정의 한다. 또는, 부모 클래스가 추상 클래스인 경우에는 인터페이스의 메서드 구현..
[Java] UML 다이어그램 1️⃣
·
Backend/Java
UML 이란 ? - 시스템을 모델로 표현해주는 대표적인 모델링 언어 클래스 다이어그램이란 ? - 시간에 따라 변하지 않는 시스템의 정적인 면을 보여주는 대표적은 UML 구조 다이어그램 UML 클래스의 표현 - 가장 윗부분 : 클래스 - 중간 부분 : 속성 (클래스 특징) - 마지막 부분 : 연산 (클래스가 수행하는 책임) UML의 접근제어자 public : 어떤 클래스의 객체에서든 접근 가능 ( 표시 : + ) private : 이 클래스에서 생성된 객체들만 접근 가능 ( 표시 : - ) protected : 이 클래스와 동일 패키지에 있거나 상속 관계에 있는 하위 클래스의 객체들만 접근 가능 ( 표시 : # ) package : 동일 패키지에 있는 클래스의 객체들만 접근 가능 ( 표시 : ~ ) Ste..
[알고리즘] Doubly Linked List ( 정의 / 주요 연산 )
·
Backend/알고리즘
https://steady-developer-hyemin.tistory.com/19 [알고리즘] Linked List ( 노드 추가, 탐색, 삭제, 삽입 ) https://steady-developer-hyemin.tistory.com/17 [알고리즘] Linked List ( List / Linked List 란? ) 1. 리스트 (List) - 너무 작게 선언하자니 일을 제대로 할 수가 없고 무장정 크게 선언하자니 메모리가 울 것 같습니다. steady-developer-hyemin.tistory.com 더블 링크드 리스트 (이중 연결 리스트) - 링크드 리스트의 탐색 기능을 개선한 자료구조 - 양방향으로 탐색이 가능 링크드 리스트 : 노드가 다음 노드를 가리키는 포인터만을 가집니다. 더블 링크드 리..
[알고리즘] Linked List ( 노드 추가, 탐색, 삭제, 삽입 )
·
Backend/알고리즘
https://steady-developer-hyemin.tistory.com/17 [알고리즘] Linked List ( List / Linked List 란? ) 1. 리스트 (List) - 너무 작게 선언하자니 일을 제대로 할 수가 없고 무장정 크게 선언하자니 메모리가 울 것 같습니다. 이 문제를 해결하기 위해 필요한 것은 배열처럼 데이터 집합을 보관하는 기 steady-developer-hyemin.tistory.com https://steady-developer-hyemin.tistory.com/18 [알고리즘] Linked List ( 노드 생성 / 소멸 ) Linked List의 주요 연산 노드 생성 / 소멸 C언어로 작성된 프로그램은 세 가지 종류의 메모리 영역을 가집니다. 정적 메모리(St..
[알고리즘] Linked List ( 노드 생성 / 소멸 )
·
Backend/알고리즘
Linked List의 주요 연산 노드 생성 / 소멸 C언어로 작성된 프로그램은 세 가지 종류의 메모리 영역을 가집니다. 정적 메모리(Static Memory) / 자동 메모리( Automatic Memory)/ 자유 저장소(Free Store) 정적 메모리 - 프로그램이 실행하면서 프로그램에서 사용될 전역 변수/정적 변수를 메모리에 할당한 후 프로그램이 종료될 때 해체하는 영역 자동 메모리 - 스택 구조로 이루어져 있어 이곳에 저장된 변수는 코드 블록이 종료됨에 따라 사라집니다. 코드블록 안에서 선언된 변수들은 선언 당시에 자동 메모리에 저장되었다가 코드 블록의 끝에서 모두 제거됩니다. { /* 코드 블록 시작 */ int a = 37; Node MyNode; } /* 코드 블록 끝. 여기에서 a와 M..
[알고리즘] Linked List ( List / Linked List 란? )
·
Backend/알고리즘
1. 리스트 (List) - 너무 작게 선언하자니 일을 제대로 할 수가 없고 무장정 크게 선언하자니 메모리가 울 것 같습니다. 이 문제를 해결하기 위해 필요한 것은 배열처럼 데이터 집합을 보관하는 기능을 가지면서도 한편으로는 배열과는 달리 유연하게 크기를 바꿀 수 있는 자료구조입니다. 이것을 리스트(List : 목록)라고 부릅니다. 리스트는 스택과 큐, 그리고 트리와 같은 자료구조를 이해할 수 있는 기반이 된다는 점에서 중요한 의미를 가집니다. 2. 링크드 리스트 (Linked List) 링크드 리스트는 노드를 연결해서 만드는 리스트라고 해서 붙여진 이름입니다. 리스트 내의 각 요소는 노드(Node), 즉 마디라는 뜻입니다. 링크드 리스트의 노드는 다음과 같이 데이터를 보관하는 필드와, 다음 노드와의 연..