CS

· CS/Linux
카프카(Kafka)란?분산 이벤트 스트리밍 플랫폼. 주로 대용량의 실시간 로그 데이터를 처리하는 데 사용된다. ✅ 특징분산 시스템 : 여러 브로커(Broker)로 구성되어 장애에 강함고성능, 확장성 : 초당 수백만 개의 메시지를 처리 가능내구성 : 데이터를 디스크에 저장하여 안정적 유지실시간 스트리밍 : 대용량 데이터를 빠르게 처리 ✅ 주요 구성 요소프로듀서 (Producer) : 메시지를 생성하여 카프카로 전송하는 역할컨슈머 (Consumer) : 메시지를 구독하여 가져가는 역할브로커 (Broker) : 카프카 서버로, 메시지를 저장하고 분배하는 역할토픽 (Topic) : 메시지가 저장되는 논리적 분류 단위파티션 (Partition) : 토픽을 나누어 병럴 처리 가능하게 하는 단위컨슈머 그룹 (Cons..
· CS/Linux
NFS란?네트워크를 통해 원격 파일 시스템을 마치 로컬 디렉토리처럼 사용할 수 있도록 하는 프로토콜주로 리눅스/유닉스 시스템에서 많이 사용된다. 프론트엔드 설정 (서버)NFS 패키지 설치apt install nfs-kernel-server  이미지 파일을 업로드할 디렉토리를 만들고, 권한을 777로 설정해줘서 모두 접근할 수 있고 읽기 쓰기를 할 수 있게 설정해준다.mkdir imageschmod 777 /var/www/html/images 설정 파일에서 접근 권한 설정vi /etc/exports NFS 서버에서 공유할 디렉토리를 정의하는 설정이다.NFS를 통해 특정 네트워크(10.10.10.0/24)에 /var/www/html/images 디렉토리를 공유하는 설정/var/www/html/images [..
AVL 트리란?균형 이진 탐색 트리 (BST)의 한 종류로, 각 노드의 균형을 유지하여 탐색, 삽입, 삭제 연산을 O(log N) 시간에 수행할 수 있는 자료구조 균형 이진 탐색 트리이기 때문에 각 노드의 왼쪽 서브 트리와 오른쪽 서브 트리의 높이 차이가 -1, 0, 1 사이로 유지된다.트리가 한쪽으로 치우치는 것을 방지하여 탐색, 삽입, 삭제 연산의 성능을 보장한다. BF = (왼쪽 서브트리의 높이 - 오른쪽 서브 트리의 높이)의 절댓값모든 노드의 왼쪽, 오른쪽 서브 트리의 높이 차이가 최대 1이다.BF가 2 이상이 되면 회전을 통해 균형을 잡는다.AVL 트리 연산, 시간 복잡도삽입, 삭제 모두 일반적인 BST 삽입, 삭제를 수행한다.삽입, 삭제 후 BF를 계산하고, BF가 -1, 0, 1 범위를 벗어..
최소 힙 트리란?완전이진트리로 구현된 자료구조부모 노드가 자식 노드보다 작은 값을 가지는 트리   완전이진트리란?더보기완전이진트리란?각 노드가 최대 2개의 자식 노드를 갖는 트리 구조마지막 레벨을 제외한 모든 노드는 채워져 있어야 한다.마지막 레벨 노드는 왼쪽 자식 노드만 갖고 있거나, 왼쪽 오른쪽 자식 노드를 모두 가지고 있어야 한다.노드를 삽입할 때, 최하단의 왼쪽 자식 노드로 삽입해야 한다. 왼쪽에 보이는 이진 트리는 마지막 레벨을 제외한 모든 노드가 채워져 있고, 마지막 레벨 노드는 왼쪽 자식만 갖고 있거나 왼쪽, 오른쪽 자식 노드를 모두 갖고 있기 때문에 완전이진트리이다. 오른쪽에 보이는 이진 트리는 3의 자식 노드가 오른쪽 자식 노드밖에 없기 때문에 완전이진트리가 아니다.  삽입 과정 [8, ..
이진 탐색 트리 (Binary Search Tree)란?정렬된 데이터를 효율적으로 저장하고 검색하기 위해 사용되는 이진 트리 자료 구조노드 구조각각의 노드는 3가지의 정보를 가진다.값(Value) : 노드에 저장된 데이터왼쪽 자식 (Left Child) : 현재 노드보다 작은 값을 가진 노드오른쪽 자식 (Right Child) : 현재 노드보다 큰 값을 가진 노드 정렬 규칙왼쪽 하위 트리에 있는 모든 노드의 값은 부모 노드의 값보다 작아야 한다.오른쪽 하위 트리에 있는 모든 노드의 값은 부모 노드의 값보다 커야 한다.왼쪽 및 오른쪽 하위 트리도 각각 이진 탐색 트리여야 한다.각 노드의 최대 차수는 2이다. 중복된 값일반적으로 이진 탐색 트리에서는 중복된 값을 허용하지 않는다.     위의 이진 탐색 트리..
· CS/OOP
객체지향 프로그래밍의 5가지 주요 원칙은 소프트웨어 설계의 품질을 높이고 유지보수성을 강화하기 위한 지침이다.SRP, OCP, LSP, ISP, DIP 5가지가 있다. 단일 책임 원칙 (SRP, Single Responsibility Principle) 하나의 클래스는 단 하나의 책임만 가져야 한다. (= 클래스) 목적 : 클래스를 변경해야 하는 이유가 단 하나뿐이어야 한다.장점 : 클래스의 역할이 명확해지고 코드의 가독성과 유지보수성이 향상된다. class Person { void cook(); //요리하기 - 요리사 void plate(); //플레이팅 - 요리사 void order(); //주문하기 - 손님 void pickup(); //픽업하기 - 손님 void eat(); ..
· CS
싱글톤 패턴하나의 인스턴스만 생성하고, 이 인스턴스를 전역적으로 접근 가능하게 만들어 사용하는 디자인 패턴 특징인스턴스가 하나만 존재 : 애플리케이션 전체에서 동일한 인스턴스를 사용글로벌 접근 : 전역적으로 동일한 객체에 접근할 수 있음생성 제한 : 외부에서 직접 객체를 생성하지 못하도록 제한 장점전역 상태 관리 : 하나의 객체를 공유하여 상태를 일관되게 유지할 수 있음리소스 절약 : 하나의 객체만 생성되므로 메모리와 자원을 절약할 수 있음글로벌 접근 : 애플리케이션 전역에서 동일한 인스턴스에 접근이 가능 단점글로벌 상태 관리 문제 : 잘못 사용하면 프로그램이 불필요하게 복잡해질 수 있음멀티스레드 환경에서의 문제 : 올바르게 구현되지 않으면 Thread-safe를 보장하지 못할 수 있음테스트 어려움 : ..
· CS
Layered 패턴애플리케이션을 기능별 계층(Layer)으로 나누어 설계하는 소프트웨어 설계 패턴 애플리케이션의 복잡성을 줄이고, 유지보수성과 재사용성을 높이는 데 유용하다.주로 MVC 패턴과 함께 사용되며, 대규모 애플리케이션 개발에서 자주 사용된다.    장점역할 분리각 계층이 특정한 책임을 가지므로 유지보수성이 향상된다.재사용성동일한 비즈니스 로직이나 데이터 접근 코드 유연성계층별로 독립적으로 변경 가능Presentation Layer사용자와 상호작용하는 계층데이터를 화면에 표시하거나 사용자의 입력을 처리한다.JSP, HTML, JavaScript, React와 같은 UI 기술  Application Layer (Service Layer)비즈니스 로직을 처리하는 계층Presentation Layer..
· CS
MVC 패턴MVC (Model-View-Controller) 패턴은 애플리케이션을 Model(모델), View(뷰), Controller(컨트롤러) 라는 세 가지 주요 컴포넌트로 분리하여 설계하는 소프트웨어 디자인 패턴이다.  코드의 유지보수성, 확장성을 높이고, 책임 분리를 통해 개발과 협업을 효율적으로 만든다.  Model (데이터)클라이언트가 보내는 무언가. 앱이 포함해야 할 데이터가 무엇인지 정의애플리케이션의 데이터와 비즈니스 로직을 관리한다.데이터베이스와의 상호작용, 상태 정보 관리, 데이터 처리 로직이 포함된다.DAO (Data Access Object)- DB에서 데이터를 CRUD 처리  View (HTML 페이지)클라이언트에게 결과를 알려주는 처리앱의 데이터를 보여주는 방식. 사용자에게 출..
· CS/OOP
추상화= 공통점 객체의 복잡한 내부 동작이나 구조를 감추고, 사용자에게는 필요한 기능이나 동작만 노출하는 것 추상 메소드메소드는 메소드인데 구현 부분이 없고 선언 부분만 있는 메소드public void turnOn();public void turnOff();public void setVolume(int volume);  추상 클래스 클래스는 클래스인데 추상 메소드를 포함한 클래스  추상 클래스 선언은 abstract 키워드를 사용하고, 사용은 extends 키워드를 통해 사용한다.// 추상 클래스public abstract class Animal { abstract void makeSound(); void eat() { System.out.println("This animal ea..
셰욘
'CS' 카테고리의 글 목록