Light Blue Pointer
본문 바로가기

분류 전체보기300

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.
추상클래스와 인터페이스 정의와 차이점 추상클래스(Abstract Class)와 인터페이스(Interface)는 모두 클래스 간의 공통적인 동작을 정의하는 방법을 제공한다추상클래스 (Abstract Class)하나 이상의 추상 메서드를 포함하는 클래스일반 메서드도 포함할 수 있다필드를 가질 수 있다생성자를 가질 수 있다상속을 통해 클래스의 공통적인 동작을 정의할 때 사용한다추상 메서드선언되어있지만 구현은 되어있지 않은 메서드추상클래스 자체는 인스턴스화할 수 없으며, 추상클래스를 상속받는 하위 클래스에서 추상 메서드를 구현해야 한다인터페이스 (Interface)인터페이스는 메서드의 선언만을 포함하며, 구현은 제공하지 않는 추상 타입모든 메서드는 기본적으로 추상 메서드디폴트 메서드(default methods)와 static 메서드를 포함할 수 .. 2024. 5. 24.
Object Oriented Programming 객체 지향 프로그래밍(OOP, Object-Oriented Programming)은 소프트웨어 설계 패러다임의 하나로, 프로그램을 객체(object)의 집합으로 보고 이 객체들이 서로 상호작용하여 동작하도록 구성하는 방법론이다객체는 데이터와 그 데이터를 처리하는 함수를 함께 묶어 놓은 일종의 모듈이다OOP의 핵심 개념에는 클래스, 객체, 상속, 다형성, 캡슐화가 포함된다핵심 개념클래스(Class)클래스는 객체를 정의하는 틀(template) 또는 청사진(blueprint)이다클래스는 데이터(속성)와 행동(메서드)을 정의한다**자동차**라는 클래스를 정의하면, 이는 모든 자동차가 가져야 할 속성과 행동을 포함한다객체(Object)객체는 클래스로부터 생성된 실체(instance)이다객체는 클래스에서 정의한 .. 2024. 5. 24.