전체 글135 Java 8 람다(Lambda) / 스트림(Stream) / double colon(::) 람다 함수란? 람다 함수는 익명 함수(Anonymous functions)를 지칭하는 용어로 함수를 보다 단순하게 표현한다. 함수를 하나의 식(expression)으로 표현한 것으로 함수를 람다식으로 표현하면 메소드의 이름이 없기 때문에 익명 함수(Anonymous Function)의 한 종류라고 볼 수 있다. ! 람다 식의 도입으로 익명 클래스를 생략할 수 있게 하여 boilerplate code를 크게 줄이고 가독성을 향상시켰다. ** 익명 함수(Anonymous functions) : 이름이 없는 함수로, 익명 함수들은 모두 일급 객체이다. ** 일급 객체 : 일급 객체인 함수는 변수처럼 사용이 가능하며 매개변수로 전달이 가능하다. 람다식으로 선언된 함수는 일급 객체이기 때문에 Stream API의.. 2022. 8. 15. ArrayList와 LinkedList의 차이 / Stringbuilder ArrayList vs LinkedList ArrayList는 메모리주소를 바탕으로 저장된다. 주소를 찾는 계산식(배열의 주소 + n * 데이터 크기)을 사용하여 빠르게 찾을 수 있다. 반면에 LinkedList는 데이터를 순차적으로 저장한다. 특정 데이터를 찾기 위해서는 1번부터 하나씩 찾아야 한다. 10개의 노드가 연결되어 있다면 1번 노드부터 한 칸씩 다 확인을 하며 찾아야 한다. 또한 LinkedList는 지역성(locality of reference) 측면에서도 불리하다. 왜냐면 ArrayList는 데이터를 연속적인 묶음으로 저장하지만 LinkedList는 불연속적으로 저장 후 연결하는 방식이기 때문이다. 당연히 다음 데이터에 대한 주소를 가지고 있다고 하더라도 접근하는데 시간이 걸릴 수 밖에 .. 2022. 8. 14. 자바 HashMap의 구조 / HashTable / LinkedHashMap 자바에서 컬렉션이란 무엇인가? Java Collection Class의 두 가지 주요 root interface는 아래와 같다. 1) Collection interface(java.util.Collection) 2) Map interface(java.util.Map) HashTable 해시 테이블은 효율적인 탐색을 위한 자료구조로서 키(key)를 값(value)에 대응시킨다. 해시 테이블을 구현하는 방법에는 여러 가지가 있으나, 간단하면서 흔하게 사용되는 방식은 연결리스트(linked list)와 해시 코드 함수(hash code function)을 사용하는 것이다. key와 value를 해시 테이블에 넣는 과정은 다음과 같다. 키의 해시 코드를 계산한다. 키의 개수는 무한한데 반해 int의 개수는 유한.. 2022. 8. 14. 자바 동기화 | Synchronized(Monitor), Atomic Type 동기화란 공유 리소스에 대해 여러 쓰레드의 액세스를 제어하는 기능이다. 상호배제란 하나의 프로세스가 공유 자원을 사용할 때 다른 프로세스가 동일한 공유자원에 접근할 수 없도록 통제하는 것이다. Java에서 제공하는 동기화 방법으로는 1) 개체에 Lock을 걸어 상호배제를 할 수 있는 Synchronized(Monitor)와 2) non-locking 방식인 Atomic Type이 있다. 1. Synchronized Mutex 여러 쓰레드를 실행하는 환경에서 자원에 대한 접근을 통제하기 위한 동기화 기법이다. - Boolean type의 Lock변수를 사용한다. 따라서 1개의 공유자원에 대한 접근을 제한한다. - 공유 자원을 사용중인 쓰레드가 있을 때, 다른 쓰레드가 공유 자원에 접근한다면 Blocking.. 2022. 8. 14. 함수형 프로그래밍이란? 특징? 함수형 프로그래밍 선택 이유 함수형 프로그래밍은 대부분을 순수 함수로 나누어 문제를 해결하는 기법으로 작은 문제를 해결하기 위한 함수를 작성하여 가독성을 높이고 유지보수를 용이하게 한다. 함수형 프로그래밍 언어를 사용하면 코드를 간결하게 작성할 수 있어 개발 시간을 단축할 수 있고, 함수형 프로그래밍 언어가 부작용(Side Effect)를 허용하지 않는 순수 함수(Pure Function)를 지향하여 동시에 여러 스레드에서 문제 없이 동작하는 프로그램을 쉽게 작성할 수 있다. 함수형 프로그래밍 언어의 이해 유명한 책인 클린 코드(Clean Code)의 저자 Robert C.Martin은 함수형 프로그래밍을 대입문이 없는 프로그래밍이라고 정의했다. * 대입문 : int a = 10; 함수형 프로그래밍은 대.. 2022. 8. 13. Message Queue | Message Broker와 pubsub 차이 What is the message queue? 메시지 큐(Message Queue)는 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중의 하나로, 메시지 지향 미들웨어(Message Oriented Middleware:MOM)를 구현한 시스템을 의미한다. 메시지 지향 미들웨어란 비동기 메시지를 사용하는 응용 프로그램들 사이에서 데이터를 송수신하는 것을 의미한다. 메시지는 처리되고 삭제되기 전까지 대기열에 저장되며, 각 메시지는 하나의 소비자가 한 번만 처리한다. MessageQueue를 사용하면 서로 다른 시스템 간에 비동기식으로 작업을 처리할 수 있습니다. MQ는 메시지를 임시로 저장하는 간단한 버퍼를 제공하고, 메시지를 전송 및 수신하기 위해 소프트웨어 구성 요소가 대기열에 연.. 2022. 8. 13. MapReduce vs Spark | 맵리듀스와 스파크의 차이점 위 그림에서 볼 수 있듯이 기존 MapReduce 엔진(왼쪽)에 비해 최신 처리 프레임워크(Tez, Impala 및 Spark)의 주요 특징은 HDFS에 중간 결과를 쓰지 않고 실행 그래프를 최적화한다는 것입니다. 또 실행 그래프 전체에 걸쳐 로컬 노드의 메모리에서 데이터를 처리/캐싱합니다.. 실제로 Hadoop MapReduce와 Spark의 주요 차이점은 처리 방식에 있습니다. Spark는 메모리 내에서 처리할 수 있지만 Hadoop MapReduce는 디스크에서 읽고 써야 합니다. 이에 따라 처리 속도가 크게 달라지며 Spark가 최대 100배 더 빠를 수 있습니다. 하지만 Hadoop MapReduce는 Spark보다 훨씬 큰 데이터셋을 작업할 수 있습니다. * 참고: Tez Apache Tez는.. 2022. 8. 13. Spark RDD, DAG란? Apache Spark는 빅 데이터 워크로드에 주로 사용되는 오픈 소스 분산 처리 시스템이다. Apache Spark는 빠른 성능을 위해 인 메모리 캐싱과 최적화된 실행을 사용하며, 일반 배치 처리, 스트리밍 분석, 기계 학습, 그래프 데이터베이스 및 임시 쿼리를 지원한다. MapReduce는 데이터의 중간 과정을 HDFS에 저장하기 때문에 오버헤드가 발생한다. Spark는 이러한 문제점을 In-Memory 처리로 해결할 수 있다. 하지만 메모리 특성상 중간에 오류가 나면 데이터가 모두 사라지게되어 처음부터 다시 연산해야 하는 단점이 생긴다. Spark는 메모리에서 데이터가 유실되면 RDD의 Lineage 기록에 따라 유실되었던 RDD를 다시 생성한다. 이 내용은 뒤에서 다시 한번 언급된다. Apache.. 2022. 8. 12. Data Lifecycle Management(DLM) 란? Data Lifecycle Management(DLM)는 데이터가 시작되는 시점부터 소멸(destruction)되는 시점까지 전체 수명 주기 동안 거치는 여러 단계로 정의할 수 있다. 데이터 수명 주기의 각 단계는 데이터 보호(data protection), 복원력(resiliency) 및 규정 준수(regulatory compliance)를 제어하는 다양한 정책 집합을 통해 제어된다. 데이터 생명 주기의 여러 단계 데이터는 수명 주기 동안 5가지 단계를 거친다. 각 단계는 데이터의 목적과 가치, 그리고 데이터가 누구에게 가치가 있는지를 중심으로 진행된다. 각 단계에 영향을 미치는 기타 요소에는 데이터 개인 정보 보호, 데이터 보안 및 데이터 규정 준수가 있다. 1. Generate & Collect (.. 2022. 8. 11. 이전 1 ··· 5 6 7 8 9 10 11 ··· 15 다음 반응형