Kafka? 비동기 처리를 위한 메시징 큐의 한 종류 ZooKeeper, Broker, Producer, Consumer와 같은 개념이 있다. 주키퍼(ZooKeeper) 브로커의 메타 정보를 관리하고, 브로커의 컨트롤러(Controller)를 선출하는 역할을 한다. 주키퍼 앙상블(ZooKeeper Ensemble) ...
HTTP 1.0 1개의 커넥션당 1개의 요청을 처리한다. 따라서 요청을 동시에 전송할 수 없고, 하나의 요청에 대한 응답이 돌아온 후에 다음 요청을 보낼 수 있다. 이는 네트워크 지연(latency)를 발생시킨다. HTTP 1.1 HTTP 1.0의 단점을 개선시키고자 HTTP Pipelining을 도입했다. ...
최대공약수 (GCD, Greatest Common Divisor) 유클리드 호제법 Python 코드 def gcd(a, b): if a < b: a, b = b, a while b != 0: a, b = b, a % b return a Java 코드 public...
단순히 정적 필드와 정적 메서드만을 담은 클래스는 객체 지향적으로 사고하지 않는 이들이 종종 남용하는 방식이다. 하지만, 분명 나름의 쓰임새가 있다. e.g. java.lang.Math, java.util.Arrays, java.util.Collections 유틸리티 클래스 해당 클래스는 인스턴스화하려고 설계한 게 X 생...
싱글턴 (Singleton) 인스턴스를 오직 1개만 생성할 수 있는 클래스 (e.g. 무상태(stateless) 객체 또는 설계상 유일해야 하는 컴포넌트) 클래스를 싱글턴으로 만들면, 이를 사용하는 클라이언트는 테스트하기 어려워질 수 있다. 👉 왜 테스트하기 어려울까? 어떻게 만들까? 1. public static final 필드 ...
점층적 생성자 패턴 (Telescoping Constructor Pattern) 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자.. 형태로 생성자를 늘려가는 방식이다. 확장하기 힘들고, 매개변수 개수가 많아지면 클라이언트 코드를 작성하거나 읽기 어렵다는 단점이 있다. public class Nutritio...
클래스의 인스턴스를 얻는 수단은 (1) public 생성자와 (2) 정적 팩터리 메서드(static factory method)가 있다. public final class Boolean implements Serializable, Comparable<Boolean> { public static final Boolean TR...
객체를 탐색하는 방법 객체를 참조한다. 강한 결합도 해당 방식은 Order에 있는 Shop을 통해 Shop을 바로 탐색할 수 있다. Repository를 사용한다. 약한 결합도 해당 방식은 ShopRepository의 findById()를 통해 Shop을 탐색할 수 있다. 패키지 사이의 의존성 사이클을 제거하는...
의존성 (Dependency) 의존성이 있다? B가 변경될 때, A도 변경될 수 있다. == 변경 가능성이 있다. ➡️ 무조건 변경되는 건 X 의존성은 변경과 관련이 있다. 클래스 의존성 연관 관계 (Association) A에서 B로 이동할 수 있다. == A가 B로 가는 경로를 가지고 있다. class A ...
제가 작성한 원글은 여기서 확인하실 수 있습니다. 각 자료구조는 필요에 따라 선택되고 활용된다. Map 인터페이스의 구현체로는 HashMap, HashTable, ConcurrentHashMap 등이 있다. Map 인터페이스를 구현하면, <Key, Value> 형태를 띈다. 그렇다면 이 셋은 무슨 특징을 가지고, 서로 어떤 차이...