java
-
Java: ArrayList vs LinkedListAlgorithm & Data Structure/DataStructure 2024. 7. 31. 13:31
ArrayList vs LinkedList: 차이점 및 성능 비교자바 컬렉션 프레임워크는 다양한 데이터 구조를 제공하며, 그 중 ArrayList와 LinkedList는 List 인터페이스를 구현한 대표적인 클래스들입니다. 이 글에서는 ArrayList와 LinkedList의 차이점, 장단점, 그리고 성능 비교를 다루겠습니다.List 인터페이스의 구현체List 인터페이스를 구현한 대표적인 클래스는 다음과 같습니다:ArrayListLinkedListVectorStack이 중에서 ArrayList와 LinkedList의 차이점을 중점적으로 살펴보겠습니다.ArrayList란?ArrayList는 배열을 기반으로 한 리스트로, 중복을 허용하고 순서를 유지하며 인덱스로 원소들을 관리합니다. 배열과 유사하지만, 배열..
-
하둡(Hadoop)으로 데이터 저장 추출해보기Back-End/Hadoop 2024. 7. 25. 13:28
하둡을 사용하여 데이터를 저장하고 추출하는 과정은 여러 단계로 나뉘며, 각 단계는 비교적 직관적입니다. 아래에서는 하둡을 사용하여 데이터를 저장하고 추출하는 과정을 단계별로 쉽게 설명하겠습니다.1. 데이터 저장1.1 데이터 준비먼저 저장할 데이터를 준비합니다. 예를 들어, 로컬 파일 시스템에 저장된 로그 파일이나 CSV 파일 등을 준비합니다.1.2 HDFS에 데이터 업로드하둡 분산 파일 시스템(HDFS)에 데이터를 저장하기 위해, 로컬 파일 시스템에 있는 데이터를 HDFS로 업로드합니다. 이를 위해 hdfs dfs -put 명령어를 사용합니다.# 로컬 파일 system_logs.csv를 HDFS의 /data 디렉토리에 업로드hdfs dfs -put /path/to/local/system_logs.csv ..
-
Spring Boot: Java vs KotlinBack-End/Spring 2024. 6. 13. 19:51
Spring Boot에서 Java와 Kotlin 비교: 어떤 언어가 더 나을까요?Spring Boot는 Java 및 Kotlin 두 가지 언어를 모두 지원하는 강력한 프레임워크입니다. 각 언어는 고유한 장점과 단점을 가지고 있으며, 특정 프로젝트의 요구 사항과 개발자의 선호도에 따라 선택이 달라질 수 있습니다. 이 글에서는 Spring Boot에서 Java와 Kotlin을 비교하여, 각 언어의 장점과 단점, 그리고 어떤 상황에서 어떤 언어를 선택하는 것이 좋은지 전문가 관점에서 자세히 살펴보겠습니다.Java 개요Java는 오라클(Oracle)에서 관리하는 범용 프로그래밍 언어로, 플랫폼 독립성과 풍부한 라이브러리, 강력한 커뮤니티 지원을 특징으로 합니다. 1995년에 처음 발표된 이후로 꾸준히 인기를 유..
-
Spring Starter Web vs Spring WebFluxBack-End/Spring 2024. 6. 13. 19:43
1. 서론 (Introduction)Spring Framework 소개Spring Framework는 엔터프라이즈 애플리케이션 개발을 위한 포괄적인 프로그래밍 및 구성 모델을 제공하는 오픈 소스 애플리케이션 프레임워크입니다. 주로 자바 플랫폼을 기반으로 하지만 Kotlin과 Groovy와 같은 언어도 지원합니다. Spring Framework는 다양한 기능을 제공하지만, 그 핵심은 다음과 같습니다:의존성 주입 (Dependency Injection): 애플리케이션의 구성 요소 간의 종속성을 관리하여 코드의 유연성과 재사용성을 높입니다.AOP (Aspect-Oriented Programming): 로깅, 트랜잭션 관리, 보안 등 횡단 관심사를 모듈화하여 코드의 관심사를 분리합니다.데이터 접근 통합: JDB..
-
golang: 1급 시민(First-class citizen)이란?Back-End/Golang 2024. 4. 28. 22:20
프로그래밍 언어에서 "1급 시민" 또는 "1급 객체"라는 용어는 해당 언어의 요소가 다음과 같은 특성을 갖추었을 때 사용됩니다:변수나 데이터 구조 안에 담길 수 있음: 1급 객체는 변수에 할당될 수 있습니다. 예를 들어, 함수가 1급 객체인 언어에서는 함수를 변수에 할당할 수 있습니다.함수의 인자로 전달될 수 있음: 함수를 다른 함수의 인자로 전달할 수 있습니다. 이는 고차 함수(higher-order function)를 가능하게 합니다.함수의 결과로 반환될 수 있음: 함수에서 다른 함수를 결과로 반환할 수 있습니다. 이는 함수를 동적으로 생성하고 조작할 수 있음을 의미합니다.할당에 사용된 표현식 내에서 리터럴로 표현될 수 있음: 객체를 코드 내에서 직접적으로 리터럴 형태로 표현할 수 있어야 합니다. 예..
-
디자인 패턴(Design Pattern)이란?Design Pattern 2024. 4. 25. 12:38
디자인 패턴(Design Pattern)이란? 디자인 패턴은 소프트웨어 설계에서 반복적으로 발생하는 문제들을 효과적으로 해결하기 위해 일반화된, 재사용 가능한 솔루션입니다. 이 패턴들은 프로그래밍 언어에 종속적이지 않으며, 특정 상황에서 공통적으로 발생할 수 있는 문제들에 대해 설계 지침을 제공합니다. 디자인 패턴은 주로 객체 지향 프로그래밍을 중심으로 발전했지만, 그 개념은 소프트웨어 개발의 다양한 영역에 적용될 수 있습니다.1. 디자인 패턴의 등장 배경 디자인 패턴의 개념은 여러 분야에서 오래전부터 사용되어 왔지만, 소프트웨어 공학 분야에 특별히 도입된 것은 1990년대 초입니다. 특히 "Design Patterns: Elements of Reusable Object-Oriented Software"..
-
Heap Sort(힙 정렬)Algorithm & Data Structure/Sort 2024. 4. 17. 23:25
힙정렬에 대해서 힙 정렬은 완전 이진 트리인 힙을 이용한 선택 정렬의 일종입니다. 배열 요소들을 힙 구조로 재배열한 다음, 가장 큰 요소(또는 가장 작은 요소)를 배열의 끝부분으로 이동시키는 과정을 반복하여 전체 배열을 정렬합니다. 현업에서는 어디에서 쓰일 수 있나? 힙 정렬은 데이터 스트림의 지속적인 입력과 동시에 최대값 또는 최소값을 빠르게 액세스해야 할 때 유용합니다. 따라서 실시간 처리 시스템, 운영 체제의 작업 스케줄링, 대용량 데이터의 배치 처리 등에 적합합니다. 힙 정렬 사이클 힙 정렬의 주요 사이클은 다음과 같이 진행됩니다: 힙 구성: 입력 배열을 최대 힙(max-heap) 또는 최소 힙(min-heap) 구조로 변환합니다. 요소 추출 및 재구성: 힙의 루트(최대값 또는 최소값)를 힙의 마..
-
Counting Sort(계수 정렬)Algorithm & Data Structure/Sort 2024. 4. 16. 22:30
카운팅 정렬(Counting Sort)은 특정 조건에서 매우 효율적인 정렬 방식을 제공하는 비교 기반 정렬이 아닌 알고리즘입니다. 그 특징과 구현에 대해 자세히 설명하겠습니다. Counting Sort란? 카운팅 정렬은 입력 배열에서 각 요소의 등장 횟수를 세고, 그 카운트를 기반으로 배열을 정렬하는 알고리즘입니다. 이 방법은 특히 배열의 원소가 특정 범위 내의 정수일 때 매우 효과적입니다. 이 정렬은 추가적인 메모리 공간을 사용해 입력 원소의 빈도 수를 카운팅하며, 이 정보를 이용하여 출력 배열을 직접 생성합니다. Counting Sort 사이클 설명 카운팅 정렬의 주요 사이클은 다음과 같은 단계로 이루어집니다: 카운팅 배열 초기화: 입력 배열의 각 요소 값에 대응하는 인덱스를 가진 카운팅 배열을 초기..