본문 바로가기

전체 글

(91)
하둡이란? 하둡 에코시스템 구성 요소 Hadoop 하둡은 단일 소프트웨어가 아니라 분산 시스템을 구성하는 다수의 소프트웨어로 이루어진 집합체 분산 시스템의 구성 요소 HDFS, 분산 파일 시스템 하둡에서 처리되는 데이터 대부분은 분산 파일 시스템인 HDFS에 저장된다. YARN, 리소스 관리자 cpu나 메모리 등의 계산 리소스는 리소스 매니저인 YARN에 의해 관리된다. YARN은 애플리케이션이 사용하는 cpu 코어와 메모리를 컨테이너라 불리는 단위로 관리한다. 하둡에서 분산 애플리케이션을 실행하면 YARN이 클러스터 전체 부하를 보고 비어 있는 호스트부터 컨테이너를 할당한다. 어느 애플리케이션에 얼마만큼의 리소스를 할당할 지 관리함으로써 모든 애플리케이션이 차질없이 실행되도록 제어한다. MapReduce, 분산 데이터 처리 맵리듀스도 YA..
[Spring/Kotlin] Entity는 data class로 구현하는게 좋을까? Entity는 data class로 구현하는게 좋을까? 본론부터 이야기면 Entity는 data class로 구현하면 안된다. data class의 특징 데이터 클래스는 toString() , hashCode() , equals() , copy()메소드를 자동으로 만들어준다. data class는 상속이 안된다. = open이 아닌 final이다. 이유 : data class에서 기본으로 제공되는 메소드들을 제대로 오버라이딩해서 구현할 수 없기 때문에 data class는 상속하지 못하도록 만들어졌다. entity class의 요구사항 https://docs.oracle.com/javaee/5/tutorial/doc/bnbqa.html Requirements for Entity Classes An ent..
[kotlin] spring jpa에서 복합키를 사용하는 방법, @EmbeddedId, @IdClass jpa에서 복합키(pk가 여러 개)를 가진 테이블을 정의하려면, 키(이하 pk)들을 따로 뺀 클래스(이하 pk 클래스)를 별도로 정의하고 entity 클래스로 가져와야 한다. 이에 대한 구현은 각각 @EmbeddedId, @IdClass를 활용한 2가지로 할 수 있다. 결론부터 말하자면 두 방법이 본질적으로는 차이가 없으나 구현하는 방법과 사용하는 방법이 다르니 편한 것으로 선택하면 된다. @EmbeddedId pk클래스에 **@**Embeddable 어노테이션을 지정해줘야 한다. pk클래스를 Serializable 인터페이스로 구현해야 한다. pk클래스에 대한 기본 생성자가 필요하다 - build.gradle.kts에서 kotlin-jpa 플러그인 혹은 kotlin-noarg 플러그인을 추가했다면 @E..
[Kotlin] Sequence를 이용한 컬렉션 지연 계산, 항상 효율적일까? 👀 컬렉션 함수를 연쇄하는 경우 임시 컬렉션이 생성된다. map이다 filter같은 컬렉션 함수를 연쇄하면 매 단계마다 중간 계산 결과를 새로운 임시 컬렉션에 저장된다. 즉, 매 단계 마다 불필요한 컬렉션이 생성된다. 📌 동작 과정 val resultList = people.map(Person::name).filter { it.startsWith("A") } 위 예제에서 map에 대한 결과를 저장하는 임시 컬렉션이 생성되고 그 임시 컬렉션에 대한 filter 실행 결과를 resultList로 저장한다. 👀 sequence를 사용하면 임시 컬렉션이 생성되지 않는다. 코틀린에서 제공하는 시퀀스를 사용하면 중간 임시 컬렉션을 사용하지 않고, 컬렉션 연산을 연쇄할 수 있다. 📌 동작 과정 people.asSeq..
react 그래프 라이브러리, antv g6.Graph 커스텀하기 G6 图可视化引擎 A collection of charts made with the Grammar of Graphics g6.antv.vision antv Graph란? antv는 ant design에서 제공하는 차트 라이브러리이다. 그 중 G6는 그래프 관련 라이브러리를 제공한다. Gallery A collection of charts made with the Grammar of Graphics g6.antv.vision 위 링크로 들어가면 다양한 종류의 그래프가 제공됨을 알 수 있다. 직접 그래프를 체험해볼 수 있고, 필요한 데이터 형태와 코드도 제공된다. 그래프는 많은 부분 커스텀이 가능하고 드래그와 같은 캔버스 기능도 사용 가능하다. 사용예시 Ref를 이용해서 그래프 그리기 가장 간단한 그래프를 ..
CS 기술면접 운영체제 끝내기(4) - 교착상태, 스케줄링 등 교착상태 필요 조건 상호 배제 : 한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이어야 한다. 비선점 : 한 프로세스가 사용 중인 자원은 다른 프로세스가 뺏을 수 없는 비선점 자원이어야 한다. 점유와 대기 : 프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태 원형 대기 : 점유와 대기를 하는 프로세스 간에 관계가 원을 이루어야 한다. 교착상태 해결 방법 예방 : 유발하는 4가지 조건을 무력화 → 현실적으로 어렵고, 자원을 낭비하게 될 수 있음 회피 : 교착상태가 발생하지 않는 수준으로 자원을 할당. 할당되는 자원 수를 조절하여 교착상태를 피한다. 안정 상태 (자원 할당 가능하다고 판단 한 상태) : 기대 자원 < 가용 자원 문제점 : 프로세스가 자신이 사용할..
CS 기술면접 운영체제 끝내기(3) 커널이란 무엇입니까? 커널은 운영체제의 모든 부분에 대한 기본 서비스를 제공하는 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든 것을 완전히 통제함 뮤텍스와 세마포어 뮤텍스와 세마포어 모두 공유자원을 안전하게 관리하게 관리하기 위해서, 한 자원에 대한 여러 프로세스 또는 스레드의 동시 접근을 불가능하게 하는 상호 배제 기법 차이는 동기화 대상의 개수. 뮤텍스는 동기화 대상이 하나고, 세마포어는 동기화 대상이 하나 이상일 때 뮤텍스는 오직 하나의 스레드 혹은 프로세스에 의해 소유될 수 있는 키를 기반으로 한 상호 배제 기법, 키를 소유한 스레드/프로세스 만이 자원에 접근 가능 세마포어는 현재 공유 자원에 접근할 수 있는 스레드 혹은 프로세스의 수를 나타내는 값을 두는 기법 메모리 영역/..
CS 기술면접 운영체제 끝내기(2) - 기본적인 개념 메인보드 cpu와 메모리 등 다양한 부품을 연결하는 커다란 판 폰노이만 구조 하드웨어는 그대로 둔 채 작업을 위한 프로그램만 교체하여 메모리에 올리는 방식. 모든 프로그램은 메모리에 올라와야 실행할 수 있다. 클록 cpu속도와 관련된 단위. 클록이 일정 간격으로 틱을 만들면 거기에 맞춰서 cpu안의 모든 구성 부품이 작업한다. 틱=클록틱=펄스 헤르츠(Hz) 클록틱이 발생하는 속도를 나타내는 단위 버스 cpu와 메모리, 주변장치 간에 데이터를 주고 받을 때 사용 버스의 대역폭 한 번에 전달할 수 있는 데이터의 최대 크기 word cpu가 한 번에 처리할 수 있는 데이터의 최대 크기 공유 자원 여러 프로세스가 공동으로 이용하는 변수, 메모리, 파일 등. 누가 언제 데이터를 읽거나 쓰느냐에 따라 결과가 달라질..

반응형