분류 전체보기
-
golang: 제네릭(Generic)이란?Back-End/Golang 2024. 8. 3. 13:14
제네릭(Generic)은 Go 언어에서 매우 강력한 도구로, 다양한 데이터 타입을 처리하고 코드를 간결하고 유연하게 만드는 데 유용합니다. 이를 통해 코드의 확장성, 안정성, 재사용성을 높일 수 있으며, 다양한 상황에서 효율적으로 사용할 수 있습니다. 제네릭을 잘 활용하면 더 나은 설계를 하고 변화하는 요구사항에 유연하게 대응할 수 있는 코드를 작성할 수 있습니다. 1. 타입 확장성제네릭을 사용하면 다양한 데이터 타입을 하나의 함수나 구조체로 처리할 수 있습니다. 이는 특정 타입에 제한되지 않고, 여러 타입에 대해 동일한 로직을 사용할 수 있게 합니다.예시: 숫자 계산 함수package mainimport "fmt"// 제네릭 타입 정의type Number interface { ~int | ~float6..
-
golang: Array vs LinkedListAlgorithm & Data Structure/DataStructure 2024. 7. 31. 13:51
Go 언어에서의 Array vs LinkedListGo 언어에서 배열과 링크드 리스트의 차이점을 살펴보고, 각각의 장단점을 예시와 함께 설명하겠습니다.배열 (Array)배열은 고정된 크기를 가진 연속된 메모리 블럭입니다. 배열을 선언할 때 크기를 지정해야 하며, 이후에는 크기를 변경할 수 없습니다.package mainimport "fmt"func main() { var arr [100]int arr[33] = 100 fmt.Println(arr[33]) // 출력: 100}장점Random Access에 강함: 배열은 연속된 메모리 블럭이기 때문에 인덱스를 통해 빠르게 접근할 수 있습니다. O(1)의 시간 복잡도를 가집니다.Cache Miss가 적음: 연속된 메모리 블럭이므로 캐시 히트율..
-
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) MR(MapReduce)란?Back-End/Hadoop 2024. 7. 25. 13:45
맵리듀스(MapReduce)는 하둡에서 대규모 데이터 세트를 분산 처리하기 위해 사용되는 프로그래밍 모델입니다. 이 모델은 두 가지 주요 단계인 맵(Map)과 리듀스(Reduce)로 구성됩니다. 각각의 단계가 어떻게 작동하는지, 그리고 이를 통해 데이터가 어떻게 처리되는지를 자세히 설명드리겠습니다.맵리듀스(MapReduce) 작업의 개요맵(Map) 단계:입력 데이터를 작은 조각으로 나누고, 각 조각을 병렬로 처리하여 중간 결과를 생성합니다.맵 함수는 입력 데이터를 키-값 쌍으로 변환합니다.셔플(Shuffle) 및 정렬(Sort):맵 단계에서 생성된 중간 결과를 키를 기준으로 정렬하고, 같은 키를 가진 값들을 모읍니다.이 단계는 자동으로 수행되며, 데이터가 리듀서로 전송되기 전에 일어납니다.리듀스(Redu..
-
하둡(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 ..
-
하둡(Hadoop)이란?Back-End/Hadoop 2024. 7. 25. 12:52
하둡(Hadoop)은 오픈 소스 분산 처리 프레임워크로, 대규모 데이터 세트를 효율적으로 저장하고 처리하기 위해 개발되었습니다. 하둡은 저렴한 하드웨어를 이용하여 대용량 데이터를 분산 처리할 수 있도록 설계되었습니다. 아래에서는 하둡의 기본 개념, 구성 요소, 장점, 그리고 사용 사례를 자세히 소개하겠습니다.하둡의 기본 개념하둡은 대규모 데이터를 처리하기 위해 두 가지 주요 기능을 제공합니다:HDFS (Hadoop Distributed File System): 대규모 데이터를 분산 저장하는 파일 시스템입니다.MapReduce: 분산 데이터 처리 모델입니다.이 두 가지 기능을 결합하여 하둡은 데이터를 저장하고 분석하는데 탁월한 성능을 발휘합니다.하둡의 주요 구성 요소HDFS (Hadoop Distribut..
-
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..