캐시 전략엔 어떤 게 있는지 살펴보도록 하겠다. [읽기 전략]Cache Aside : 요청이 먼저 들어오면 서버에서 캐시에 데이터가 있는지 확인 후에 없다면 서버가 DB에서 데이터를 불러와 이를 캐시에 저장하는 방식이다. 이러한 과정을 애플리케이션이 제어하는 방식이다. Read Through : 요청이 먼저 들어오면 서버에서 캐시에 데이터가 있는지 확인 후에 없다면 캐시가 DB에서 데이터를 불러와 이를 캐시에 저장하는 방식이다. 이러한 과정을 캐시가 책임지도록 설정하는 방식이다. [쓰기 전략]Write Around Aside : 요청이 들어오면 DB에만 데이터를 저장하는 방식 Write Through : 캐시와 DB에 동시에 데이터를 저장하는 방식 Write Back :..
1. 메모리 구조메모리 참조값의 할당에 관한 부분을 얘기하기 전에 메모리 영역에 대해서 얘기를 해야 한다. 위 사진처럼 메모리 구조는 크게 코드, 데이터, 힙, 스택 영역로 분류된다. 메모리 구조코드(텍스트) 영역프로그램의 실행 코드가 저장되는 영역읽기 전용으로 프로그램 명령어가 기계어 형태로 저장됨컴파일 시 결정되며 변경되지 않음데이터 영역전역 변수, 정적(static) 변수가 저장되는 영역프로그램 시작 시 할당되고 종료 시 해제됨초기화된 데이터와 초기화되지 않은 데이터로 구분될 수 있음스택 영역함수 호출과 관련된 정보(지역 변수, 매개변수, 반환 주소 등) 저장함수 호출 시 할당되고 함수 종료 시 해제됨컴파일 시 크기가 결정되는 고정 크기 메모리 영역LIFO(Last In First Out) 구조로..
문제 하지만 상근이는 새로운 비행기를 무서워하기 때문에, 최대한 적은 종류의 비행기를 타고 국가들을 이동하려고 한다. 이번 방학 동안의 비행 스케줄이 주어졌을 때, 상근이가 가장 적은 종류의 비행기를 타고 모든 국가들을 여행할 수 있도록 도와주자. 상근이가 한 국가에서 다른 국가로 이동할 때 다른 국가를 거쳐 가도(심지어 이미 방문한 국가라도) 된다. 입력 첫 번째 줄에는 테스트 케이스의 수 T(T ≤ 100)가 주어지고, 각 테스트 케이스마다 다음과 같은 정보가 주어진다. 첫 번째 줄에는 국가의 수 N(2 ≤ N ≤ 1 000)과 비행기의 종류 M(1 ≤ M ≤ 10 000) 가 주어진다. 이후 M개의 줄에 a와 b 쌍들이 입력된다. a와 b를 왕복하는 비행기가 있다는 것을 의미한다. (1 ≤ a, b..
출처: 유튜브 나동빈 1. 트리의 개념 루트노드 : A 단말노드 : 자식이 없는 노드로는 G, E, F 크기 : 모든 노드의 갯수이므로 7 깊이 : B:1 C:1 D:2 E:2 F:2 G:3 높이 : 깊이 중 최댓값이므로 3(G) 차수 : 자식이 있는 방향으로의 간선 갯수 A의 차수 : B,C 가 있으므로 2 B의 차수: D,E가 있으므로 2 C의 차수 : F가 있으므로 1 D 의 차수 : G가 있으므로 1 E 의 차수 : 없으므로 0 F 의 차수 : 없으므로 0 G 의 차수 : 없으므로 0 2. 이진탐색트리 2-1 이진탐색트리 설명 *부모노드 기준 왼쪽 자식이 부모보다 작고, 오른쪽 자식이 부모보다 큰 트리 즉 왼쪽 자식 < 부모 < 오른쪽 자식 17 < 30 오른쪽 노드로 이동 찾으려는 37은 부모인..
문제 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 여기서 안정적인 문자열을 만들기 위한 최소 연산의 수를 구하려고 한다. 안정적인 문자열의 정의란 다음과 같다. 빈 문자열은 안정적이다. S가 안정적이라면, {S}도 안정적인 문자열이다. S와 T가 안정적이라면, ST(두 문자열의 연결)도 안정적이다. {}, {}{}, {{}{}}는 안정적인 문자열이지만, }{, {{}{, {}{는 안정적인 문자열이 아니다. 문자열에 행할 수 있는 연산은 여는 괄호를 닫는 괄호로 바꾸거나, 닫는 괄호를 여는 괄호로 바꾸는 것 2가지이다. 입력 입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가..
문제 항승이는 품질이 심각하게 나쁜 수도 파이프 회사의 수리공이다. 항승이는 세준 지하철 공사에서 물이 샌다는 소식을 듣고 수리를 하러 갔다. 파이프에서 물이 새는 곳은 신기하게도 가장 왼쪽에서 정수만큼 떨어진 거리만 물이 샌다. 항승이는 길이가 L인 테이프를 무한개 가지고 있다. 항승이는 테이프를 이용해서 물을 막으려고 한다. 항승이는 항상 물을 막을 때, 적어도 그 위치의 좌우 0.5만큼 간격을 줘야 물이 다시는 안 샌다고 생각한다. 물이 새는 곳의 위치와, 항승이가 가지고 있는 테이프의 길이 L이 주어졌을 때, 항승이가 필요한 테이프의 최소 개수를 구하는 프로그램을 작성하시오. 테이프를 자를 수 없고, 테이프를 겹쳐서 붙이는 것도 가능하다. 입력 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 ..
오랜만에 데이터베이스에 접하게 됐는데 기억이 아니 않아 포스팅을 해보도록 하겠습니다 ERD 란 Entity Relationship Diagram, 즉 엔터티의 관계를 그린 다이어그램 : 1. 식별 VS 비식별 1)식별 관계 (실선) : 부모 테이블의 기본키를 자식 테이블이 가지고 있으며 이를 기본키로 사용하는 경우 특징: 자식 엔터티가 부모 엔터티의 기본 키의 일부로 식별됩니다. 일대일 또는 일대다 관계일 수 있습니다. 예시: 부모 엔터티가 "회원"이고, 자식 엔터티가 "주문"일 때, 주문은 특정 회원을 식별하는 회원 ID를 포함할 수 있습니다. 2)비식별 관계(점선) :부모 테이블의 기본키를 자식테이블이 가지고 있지만 이를 기본키로 사용하지 않을 때 특징: 자식 엔터티는 부모 엔터티의 기본 키에 대한 ..
package hello.core.singleton; import hello.core.Beanfind.ApplicationContextExtendsFindTest; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import static org.junit.jupiter.api.Assertions.*; class StatefulServiceTest { @Tes..
1. 운영체제 개념 하드웨어 위에 설치돼있는 하드웨어 계층과 다른 소프트위어 계층을 연결해주는 소프트웨어 계층 컴퓨터 자원 관리 사용자가 컴퓨터를 사용할 수 있는 환경 제공(인터페이스) 컴퓨터 자원은 한정적 2. 운영체제 목적 처리능력 향상 : os 는 자원관리를 통해 일정시간 동안 더 많이 시스템이 일을 처리할 수 있도록 컴퓨터 성능을 향상 반환시간 : os는 사용자가 시스템에게 요청한 일을 처리하는데 소요되는 시간을 단축 사용가능도 향상 : 사용가능도란 시스템 자원을 얼마나 빨리 사용 가능한가를 의미 신뢰도 향상 : 신뢰도란 시스템이 요청받은 일을 정확하게 푸는지를 의미 3. cpu 프로그램을 수행하는데 필요한 연산 수행 프로세서라고 불리기도 함 레지스터 + 캐쉬 4. 메모리 구조 휘발성인 주 기억장..
복잡도 시간 복잡도 : 알고리즘을 위해 필요한 연산의 횟수 공간 복잡도 : 알고리즘을 위해 필요한 메모리 양 복잡도 표현 빅오 표기법에 의해 표현 가장 빠르게 증가하는 항만을 고려하는 표기법 함수의 상한만을 표기 Ex : $x^3 + y^2 + 100$ 를 빅오표기법으로 표현하면 가장 큰 차수의 항만 남기므로 $O(N^3)$ 으로 표현