computer science/java(4)
-
가비지 컬렉션(GC) 알고리즘과 여러 방법::자바
가비지 컬렉션(Garbage Collection)이란? Java 애플리케이션에서 사용하지 않는 메모리를 자동으로 해제하는 기능입니다. 전통적인 C언어에서는 malloc(), free() 등을 이용해 메모리를 할당하고, 수동으로 메모리를 해제해야 했습니다. 하지만 Java에서는 GC 기술을 이용해 자동으로 메모리를 해제하여 개발자에게 메모리 관리로부터 자유롭게 해 주었습니다. 우선, 애플리케이션에서 사용하는 영역은 New/Young(Eden, Survivor1, Survivor2)과 Old가 있습니다. Eden 영역은 자바 객체가 생성되자마자 저장되는 장소입니다. New/Young 영역의 GC를 Minor GC라고 하고, Old 영역의 GC는 Full FC라고 합니다. Full GC가 발생하면 순간적으로 ..
2020.07.07 -
String, StringBuffer, StringBuilder::자바
자바에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있습니다. 연산 횟수가 많아지거나 멀티스레드, Race Condition 등의 상황이 자주 발생한다면 각 클래스의 특징을 이해하고, 상황에 맞는 적절한 클래스를 사용해야 합니다(Race Condition이란? -> https://junboom.tistory.com/29). 1. String 불변의 속성을 가집니다. String str = "Hello"; str += " world"; 위 상황에서 str 변수가 "Hello"에서 "Hello world"로 변환된다고 생각할 수도 있지만, 실제로는 "Hello" 객체에서 "Hello world"라는 새로운 객체를 참조하게 되어 "Hello" 객체는 G..
2020.07.03 -
Vector와 ArrayList 비교::자바
자바에서 크기를 동적으로 할당할 수 있는 배열은 Vector와 ArrayList가 있습니다. 1. Vector - Collections 프레임워크가 포함되어 있지 않던 초기 자바 버전부터 제공한 레거시 클래스입니다. - 필요에 따라 크기를 동적으로 조절할 수 있는 동적 배열을 구현할 수 있습니다. - 배열과 마찬가지로 정수 인덱스를 이용해 배열에 액세스 할 수 있습니다. - 스레드 안전(Thread Safe)한 배열로 한 번에 하나의 스레드만 벡터의 메소드를 호출할 수 있습니다. 2. ArrayList - Collections 프레임워크의 일부이며 java.util 패키지 내에 존재합니다. - 필요에 따라 크기를 동적으로 조절할 수 있는 동적 배열을 구현할 수 있습니다. - 자바 표준 배열보다 약간 느릴..
2020.07.03 -
OOP와 SOLID::자바
1. OOP(Object Oriented Programming) : 객체지향 프로그래밍 OOP란? 캡슐화, 다형성, 상속성, 추상화 4가지 특징을 이용해 코드의 재사용을 증가시키고 유지보수 빈도를 감소시키는 장점을 얻기 위해 객체들을 연결시켜 프로그래밍하는 것입니다. 캡슐화(Encapsulation) : 객체의 필드, 메서드를 하나로 묶고 실제 구현 내용을 감추는 것 다형성(Polymorphism) : 같은 이름으로 실행 결과가 다양한 객체를 이용하는 것 ex) 오버로딩(Overloading) : 이름은 같지만 다른 매개변수와 다른 리턴 타입을 갖는 것 오버라이딩(Overriding) : 부모의 함수를 상속받아 메서드를 재정의하는 것 상속성(Inheritance) : 상위 개념의 특징을 하위 개념이 물려..
2020.06.13