[DB] Oracle SGA (System Global Area) - Shared Pool
·
DB, SQL
Shared PoolShared Pool은 Oracle 데이터베이스 SGA 내 위치한 메모리 영역입니다. 모든 사용자 프로세스가 공유하는 캐시메모리로, DB 인스턴스 시작 시 할당되며 인스턴스가 종료될 때까지 유지됩니다. 비유를 통해 좀 더 쉽게 이해해 볼까요? 저는 패스트푸트점 롯x리아에서 아르바이트를 한 경험이 있습니다. Shared Pool이 없는 상황처음 아르바이트 할 때는 레시피가 익숙치 않아서 버거 주문이 들어올 때마다 레시피를 보고 만들었습니다. 그러다 보니 주문이 계속 밀리고 손님들에게 햄버거가 나가는 시간이 지체됐습니다. Shared Pool이 있는 상황한 달 정도 일을 하다 보니 레시피가 머릿속에 다 들어와 버린 상태가 됐습니다. 주문도 밀리지 않고, 주말 교회나 초등학교 등 점심 단..
[DB] Oracle SGA (System Global Area) - Database Buffer Cache
·
DB, SQL
2025.05.15 - [DB, SQL] - [DB] Oracle Database 구조 [DB] Oracle Database 구조최근 Oracle을 학습해야 할 일이 생겨, Oracle학습 목적으로 작성해 보겠습니다..! 지금까지 진행했던 간단한 프로젝트들에서는 SpringBoot + JPA + MySQL를 주로 사용했는데, 그러다 보니 복잡한 데이터를ejk5148.tistory.comSGA를 알기 전에 이전에 작성한 Oracle DB의 큰 구조를 보고 오면 좀 더 이해가 쉬울 거예요!Database Buffer Cache의 구조별 역할과 필요성DBC는 크게 네 가지의 풀로 나뉘게 됩니다.Default Pool, Keep Pool, Recycle Pool, nK Pool DBC를 왜 하나의 큰 풀이 아닌..
[DB] Oracle Database 구조
·
DB, SQL
최근 Oracle을 학습해야 할 일이 생겨, Oracle학습 목적으로 작성해 보겠습니다..! 지금까지 진행했던 간단한 프로젝트들에서는 SpringBoot + JPA + MySQL를 주로 사용했는데, 그러다 보니 복잡한 데이터를 조회할 때 필요한 SQL도 생각이 안 나네요 전 세계적으로 많이 사용하는 Oracle Database에 대해 좀 더 심도 있게 학습하고자 합니다. + SQL까지오라클 데이터베이스의 구조클로드가 그렸는데 잘 그렸죠? 각 구조들을 알아보자면, 1. 메모리구조SGA (System Global Area)모든 사용자가 함께 사용하는 공유 메모리입니다.Database Buffer Cache에서는 데이터 블록을 캐싱합니다.Shared Pool에서는 SQL 문장과 실행 계획을 정리합니다.Redo..
[운영체제] 교착상태 (DeadLock)
·
운영체제
교착상태(DeadLock)란?운영체제에서 교착상태라 함은 쉽게 정의한다면 시스템 자원에 대한 요구가 뒤엉킨 상태라고 할 수 있다. 즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 말한다. 식사하는 철학자 문제이 문제로 교착상태를 설명할 수 있다.모든 철학자가 동시에 포크를 집어 식사를 하면 어떤 철학자도 식사를 할 수 없는 상황이 발생한다.모든 철학자가 왼쪽 포크를 집어 들면 모두가 오른쪽 포크를 집어 들 수 없기 때문이다. 다시 말해 모든 철학자는 다른 철학자가 포크를 내려놓을 때까지 기다리게 된다. 철학자는 프로세스나 스레드로, 자원은 포크로 빗대어 표현할 수 있다. 생각하는 행위 자체는 기다리는 것에 비유할 수 있다. 발생조건1. 상호 배제..
[자료구조] 배열 Array
·
자료구조
배열이란?같은 타입의 데이터 요소들을 연속된 메모리 공간에 저장하는 자료구조이다.각 요소들은 index를 통해 접근할 수 있다. 배열의 주요 특징배열의 각 요소는 0부터 시작하는 인덱스 번호를 갖는다. -> 첫 번째 원소가 저장된 위치에서 X번째 떨어진 원소에 접근하겠다는 의미와 같다. offset 개념으로 사용된다. 배열의 요소들은 메모리 상에서 연속적으로 할당된다. -> 인덱스를 통한 빠른 접근이 가능한 이유! 배열 선언 시, 기본적으로 크기는 고정된다. 하나의 배열은 일반적으로 같은 데이터 타입의 요소만 저장할 수 있다.  배열의 주요 연산에 대한 시간복잡도는 다음과 같다.1. 접근: O(1), 인덱스를 통한 직접 접근2. 검색: O(n), 정렬되지 않은 배열에서의 선형 탐색3. 삽입: O(n), ..
[자료구조] 연결리스트
·
자료구조
연결리스트를 알아보기 전에 먼저 [자료구조 Array]의 시간복잡도를 간단히 알아보자. 1. 접근찾고자 하는 값이 몇 번째 인덱스인지 알고 있다면 O(1)의 속도로 찾을 수 있다.2. 검색인덱스를 알지 못할 때 원하는 값을 찾기 위해서는 배열을 모두 탐색해야 한다. 따라서 시간복잡도는 O(n)이 된다.3. 추가데이터들이 순차적으로 저장되어 있기 때문에 맨 처음이나 그 이후 데이터가 추가될 경우 데이터들을 전부 한 칸씩 뒤로 미뤄야 한다.  이때 시간복잡도는 O(n)이 되고, 만약 배열에 공간이 남아있을 때 데이터를 맨 뒤에 추가한다면 이 때는 O(1)이 된다.4. 삭제데이터 추가와 경우가 같다. 삭제하려는 데이터의 위치가 맨 뒤가 아니라면 O(n)의 시간복잡도를 갖는다.삭제하려는 데이터의 위치가 만약 맨..
[Docker] AWS EC2 Ubuntu에 Docker 설치하기
·
DevOps
1. 패키지를 최신화시켜준다.sudo apt-get updatesudo apt-get upgrade2. 도커 설치에 필요한 패키지를 설치한다.apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-commonapt-transprot-https: Https를 통해 패키지를 다운로드할 수 있게 해주는 패키지이다. Docker를 다운로드하기 위해선 Https를 사용해야 하기 때문!ca-certificates: SSL 인증서 관련 패키지로 보안 연결을 위한 CA 인증서를 제공한다.curl: cli에서 데이터를 전송하고 다운로드하는 도구이다. Docker GPG 키를 다운로드하는 데 사용한다.gnupg-agen..
[JAVA] 자바의 default method
·
JAVA
default method란인터페이스는 기능에 대한 선언만 할 수 있기 때문에 메서드의 구현부가 있을 수 없다. 하지만!default method는 자바 8부터 도입된 인터페이스의 기능으로 인터페이스 내에서 구현체를 제공하는 메서드이다. 인터페이스에 새로운 기능을 추가하면서도 하위 호환성을 유지할 수 있다 → 기존 인터페이스에 메서드를 추가해도 구현 클래스들이 해당 메서드를 구현할 필요가 없음.default 키워드를 사용하여 선언하며 메서드 구현부를 가진다.구현 클래스는 default method를 그대로 사용하거나 오버라이드하여 재정의 할 수 있다.interface Vehicle { void accelerate(); // default method default void honk..
Spring Security + jwt + redis 로그인 흐름
·
BackEnd
동작과정 먼저 jwt와 redis를 이용한 로그인 프로세스가 어떻게 되는지 알아보자.1. 클라이언트는 서버에게 로그인 요청을 보낸다.2. 서버는 ID/PW를 검증 후 Access Token + Refresh Token을 발급하고 Redis에 Refresh Token을 저장한다.3. 클라이언트는 API요청을 할 때 Access Token을 헤더에 담아서 요청하게 된다.4. 서버는 API응답 또는 Access Token 만료 응답을 내려준다.5. 클라이언트는 재발급 요청을 한다. (Request Body에 Access Token과 Refresh Token을 담아 보낸다.)6. 서버는 토큰 검증 후 새로운 Access Token과 Refresh Token을 발급한다. 왜 레디스인지?레디스는 메모리 기반 (No..
[백준] 18428 감시 피하기 - JAVA
·
Algorithm
백준 18428 감시 피하기 Gold V - JAVA 📌https://www.acmicpc.net/problem/18428문제 설명문제 풀이접근 💡2차원 배열에서 주어지는 정보는 선생님의 위치와 학생의 위치이다. 장애물을 빈 칸에 세 개를 놓았을 때 감시를 피할 수 있는 경우를 찾아야 한다. 장애물을 3개 놓는 경우는 조합으로 생각하면 된다. 빈칸의 좌표를 리스트로 받아서 그 리스트 안에서 조합을 뽑아 모든 경우의 수를 탐색할 수 있다.이 때 빈칸의 최소 갯수는 3개이고 최대 갯수는 선생님의 최소 수는 1, 학생의 최소 수는 1 이다. N의 최댓값이 6이므로 6 * 6 = 36, 36 - 2 = 34,  34C3의 경우의 수가 생긴다. 이는 5,984의 경우의 수가 생기며 이는 완전탐색 하기에 충분한..