Java
-
[Camel][Java] Synchronization ( 동기화 )Java/개념 정리 2020. 3. 3. 17:23
Synchronization( 동기화 )란? 동기화란, 한 쓰레드가 인스턴스에 접근해서 연산을 완료할 때까지, 다른 쓰레드가 인스턴스에 접근하지 못하도록 막는 것입니다. 우리가 일반적으로 쓰레드를 사용한 쓰레드 프로그래밍을 하다보면 하나의 인스턴스에 여러 개의 쓰레드가 접근하는 형태의 구현이 자주 요구됩니다. 이때 동기화를 해주지 않으면 문제가 발생하게되기 때문에 우리는 하나의 인스턴스에 여러 개의 쓰레드가 접근해야 할 때 동기화를 해줘야 합니다. 다만 예외적으로, StringBuffer와 같은 클래스는 이미 동기화 처리가 되어있기 때문에 여러 개의 쓰레드가 동시에 접근을 해도 문제가 없는 쓰레드에 안전한 클래스입니다. Thread의 동기화 방법 Thread를 동기화 시키는 방법의 하나로 우리는 sync..
-
[Camel][Java] Thread (쓰레드)Java/개념 정리 2020. 3. 2. 14:21
Thread(쓰레드)란? 쓰레드에 대해 설명하기에 앞서 쓰레드를 이해하기 위해 필요한 내용을 설명하겠습니다. 우선 프로그램을 실행하라는 요청을 사용자가 보내면 프로그램을 실행하는 것은 운영체제에 의해 이루어집니다. 사용자가 프로그램의 실행을 요청하면 메모리 공간이 할당되며, 이 메모리 공간을 기반으로 실행 중 에 있는 프로그램을 우리는 '프로세스'라고 합니다. 즉, 쉽게말하면 프로세스는 '실행중인 프로그램'이라고도 할 수 있습니다. 근데 이러한 프로세스 내에서 하나의 프로그램의 흐름만 있을 수 있는 것이 아니라, 둘 이상의 프로그램의 흐름이 있을 수 있습니다. 쓰레드라는 것은 이런 프로세스 내부에서 프로그램의 흐름을 형성하는 것입니다. 즉, 정리해서 말하면 하나의 프로세스 내에는 여러개의 쓰레드가 존재할..
-
[Camel][Java] Collection Framework (컬렉션 프레임워크)Java/개념 정리 2020. 3. 1. 17:57
Collection Framework란? 컬렉션 프레임워크란 쉽게 말해서 약속된 구조나 골격을 말합니다. 여기서 구조나 골격이란 Java에서 클래스를 의미합니다. 약속된, 이미 정의된 클래스라고 할 수 있는 것입니다. 하지만 이러한 특성은 라이브러리와 별반 다를바 없습니다. 그렇다면 왜 프레임워크라고 하는 것일까? 그 이유는 컬렉션과 관련된 클래스들의 정의에 적용되는 설계의 원칙 또는 구조가 존재하기 때문입니다. 컬렉션은 데이터의 저장, 그리고 이것과 관련 있는 알고리즘을 구조화해놓은 프레임워크입니다. 이 말이 어렵다면, 컬렉션은 자료구조와 알고리즘을 클래스로 구현한 것으로 생각하면 좀 더 와닿을 것입니다. 이러한 컬렉션 클래스는 많은 양의 인스턴스를 다양한 형태로 저장하는 기능을 제공하기 때문에 자료구..
-
[Camel][Java] Generics Class (제네릭 클래스)Java/개념 정리 2020. 2. 29. 19:22
Generics 클래스를 사용하는 이유 영어 Generics은 일반화라는 의미를 가지고 있습니다. 우리가 배우고자 하는 일반화(Generics)의 대상은 자료형입니다. Generics을 설명하기에 앞서 Generics이 유용하고 필요한 이유를 설명하기위해 아래 코드를 통해 설명하겠습니다. class Camel { int weight; public Camel (int weightOfCamel) { weight = weightOfCamel; } public void showWeight() { System.out.println("Weight : "+weight); } } class AnimalCage { Object item; public void putInto(Object item) { this.item =..
-
[Camel][Java] Math 클래스 & Random 클래스Java/개념 정리 2020. 2. 28. 17:34
Math 클래스란? Math 클래스는 수학관련 기능을 제공하는 클래스입니다. Math클래스는 Java 표준라이브러리의 java.lang 패키지에 정의되어 있습니다. 이 클래스는 모든 멤버가 static으로 선언되어 있습니다. 즉, 이것은 인스턴스의 생성의 목적이 아닌 수학관련 기능 제공을 목적으로 정의된 클래스라는 것입니다. Math 클래스에는 매우 다양한 메소드가 존재하지만, 이 메소드들의 이름과 사용방법이 매우 직관적이기 때문에 필요한 메소드를 찾거나 사용하기가 쉽습니다. Math 클래스의 메소드는 다음 링크에서 확인 할 수 있습니다. https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Math.html 자주 사용하는 주요 메..
-
[Camel][Java] BigInteger & BigDecimal 클래스Java/개념 정리 2020. 2. 28. 16:20
BigInteger & BigDecimal 클래스를 사용하는 이유 우리가 흔히 사용하는 int, short와 같은 정수 자료형은 매우 큰 수의 표현이 불가능합니다. 그리고 float, double 같은 경우에는 실수 자료형이고 매우 정밀한 수의 표현에 제약이 있기에 오차가 발생합니다. 이러한 문제점을 해결하기 위해 사용되는 것이 BigInteger & BigDecimal 클래스입니다. 클래스들은 java.math 패키지에 묶여 있기때문에 import를 해주어야합니다. BigInteger 클래스 일반적으로 우리가 사용하는 정수의 표현에 있어서 기본자료형인 int형을 사용하면 원하는 수의 표현이 가능합니다. 그러나 기본자료형으로 표현이 불가능한 정수를 표현해야하는 상황이 발생하면 우리는 Java에서 제공하는..
-
[Camel][Java] Wrapper 클래스에 대해서Java/개념 정리 2020. 2. 28. 15:45
Wrapper 클래스란? Wrap이라는 영어를 해석해보면 '감싸다'라는 의미를 가지고 있습니다. 그렇습니다. Wrapper 클래스란 감싸는 클래스라는 의미를 가지고 있습니다. 이런 Wrapper 클래스는 기본 자료형 데이터를 인스턴스로 표현을 하고 싶을 때 사용합니다. 물론 기본 자료형 데이터를 인스턴스로 표현하기 위해 직접 클래스를 정의해도 되지만 Wrapper 클래스를 사용하면 이러한 불필요한 작업을 줄일 수 있습니다. Wrapper 클래스의 종류는 다음과 같습니다. Boolean - Boolean( boolean value ) Character - Character( char value ) Byte - Byte( byte value ) Short - Short( short value ) Intege..
-
[Camel][Java] JVM(가상머신)의 메모리 모델Java/개념 정리 2020. 2. 27. 19:23
JVM이란? JVM은 Java Virtual Machine의 약자 입니다. 이 JVM의 가장 큰 특징은 Java로 작성된 프로그램이 다른 플랫폼에서도 실행 될 수 있게 하는것입니다. JVM의 또다른 특징은 메모리를 관리하고 최적화하는 것입니다. JVM은 프로그램의 실행을 위해서 메모리 관리가 필요하고, 이를 위해 메모리 공간은 나눠서 데이터의 특성에 따라 분류해서 저장합니다. JVM의 메모리 공간은 크게 메소드 영역, 스택 영역, 힙 영역 총 3개의 영역으로 구분됩니다. JVM의 구조 Class Loader (클래스로더) JVM 내에 클래스 파일을 Load 하고 배치하는 작업을 수행하는 모듈입니다. Java의 기본적인 클래스로더는 Bootstrap, Extention, Application 클래스로더 3..