본문 바로가기

전체 글57

백준 - 최소 환승 경로(2021번) c++ https://www.acmicpc.net/problem/2021 2021번: 최소 환승 경로 첫째 줄에 역의 개수 N(1≤N≤100,000), 노선의 개수 L(1≤L≤100,000)이 주어진다. 다음 L개의 줄에는 각 노선이 지나는 역이 순서대로 주어지며 각 줄의 마지막에는 -1이 주어진다. 마지막 줄에는 출발 www.acmicpc.net 출발역에서 도착역까지 환승 최소 횟수를 구하는 문제 뭔가 bfs 또는 dfs를 사용하면 뚝딱 풀릴듯 말듯.. 아이디어를 떠오르기가 쉽지 않았다. 결국 답을 구해야 하는것은 환승 최소 횟수이므로 각 역을 기준으로 탐색을 하는 것이 아닌 노선을 기준으로 탐색을 해보기로 했다. 입력이 다음과 같을때 10 3 1 2 3 4 5 -1 9 7 10 -1 7 6 3 8 -1 1 .. 2023. 4. 11.
메모리 구조 Code - 프로그램의 코드 Data - 전역변수, static, const로 선언되어있는 변수 중 0이 아닌 값으로 초기화 되어있는 변수들을 저장 BSS - 전역변수, static, const로 선언되어있는 변수 중 0으로 초기화 또는 초기화가 되어 있지 않은 변수들을 저장 Heap - 동적 할당할 때 사용되고 런타임 시 크기가 결정 Stack - 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정 - 함수가 함수를 호출 하는 등에 따라 런타임시에도 크기가 변경될 수 있음 2023. 4. 3.
운영체제와 인터럽트 운영체제의 역할 - CPU 스케쥴링, 프로세스 관리, 메모리 관리, 디스크 파일 관리, I/O 디바이스 관리 인터럽트? - 어떤 신호가 들어왔을 때 CPU를 잠깐 정지시키는 것 인터럽트 발생 조건 - I/O 디바이스(키보드, 마우스 등), 오류(프로세스, 어떤 수를 0으로 나눌 때) 인터럽트 흐름 - 인터럽트 발생 -> 인터럽트 벡터(인터럽트 핸들러 함수가 모여 있음)로 이동 -> 인터럽트 핸들러 함수 실행 하드웨어 인터럽트 : I/O 디바이스에서 발생 소프트웨어 인터럽트(트랩) : 프로세스 오류 등으로 프로세스가 시스템콜을 호출할 때 발생 2023. 4. 3.
데이터베이스 다중화(Master-Slave) Master - Slave Master 데이터베이스 : Create, Update, Delete (쓰기 연산) Slave 데이터베이스 : Read (읽기 연산) 일반적으로 Slave 데이터베이스의 숫자가 Master 데이터베이스 보다 더 많음 why? -> 쓰기 연산보다는 읽기 연산이 더 많기 때문이다 장점 1. 더 나은 성능 Master - Slave 모델에서 모든 데이터 변경 연산은 Master 데이터베이스 서버로만 전달되고 읽기 연산은 Slave 데이터베이스 서버들로 분산된다. -> 병렬로 처리될 수 있는 쿼리의 수가 늘어나므로 성능이 좋아진다. 2. 안정성(reliability) 어떠한 이유(자연재해 등)로 데이터베이스 서버 일부가 파괴되어도 데이터의 보존이 보장된다. -> 데이터를 여러 리전에 .. 2023. 4. 2.
RDB vs NoSQL RDBMS MySQL, PostgreSQL, Oracle, ... 특징 1. 데이터를 테이블 형태로 관리하고 데이터 간의 관계가 있음 2. 데이터의 일관성과 무결성을 보장하기 위해 ACID(원자성, 일관성, 고립성, 지속성)을 가지고 있음 MySQL vs PostgreSQL 1. 데이터 타입 PostgreSQL이 더 많은 데이터 타입을 지원함 ex) 배열(ARRAY), 네트워크 주소(INET, CIDR), JSON, XML 등 2. 데이터 처리 MySQL은 빠르고 간단한 설치와 설정이 가능하며, 대규모 트랜잭션 처리에 적합하다. 반면, PostgreSQL은 데이터 무결성을 중시하며, 대규모 데이터베이스 처리, 복잡한 쿼리 및 고급 기능이 필요한 경우 적합하다. 3. 인덱스 PostgreSQL : B-tr.. 2023. 4. 2.
대용량 트래픽 처리를 위한 6가지 방법 1. 서버의 수평적 확장과 로드 밸런싱 서버를 수평적으로 확장하고 로드 밸런싱을 추가하여 트래픽을 분산시킨다. 2. 캐시 사용 캐시를 적용하여 반복적인 요청을 처리하는 데 필요한 리소스를 줄일 수 있다. 또한 캐싱된 데이터를 사용하면 요청에 대한 응답 시간 또한 단축할 수 있다. 3. CDN(Content Delivery Network) 사용 CDN을 사용해서 콘텐츠를 여러 리전에 분산하여 물리적인 거리를 줄여서 데이터 요청에 대한 응답 속도를 향상 시킬 수 있다. 4. 데이터베이스 최적화 인덱스를 추가하거나 쿼리를 최적화하여 데이터 처리 속도를 향상 시킬 수 있다. 5. DNS 캐싱 서버 사용 DNS 캐싱 서버를 사용하여 DNS 조회 요청을 줄여 응답 시간을 단축시 킬 수 있다. 6. 코드 최적화 코드.. 2023. 3. 29.