전체 글(20)
-
트랜잭션(Transaction)
트랜잭션(Transaction) 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말합니다. 데이터베이스에 접근하는 방법은 쿼리이므로 여러개의 쿼리들을 하나로 묶는 단위를 말합니다. 이에 대한 특성은 원자성, 일관성, 독립성, 지속성이 있으며 이를 ACID특징이라고 합니다. 원자성 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징입니다. 예를 들어 모든 쿼리문의 수행이 끝나고 커밋하였는데, 문제가 발생했다?? 그러면 처음 상황으로 롤백해야 합니다. 이러한 경우에 쿼리문들은 적용이 되지 않아야 합니다. 이를 보장하는게 원자성 입니다. 커밋 : 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어(트랜잭션 단위로 실행되며 변경된 내용이 영구적으로 저장됨을 의미) 롤백 : ..
2024.04.21 -
Firebase Auth
오늘의 포스팅은 Firebase Authentication에 대한 것입니다. 제가 진행했던 프로젝트들에서 개인정보 관련 기능을 구현할 때 사용했던 API입니다. 사용법이 꽤 간편해서 애용해왔던 API입니다. Google의 포괄적인 앱 개발 플랫폼으로 개발의 다양한 측면을 간소화하여 시간과 노력을 절약할 수 있도록 도와줍니다. 실시간 데이터베이스, 인증, 스토리지, 호스팅 및 기타 기능을 제공하여 모두 단일 플랫폼에서 관리할 수 있습니다. Firebase Auth(파이어베이스 인증) 앱에서 사용자 인증 시 피룡한 백엔드 서비스와 사용하기 쉬운 SDK, 기성 UI 라이브러리를 제공합니다. 비밀번호, 전화번호, 인기 제휴 ID공급업체(Google, Facebook, Twitter 등)를 통해 인증이 지원됩니다..
2024.04.07 -
객체지향 프로그래밍(SOILD)
객체지향프로그래밍이란?(OOP. Object-Oriented Programming) 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언되누메서드를 활용하는 방식 -> 설계에 많은 시간이 소요되며 처리 속도가 다른 프로그래밍에 비해 느리다. 특징 1. 추상화 복잡한 시스템으로부터 핵심적인 개념 또는 기능을 간추리는 것을 의미한다. 2. 캡슐화 객체의 속성과 메서드를 하나로 묶고 일부를 감추어 은닉하는 것을 말한다. 3. 상속성 상위 클래스의 특성을 하위 클래스가 이어받아서 재사용하거나 추사, 확장하는 것을 말한다 -> 코드 재사용, 계층간의 관계 생성, 유지 보수성 에서 중요 3. 다형성 하나의 메서드나 클래스가 다양한 방법으로 동작하는 것을 말한다. - 오버로딩 ..
2024.03.13 -
플로이드 워셜 알고리즘(Floyd-Warshall)
플로이드 워셜이란? 최단 경로 담색 알고리즘 중 하나이다. 음수 사이클이 없는 경우에 사용할 수 있다. 모든 정점 간에 최단 경로를 구할 때 사용된다. 시간 복잡도 : Θ(N^3) 사용법 정점의 개수가 3개, 2를 거치는 경우 일단 N x N 예시의 경우는 3 x 3의 배열을 선언해주고 모든 칸을 매우 큰 값으로 초기화해준다. 1. 정점 1에서 시작하여 2를 거쳐 3에 도달하는 경로를 구한다 dist[1][3] = MIN(dist[1][3],dist[1][2]+dist[2][3]) 2. 정점 1에서 시작하여 2를 거쳐 4에 도달하는 경로를 구한다 dist[1][4] = MIN(dist[1][4],dist[1][2]+dist[2][4]) 3. 정점 3에서 시작하여 2를 거쳐 1에 도달하는 경로를 구한다 d..
2024.03.08 -
디자인 패턴
디자인 패턴이란? 프로그램을 설계할 떄 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약'형태로 만들어 놓은 것을 의미한다. 싱글톤 패턴(singleton pattern) 하나의 클래스에 오직 하나의 인스턴스만을 가지는 패턴이다. 보통 데이터베이스 연결 모듈에 많이 사용한다. 싱글톤 패턴을 사용하는 경우는 객체가 리소스를 많이 차지하는 역할을 하는 무거운 클래스 일때 객체를 한 번만 생성하여 사용한다. ex) 데이터베이스 연결 말보다 코드가 이해하기 편하니 코드를 한번 보자 class Singleton{ ptivate static class singleInstanceHolder{ private static final Singleton INSTANCE = new Sin..
2024.03.06 -
지수 백오프(Exponential Backoff)
개념 재시도는 '이기적'이다. 재시도를 시도하면 서버 시간을 더 많이 소비하기 때문이다. 재시도 요청 수 가 적을 때에는 문제가 되지 않지만 장애가 발생한 경우에는 재시도가 부하를 줄 수 있다. 이를 방지하기 위해 많이 사용하는 방식이 '지수 백오프'이다. 이 방식은 요청이 실패할 경우 문제를 해결하고, 과도한 리소스 사용을 방지하는데 유용하다. 방식 즉각적으로 재시도하는 대신 재시도 간에 일정한 수준의 대기시간을 부여한다. 이 시간을 부여하는 방식에서 일반적인 패턴이 '지수 백오프'로 매 시도 후에 대기 시간이 기하급수적으로 증가한다. 이는 매우 긴 백오프 시간으로 이어질 수 있기 때문에 최대값을 설정하여 이를 방지한다. 지터(Jitter) '지수 백오프' 를 사용하면 재시도 하는 요청이 분산되어 시스..
2024.03.05