전체 글(61)
-
[Java] Java파일의 컴파일 과정
자바는 OS에 독립적인 특성을 가지고 있다. 그게 가능한 이유는 JVM(Java Virtual Machine) 때문이다. JVM의 어떤 기능 때문에 OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 통해 알아보자. 자바 컴파일 순서 1. 개발자가 자바 소스코드(.java)를 작성합니다. 2. 자바 컴파일러가 자바 소스코드(.java)파일을 읽어 바이트코드(.class)코드로 컴파일 합니다. 바이트코드(.class)파일은 아직 컴퓨터가 읽을 수 없는 JVM(자바 가상 머신)이 읽을 수 있는 코드입니다. (java - > class) 3. 컴파일된 바이트코드(.class)를 JVM의 클래스로더(Class Loader)에게 전달합니다. 4. 클래스 로더는 동적로딩(Dynamic Loading)을 통해 ..
2021.11.16 -
[Java] 직렬화(Serialization)
직렬화를 알아보기 전에 Primitive Type과 Reference Type을 간단히 알아보자. Primitive Type은 원시 자료형으로 int, bool, char, short, double과 같은 자료형을 말한다. Reference Type은 Primitive Type을 제외한 타입들이 모두 Reference Type이다. 클래스 타입, 인터페이스 타입, 배열 타입, 열거 타입 등이 있다. 필자는 시리얼라이제이션을 데이터 클래스를 직렬화 할 때 사용한다. 그 이유는? 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트 형태로 데이터를 변환해야 하기 때문이다. 각자 PC의 OS마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에, Reference ..
2021.11.16 -
[Set과 Map] 자료구조 Set과 Map이란?
Set의 구조는 이렇다. Set이라는 인터페이스를 구현해 HashSet, TreeSet등을 사용한다. Set : 데이터의 집합이며 순서가 없고 중복된 데이터를 허용하지 않는 배열 HashSet은? 1. 순서가 없는 배열이다. 2. 중복 값을 가질 수 없다. 3. 첨자가 없다. 4. 해시 함수를 사용하기 때문에 Set중에 속도가 가장 빠르다. 5. 인덱스가 따로 존재하지 않아 Iterator를 사용한다. 해시 테이블을 사용해서 해시값을 기반으로 데이터를 저장하기 때문에 특정값을 포함하는지 확인하는 작업이 매우 빠르다. TreeSet은? TreeSet은 이진 탐색 트리를 기반으로 한다. 1. 데이터들이 오름차순으로 정렬된다. 2. 데이터 삽입, 삭제에는 시간이 걸리지만 검색, 정렬이 빠르다. LinkedHa..
2021.11.16