목록CS지식 (25)
개발자공부일기
단일 책임 원칙 (SRP, Single Responsibility Principle)클래스(또는 모듈)는 하나의 책임만 가져야 한다.하나의 책임이란 하나의 "기능 담당 또는 변경의 이유"라고도 볼 수 있어요. 즉, 클래스가 바뀌어야 하는 이유가 하나만 있어야 합니다.여러 책임을 한 클래스에 몰아넣으면 변경이 생길 때 얽혀서 버그가 생기고 테스트도 어려워집니다.잘못된 예제class User { constructor(name, email) { this.name = name; this.email = email; } saveUserToDB() { // 사용자 정보를 DB에 저장 } sendEmail() { // 이메일 전송 }}문제점:데이터 역할(User 객체), DB 저장, 이..

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+ 트리는 자체 균형이 있습니다. 즉, 트리에 데이터가 추가되거나 제거되면 균형 잡힌 구조를 유지하기 위해 자동으로 조정됩니다. 이를..

https://javacpp.tistory.com/128 그래프(Graph)와 트리(Tree)그래프 와 트리는 컴퓨터 과학에서 객체 간의 관계를 나타내는 데 사용되는 두 가지 기본 데이터 구조입니다. 몇 가지 유사점을 공유하지만, 서로 다른 애플리케이션에 적합하게 만드는 뚜렷javacpp.tistory.com여기서 트리구조를 알아봤고 오늘은 이진트리다. 이진 트리 (binary tree) 이진 트리(binary tree)는 각각의 노드가 최대 두 개의 자식 노드를 가지는 트리 자료 구조로(그래서 이름이 이진트리다), 자식 노드를 각각 왼쪽 자식 노드와 오른쪽 자식 노드라고 한다. 트리와 이진 트리의 차이점이진 트리의 모든 노드는 차수가 2이하이다. 즉, 자식 노드의 개수가 2 이하이다. 반면 일반 트리는..

멀티프로세스와 멀티스레드 멀티프로세스와 멀티스레드는 그림처럼 프로세스가 여러개냐 스레드가 여러개냐의 한 어플리케이션에 대한 처리방식의 차이이다. 멀티 프로세스멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술을 말한다. 보통 하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러개의 프로세스를 생성하는 것이다. 멀티 프로세스 내부를 보면, 하나의 부모 프로세스가 여러 개의 자식 프로세스를 생성함으로서 다중 프로세스를 구성하는 구조이다. 한 프로세스는 실행되는 도중 프로세스 생성 시스템 콜을 통해 새로운 프로세스들을 생성할 수 있는데, 다른 프로세스를 생성하는 프로세스를 부모 프로세스(Parent Proce..

전송 제어 프로토콜(TCP)과 사용자 데이터그램 프로토콜(UDP)은 모두 전송 계층 프로토콜의 프로토콜입니다. TCP는 연결 지향 프로토콜인 반면 UDP는 UDP/IP이라고 하는 인터넷 프로토콜의 일부입니다. TCP와 달리 신뢰할 수 없고 연결 없는 프로토콜입니다. 이 글에서는 TCP와 UDP의 차이점에 대해 설명합니다.전송 제어 프로토콜(TCP)이란 무엇입니까?TCP(Transmission Control Protocol) 는 인터넷 프로토콜의 주요 프로토콜 중 하나입니다. 이는 안정적인 전송 서비스를 제공하는 데 사용되는 애플리케이션 계층과 네트워크 계층 사이에 있습니다. 이는 네트워크를 통해 서로 다른 장치 간의 메시지 교환을 돕는 통신을 위한 연결 지향 프로토콜입니다. 컴퓨터 간에 데이터 패킷을 전..