가비지 컬렉터(GC) feat.힙 영역
·
💻 Dev/Java & OOP
Heap 영역가비지 컬렉터(GC)를 이해하기 전에 먼저 힙 영역에 대한 이해가 필요하다.Heap 영역의 역할자바의 힙 영역은 JVM 메모리 구조에서 가장 중요한 부분 중 하나로, 크게 세 가지 주요 역할을 한다. 1. 객체 저장 공간자바의 객체와 배열(Array)과 같은 참조 타입 변수는 힙영역에 저장된다.힙 영역에 저장된 데이터는 스택(Stack) 영역에 있는 참조 변수(reference value)를 통해 접근할 수 있다. 2. 동적 메모리 할당프로그램 시작 시에 한 번에 전체 메모리가 할당되는 것이 아니라, 객체가 실제로 필요할 때 동적으로 메모리가 할당된다.class Main { public static void main(String[] args) { // 여기서 person은 ..
자바는 Call by Value만 사용한다.
·
💻 Dev/Java & OOP
프로그래밍을 하다 보면 Call by Value / Call by Reference 개념을 배우게 된다.특히 C언어에서 포인터 할 때 고통받았던 기억이... 옛날에 자바 공부할 때는 어디서는 Call by Reference도 사용한다고 봤다..!결론만 보자면 자바는 Call by Value만 사용한다. Call by Value기본 데이터 타입Call by Value란 값에 의한 호출을 의미한다.메서드 호출 시 전달되는 값의 복사본이 메서드로 전달된다는 뜻이다.public class CallByValueExample { public static void main(String[] args) { int original = 5; modify(original); Sys..
인덱스(B-Tree, B+Tree)
·
👶🏻 CS/Database
데이터베이스의 성능을 향상시키기 위해서는 디스크 I/O를 줄이는 것이 가장 중요하다. 디스크 I/O란 데이터를 읽고 쓰는 작업으로, 데이터를 작성하거나 수정할 때 디스크에 저장되는 과정을 의미한다. 디스크 접근은 시간이 많이 걸리기 때문에 디스크 I/O를 최소화하는 것이 데이터베이스 성능을 높이는 핵심이다. 인덱스를 활용하면 데이터를 더 빠르게 조회할 수 있어 디스크 I/O를 줄이는 데 효과적이다.인덱스는 데이터베이스가 테이블의 모든 데이터를 탐색하지 않고도 원하는 정보를 빠르게 찾을 수 있도록 설계되어 있다. 이를 통해 불필요한 디스크 I/O 작업을 줄이고 빠르게 조회할 수 있다. 인덱스란?간단히 말해 인덱스는 책의 목차와 비슷한 개념이다. 책의 내용을 "데이터"라고 하고, 페이지 번호를 "인덱스"라고..
정규화와 비정규화
·
👶🏻 CS/Database
정규화정규화란 ERD 내에서 중복요소를 찾아 제거해 나가는 과정을 말한다.함수의 종속성을 이용해 속성들 간의 연관성을 분석하고, 데이터를 논리적으로 나누어 이상 현상(Anomaly)을 방지하는 것이다.이상 현상(Anomaly)정규화를 거치지 않으면 데이터베이스에 불필요한 데이터 중복이 발생하여 여러 문제가 생길 수 있다. 이를 이상 현상이라고 하며, 대표적으로 삽입 이상, 갱신 이상, 삭제 이상이 있다. 1. 삽입 이상 (Insertion Anomaly)데이터를 삽입할 때 원하지 않은 값들도 함께 삽입되는 현상이다. 2. 갱신 이상 (Update Anomaly)데이터를 수정할 때 일부만 갱신되어 정보가 불일치하게 되는 현상이다. 3. 삭제 이상 (Deletion Anomaly)데이터를 삭제할 때 의도치 ..
NoSQL이란?
·
👶🏻 CS/Database
NoSQL이란?NoSQL은 Not Only SQL의 약자로 단순히 기존 관계형 DBMS가 갖고 있는 특성뿐만 아니라, 다른 특성들을 부가적으로 지원한다는 것을 의미한다. 관계형 데이터베이스가 테이블 간의 관계를 기반으로 데이터를 저장하는 방식과 달리, NoSQL은 빠르게 바뀌는 대량의 비정형 데이터를 처리하는 데 적합한 구조를 제공한다. 과거에는 회원 정보나 매출 기록처럼 일정한 형식과 구조를 가진 정형 데이터만 처리했기 때문에, RDBMS로 데이터를 쉽게 관리할 수 있었다. 그러나 문서, 이미지, 동영상 파일, SNS 데이터 등 고정된 형식이 없는 비정형 데이터가 많아지면서, 더 유연한 스키마를 제공하는 NoSQL이 필요하게 되었다.  NoSQL의 특징1. 비정형 데이터 저장NoSQL은 구조화되지 않은..
교착상태와 해결법
·
👶🏻 CS/Operating System
운영체제에서 발생할 수 있는 중요한 문제인 교착상태에 대해 알아보자! 교착상태란?교착상태란 두 개 이상의 프로세스가 서로의 자원을 기다리며 무한정 멈춰있는 상태를 말한다.예를 들어, 자동차 교차로에서 네 대의 자동차가 각각 서로의 길을 막으며 무한히 기다리는 상황을 상상해 보자.각 자동차는 다른 자동차가 지나가야만 자신이 움직일 수 있으므로, 모두가 멈춰 있게 되는 현상이 교착상태이다.  교착상태 발생의 필요충분조건교착상태는 다음의 네 가지 조건이 적용되었기 때문에 발생한 것이다.하나라도 충족되지 않으면 교착상태가 발생하지 않는다. 1. 상호 배제(Mutual Exclusion)자원은 한 번에 한 프로세스만 사용할 수 있기 때문이다.ex) 한 칸에 한 명만 들어갈 수 있는 화장실은 상호배제를 잘 지킨 것..