리팩토링을 하는 이유는 무엇일까?
요약 리팩토링은 왜 수행하나요? 리팩토링은 프로젝트에서 존재하는 코드 스멜을 식별하고 이를 개선하여 유지보수성을 향상시키는 작업입니다. 유지보수성을 향상함으로써 제품이나 시스템을 개선하거나 환경, 요구사항이 변화할 때 더 쉽게 대응할 수 있도록 만듭니다. 스멜은 무엇인가요? 스멜은 마틴 파울러의 “Refactoring” 저서에서 소...
요약 리팩토링은 왜 수행하나요? 리팩토링은 프로젝트에서 존재하는 코드 스멜을 식별하고 이를 개선하여 유지보수성을 향상시키는 작업입니다. 유지보수성을 향상함으로써 제품이나 시스템을 개선하거나 환경, 요구사항이 변화할 때 더 쉽게 대응할 수 있도록 만듭니다. 스멜은 무엇인가요? 스멜은 마틴 파울러의 “Refactoring” 저서에서 소...
서론 Mini-SpringBoot 프로젝트에서 빈 생성을 구현할 때 생성자 주입을 함께 구현해야 하는 상황이였다. 필드 주입은 모든 빈을 생성한 후 의존성을 연결해도 되지만 생성자 주입은 무조건 생성 시 의존하는 빈들을 같이 전달해야 한다. 이를 위해서는 두 가지 제약사항을 만족해야 한다. 빈을 생성할 때 의존하는 빈들은 이미 생성된 빈이여야 ...
요약 Spring은 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크이다. 기존의 JAVA EE의 EJB가 미리 정의된 기술을 구현하는 방식에서 어노테이션을 이용한 방식으로 전환함으로써 POJO의 장점을 최대한 활용할 수 있도록 하였다. 또한 DI, IoC를 도입하여 개발자는 객체 관리를 Sp...
이전 프로세스 포스트들과 이어지는 포스트입니다. 이전 포스트는 여기와 여기를 참고하세요. 요약 IPC는 무엇인가요? IPC는 협력 프로세스 사이에서 다른 프로세스와 통신을 할 수 있게 하는 운영체제 모델입니다. 협력 프로세스는 정보 공유와 계산 속도 향상 등의 이유로 다른 프로세스와 통신을 해야 합니다. 하지만 프로세스는 기본적으로 ...
요약 프림 알고리즘은 그리디 알고리즘을 기본으로 하여 최소 신장 트리를 찾을 수 있는 알고리즘이다. 이 때까지 선택된 정점과 연결된 모든 간선들 중 가장 가중치가 작은 간선을 탐욕적으로 선택한다. 이 후 가장 가중치가 작은 간선의 다른 한 정점을 선택한 후 다시 이전의 과정을 반복한다. 두 정점이 모두 선택된 간선은 포함될 수 없다는 점을 기억하면 어...
요약 멀티 프로세스는 어떤 장점을 가지나요? 멀티 프로세스 환경은 여러 프로세스를 병렬로 수행할 수 있습니다. 자식 프로세스를 생성하여 부모 프로세스와 또 다른 프로세스를 생성합니다. 이 과정에서 부모 프로세스와 자식 프로세스는 분리된 자원을 사용하므로 독립성을 유지하고 모듈화할 수 있습니다. 하지만 프로세스 사이 통신 비용과 Context...
요약 위상 정렬에서 핵심은 진입차수이다. 진입차수가 0인 노드를 큐에 넣고 방문 처리한다. 큐에서 하나를 빼고 이와 연결된 주변 노드의 진입 차수를 1 감소시킨다. 다시 1, 2번 과정을 반복한다. 이러한 위상 정렬로 그래프에 사이클이 포함되어 있는지도 확인할 수 있다. 위상 정렬의 시간 복잡도는 O(V + E)이다. 서론 백준 1...
요약 프로세스는 무엇인가요? 프로세스는 프로그램이 실행되어 메모리에 적재된 상태입니다. 이러한 프로세스는 프로세스마다 독립된 메모리 영역을 가집니다. 메모리 영역을 Stack, Heap, Data, Text 영역으로 세분화할 수 있습니다. 프로세스에 관한 여러 정보는 PCB라는 객체가 가지고 있습니다. 프로세...
요약 System Call은 무엇인가요? System Call은 사용자 프로그램이 커널의 운영체제 서비스를 호출하기 위해 사용해야 하는 API입니다. System Call은 커널이 제공하는 운영체제의 서비스를 직접 사용자가 조작하는 일을 방지합니다. 이를 통해 사용자는 운영체제 서비스의 세부 구현을 알 필요 없고 운영체제 서비스를 안전하게 사...
요약 운영체제는 무엇인가요? 유저와 컴퓨터를 중개하는 프로그램으로 사용자는 운영체제로 컴퓨터를 편리하게, 효율적으로 사용할 수 있습니다. 유저와 하드웨어를 중개하기 위해 커널이라는 핵심 요소를 제공하고 있습니다. 그 외 사용자 편의를 위해 시스템 프로그램, 응용 프로그램, 미들웨어를 같이 제공합니다. 서론 운영체제가 어떤 종류가 있는지 대부...