- 컴퓨터의 구성2024-03-28 22:30:12컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 나누어진다. 하드웨어 : 컴퓨터를 구성하는 기계적 장치 소프트웨어 : 하드웨어의 동작을 지시하고 제어하는 명령어 집합 하드웨어 중앙처리장치(CPU) 기억장치 : RAM, HDD 입출력 장치 : 마우스, 프린터 소프트웨어 시스템 소프트웨어 : 운영체제, 컴파일러 응용 소프트웨어 : 워드프로세서, 스프레드시트 하드웨어에 대해 살펴보자 하드웨어는 중앙처리장치(CPU), 기억장치, 입출력장치로 구성되어 있다. 이들은 시스템 버스로 연결되어 있으며, 시스템 버스는 데이터와 명령 제어 신호를 각 장치로 실어 나르는 역할을 한다. 중앙처리장치(CPU) 인간으로 따지면 두뇌에 해당하는 부분 주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고 명령어의 수행 순서를 제어함..
- DB Soft Delete VS Hard Delete2024-03-20 08:52:03Soft Delete 와 Hard Delete 란? 데이터베이스에서 데이터를 삭제하는 방법은 크게 두 가지로 나뉩니다. Hard Delete 우리가 잘 아는 Delete 문을 사용하여 실제 row를 삭제하는 방법 Soft Delete 삭제 표시(deleted_at 필드에 현재 시간을 넣어주는 방법 등)를 해줌으로써 삭제된 필드라는 의미를 부여하는 방법 이 글을 쓴 이유 데이터간 관계있는 경우, join을 계속해서 해야하는 경우 Soft Delete를 이용하는 경우가 종종 있습니다. 다음 내용은 이벤트 티케팅 서비스에서 Soft Delete로 인하여 장애를 겪었던 이야기입니다. 좌석이 결제/예약이 되면 deleted_at으로 예약됨을 표시하고 있는 서비스에서 예약된 좌석을 뽑아내어 다시 재저장하는 DB ..
- [실전 알고리즘] 큐2024-01-12 10:38:42정의와 성질 저번에 정리한 스택이랑 이번에 배울 큐랑 비슷한게 많다. 큐는 한쪽 끝에서 원소를 넣고 반대쪽 끝에서 원소를 뺄 수 있는 자료구조이다. 스택에서는 먼저 들어간 원소가 나중에 나왔는데 큐에서는 먼저 들어간 원소가 먼저 나오게 된다. 스택을 FILO(First In Last Out)이라고 한 것과 비슷하게 큐를 FIFO(First In First Out)이라고 하기도 한다. 큐의 성질 원소의 추가가 O(1) 원소의 제거가 O(1) 제일 앞/뒤의 원소 확인이 O(1) 제일 앞/뒤가 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능 스택에서는 보통 원소가 추가되고 제거되는 곳을 top이라고 부르고, 원소가 위 아래로 배치된 것으로 생각을 많이 하는데 큐에서 추가되는 곳을 rear, 즉 뒤 쪽이라고..
- [실전 알고리즘] 스택2024-01-10 13:48:071. 정의와 성질 자료구조에서의 스택은 한쪽 끝에서 원소를 넣거나 뺄 수 있는 자료 구조이다. 스택은 구조적으로 먼저 들어간 원소가 제일 마지막에 나오는데, 이런 의미로 FILO(First In Last Out) 자료구조라고 부르기도 한다. 참고로 큐나 덱도 스택처럼 특정 위치에서만 원소를 넣거나 뺄 수 있는 제한이 걸려있다. 스택의 성질 원소의 추가가 O(1) 원소의 제거가 O(1) 제일 상단의 원소 확인 O(1) 제일 상단이 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능 스택에서는 제일 상단이 아닌 나머지 원소들의 확인/변경 기능이 제공되지 않는다. STL stack에서도 이 기능은 없다. 2. 기능과 구현 const int MX = 1000005; int dat[MX]; int pos = 0;..
- [실전 알고리즘] 연결 리스트2024-01-08 16:41:01연결 리스트가 무엇인지 알아보고, 구현도 해볼 것이다. 1. 정의와 성질 연결 리스트 정의 연결 리스트란 원소들을 저장할 때 그 다음 원소가 있는 위치를 포함시키는 방식으로 저장하는 자료구조이다. 원소들은 배열과는 다르게 이곳 저곳 흩어져있다. 연결 리스트 성질 1. k번째 원소를 확인/변경하기 위해 O(k)가 필요 - 배열과 다르게 공간에 원소들이 연속해서 위치하고 있지 않기 때문 2. 임의의 위치에 원소를 추가/임의 위치의 원소 제거는 O(1) - 배열과 비교앴을 때 큰 차이가 있는 성질이고, 연결 리스트의 큰 장점이다. 3. 원소들이 메모리 상에 연속해있지 않아 Cache hit rate가 낮지만 할당이 다소 쉬움 - 메모리 상에 데이터들이 연속해있지 않으니까 Cache hit rate가 낮지만 할..
- [실전 알고리즘] 배열2024-01-03 14:30:17지금까지 프로그래밍 언어의 관점에서 배열을 다뤘었기 때문에 자료구조로써의 배열을 익힐 필요가 있어 공부하였다. 1. 정의와 성질 배열의 정의 배열이란 메모리 상에 원소를 연속하게 배치한 자료구조를 말한다. C++에서는 이미 선언된 배열의 길이를 변경하는게 불가능하지만, 자료구조로써의 배열에서는 길이를 마음대로 늘리거나 줄일 수 있다고 생각하겠다. 배열의 성질 1. O(1)에 K번째 원소를 확인/변경 가능 - 시작 주소에서 k칸 만큼 오른쪽으로 가면 되기 때문 2. 추가적으로 소모되는 메모리의 양(=overhead)가 거의 없음 - 다른 자료구조와는 다르게 추가적으로 소모되는 메모리 양이 거의 없슴 3. Cache hit rate가 높음 - 메모리 상에 데이터들이 붙어있으니까 Cache hit rate가 ..