Java 6

자바의 Collection Framework - 동기화, 병렬 처리

자바의 컬렉션 프레임워크의 대부분의 클래스들은 싱글 스레드 환경에서 사용될 수 있도록 설계 되었습니다. 그렇기 때문에 여러 스레드가 동시에 컬렉션에 접근한다면 의도하지 않게 요소가 변경될 수 있습니다. Synchronized Collection Vector와 Hashtable은 동기화된(synchronized) 메서드로 구성되어 있기 때문에 멀티 스레드 환경에서 안전하게 요소를 처리할 수 있지만 ArrayList, HashSet, HashMap은 동기화된 메서드로 구성되어 있지 않아 멀티 스레드 환경에서 안전하지 않습니다. 경우에 따라서는 ArrayList, HashSet, HashMap을 싱글 스레드 환경에서 사용하다가 멀티 스레드 환경으로 전달할 필요도 있을 것입니다. 이런 경우를 대비해서 컬렉션 프..

Java 2022.08.09

자바의 Garbage Collection이란?

Garbage Collection Java의 Garbage Collection이란 사용하지 않는 객체를 자동으로 회수하는 기능입니다. 때문에 개발자가 명시적으로 객체를 회수할 필요는 없지만 동작에 대한 관여(튜닝)는 할 수 있기 때문에 여러 GC의 동작에 대해 이해할 필요가 있습니다. GC에 대해서 자세하게 알아보기 전에 'stop-the-world'라는 용어에 대해 알아야합니다. 'stop-the-world'란 GC을 실행하기 위해 JVM(Java Virture Machine)이 애플리케이션 실행을 멈추는 것입니다. 어떤 GC 알고리즘을 사용하더라도 'stop-the-world'는 발생하며 대개의 경우 GC 튜닝은 'stop-the-world' 시간을 줄이는 것입니다. 기본적으로 JVM 메모리는 총 5..

Java 2022.07.21

자바의 Generic이란?

자바에서 제네릭이란 데이터 타입의 일반화(Generalization)를 의미합니다. 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미합니다. 기본적으로 개발이나 알고리즘 문제를 풀다보면 컬렉션을 아래와 같이 자주 사용하게 됩니다. ArrayList list = new ArrayList(); HashMap map = new HashMap(); 위에서 보듯 클래스 내부에서 사용할 데이터 타입을 안에 String, Integer로 지정하고 있습니다. 따라서 ArrayList나 HashMap은 제네릭을 이용하여 클래스를 구현한 것을 확인할 수 있습니다. 제네릭이 없었다면 Integer, String 등 모든 레퍼런스 타입에 대한 클래스들을 IntegerArrayList,StringArrayLi..

Java 2022.05.01

Mockito를 사용해서 자바 애플리케이션을 테스트 하는 방법

백기선님의 인프런 강의를 듣고 정리하여 쓴 글입니다. Mock은 진짜 객체와 비슷하게 동작하지만 프로그래머가 직접 그 객체의 행동을 관리하는 객체입니다. Mockito는 Mock 객체를 쉽게 만들고 관리하고 검증할 수 있는 방법을 제공합니다. 테스트를 작성하는 자바 개발자 50% 이상이 사용하는 Mock 프레임워크입니다. 단위에 대한 범위는 규정하기 나름입니다. 하나하나의 객체를 단위로 볼 수도 있고 하나의 행위와 관련된 객체들의 집합을 단위로 볼 수도 있습니다. 단위 테스트에 대한 고찰 https://martinfowler.com/bliki/UnitTest.html 다음의 세 가지만 알면 Mock을 활용한 테스트를 쉽게 작성할 수 있습니다. - Mock을 만드는 방법 - Mock이 어떻게 동작해야 하는..

Java 2022.03.20

JUnit5를 사용해서 자바 애플리케이션을 테스트 하는 방법

백기선님의 인프런 강의를 듣고 정리하여 쓴 글입니다. Junit5는 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크입니다. 단위 테스트를 작성하는 자바 개발자 93%가 JUnit을 사용합니다. JUnit5는 그 자체로 크게 3가지로 모듈화되어 있습니다. PlatForm : IDE를 통해서 테스트를 실행해주는 런처를 제공합니다. TestEngine API를 제공합니다. Jupiter : TestEngine의 구현체로 JUnit5를 제공합니다. Vintage : JUnit 4와 3을 지원하는 TestEngine의 구현체입니다. 기본 어노테이션 기본 애노테이션은 아래와 같습니다. @Test @BeforeAll / @AfterAll @BeforeEach / @AfterEach @Disabled package..

Java 2022.03.18

자바 Object 클래스의 equals, hashCode, toString 메서드

Object 클래스란? Object 클래스는 java.lang 패키지에 속해 있는 모든 자바 클래스의 최고 조상 클래스입니다. java.lang 패키지란 자바에서 가장 기본적인 동작을 수행하는 클래스들의 집합입니다. 따라서 자바에서는 java.lang의 패키지의 클래스들은 import 문 없이 클래스 이름만으로 바로 사용할 수 있도록 합니다. Object 클래스는 필드가 없으며 총 11개의 메서드로 이루어져 있습니다. 그 중 equals, hashCode, toString 메서드에 대해 알아보려합니다. equals 메서드 Object의 equals() 메서드는 아래와 같이 기본적으로 해당 인스턴스를 매개변수로 전달받는 참조 변수와 비교하여 그 결과를 반환합니다. public boolean equals(O..

Java 2022.03.16