목록전체 글 (131)
개발자공부일기
C#에서 인터페이스 (Interface)를 사용하는 이유1. 다형성 (Polymorphism) 제공인터페이스를 사용하면, 여러 클래스가 동일한 메서드를 구현하더라도 그 메서드의 실행 방식은 다르게 할 수 있습니다. 즉, 인터페이스를 통해 여러 다른 타입의 객체들이 동일한 메서드를 호출할 수 있도록 하여 다형성을 구현합니다.예를 들어:public interface IShape{ void Draw();}public class Circle : IShape{ public void Draw() { Console.WriteLine("Drawing a circle"); }}public class Square : IShape{ public void Draw() { ..
행렬의 크기를 입력받고 두 행렬의 값들을 입력받아 두 행렬을 더하는 백준문제를 다음과 같은 코드로 풀었다.#include using namespace std;int main(void){ int n=0,m=0; cin>>n; cin>>m; int A[n][m],B[n][m],C[n][m]; for(int i=0;i>A[i][j]; } } for(int i=0;i>B[i][j]; } } for(int i=0;i근데 뭔가 찜찜해서 GPT한테 피드백을 받아보니 코드를 보면 동적으로 크기가 정해지는 2차원 배열을 선언하고 있습니다. 하지만 C++에서는 가변 길이 배열(VLA, Variable Length Array)을 공식적으로 지원하지 ..
Apache HTTP Server1. 개요Apache는 1995년에 처음 출시된 오픈 소스 웹 서버로, 현재도 PHP 기반 웹사이트와 전통적인 웹 애플리케이션에서 널리 사용되고 있다.가장 큰 특징은 모듈화 시스템과 유연한 설정이다.2. 주요 특징멀티 프로세스/멀티 스레드 기반 구조MPM (Multi-Processing Module)을 사용하여 요청을 처리prefork, worker, event 등 다양한 처리 방식을 선택 가능.htaccess 지원개별 디렉터리마다 설정을 변경할 수 있는 유연한 구조공유 호스팅 환경에서 개별 사용자가 설정 변경 가능모듈화된 구조mod_php, mod_ssl, mod_rewrite 등 다양한 모듈을 추가하여 기능 확장 가능광범위한 호환성PHP, Python, Perl, CG..
크리티컬 섹션(Critical Section)이란?크리티컬 섹션(Critical Section)은 멀티스레드 또는 멀티프로세스 환경에서 공유 자원에 접근하는 코드 영역을 의미한다.멀티스레드 프로그래밍에서는 여러 개의 스레드가 동시에 동일한 공유 데이터를 수정하려고 할 때 경쟁 조건(Race Condition)이 발생할 수 있으며, 데이터 무결성이 손상될 위험이 있다.따라서, 크리티컬 섹션은 한 번에 하나의 프로세스 또는 스레드만 실행할 수 있도록 제한하여 데이터 일관성을 유지해야 한다.크리티컬 섹션이 필요한 이유여러 개의 프로세스 또는 스레드가 동시에 동일한 공유 데이터에 접근하면 예기치 않은 결과가 발생할 수 있다.동시에 두 개 이상의 스레드가 변수를 읽고 수정하면 데이터가 손상될 수 있다.크리티컬 섹..

INNER JOININNER JOIN은 교집합을 의미하며, 이를 사용하면 두 테이블의 공통값이 매칭되는 데이터만을 조회합니다.SELECT A.*, B.*FROM TableA AINNER JOIN TableB B ON A.id = B.id; OUTER JOINFULL OUTER JOIN은 합집합을 의미한다. 두 테이블간의 공통으로 매칭되는 값뿐만 아니라 매칭되지 않는 데이터까지 조회한다.SELECT A.*, B.*FROM TableA AFULL JOIN TableB B ON A.id = B.id; LEFT OUTER JOIN은 A테이블을 기준으로 결합하는 것이다.SELECT A.*, B.*FROM TableA ALEFT JOIN TableB B ON A.id = B.id; RIGHT OUTER JOIN은..
데드락(Deadlock, 교착 상태)이란?데드락(Deadlock)운영체제에서 데드락(교착상태)이란, 시스템 자원에 대한 요구가 뒤엉킨 상태입니다.즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 일컫습니다. 데드락(Deadlock)의 발생조건데드락이 발생하기 위한 조건은 크게 4가지로 말할 수 있습니다.상호 배제한 번에 프로세스 하나만 해당 자원을 사용할 수 있다. 사용 중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제될 때까지 기다려야 한다.점유 대기자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다.비선점이미 할당된 자원을 강제로 빼앗을 수 없다(비선점).순환 대기대기 프로세스의..

레드-블랙 트리(Red-Black Tree) 레드-블랙 트리는 자가 균형 이진 탐색 트리이다. 레드-블랙 트리는 다음과 같은 조건들을 만족한다.1. 모든 노드는 빨간색 혹은 검은색이다.2. 루트 노드는 검은색이다.3. 모든 리프 노드(NIL)들은 검은색이다. (NIL : null leaf, 자료를 갖지 않고 트리의 끝을 나타내는 노드)4. 빨간색 노드의 자식은 검은색이다. == No Double Red(빨간색 노드가 연속으로 나올 수 없다)5. 모든 리프 노드에서 Black Depth는 같다. == 리프노드에서 루트 노드까지 가는 경로에서 만나는 검은색 노드의 개수가 같다.삽입우리는 삽입 후 밸런싱을 하기 위해 회전을 도구로 사용했습니다. Red-Black 트리에서 우리는 밸런싱을 하기 위해 두..

B+ TreeB+ 트리는 B-트리 데이터 구조의 변형입니다. B+ 트리에서 데이터 포인터는 트리의 리프 노드에만 저장됩니다. B+ 트리 에서 리프 노드의 구조는 내부 노드의 구조와 다릅니다. 리프 노드에는 레코드(또는 이 레코드가 포함된 블록)에 대한 데이터 포인터와 함께 검색 필드의 모든 값에 대한 항목이 있습니다. B+ 트리의 리프 노드는 레코드에 대한 검색 필드에 대한 정렬된 액세스를 제공하기 위해 서로 연결됩니다. B+ 트리의 내부 노드는 검색을 안내하는 데 사용됩니다. 리프 노드의 일부 검색 필드 값은 B+ 트리의 내부 노드에서 반복됩니다.B+ 트리의 특징균형: B+ 트리는 자체 균형이 있습니다. 즉, 트리에 데이터가 추가되거나 제거되면 균형 잡힌 구조를 유지하기 위해 자동으로 조정됩니다. 이를..