전체 글 215

선언위치 변수종류(클래스 변수/인스턴스 변수)

class Variables { int iv; // 인스턴스 변수 static int cv; // 클래스 변수(static 변수, 공유변수) void method() { int lv = 0; // 지역변수 } } class Card { String kind; // IV (인스턴스 변수) int number; // IV (인스턴스 변수) static int width = 100; // CV (공통속성, 클래스 변수) static int height = 250; // CV (공통속성, 클래스 변수) } 변수의 종류 선언위치 생성시기 클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 인스턴스 변수 클래스 영역 인스턴스가 생성될 때 지역 변수 클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) ..

단일 메세지 모델 설계 하기(kafka + STOMP + Cassandra)

현재 스케일 아웃이 용이한 채팅 서버 설계를 위해서 스터디를 진행중이다. 단일 메시지 모델 설계를 위해 어떤 DB를 쓰고, 어떤 스택을 사용할 지 고민한 흔적을 소개해보려고 한다. Reference Best database for a chat application? 채팅을 위한 Message Queue 선택과 DB 선택 Kafka, Redis, Web Socket, Stomp 를 활용한 채팅 서버 회고 [혼자왔니] 채팅 서버 구현을 통해 알아본 redis와 kafka의 차이점 Redis, RabbitMQ 차이점을 알아보자 [WebSocket] Spring Boot + STOMP + Redis Pub/Sub 이용한 채팅 서버 구현 Spring STOMP Spring Boot Web Chatting : 스프..

스트림의 그룹화와 분할

https://www.youtube.com/watch?v=VUh_t_j9qjE&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=171 본 강의는 위 강의를 듣고 정리를 진행했습니다. partitioningBy()는 스트림을 2분할 한다. groupingBy()는 스트림을 n분할 한다. Collector partitioingBy(Predicate predicate) Map stuBySex = stuStream.collect(paritioingBy(Student::isMale)); List maleStudent = stuBySex.get(true); List femaleStudent = stuBySex.get(false); Map stuNumBySex = stuStream...

[가상면접 사례로 배우는 대규모 시스템 설계 기초] Chap3. 시스템 설계 공략법

본 글은 가상면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 설계의 순수성(pu-rity)에 집착한 나머지 타협적 결정(tradeoff)을 도외시하고 과도한 엔지니어링(over-engineering)을 하고 있는 엔지니어들이 현업에 많다 → 엔지니어들은 과도한 엔지니어링의 결과로 시스템 전반의 비용이 올라감. 효과적 면접을 위한 4단계 접근법 구체적으로 어떤 기능을 만들어야 하나? 제품 사용자수는 얼마나 되나? 회사의 규모는 얼마나 빨리 커지리라 예상하나? 석 달, 여섯 달, 일년 뒤의 규모는 얼마가 되리라 예상하는가? 회사가 주로 사용하는 기술 스택(technology stack)은 무엇인가? 설계를 단순화하기 위해 활용할 수 있는 기존 서비스로는 어떤 것들이 있는가? 예제 지원자..

[가상면접 사례로 배우는 대규모 시스템 설계 기초] Chap2. 개략적인 규모 추정

본 글은 가상면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 2의 제곱수 데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는가? 최소 단위는 1바이트이고, 8비트로 구성 ASCII 문자 하나가 차지하는 메모리 크기가 1바이트 2의 X 제곱 근사치 이름 축약형 10 1천 1킬로바이트 1KB 20 1백만 1메가바이트 1MB 30 10억 1기가바이트 1GB 40 1조 1테라바이트 1TB 50 1000조 1페타바이트 1PB 모든 프로그래머가 알아야 하는 응답지연 값 L1 캐시 참조 0.5ns 분기 예측 오류 5ns L2 캐시 참조 7ns 뮤텍스 락/언락 100ns 주 메모리 참조 100ns Zippy로 1KB 압축 10us 1 Gbps 네트워크로 2KB 전송 20us 메모리에서 1MB..