[JVM 밑바닥까지 파헤치기] Part 2 - Chapter - Section 2.2 : 런타임 데이터 영역
·
Reference/JVM 밑바닥까지 파헤치기
저우즈밍(周志明) 저, "JVM 밑바닥까지 파헤치기"를 기반으로 작성한 글입니다.실행 환경은 Windows + Ubuntu 22.04.05 LTS 기반으로 진행합니다.1. Overview 📌 JVM Specification Chapter 2. The Structure of the Java Virtual MachineConditional branch: ifeq, ifne, iflt, ifle, ifgt, ifge, ifnull, ifnonnull, if_icmpeq, if_icmpne, if_icmplt, if_icmple, if_icmpgt if_icmpge, if_acmpeq, if_acmpne.docs.oracle.comJVM 명세에 따르면, JVM은 자바 프로그램을 실행하는 동안 필요한 메모리를 ..
[JVM 밑바닥까지 파헤치기] Part 1 - Chapter 1 - Section 1.6 : JDK 직접 빌드하기
·
Reference/JVM 밑바닥까지 파헤치기
저우즈밍(周志明) 저, "JVM 밑바닥까지 파헤치기"를 기반으로 작성한 글입니다.실행 환경은 Windows + Ubuntu 22.04.05 LTS 기반으로 진행합니다.1. 소스 코드 구하기 📌 OpenJDK 17 Java Platform, Standard Edition 17 Reference ImplementationsJava Platform, Standard Edition 17 Reference Implementations The official Reference Implementation for Java SE 17 (JSR 392) is based solely upon open-source code available from the JDK 17 Project in the OpenJDK Communi..
[대규모 시스템 설계] 12장. 채팅 시스템 설계
·
Reference/대규모 시스템 설계
📕 목차1. 채팅 시스템2. 프로토콜3. 개략적 설계안4. 데이터 모델5. 상세 설계6. 개인적인 추가 고민1.  채팅 시스템 📌 과거와 현재 채팅 시스템 차이💡 책에 나온 내용은 아니고, 예전에 어딘가에서 읽었던 내용인데 출처가 기억 안 나서 정확성이 떨어집니다.과거에는 채팅 프로그램을 위해 서버가 하는 일은 그저, 두 클라이언트의 연결을 돕는 일이 고작이었다.아마, stateless 환경의 HTTP 프로토콜 방식만으로는 한계가 있었기 때문이 아닐까 싶긴 한데, 그렇게 할 수밖에 없었던 이유를 당췌 못 찾겠다. 아무튼, 1:1 실시간 소통이 고작이라면 위 방식도 기능을 제공함에 있어 문제가 되진 않을 것이다. (데이터 보존 원칙같은 건 전부 무시하고, 순수하게 기능 제공 측면만을 고려했을 때)하지..
[대규모 시스템 설계] 7장. 분산 시스템을 위한 유일 ID 생성기 설계
·
Reference/대규모 시스템 설계
📕 목차1. 유일 ID 생성기2. 개략적 설계3. 상세 설계1. 유일 ID 생성기 📌 auto_increment는 답이 될 수 있을까?DB가 단일 서버라면 auto_increment가 답이 될 수 있다.하지만 사용자 트래픽이 높은 곳이라면 단일 DB만으로는 요구 사항을 감당할 수 없을 것이다.그래서 DB 서버를 분산화하면, 더 이상 auto_increment만으로는 유일성을 보장할 수 없기에 이를 동기화하는 작업이 필요한데 지연 시간(delay)을 낮추기가 매우 힘들어질 수 있다. 그리고 NoSQL을 사용한다면, 애초에 선택지가 존재하질 않는다는 문제가 존재한다. (여기서부터는 책에서 나온 내용이 이해가 안 가서, 추가 자료 조사와 추론을 기반으로 작성했습니다.) 🤔 DB를 다중화?샤딩을 통해 ma..