Java (자바) 39

[Java] 데이터 직렬화 / Serializable

이번 포스팅에서는 데이터 직렬화에 대해 알아보자. 직렬화란? 메모리에 있는 데이터를 네트워크 통신으로 전달하거나 디스크 등에 저장하기 위한 형식으로 변환하는 것을 말한다. 여기서 말하는 데이터 형식은 바이트 스트림이며, Java의 최소 단위인 Byte 형태의 연속적인 데이터로 변환한 것이다. 직렬화의 반대 경우를 역직렬화라고 하며 전달 받거나 저장된 바이트 스트림을 메모리에 적재할 수 있도록 다시 변환하는 것을 말한다. 직렬화가 필요한 이유 아무래도 메모리 내 데이터를 다루는 내용이기에, 메모리의 Stack · Heap 영역에 대한 기본적인 지식이 없다면 다음 포스팅을 참고하면 도움이 될 것이다. [Java] JVM 메모리 할당 방식 - Stack · Heap Memory 지난 포스팅에서 JDK · JR..

Java (자바) 2024.03.30

[Java] Set / 자료 구조 / 예제

이번 포스팅에서는 Set에 대해 알아보자. Set ? *Set : 세트, 집합 등 특정한 값을 저장하는 자료 구조 중 하나다. Set을 이야기할 때는 자연스레 List 자료 구조와 비교하게 된다. List : 데이터를 저장하는 순서가 정해져 있으며, 중복된 값을 저장할 수 있다. Set : 데이터를 저장하는 순서가 없으며, 중복된 값을 저장할 수 없다. 위 내용만 보아도, 확실히 두 자료 구조는 반대의 성격을 띄고 있다고 볼 수 있다. Set 자체는 인터페이스로 제공되며, 다음과 같은 종류의 클래스로 구현할 수 있다. ● HashSet Set의 대표 클래스라 할 수 있다. 위에서 설명한 대로, 데이터를 중복 저장할 수 없고 저장 순서도 없다. ● TreeSet 데이터가 오름 차순으로 정렬되어 저장된다. ..

Java (자바) 2024.03.26

[Java] Pair / 자료 구조 / 2개의 데이터 관리하기

이번 포스팅에서는 Pair 클래스에 대해 알아보자. Pair ? 안드로이드 관련 서적을 읽던 중 Pair라는 자료구조를 처음 만나게 되었다. 해당 코드는 2가지 데이터를 관리하는 단순한 구조였다. *Pair : 한 짝, 한 쌍 사전적 정의를 듣고 보니 포커 족보의 원·투 페어가 이 페어인 것 같다. 별도의 데이터 클래스를 생성할 필요 없이 2개의 데이터를 관리할 수 있기에 편리해 보였다. Pair 클래스는 Java 8 버전부터 추가된 클래스이며, 그 이전까지는 외부 라이브러리를 통해 사용되었다. 단순히 2가지의 데이터를 다룰 때 주로 사용된다. 이는 Key - Value 형태로 볼 수도 있고, First - Second 형태로 볼 수도 있다. 개인적인 견해로는 First - Second 형태에 더 가깝다..

Java (자바) 2024.03.25

[Java] Garbage Collector

이번 포스팅에서는 Garbage Collector에 대해 알아보자. Garbage Collector 직역하면 ' 쓰레기 수집가 ' Java의 메모리 관리 기법 중 하나이다. 프로그램이 할당했던 메모리 중에서 더 이상 사용되지 않는 메모리를 해제하는 기능이다. 더이상 사용되지 않는 메모리를 해제해주지 않으면 메모리가 계속 쌓이기만 하는 메모리 누수가 발생한다. C언어의 경우, 더 이상 사용되지 않는 메모리는 직접 해제해준다. 하지만 Java의 경우 개발자가 메모리를 직접 해제해주는 일이 없다. 그 이유가 바로 Garbage Collector의 존재 덕분이다. Heap 영역 / Minor GC · Major GC ✅ Garbage Collector는 JVM의 Heap 영역에서 동작한다. Heap 영역이 뭐에..

Java (자바) 2024.03.06

[Java] JVM 메모리 할당 방식 - Stack · Heap Memory

지난 포스팅에서 JDK · JRE · JVM에 대해 간단히 알아보았다. [Java] JDK · JRE · JVM JDK · JRE · JVM에 대해 알아보자. JDK Java Development Kit Java로 프로그램을 개발하는데 필요한 툴을 모아놓은 소프트웨어 패키지다. JDK는 JRE, JVM을 포함하고 있다. 그렇기에 JDK를 설치하면 JRE · JVM이 oscarstory.tistory.com 이번 포스팅에서는 JVM을 조금만 더 공부해보려 하는데, 그 중에서 JVM의 메모리 할당 방식에 대해 알아보겠다. JVM은 Stack Memory · Heap Memory라는 2가지 공간을 사용하여 메모리를 할당한다. ✅ Stack Memory 지난 포스팅을 보고 왔다면 알겠지만, 우리가 작성한 코드를..

Java (자바) 2024.03.05

[Java] JDK · JRE · JVM

JDK · JRE · JVM에 대해 알아보자. JDK Java Development Kit Java로 프로그램을 개발하는데 필요한 툴을 모아놓은 소프트웨어 패키지다. JDK는 JRE, JVM을 포함하고 있다. 그렇기에 JDK를 설치하면 JRE · JVM이 함께 설치된다고 볼 수 있다. 이외에도 다음과 같은 요소를 포함한다. - java : 자바 인터프리터 - javac : 자바 컴파일러 - jdb : 자바 디버거 - jar : 자바 클래스 압축 파일을 관리하는 프로그램 - javap : 컴파일된 클래스 파일을 원래의 소스 코드로 변환해주는 프로그램 등 ✅ JDK 버전 흔히 말하는 Java의 버전은 곧 JDK의 버전이다. JDK 버전 히스토리는 다음과 같다. Version Release Date JDK 1..

Java (자바) 2024.03.04

[Java] HashMap / 해시맵

이번 포스팅에서는 Map의 한 종류인 HashMap에 대해 알아보자. HashMap ? Map 인터페이스를 상속하는 대표적인 Map의 컬렉션이다. Map은 key - value 로 이루어진 객체를 저장하는 구조이며, HashMap도 Map을 상속하기에 동일한 구조를 사용한다. HashMap은 이름 그대로 Hashing을 통해 데이터를 검색하기 때문에, 많은 양의 데이터를 다룰 때 좋은 성능을 보인다. *Hashing : key 값에 연산을 적용하여 객체의 주소를 계산하여 접근하는 방식. 다른 대부분의 탐색 방법들은 일치하는 key를 찾을 때까지 반복 순회한다. ✅ 특징 ● key는 고유의 값을 가진다. 중복된 key 값이 입력되면 해당 데이터가 덮어 쓴다. ● key, value에 null 값을 저장할 ..

Java (자바) 2024.02.06

[Java] 확장 for문 / Collection

이번 포스팅에서는 확장 for문에 대해 알아보겠다. 확장 for문이란? JDK 1.5 부터 추가된 기능으로, 기존 for문을 축약했다고 볼 수 있다. 기본 문법은 다음과 같다. for (대입할 변수 : Collection) { //TODO } Collection의 타입과 대입할 변수의 타입이 일치해야 하며, 해당 Collection의 길이만큼 반복하여 변수에 대입된다. *Collection에 대한 설명은 아래 'Collection ?' 탭에서 진행한다. 배열을 예시로 들어보겠다. int[] array = {10, 20, 30, 40}; for (int i : array) { System.out.println(i); } 결과) 변수 i에 배열 array 원소의 값이 하나씩 대입되며 출력되었다. 기존 for..

Java (자바) 2024.02.05