Java

    [Java] 배열(Array) vs. 배열리스트(ArrayList) vs. 연결리스트(LinkedList)

    [Java] 배열(Array) vs. 배열리스트(ArrayList) vs. 연결리스트(LinkedList)

    들어가며 본 글에서는 같은 타입의 데이터를 많이 다룰 때 사용하는 자바의 순차적 자료구조 배열(Array)과 리스트(List), 특히 배열 리스트(ArrayList)와 연결 리스트(LinkedList)에 대해 비교해보겠습니다. 자료구조 측면에서 접근하는 글이므로 코드로 배열이나 리스트를 어떻게 사용하는지는 구체적으로 적지 않겠습니다. 아울러 메모리 구조나 물리적/논리적 주소, 시간복잡도 등에 대한 내용이 나오는데, 분량이 너무 많아질 것 같아서 구체적인 설명은 기재하지 않은 점 참고 바랍니다. 글 내용에서 잘못된 점이 있을 경우 언제든 피드백을 남겨주세요. 언제든 피드백 대환영입니다 :) 배열 (Array) | 기본 개념 배열이란 같은 데이터 타입의 변수들로 이루어진 자료구조로, 자바에서 기본적으로 지원..

    [Java] gradle 환경에서 JMH를 사용하여 벤치마킹하기

    [Java] gradle 환경에서 JMH를 사용하여 벤치마킹하기

    들어가며 최근에 진행했던 프로젝트에서 사용했던 메서드의 성능을 개선시킨 것 같은데, 정확히 얼마나 성능이 향상된 것인지 비교를 해보고 싶었습니다. 메서드 수행 시간을 측정하기 위해 여러 레퍼런스를 찾아봤는데, 그중에서 JMH(Java Microbenchmark Harness)을 활용하는 것이 가장 현대적이고 효율적이라고 생각되었습니다. 본 글에서는 gradle 환경에서 JMH를 활용하여 유닛 단위로 벤치마킹하는 방법에 대해 정리하겠습니다. 구글링해보면 대개 maven 환경에서 JMH를 많이 사용하고, gradle 환경 기반의 JMH 환경 설정 글은 별로 없었습니다. 그래서 gradle 환경에서 최대한 간단하게 JMH 환경 설정하는 방법을 적고자 했습니다. 개발 환경은 다음과 같습니다. OS : Windo..

    [Spring] 의존성 주입(Dependency Injection) 개념

    [Spring] 의존성 주입(Dependency Injection) 개념

    들어가며 본 글에서는 Spring과 OOP에서 중요하게 다루는 의존성 주입(Dependency Injection)이 무엇이고, 왜 필요하며, 의존성 주입을 활용했을 때 이점은 무엇인지 살펴보겠습니다. 의존성 주입이란? A 객체가 B 객체를 사용할 때, "A 객체는 B 객체에 의존한다" 혹은 "A 객체는 B 객체의 의존성을 가진다"라고 표현합니다. 여기서 A 객체가 B 객체를 사용하는 방법은 두 가지가 있습니다. 미리 말씀드리자면 두 번째 방법처럼 객체 외부에서 다른 객체의 의존을 주입해주는 것을 의존성 주입이라고 합니다. | 1. A 객체 내부에서 B 객체를 직접 생성한다. 객체 A 안에서 new를 활용하여 객체 B의 인스턴스를 직접 만들고 B를 활용하는 방식입니다. 이러한 의존 관계를 강한 결합이라고 ..

    [Java] 객체와 클래스, 인스턴스 간 차이

    [Java] 객체와 클래스, 인스턴스 간 차이

    본 글은 객체와 클래스, 인스턴스 간 차이를 명확히 정리하기 위해 전공 서적들을 참고하여 쓴 글입니다. 실질적인 코드 작성에 도움이 되는 내용보다는 객체 지향 프로그래밍(OOP)에 대한 개념적인 내용이 대부분이며, 그나마 있는 코드도 OOP를 처음 접하는 초심자분들을 위해 제일 간단한 수준으로만 작성했으므로 참고 바랍니다. 객체 (Object) 객체 지향 프로그래밍에서 '객체'를 이해하기 위해서는 현실 세계 속의 객체와 소프트웨어 관점에서의 객체를 구분할 수 있어야 합니다. 우선 현실 세계 속의 객체란 '세상에 존재하는 의사나 행위가 미치는 대상'을 의미합니다. 사실 이 정의는 네이버 사전에 등재되어 있는 것인데, 적절해 보여서 가져왔습니다. 눈에 보이는 대표적인 객체는 사람, 자동차, 건물 등이 있습니..