Light Blue Pointer
본문 바로가기

분류 전체보기298

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.
NoSQL과 RDBMS의 차이 RDBMSNoSQL데이터 모델관계형 데이터 모델데이터를 테이블, 행, 열 형식으로 저장다양한 데이터 모델문서(Document), 키-값(Key-Value), 열(Column), 그래프(Graph) 모델스키마사전에 정의, 변경 어려움유연, 변경이 쉽다제약조건데이터 무결성 및 일관성을 유지하기 위해 엄격한 제약조건(키, 외래 키, 고유 제약조건)제약조건이 없거나 느슨하다애플리케이션 레벨에서 데이터 무결성과 일관성을 관리한다확장 방법수직확장수평확장(클러스터링과 샤딩으로 쉽게 확장)확장성제한적, 단일 서버의 성능에 의존뛰어남, 대규모 데이터 처리 가능일관성강한 일관성 보장트랜잭션이 완료되면 모든 읽기 작업이 가장 최근의 쓰기 작업을 반영ACID 트랜잭션: 원자성, 일관성, 고립성, 지속성을 지원하여 데이터의 무.. 2024. 5. 28.
Java가 다중 상속을 지원하지 않는 이유 Java가 다중 상속을 지원하지 않는 이유는 주로 다이아몬드 문제(Diamond Problem)와 관련된 복잡성과 모호성을 피하기 위해서이다다중 상속은 하나의 클래스가 둘 이상의 부모 클래스로부터 상속받는 것을 의미한다주요 이유와 그에 따른 문제점은 다음과 같다1. 다이아몬드 문제 (Diamond Problem)다이아몬드 문제는 다중 상속을 사용하는 언어에서 자주 발생하는 문제로, 두 개의 클래스가 동일한 부모 클래스를 상속받고, 그 두 클래스를 또 다른 클래스가 상속받을 때 발생한다이러한 상속 구조는 아래와 같이 다이아몬드 모양을 형성한다 A / \\ B C \\ / D위와 같은 구조에서 D 클래스가 A 클래스의 메서드를 상속받을 때, **B**와 C 클래스가 A 클래스의 동일한 메서드를.. 2024. 5. 24.
Collection Framework Java Collection Framework는 데이터를 저장하고 조작하는 데 사용되는 클래스와 인터페이스의 표준화된 구조이다다양한 데이터 구조를 쉽게 사용할 수 있고, 데이터 조작을 간편하게 수행할 수 있게 한다주요 인터페이스와 클래스1. 인터페이스 Collection 모든 컬렉션 클래스의 최상위 인터페이스.List 순서가 있는 컬렉션을 나타내며, 중복 요소를 허용.구현 클래스: ArrayList, LinkedList, Vector, StackSet 순서가 없는 컬렉션을 나타내며, 중복 요소를 허용하지 않음.구현 클래스: HashSet, LinkedHashSet, TreeSetQueue FIFO(First In First Out) 구조를 나타내며, 주로 큐와 같은 데이터 구조를 나타냄.구현 클래스: L.. 2024. 5. 24.