분류 전체보기305 제네릭(Generic)이란 Java에서 제네릭(Generic)은 클래스, 인터페이스, 메서드 등에 사용할 수 있는 타입 매개변수화 기법을 말한다.제네릭을 사용하면 컴파일 시 타입을 체크할 수 있으며, 코드의 재사용성을 높이고, 타입 안정성을 보장할 수 있다.제네릭은 자바 5에서 도입되었으며, 주로 컬렉션 프레임워크에서 많이 사용된다.제네릭의 주요 특징타입 안전성(Type Safety) 보장컴파일 시점에 타입을 체크하여 런타임 에러를 줄일 수 있다타입 캐스팅 제거제네릭을 사용하면 불필요한 타입 캐스팅을 제거할 수 있다코드 재사용성 증가다양한 타입에 대해 동일한 코드를 사용할 수 있다제네릭의 기본 사용법제네릭 클래스제네릭 클래스는 클래스 선언 시 타입 매개변수를 사용하여 정의할 수 있다다음은 제네릭 클래스를 사용하는 예제이다publi.. 2024. 5. 31. Java volatile / synchronized Java에서 volatile과 synchronized는 멀티스레딩 환경에서 안전하게 데이터를 접근하고 수정하기 위한 동시성 제어 키워드이다.이 두 키워드는 각각 다른 방식으로 동기화를 제공한다.volatilevolatile 키워드는 변수의 값을 모든 스레드가 항상 최신 상태로 읽을 수 있도록 보장한다.자바 메모리 모델에서 각 스레드는 자신의 캐시를 사용하여 변수를 읽고 쓸 수 있다.volatile로 선언된 변수는 각 스레드의 캐시에 저장되지 않고 항상 주 메모리에서 읽고 쓰기 때문에 여러 스레드가 동시에 접근하더라도 일관된 값을 보장한다.주요 특징변수의 가시성 보장volatile로 선언된 변수는 각 스레드가 해당 변수의 최신 값을 볼 수 있도록 한다.원자성 보장 불가volatile은 변수의 읽기/쓰기의 .. 2024. 5. 31. JavaBean JavaBean이란데이터를 표현하는 것을 목적으로 하는 자바 클래스여러가지 객체들을 하나의 객체에 담아서 네트워크를 통해 전송하거나 파일/데이터베이스에 저장하기 위해 Serialization을 해서 data stream(e.g, byte[])으로 이 객체를 변환시켜줘야 한다.JavaBean의 주요 규칙기본 생성자 (Default Constructor)모든 JavaBean은 매개변수가 없는 기본 생성자(No-Argument Constructor)를 가져야 한다.이는 인스턴스화를 쉽게 하기 위해 필요하다.생성자에 Argument가 있다면 런타임에 Argument가 몇개인지, 어떤 필드에 매핑되는지 찾아야 한다.Argument가 없는 생성자가 반드시 있도록 하면 객체를 런타임(Runtime)에 생성할때 생성후.. 2024. 5. 31. Java의 다형성(Polymorphism) 다형성(Polymorphism)OOP의 특성중 하나이다.다형성은 동일한 인터페이스나 부모 클래스를 공유하는 객체들이 다양한 방식으로 동작할 수 있게 하는 특성을 의미한다하나의 메서드가 여러 클래스에서 다른 방식으로 구현될 수 있다Java에서는 오버로딩(Overloading)과 오버라이딩(Overriding) 두 가지 형태로 주로 구현된다. 참조 변수의 다형성자바에서는 다형성을 위해 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하고 있다.(이때 참조 변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 같거나 적어야 참조할 수 있다.)class Parent { ... }class Child extends Parent { ... }...Parent pa = .. 2024. 5. 31. Docker vs Kubernetes / Docker Compose vs Docker Swarm vs Kubernetes Docker vs Kubernetes구분도커 (Docker)쿠버네티스 (Kubernetes)주요 목적 Primary Purpose컨테이너 생성 및 관리컨테이너 오케스트레이션기능 Functionality컨테이너 이미지 빌드, 배포, 실행컨테이너 배포, 확장, 자가 치유, 로드 밸런싱자동 확장 Auto-Scaling기본적으로 제공되지 않음기본적으로 자동 확장 기능 제공서비스 디스커버리제공되지 않음네이티브 서비스 디스커버리 및 로드 밸런싱 지원자가 치유 Self-Healing제공되지 않음컨테이너 재시작, 복구 및 대체 기능 제공롤링 업데이트 Rolling Updates수동으로 수행네이티브 롤링 업데이트 및 롤백 지원스토리지 관리 Storage Management외부 도구 필요다양한 스토리지 시스템과.. 2024. 5. 28. OOP의 SOLID 원칙 OOP의 SOLID 원칙S : Single Responsibility Principle클래스는 하나의 책임만 가져야 하며, 클래스가 변경되는 이유는 단 하나뿐이어야 한다하나의 클래스가 하나의 기능만 담당하도록 하여 코드의 응집도를 높이고, 유지보수를 용이하게 한다SRP 위반 예시Invoice 클래스가 여러 책임(기능)을 가지고 있다.Invoice 클래스는 청구서의 데이터 저장, 청구서의 프린트, 그리고 총액 계산을 모두 담당하고 있다.class Invoice { private double amount; public Invoice(double amount) { this.amount = amount; } public double getAmount() { retu.. 2024. 5. 28. RDBMS의 ACID 트랜잭션과 NoSQL의 BASE 속성 ACID vs BASE 비교개념ACIDBASE가용성낮음 (일관성을 우선)높음 (가용성을 우선)일관성높음 (즉각적인 일관성)낮음 (최종적인 일관성)상태단단한 상태 (변경 불가능한 상태)부드러운 상태 (변경 가능한 상태)트랜잭션 격리강한 격리성약한 격리성시스템 설계 목표안정성과 신뢰성확장성과 가용성ACID 트랜잭션은 금융 거래와 같이 높은 일관성과 신뢰성이 요구되는 시스템에 적합하며, BASE 속성은 대규모 분산 시스템에서 높은 가용성과 확장성을 필요로 하는 시스템에 적합하다ACID 트랜잭션RDBMS에서 트랜잭션의 신뢰성과 일관성을 보장하는 속성Atomicity (원자성)트랜잭션의 모든 작업이 완전히 수행되거나 전혀 수행되지 않아야 함을 보장트랜잭션 중 일부 작업만 수행되거나 실패하는 경우, 시스템은 트랜잭.. 2024. 5. 28. NoSQL의 CAP 이론(The CAP theorem) CAP 이론분산 데이터베이스 시스템의 기본 원칙특히 NoSQL 데이터베이스와 관련이 깊다.일관성 (Consistency, C)모든 읽기 요청은 가장 최근의 쓰기 결과 또는 오류를 반환한다분산 시스템의 모든 노드가 동일한 데이터를 동시에 볼 수 있다.모든 클라이언트가 일관된 데이터를 보도록 보장한다가용성 (Availability, A)모든 요청(읽기 또는 쓰기)은 최신 데이터를 보장하지 않더라도 응답을 받는다시스템은 항상 운영 상태를 유지하며 응답성을 갖는다.장애가 발생하더라도 시스템은 요청을 처리한다(비록 반환된 데이터가 최신이 아닐 수 있지만).분할 허용성 (Partition Tolerance, P)네트워크 분할로 인해 일부 노드가 통신할 수 없게 되더라도 시스템은 계속 작동한다시스템은 임의의 네트워크.. 2024. 5. 28. 클러스터링과 샤딩의 차이점 ClusteringSharding목적Purpose고가용성(High Availability), 로드 밸런싱(Load Balancing)확장성(Scalability), 성능 향상(performance improvement)구조여러 개의 데이터베이스 인스턴스(Node)가 하나의 클러스터를 구성인스턴스는 서로 복제(replication)되어 동일한 데이터를 유지여러 개의 독립된 데이터베이스 인스턴스(샤드)로 분할하여 저장하고, 샤드 키를 통해 데이터를 적절한 샤드에 분배 시스템의 확장성과 성능을 향상시킴데이터 분포 Data Distribution모든 노드가 동일한 데이터 저장All nodes store the same data각 샤드가 일부 데이터만 저장Each shard stores only a subset .. 2024. 5. 28. 이전 1 2 3 4 5 6 7 8 ··· 34 다음