java/summary

·java/summary
1. Java Virtual Thread? Java Virtual Thead 는 LTS 인 Java21 부터 정식 도입된 경량성 스레드이다. 기존 자바 스레드 모델은 OS scheduler 를 통해 스케줄링하는 스레드 모델인 반면, 가상 스레드는 JVM 에서 스케줄링하는 경량성 스레드 모델이다. JVM 자체적인 내부 스케줄링을 통해 기존 스레드에 비해 최대 가용 스레드 수를 증가시켜 높은 처리량을 달성하기 위한 목적으로 도입된 개념이다. 2. Java Thread 은 JNI 기반으로 스레드를 생성한다. 기존 스레드는 OS Thread 를 래핑한 형태로 OS 스레드와 유저 스레드를 1:1 매핑하는 형태이다. 기존 스레드의 실행과 생성은 JNI(Java Native Interface) 가 담당했다. JNI ..
·java/summary
프로그래밍을 하다 보면 고려 사항 중 하나가 동시성이다. 동시성이 왜 발생하는지에 관한 고민의 흐름을 정리하고자 글로 작성하고자 한다. 1. 자바 코드는 어떻게 실행될까?자바 코드는 어떻게 실행될까? 자바는 기본적으로 컴파일 언어이다. 컴파일 언어란 코드가 실행되기 이전에 컴파일러(compiler) 를 거쳐 소스 코드를 기계어로 번역하는 과정을 거치는 언어를 말한다. 자바는 자바 컴파일러를 통해서 소스 파일을 자바 바이트 코드로 변환한다. 변환된 바이트 코드는 런타임 환경에서 JVM(Java Virtual Machine) 을 통해 OS 가 읽을 수 있는 기계어(binary code) 로 변환하고, 변환된 기계어는 OS 가 읽어 명령을 수행하게 된다.  2. 동시성이 발생 지점인 공유 자원은 어느 영역일까..
·java/summary
1. Local Cache ? Global Cache?(1) 로컬 캐시장점해당 인스턴스의 메모리를 참조해 빠른 데이터 접근 가능해당 인스턴스의 메모리를 참조하므로 네트워크 트래픽 감소단점캐시 데이터 증가 시 메모리 사용량 증가로 인한 성능 저하 가능캐싱 데이터가 변경되면 여러 서버 간 정합성 문제 발생 가능(2) 글로벌 캐시장점다중 인스턴스에서 동일한 데이터 공유 가능Sharding 과 Replication 을 활용한 고가용성 보장 단점추가 인프라 구성으로 인한 비용 발생네트워크 지연으로 인해 로컬 캐시보다 응답 속도가 느릴 수 있음 2. 로컬 캐시 종류(1) EhCacheEhCache는 Java 기반의 오픈 소스 캐시 라이브러리로, 주로 Spring 애플리케이션에서 사용된다.특징Heap 메모리, Off..
·java/summary
JCF 의 HashMap 코드를 보다가 SerialVersionUID 를 보고 호기심에 학습한 내용   1. 클래스의 기본 해시값을 통한 SerialVersionUID 의 문제클래스의 구조가 변경되었을 때 오류가 발생한다.예시: 멤버 변수 타입 변경, 멤버 변수 삭제프레임워크 또는 라이브러리에서 제공하는 클래스의 객체도 버전업을 통해 SerialVersionUID가 변경될 경우가 있으므로 예상하지 못한 오류가 발생할 수 있다. 2. SerialVersionUID??SUID 는 직렬화와 역직렬화 과정에서 값이 서로 맞는지 확인한 후에 처리한다.(맞지 않다면 InvalidClassException 를 반환한다.)자바의 직렬화 스펙 정의를 살펴보면 SUID 값은 필수가 아니며 선언되어 있지 않으면 클래스의 기..
·java/summary
멀티스레드와 자바 비동기 작업으로 간단한 콘솔 기반 카페 만들기 GitHub - pbg0205/asyc-cafeContribute to pbg0205/asyc-cafe development by creating an account on GitHub.github.com  CompletableFuture? 자바는 ThreadPool 과 CompletableFuture 를 기반해 비동기 작업을 지원한다. 기본적으로 자바는 Synchrous & Blocking 기반으로 동작하지만 비순차적 작업과 실행 흐름 대기로 인한 자원의 낭비와 작업이 지연될 수 있는 단점이 있다. 이를 개선하기 위한 방법으로 자바에서 또한 비동기(Asynchronous) 지원을 위한 CompletableFuture 와 같은 개념이 대두되었..
·java/summary
1. 어댑터 패턴어댑터 디자인 패턴은 기존 클래스의 인터페이스를 다른 인터페이스로 사용할 수 있도록 하는 구조 패턴이다. 호환되지 않는 두 인터페이스를 연결하여 함께 작동하도록 하는 다리 역할을 한다. 이 패턴에는 독립적이거나 호환되지 않는 인터페이스의 기능을 결합하는 역할을 하는 Adapter 라는 단일 클래스가 포함된다. 이름은 어댑터(Adapter) 외에도 래퍼(Wrapper) 로 명명되기도 한다. 2. 어댑터 패턴 구성 요소Target interface설명 : 클라이언트가 기대하는 인터페이스를 정의한다. 클라이언트 코드가 사용할 수 있는 연산 집합을 나타낸다.역할 : 클라이언트 코드가 상호 작용하는 공통 인터페이스 이다.Adaptee설명: 새 시스템에 통합해야 하는 호환되지 않는 인터페이스가 있는..
cooper25
'java/summary' 카테고리의 글 목록