본문 바로가기

스터디-공부62

1장 최신 자바 소개 (3) Well-Grounded Java Developer - 2nd edition 1.5 java 11의 작은 변경 사항 java 8 이후 비교적 많은 수의 새로운 작은 기능들이 적용되었습니다. 모든 변경 사항은 아니지만 가장 중요한 몇 가지 사항을 빠르게 살펴보겠습니다. 1.5.1 Collections factories (JEP 213) 컬렉션 리터럴 (collection literals - 리스트나 맵과 같은 objects 컬렉션) 을 선언하는 간단한 방법을 지원하는 것은 자주 요청되었던 개선 사항이였습니다. Java 컬렉션의 기본 설계 원칙은 클래스가 아닌 인터페이스로 표현된다는 것입니다. Java 8에서 인터페이스에 정적 메서드를 가질 수 있는 기능이 추가되었기 때문에 이를 활용하여 인터페이스에 간단한.. 2023. 6. 11.
1장 최신 자바 소개 (2) Well-Grounded Java Developer - 2nd edition 1.4 언어 및 플랫폼 변경 우리는 무엇이, 왜 변경되었는지 파악하는 것은 중요하게 생각합니다. 일반적으로 언어의 새로운 기능에 대해서는 관심이 많지만, 변화를 만들어 내기까지 얼마나의 시간과 노력이 소요되는지에 대해서는 관심이 많지 않습니다. 자바와 같이 성숙한(mature, 오래된) 런타임의 경우에는 다른 언어나 라이브러리에서 영향을 받기도 합니다. * syntactic sugar(구문적 설탕, 문법적 설탕) : 사람이 이해하기 쉽고 표현하기 쉽게 컴퓨터 언어를 디자인해 놓은 문맥 당연하게도 일반적으로 최소한의 노력이 드는 구현 수준을 선택하는 것이 좋습니다. 즉 새 기능을 라이브러리로 구현하는 것이 가능하다면 라이브러리로 .. 2023. 6. 7.
7장 분산 시스템을 위한 유일 ID 생성기 설계 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 7장 분산 시스템을 위한 유일 ID 생성기 설계 어떻게 유일 ID 생성기를 설계할 것인가. 단일 서버라면 auto_increment 속성을 설정해도 좋을 것이다. 그러나 분산 시스템에서는 문제가 달라지게 된다. 1단계 문제 이해 및 설계 범위 확정 이번 장에서 만족해야할 요구사항는 다음과 같다. - ID는 유일해야 한다. - ID는 64비트로 표현될 수 있는 값이어야 한다. - ID는 발급 날짜에 따라 정렬 가능해야 한다. - 초당 10,000개의 ID를 만들 수 있어야 한다. * 참고 여기서 64비트는 8바이트 이고 이는 Mysql을 기준으로 생각해보았을 때 bigint 타입이다. https://dev.my.. 2023. 6. 6.
1장 최신 자바 소개 (1) Well-Grounded Java Developer - 2nd edition 2021년 9월에 최신 LTS 릴리즈인 Java 17이 나왔습니다. 2022년을 기준으로 대부분의 팀들은 Java 11이나 Java 8을 사용하고 있습니다. 클라우드에 배포하는 팀들은 Java 11을 쓰고 있지만 그렇게 되기까지에도 오랜 시간이 걸렸습니다. 이 책은 Java 11을 중심으로 진행합니다. a) 시장 점유율이 가능 큰 LTS 버전이고 b) 아직 Java 17이 눈에 띄게 적용되지 않았기 때문입니다. 그러나 Java 17의 기능들도 소개합니다. 이 논의들이 업그레이드를 꺼리는 일부 팀과 관리자를 설득하는데 도움이 되기를 바랍니다. 현대 자바의 핵심에 있는 언어와 플랫폼의 이중성에 대해 논의 하면서 시작해봅시다. 1.1.. 2023. 6. 2.
6장 키-값 저장소 설계 - 데이터 일관성 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 6장 키-값 저장소 설계 - 데이터 일관성 데이터 일관성 여러 노드에 다중화된 데이터는 적절히 동기화가 되어야 한다. 정족수 합의(Quorum Consensus) 프로토콜을 사용하면 읽기/쓰기 연산 모두에 일관성을 보장할 수 있다. * 정족수 : 여러 사람의 합의로 운영되는 의사기관에서 의결을 하는데 필요한 최소한의 참석자 수 기호 정의 정리 N = 사본 개수. W = 쓰기 연산에 대한 정족수. (쓰기 연산이 성공한 것으로 간주되려면 적어도 W개의 서버로부터 쓰기 연산이 성공했다는 응답을 받아야 한다.) R = 읽기 연산에 대한 정족수. 읽기 연산이 성공한 것으로 간주되려면 적어도 R개의 서버로부터 응답을 받.. 2023. 6. 1.
6장 키-값 저장소 설계 가상 면접 사례로 배우는 대규모 시스템 설계 기초 – System Design Interview 6장 키-값 저장소 설계 도입 키-값 저장소(key-value store)는 키-값 데이터베이스라고도 불리는 비 관계형(non-relational) 데이터베이스 이다. 이 저장소에 저장되는 값은 고유 식별자(identifier)를 가져야 한다. 키와 값 사이의 이런 연결 관계를 “키-값” 쌍(pair)이라고 지칭한다. 키는 짧을수록 좋다. 키-값 저장소로 널리 알려진 것으로는 아마존 다이나모 memcached redis 같은 것들이 있다. 이번 장에서는 다음 연산을 지원하는 키-값 저장소를 설계한다. put(key, value): 키-값 쌍을 저장소에 저장한다. get(key): 인자로 주어진 키에 매달린 값.. 2023. 6. 1.