목록Develop (16)
Dazzling 개발 노트
힙 완전 이진트리 형태의 최대, 최솟값을 빠르게 찾아내는데 유용한 자료구조 최소 힙 부모 노드의 key가 자식 노드의 key보다 작거나 같은 완전 이진트리 최대 힙 부모 노드의 key가 자식 노드의 key보다 크거나 같은 완전 이진트리 JAVA로 힙 구현하기 우선순위 큐인 PriorityQueue를 통해 구현할 수 있다. 최대 힙은 내림차순 정렬이어야 하므로, Collections.reverseOrder 옵션을 추가해서 사용한다. PriorityQueue q = new PriorityQueue(Collections.reverseOrder()); 예제 문제 https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 ..
자바에서 우선순위 큐(Priority Queue)는 각 요소가 우선순위에 따라 정렬되며, 우선순위가 가장 높은 요소부터 접근할 수 있는 특별한 형태의 큐를 말한다. 이 구조는 특정 요소의 처리 순서를 우선순위에 따라 결정해야 할 때 유용하게 사용된다. 우선순위 큐의 특징 자동 정렬 기능: 우선순위 큐에 요소를 추가하면, 자동으로 우선순위에 따라 내부적으로 정렬된다. 이 정렬 과정은 힙(Heap)이라는 데이터 구조를 사용하여 효율적으로 이루어진다. 우선순위 결정 방식: 우선순위는 요소의 자연적인 순서(예를 들어, 숫자의 경우 낮은 수에서 높은 수로의 순서) 또는 개발자가 제공하는 Comparator를 통해 결정될 수 있다. 효율적인 요소 추가 및 제거: 요소를 큐에 추가하거나 우선순위가 가장 높은 요소를 ..
주요 키워드 extends 클래스 상속 시 사용 클래스 상속에만 사용, 인터페이스 상속 시 미사용 implements 인터페이스 구현 시 사용 클래스가 인터페이스의 모든 추상 메서드를 구현하도록 함 여러 인터페이스 나열 가능 클래스가 인터페이스를 구현할 때 사용, 클래스 상속 시 미사용 throws 메서드나 생성자에서 발생할 수 있는 예외 선언 시 사용 라이브러리 import java.util.*; import java.io.*; Arrays int arr[] = {10, 8,11, 2, 3, 0}; // 오름차순 정렬 Arrays.sort(arr); // 내림차순 정렬 Arrays.sort(arr, Collections.reverseIrder()); // 일부만 정렬 : 0~4만 정렬 Arrays.so..
작업 순서 : 동기와 동기 동기 여러 작업을 처리할 때 작업 순서를 보장함 비동기 여러 작업을 처리할 때 작업 순서를 보장하지 않음 작업 대기 : 블로킹과 넌블로킹 블로킹 작업 수행 시 대기할 수 있음, 작업 순서 보장 넌블로킹 작업 수행 시 대기 없음
스케줄링 스케줄링 목적 멀티 프로세스 환경에서 모든 프로세스를 공평하게 실행하는 것 CPU 사용률 : CPU를 놀리지 않고 사용하는지 판단 처리량 : 단위 시간 당 실행한 프로세스 수 응답 시간 : 요청 발생 후 응답까지 걸린 시간 반환 시간 : 로드 후 종료까지 걸린 시간 대기 시간 : 대기 큐에서 대기한 시간의 총합 스와핑 Swapping 프로세스를 통으로 메모리 영역과 저장 공간으로 옮기는 것 메모리 공간보다 많은 프로세스를 실행할 수 있음 스왑 아웃 이벤트 요청 대기중인 프로세스를 통으로 저장 공간으로 이동 스왑 인 스왑 아웃한 프로세스에서 이벤트 요청 발생 시 프로세스를 통으로 다시 메모리에 로드 비선점형 스케줄링 실행중인 프로세스가 종료될 때까지 다른 프로세스를 실행할 수 없음 FCFS 스케줄..
운영체제 OS Operating System 한정된 자원 내에서 사용자의 요청을 최대한 빠르게 처리 커널 Kernel 프로세스의 보안, 자원 관리 역할 시스템 콜 사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행하는 시스템 함수 프로세스 실행중인 하나의 프로그램, 실행의 단위 스레드 프로세스에서 실제로 실행되는 흐름의 단위 PCB Process Control Block OS가 프로세스를 제어하기 위해 저장하는 프로세스 정보 프로세스 상태, PID, 부모 PID, 자식 PID, PC, 프로세스 우선순위, 메모리 제한 저장 동시성 싱글 코어에서 여러 작업을 번갈아 처리 병렬성 멀티 코어에서 각각의 작업을 동시에 처리 멀티 프로세스 여러 프로세스를 동시에 처리하며, 독립적인 메모리를 할당한다. 멀티 스레..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/v621W/btsEj671Gi0/5KCJSOegtIHovAaCVlbsVK/img.png)
Dispatcher-Servlet의 개념 Dispatcher-Servlet이란? HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러 (Front Controller) Front Controller 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리하는 컨트롤러 MVC 구조에서 함께 사용되는 디자인 패턴 Dispatcher-Servlet의 장점 어플리케이션으로 들어오는 모든 요청을 핸들링 공통 작업 처리 컨트롤러만 구현해도 Dispatcher-Servlet이 적합한 컨트롤러로 위임 가능 Dispatcher-Servlet의 동작과정 클라이언트의 요청을 Dispatcher-Servlet이 받음 요청 정보를 통해 위임할 컨트롤러를..
프로젝트를 진행하다가 데이터베이스의 다른 테이블에 접근하는 일이 필요할 때, 관련 서비스를 통해서 레포지토리를 통해 접근, 혹은 사용중인 서비스에서 레포지토리를 바로 호출해서 접근. 이 두 가지 접근에 대해 의견이 나눠졌다. 그래서 각각의 방법이 가진 특성과 그로 인한 장단점을 조사해봤다. A 서비스가 B 서비스를 거쳐 B 레포지토리에 접근하는 방식 이 방법은 서비스 계층의 캡슐화와 추상화를 잘 유지하면서 다른 도메인의 로직에 손쉽게 접근할 수 있도록 해준다. B 서비스는 B 테이블의 비즈니스 로직을 담당하며, A 서비스는 B 서비스가 제공하는 인터페이스를 통해 필요한 로직을 재사용할 수 있다. 장점: 1) 코드 재사용성의 증가 B 테이블과 관련된 비즈니스 로직이 B 서비스에 집중되어 있어, 다른 서비스..