분류 전체보기

DB

[Database] 트랜잭션 격리 수준(Isolation Level)

트랜잭션 격리 수준(Isolation Level)이란? 트랜잭션의 격리 수준은 여러 트랜잭션이 혼재되어 있는 상태에서, 하나의 트랜잭션이 다른 트랜잭션의 데이터에 접근 할 수 있는 '정도'를 의미한다. 트랜잭션 격리 수준은 4단계로 나뉘어 진다. 0 - Read Uncommitted 1 - Read Committed 2 - Repeatable Read 3 - Serializable 격리 수준이 높아질 수록 트랜잭션의 고립 강도가 높아지는 반면, 성능저하도 야기된다. 일반적인 서비스에서는 Read Committed 혹은 Repeatable Read 수준을 사용하며, 서비스의 요구사항에 따라 적절한 격리 수준을 정해 사용해야 한다. 여러 트랜잭션이 존재하는 상황에서 트랜잭션들의 경합으로 발생하는 문제는 격리..

Software Engineering

[디자인패턴] 팩토리 메서드(Factory Method) 패턴

1. 팩토리 메서드 패턴이란? - 객체 생성을 위한 패턴 - 객체 생성에 필요한 과정을 템플릿처럼 정해 놓고 각 과정을 다양하게 구현이 가능 - 객체 생성에 대한 인터페이스와 구현의 분리 - 구체적으로 생성할 클래스를 유연하게 정할 수 있음 팩토리 메서드 패턴은 객체 생성을 Factory 클래스로 캡슐화하여 대신 생성하게 하는 '생성' 디자인 패턴이다. 클라이언트가 직접 new 연산자를 통해 객체를 생성하는 것이 아닌 객체 생성을 도맡는 Factory 클래스를 만들고, 이를 상속하는 서브 Factory 클래스에서 여러 타입의 객체 생성을 책임지는 것이다. 또한 Factory에서 객체 생성시의 전처리 혹은 후처리를 통해 생성 과정을 유연하게 처리 할 수 있다. 위키피디아에 나와 있는 UML 다이어그램으로는..

Software Engineering

[디자인 패턴] 빌더(Builder) 패턴

1. 빌더 패턴이란? 빌더 (Builder) 패턴은 복잡한 구성의 객체를 효과적으로 생성하는 패턴 빌더 패턴의 종류는 2가지 - 생성시 지정해야 할 인자가 많을 때 사용하는 패턴 - 객체 생성 시 여러 단계를 순차적으로 거칠 때, 이 단계의 순서를 결정해 두고 각 단계를 다양하게 구현할 수 있도록 하는 패턴 대부분 빌더 패턴은 첫번째 종류로만 이해하는 경우가 대부분 빌더 패턴외에 객체 생성 패턴은 대표적으로 점층적 생성자 패턴, 자바 빈즈 패턴이 존재 점층적 생성자 패턴 - 생성자를 매개변수에 갯수만큼 구성하는 패턴 자바 빈즈 패턴 - 별도의 생성자를 구성하지 않고 객체를 생성한 후, Setter를 이용하여 객체를 구성하는 형태를 의미 2. 생성시 지정해야 할 인자가 많을 때 사용하는 패턴 public ..

DB

[Database] 트랜잭션(Transaction)과 ACID 개념

1. 트랜잭션(Transaction) 이란? - 논리적인 여러 작업을 하나로 묶는 단위 - 하나의 일련된 작업 예시 - 손님이 카페에서 음료를 주문 했을 경우, 손님의 주문 그리고 음료가 제조 및 준비되어 손님에게 전달되기까지의 모든 과정을 하나의 트랜잭션으로 볼 수 있다. 트랜잭션의 특징은 모두 성공하거나, 하나라도 실패하면 전체가 실패한다는 특징을 가지고 있다. 만약 손님의 음료가 완성되어 전달되는 과정에서 음료가 엎어지게 되면, 손님의 주문은 전체가 실패하게 되는 것과 동일하다. 2. 트랜잭션의 ACID란? 트랜잭션에는 4가지의 핵심 속성이 있으며, 해당 속성이 하나라도 충족되지 않으면 해당 트랜잭션은 보장되지 않는다. 즉 ACID는 트랜잭션이 안정적으로 수행되기 위해 보장되어야할 4가지 핵심 속..

Software Engineering

[디자인패턴] 어댑터(Adapter) 패턴

1. Adapter란? '사전적 의미 - 기계, 기구 등을 다목적으로 사용하기 위한 부가 기구' 어댑터는 우리 주변에서도 많이 볼수 있다, 대표적으로 110V 가전제품에 220V 어댑터를 끼워 사용하는걸 예로 들 수 있다. 다시 말해 서로 호환되지 않는 기능을 어댑터를 통해 호환시켜 작동하다록 하는 역할을 한다. 위 내용을 객체지향 프로그래밍에 적용시켜 보면 어댑터 패턴은 아래와 같은 내용으로 설명할 수 있다. '어댑터 패턴은 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 하는 구조적 디자인 패턴' 2. Adapter 패턴의 구현 요구사항 두 수에 대한 다음 연산을 수행하는 객체 구현 수의 두 배의 수를 반환 twiceOf(float):float 수의 반(1/2)의 수를 반환 halfOf(f..

Software Engineering

[디자인패턴] 전략(Strategy) 패턴

1. 인터페이스란? - 키보드나 디스플레이 따위처럼 사람과 컴퓨터를 연결하는 장치 - 기능에 대한 선언과 구현을 분리해주는 기능 역할 - 기능을 사용하는데 있어서 통로 역할 2. 델리게이트(Delegate)란? - 사전적 의미에서는 어떤 사람이나 그룹을 대신하는 사람, 즉 대리인 혹은 대표로 해석 - 특정 기능의 동작을 다른 객체에게 위임하여 동작하도록 함 public class AService { //has a 관계 BRepository bRepository; public void save() { // save 동작을 bRepository에게 위임하여 처리 bRepository.save(); } } 3. 전략(Strategy) 패턴 - 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어 접근점..

자료구조-알고리즘

[자료구조] 그래프(Graph)

그래프란? 그래프는 정점(Node, Vertex)와 간선(Edge)로 이루어진 자료구조이며, 방향성이 있는 방향 그래프(Directed Graph)와 방향성이 없는 무방향 그래프(Undirected Graph)로 나뉜다. 더불어 정점과 정점을 잇는 간선에는 가중치(Weight)가 존재할 수 있다. 트리(Tree)또한 그래프의 일종이지만, 그래프는 트리와 달리 정점마다 간선이 존재하지 않을 수 있으며, 루트, 부모, 자식 노드의 개념이 존재하지 않는다. 그래프 자료구조는 컴퓨터 네트워크, 교통 시스템, 소셜 미디어와 같은 다양한 현실 세계의 문제를 모델링하는데 사용된다. 그래프 관련 용어 정점(Node, Vertext) - 데이터를 나타냄 간선(Edge) - 두 정점의 관계를 나타냄 차수(Degree) -..

자료구조-알고리즘

[알고리즘] DFS / BFS

DFS / BFS는 그래프 탐색 알고리즘중 하나 탐색이란 수 많은 데이터는 원하는 데이터를 찾는 과정 깊이 우선 탐색(DFS, Depth - First Search) - DFS는 그래프와 트리의 깊은 부분을 우선적으로 탐색하는 알고리즘 - 현재 정점(노드)에서 연결된 정점(노드) 하나를 골라 깊이 끝까지 탐색을 진행하며, 끝까지 진행한 경우 백트래킹을 하여 다음 노드로 탐색을 진행한다. - Stack 혹은 재귀 함수를 이용하여 구현한다. - 모든 정점을 방문할 때 유리하게 사용하며, 경우의수, 순열, 조합 문제에서 많이 사용한다. - 모든 정점을 방문할 필요가 없거나 최단 거리를 구하는 경우에는 너비 우선 탐색(BFS)가 유리하다. 장점 - 현 경로상의 노드들만 기억하므로, 저장공간 수요가 비교적 적다...

turtleDev
'분류 전체보기' 카테고리의 글 목록