분류 전체보기

·알고리즘
본 게시글은 정렬 알고리즘 중 힙 정렬에 대한 이해를 증진하기 위한 글로, 요즘 IT의 기술 아티클(링크)을 참고했습니다. 자료 구조는 데이터를 효율적으로 저장, 검색, 삭제할 수 있도록 설계된 구조나 방법을 의미합니다. 이 중, 힙(heap)은 정렬, 우선순위 큐, 스케줄링 같은 다양한 알고리즘에서 활용되는 자료 구조입니다. 1. 힙의 정의 힙은 완전 이진 트리(Complete Binary Tree)의 일종으로, 부모 노드와 자식 노드 간에 특정한 조건을 만족하는 자료구조를 말합니다. ※ 완전 이진 트리란 부모 노드 밑에 자식 노드가 최대 2개까지 있을 수 있고, 마지막 레벨을 제외한 모든 레벨에 노드가 완전히 채워져 있는 트리 구조를 의미합니다. 힙의 기본 용어는 다음과 같습니다. 부모 노드, 자식 ..
논리적 데이터베이스 설계란 현실 세계의 업무를 분석하여 이를 약속된 표기법을 사용하여 개념적 모델(ERD)로 표현하는 과정으로, 데이터 모델링이라고도 부릅니다. 데이터베이스 용어 모델링 용어 테이블 엔티티 컬럼, 열 속성 튜플, 행 인스턴스 기본키 주 식별자 외래키 외래 식별자 용어 엔티티 (entity) 현실 세계를 데이터 관점에서 모델링할 때 사용되는 핵심 개념 업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 관리할 필요가 있는 유형, 무형의 사물(개체) ex. 회원, 상품, 쇼핑카트 속성 (attribute) 엔티티에서 관리해야 할 최소 단위의 정보 항목 엔티티는 하나 이상의 속성을 포함합니다. 관계 (relationship) 두 엔티티 사이의 관련성으로, 이는 상호 공유하는 속성이 ..
데이터베이스는 데이터의 집합으로, 파일 형태로 산재했던 데이터, 정보들을 하나로 모아 이를 관리하고 사용자와 데이터 사이에 인터페이스 역할을 할 수 있는 S/W를 만들기 위해 정립된 개념입니다. 특징 데이터 독립성 지원 데이터베이스 시스템에서는 사용자 혹은 응용 프로그램이 직접 데이터베이스에 접근할 수 없고 반드시 DBMS를 통해서만 접근이 가능합니다. 데이터베이스 내에 있는 데이터의 물리적, 논리적 변화가 응용 시스템에 영향을 미치지 않도록 하여 독립성을 보장합니다. 데이터 무결성 유지 데이터베이스 시스템은 데이터베이스 내에 저장될 데이터에 대하여 데이터의 타입, 길이, 값의 범위 등에 대한 정보를 갖고 있습니다. 이를 위반하는 데이터가 들어올 경우 처리를 거절함으로써 데이터의 무결성을 지원합니다. 데..
·CS/운영체제
LVM(Logical Volume Manager)은 리눅스에서 디스크 파티션 및 논리 볼륨을 효과적으로 관리하기 위한 시스템입니다. LVM을 사용하면 논리적인 디스크 공간을 만들고 필요에 따라 크기를 조절하며, 여러 개의 물리적 디스크를 하나의 논리적인 공간으로 통합하는 등의 기능을 수행할 수 있습니다. LVM의 구조를 나타내는 용어는 다음과 같습니다. 물리적 볼륨 : 물리적 디스크나 디스크 파티션 등을 LVM이 인식할 수 있는 형태로 설정한 것입니다. 볼륨 그룹 : 하나 이상의 물리적 볼륨을 그룹화하여 만든 논리적 그룹입니다. 논리적 볼륨 : 볼륨 그룹 안에서 생성된 논리적인 디스크 공간입니다. 일반 파티션처럼 사용할 수 있습니다. 이러한 구성으로 LVM을 사용하면 논리적인 디스크 공간을 다양한 용도로..
문제 출처: https://www.acmicpc.net/problem/11279 문제 시도 처음엔 문제 카테고리를 신경 쓰지 않고 내가 생각해본 LinkedList를 통해 풀어보기로 했다. LinkedList 삽입, 삭제가 자유롭고, 조회에 대한 시간 복잡도가 O(n)이라는 단점이 있지만 문제는 가장 큰 요소, 즉 첫 번째 요소를 출력할 걸 요구하기 때문에 문제가 없을 거라고 여겼다. import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; public class Main { public static void main(String[] args) ..
·CS/운영체제
RAID (Redundant Array of Inexpensive / Independent Disks) RAID는 여러 개의 하드디스크를 하나의 하드디스크처럼 사용하는 방식으로, 비용을 절감하면서도 신뢰성을 높여 성능까지 향상시킬 수 있습니다. RAID는 일반적으로 하드웨어 RAID와 소프트웨어 RAID로 나뉩니다. 유형 1.하드웨어 RAID 하드웨어 RAID는 하드웨어 제조업체에서 여러 개의 하드디스크를 연결한 장비를 만들어 그 자체를 공급하는 것이기 때문에 보다 안정적이고, 각 제조업체에서 기술 지원을 받을 수 있기 때문에 많이 선호되는 방법입니다. 고가의 경우 SA_SCSI 하드디스크를, 중저가의 경우 SATA 하드디스크를 사용해 만들어집니다. ※ SATA와 SCSI는 하드웨어 인터페이스의 일종입니..
데이터베이스에서 데이터를 캐싱할 때, 사전 예방적(proactive) 및 사후 대응적(reactive)으로 취할 수 있는 캐싱 패턴으로 Redis와 Memcached가 있습니다. 구현하기 위해 어떤 패턴을 취하든 모두 자신이 사용할 캐싱과 애플리케이션 목표와 밀접하게 관련되어 있어야 합니다. 가장 흔한 접근은 사전 예방적으로 'cache-aside'(혹은 'lazy loading')을 취하는 것, 그리고 사후 대응적으로 'write-through'를 취할 수 있습니다. Cache-aside는 데이터가 요청된 후에 수정되는 방식이며, write-through 캐시는 메인 DB가 수정되었을 때 즉시 수정하는 방법입니다. 두 방법 모두, 애플리케이션이 어떤 데이터를 얼마나 캐싱할지를 관리하는 방법입니다. 아래..
e-commerce 웹 애플리케이션을 구현하던 중 가장 빈번하게 요청되면서도 거의 동일한 응답을 반환할 '단일 가게 조회' 기능에 Redis 캐싱을 적용하여 1) 정보 조회 속도를 높이고, 2) DB의 부하를 낮추는 것을 목표로 프로젝트를 진행했다.☆ 코드 ☆// build.gradle// Redisimplementation 'org.springframework.boot:spring-boot-starter-data-redis' // common/RedisRepositoryConfig.java@Configuration@EnableRedisRepositories(basePackages = "com.example.baglemonster.common.config")public class RedisReposito..
더보기 본 게시글은 개발자 상식인 MVC 패턴에 대한 글로, MDN의 공식 문서를 참조했습니다. MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴으로 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있습니다. 이러한 "관심사 분리"는 더 나은 업무의 분리와 향상된 관리를 제공합니다. MVC에 기반을 둔 다른 디자인 패턴으로는 MVVM (모델-뷰-뷰모델), MVP(모델-뷰-프리젠터), 그리고 MVW(모델-뷰-Whatever)가 있습니다. MVC 소프트웨어 디자인 패턴은 다음의 세 부분으로 설명할 수 있습니다. 모델 : 데이터와 비즈니스 로직을 관리합니다. 뷰 : 레이아웃과 화면을 처리합니다. 컨트롤러 : 모델과 뷰로 명령을..
정의 Java의 Garbage Collector(이하, GC)는 C의 malloc()과 free()처럼 개발자가 직접 메모리를 할당하고 해제할 필요 없이 사용하지 않는 메모리 영역을 자동으로 해제하여 메모리 누수(memory leak)를 방지합니다. 유형 JVM의 heap 영역은 처음 설계될 때 다음을 전제로 설계되었습니다. 대부분의 객체는 금방 접근 불가능한 상태(Unreachable)가 됩니다. 오래된 객체에서 새로운 객체로의 참조는 아주 적게 존재합니다. 즉, 객체는 대부분 일회성이며, 메모리에 오랫동안 남아있는 경우가 드뭅니다. 객체의 생존 기간에 따라 물리적인 heap 영역을 나눴고 Young과 Old의 2가지 영역으로 설계되었습니다. Young 영역 새롭게 객체가 할당되는 영역 대부분의 객체가..
G+
'분류 전체보기' 카테고리의 글 목록 (17 Page)