일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 컴퓨터구조
- react
- IT
- 네트워크
- mongoDB
- C
- c언어
- design pattern
- Kafka
- spring webflux
- 운영체제
- 백준
- 알고리즘
- Algorithm
- redis
- MySQL
- JavaScript
- OS
- JPA
- 자바
- Spring
- Java
- Proxy
- Data Structure
- 자료구조
- Galera Cluster
- 디자인 패턴
- Heap
- 파이썬
- MSA
- Today
- Total
목록분류 전체보기 (214)
시냅스
예외도 객체이므로 최상위 부모는 Object이다. Error 메모리 부족이나 심각한 시스템 오류이다. catch 해서는 안된다. 언체크 예외이다. Exception 체크 예외이다. RuntimeException 을 제외한 모두 하위는 컴파일러가 체크하는 체크 예외이다. RuntimeException 언체크 예외이다. RuntimeException 하위 모두 언체크 예외이다. 예외 기본 규칙 예외 처리 (catch) 예외 던짐 (throw) 예외는 잡아서 처리하거나 던져야 한다. 예외는 잡거나 던질 때 지정한 예외뿐만 아니라 그 예외의 자식들도 함께 처리된다. 예외를 처리하지 못하고 계속 던지면 main으로 넘어와 시스템이 종료된다. 체크 예외 체크 예외는 예외를 잡아서 처리할 수 없을 때 예외를 밖으로 ..
트랜잭션 Transaction 이란 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장하는 것을 뜻한다. 은행 송금을 예시로 하자면, 송금하는 주체는 돈이 감소해야 하고, 동시에 송금을 받는 주체는 돈이 증가해야 한다. 두 트랜잭션이 성공적으로 수행됐다면 commit 해야 하고, 하나라도 실패했다면 rollback해야 한다. 트랜잭션 ACID 트랜잭션은 원자성 (Atomicity), 일관성 (Consistency), 격리성 (Isolation), 지속성 (Durability) 를 보장해야 한다. 원자성 트랜잭션 내에서 실행한 작업은 마치 하나의 작업인 것처럼 모두 성공하거나 실패해야 한다. 일관성 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들면 데이터베이스에서 정한 무결성 제약 ..
커넥션 풀, Connection Pool 데이터베이스 커넥션을 획득할 때마다 tcp/ip 커넥션 (3 way handshake)을 연결하는 네트워크 동작이 발생되어 커넥션을 생성하기 위한 리소스를 매번 사용해야 한다. 커넥션을 매번 새로 만드는 시간이 추가되기 때문에 결과적으로 응답 속도에 영향을 준다. 이런 것을 해결하기 위해 커넥션을 미리 생성해두고 사용하는 커넥션 풀을 사용한다. 애플리케이션을 시작하는 시점에 커넥션을 미리 확보한다. 보통 10개이다. 커넥션 풀에 들어있는 커넥션은 TCP/IP로 DB와 커넥션이 연결되어 있는 상태이기 때문에 언제든지 DB에 SQL을 전달할 수 있다. 이렇게 이미 생성되어 있는 커넥션을 가져다 쓴 후 커넥션을 다시 풀에 반환한다. 커넥션 풀 숫자는 서비스의 특징과 서..
클라이언트, 애플리케이션 서버, DB 클라이언트가 애플리케이션 서버를 통해 데이터를 저장하거나 조회하면, 다음과 같은 과정을 거친다. 1. 커넥션 연결 주로 TCP/IP 를 사용해서 커넥션을 연결한다. 3 way handshake 2. SQL 전달 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달한다. 3. 결과 응답 다만 각각의 데이터베이스 마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 응답을 받는 방법이 모두 다르다. JDBC Java Database Connectivity JDBC는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다. JDBC 표준 인터페이스에 의존하게 하여 데이터베이스를 다른 종류의 데이터베이스로 변경하면 애플리케이션 서버의 ..
Mediator Pattern 객체간의 상호 작용을 하나의 객체에서 캡슐화하여 처리 UI 프로그래밍에서 많이 사용되는 방법으로 Widget 간의 상호 처리를 서로간에 처리하는 것이 아닌 한 객체가 전담하여 처리하도록 하는 방식 객체 서로간의 메세지를 전달할 일이 있을 때도 중재자를 두고 전달할 수 있음 N:N 의 관계를 1:N의 관계로 바꿀 수 있음 객체 지향 방법론에서는 객체의 관련된 처리는 객체 내부에서 하는 것이 맞지만, 그렇게 하면 상호작용의 급증이 발생하고 시스템의 변경이 어려움 Mediator 객체가 상호작용을 제어하고 조율하게 함, 각 객체는 다른 객체의 참조자는 알 필요 없이 Mediator만 알면 됨 Mediator Colleague 객체와 교류하는데 필요한 인터페이스를 정의 Concre..
Bridge Pattern 기능의 계층과 구현의 계층을 분리함 추상화와 구현을 분리하여 각각을 독립적으로 변경할 수 있게 함 기능의 확장과 구현의 확장을 따로 계층화 함 기능에 대한 여러가지 구현을 다양하게 적용할 수 있음 기능과 구현이 혼자하면 상속의 관계가 복잡해짐 두 계층을 분리하고 서로의 사이에 다리(Bridge)가 필요함 Abstraction (List) 추상화 개념의 상위 클래스이고 객체 구현자 (Implementor)에 대한 참조자를 관리 RefinedAbstraction (Stack, Queue) 추상화 개념의 확장된 기능을 정의 Implementor (AbstractList) 구현 클래스에 대한 선언을 제공 하위 클래스가 구현해야 하는 기능들을 선언한다. Implementor와 Abstr..
Abstract Factory Pattern 여러 제품굼을 하나의 Set으로 생성하는 패턴 구체적인 클래스를 생성하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 추상화된 인터페이스 팩토리를 제공하고 상황에 따라 그에 맞는 인스턴스들이 생성되도록 한다. 생성되고 구성되고 표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때 하나 이상의 제품군들 중 하나를 선택하여 시스템을 설정해야 하고 한 번 구성한 제품을 다른 것으로 대체할 수 있을 때 AbstractFactory 개념적 제품에 대한 객체를 생성하는 오퍼레이션 인터페이스를 정의한다. ConcreteFactory 구체적인 제품에 대한 객체를 생성하는 오퍼레이션을 구현한다. AbstractProduc..
반복자 패턴 Iterator Pattern 객체 요소들의 내부 표현방식을 공개하지 않고, 객체에서 되지 않은, 외부에서 객체에 순회하는 객체를 만든다. 내부에서 객체의 순차적인 제공을 하지 않음 순회 구현 방식이 다르더라도 동일한 방식(메서드)로 순회 할 수 있게 제공 여러 리스트 객체에 대한 동일한 방식으로 순회하는 방법을 제공하기 위해 순회하는 객체를 따로만듬 e.g. Java Collection Framework의 Iterator Iterator 요소에 접근하고 순회하는데 필요한 메서드 제공 ConcreteIterator Iterator에 정의된 인터페이스를 구현하는 클래스 Aggregate Iterator 객체를 생성하는 인터페이스 정의 순회할 요소를 가지고 있다. ConcreteAggregate..
옵저버 패턴 Observer Pattern 객체 사이에 일대다의 의존 관계가 있고, 어떤 객체의 상태변하게 되면 그 객체에 의존성을 가진 다른 객체들이 변화의 통지(notify or update)를 받고 자동으로 갱신될 수 있게 함 dependent, publish-subscribe 하나의 객체에 연동되는 여러 객체 집합이 있을 때 변화에 대한 일관성은 유지하고, 객체간의 결합도는 낮게하기 위한 패턴 느슨한 결합 Loose coupling : 느슨하게 결합되어 있다는 것은 상호작용을 하지만 서로 잘 모른다는 것 변화에 관심이 있는 객체에 대한 가정없이 통보될 수 있도록 해야 함 주로 data - view 의 관계에서 사용됨 log와 handler들의 관계. (file, console, 등등) Subjec..
템플릿 메소드 패턴 Template Method Pattern 상위 클래스에서는 전체적인 흐름을 구현하고 구체적인 처리는 하위 클래스에 위임 Operation 에 알고리즘의 기본 골격 구조를 정의하고 구체적인 단계는 서브클래스에 정의한다 추상화된 함수를 통해서 알고리즘의 일부 단계를 정의함으로써 템플릿 메소드의 처리순서를 정할 수 있다. AbstractClass 서브 클래스들이 반드시 구현해야 하는 알고리즘 처리 단계 내의 기본 오퍼레이션이 무엇인지를 정의한다. 서브 클래스에서 이들 오퍼레이션들을 구현한다. Hook method : 추상 클래스 내에 선언(declaration)되어 있는 메소드이지만, 기본적인 내용만 있거나 아무 내용도 들어있지 않음 template method는 final 키워드를 통해..