alt
Home
hungryjayy
Cancel

일급 컬렉션(first class collection)

public class Cards { private List<Card> card; public Cards(List<Cards> cards) { this.cards = cards; } // .. } 특징 컬렉션을 wrapping하면서 그 외 다른 멤버변수가 없는 상태. 비즈니스에 ...

TDD(Test Driven Develop)

: test 주도형 개발. 기능 개발 전 가능한 모든 경우에 대해 테스트를 먼저 작성해보는 것 테스트 코드를 작성하는 방법들과는 다른, 소프트웨어 개발론적인 것 장점 리팩토링에 용이. 크기가 커진 함수를 여러 함수로 나누는 과정에서 테스트 코드를 통해 계속 확인을 해가며 리팩토링을 해 중심을 잡을 수 있다. 새로운 기능을 추가했을 때...

디미터 법칙(law of demeter)

객체가 자기 자신을 책임지는 자율적인 존재이다. 따라서 객체 내부 구조를 묻지 말고 무언가를 시켜라. 이렇게 하면 객체 내부를 바깥으로 노출시키지 않게 된다. 디미터 법칙을 어긴 코드 object.getChild() .getContent() .getItem() .getTitle(); 기차 충돌(tr...

Kafka 아키텍처

Topic과 Partition Topic 하나의 관심사. 이 것을 구독하여 사용 Partition topic를 쪼갠 작은 단위 HA를 위해 replication 설정을 할 경우 partition 단위로 각 서버들에 분산되어 복제 장애 발생 ...

JVM의 가비지 컬렉터

: 유효하지 않은(더 이상 불필요한) heap의 객체 메모리를 JVM의 데몬이 정리해주는 것. JVM의 GC 예시. C++이나 C에서는 free()를 통해 직접 할당 해제해줘야 한다. 위의 그림에서 permanent 영역은 heap에서 제외 GC 설계의 바탕 : 대부분의 객체는 금방 unreachable 상태가 된다. e....

IDL(Interface Definition Language)

: 다른 언어로 작성된 여러 서비스 들을 연결하기 위해 중간 인터페이스를 정의하는 언어 XML, JSON, Protocol Buffer 등이 있다. 구조화된 데이터를 IDL로 직렬화(Serialization) 해서 보내, 통신 환경에서 이종간 플랫폼 환경에도 원활한 통신이 잘 되도록 한다. XML 사람이 읽고 쓸수 있음 ...

gRPC(Google RPC) framework.

RabbitMQ와 비교했을 때 GRPC의 특징 HTTP/2 프로토콜을 사용해 메시지 헤더 압축, server push 등으로 성능이 좋다. IDL은 protocol buffer(PB)를 사용해 data를 Byte형태의 스트림으로 변경해 보낸다. JSON 등 다른 직렬화 방식도 사용 가능 대기 시간이 짧고 처리율이 높은 통신에 필요(e...

JPA 벌크연산(update, delete)

벌크연산 벌크연산이란? 여러 건의 데이터를 한번에 변경한다. update, create, delete ORM마다 지원하는 벌크연산이나 실제로 수행되는 방식이 다르다고한다. 각 orm을 사용할 때 예상하는 동작방식이 실제로 맞는지를 확인해야한다. e.g) JPA에서는 기본적으로 Bulk DELETE를 지원하지 않...

힙 정렬(Heap sort)

: 자료구조 힙(최대 힙, 최소 힙)을 이용한 정렬 방법 최대 힙, 최소 힙으로 내림차순, 오름차순 정렬을 할 수 있다. O(n log n) 의 시간복잡도를 가져, 가장 빠른 정렬 방법 중 하나이다. 비교할 때 자식, 부모 노드로 이동 log N * 모든 노드 N개에 대해 수행 N 힙은 완전 이진 트리 ...

POJO(Plain Old Java Object)

: 오래된 방식의 자바 객체. 자바 언어가 갖는 객체지향적 설계와 개발의 장점을 잃지 않고 특정 기술이나 프레임워크 등 외부 환경에 종속되지 않는 것. e.g) 특정 Spring 프레임워크를 의존하게 되면 해당 객체는 POJO가 아니게 되는 것. 우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데...