본문 바로가기
728x90
반응형

프로그래밍332

하루에 하나씩 배우는 컴퓨터 사이언스 개념: 가상 메모리 개념 이해 오늘은 컴퓨터 사이언스 개념 중 하나인 가상 메모리(Virtual Memory)에 대해 더욱 자세하게 살펴봅니다. 컴퓨터 메모리 관리에 관한 이해가 필요한 개념으로, 컴퓨터 공학 지식과 함께 가상 메모리가 어떻게 동작하는지, 그리고 왜 필요한지를 알아보도록 하겠습니다. 또한 가상 메모리의 장단점과 페이지 교체 알고리즘이 어떤 식으로 작용하는지도 살펴보도록 하겠습니다. 1. 가상 메모리 개념 가상 메모리는 물리 메모리의 제한을 느슨하게 하여 프로그램이 메모리를 좀 더 효율적으로 사용할 수 있도록 도와주는 시스템입니다. 물리적 메모리 공간 효율화를 통해 실행 중인 프로세스가 실제로 사용하는 메모리 영역만 물리 메모리에 할당하고, 그 외 사용하지 않는 부분은 디스크에 저장하여 관리합니다. 이렇게 동작하면서, .. 2023. 8. 12.
기초수학: 경우의 수 이 글에서는 자료구조/알고리즘 중 기초수학: 경우의 수의 기본 개념, 활용 방법 그리고 자바를 이용한 경우의 수 활용 예제 코드를 보다 자세하게 소개합니다. 1. 경우의 수의 기본 개념 경우의 수란 어떤 사건이 발생할 수 있는 모든 가능한 경우를 나타내는 개념입니다. 경우의 수는 확률과 조합론에서 특히 중요한 역할을 하는데, 주로 조합, 순열, 중복 조합, 중복 순열 등의 개념을 이용하여 계산되며, 다양한 문제 해결에 활용됩니다. 2. 조합, 순열, 중복 조합, 중복 순열 조합(Combination): n개의 요소 중에서 r개를 선택하는 방법의 수를 의미하며, 순서는 고려되지 않습니다. 조합은 다음과 같은 식으로 표현됩니다. C(n, r) = n! / (r!(n-r)!) 순열(Permutation): n.. 2023. 8. 12.
스프링 프레임워크 기초: ORM(Object-Relational Mapping) 개념과 활용하기 이 글에서는 ORM의 기본 개념, 스프링 프레임워크와 ORM, 그리고 스프링 부트와 JPA를 사용한 예제에 대해 자세하게 설명하겠습니다. 1. ORM(Object-Relational Mapping) 소개 ORM은 Object-Relational Mapping의 약자로 객체 관계 매핑이라고도 합니다. 데이터베이스와 객체지향 프로그래밍 간의 패러다임 불일치 문제를 해결하기 위해 고안된 프로그래밍 기술로, 객체 지향 프로그래밍 언어와 관계형 데이터베이스의 데이터를 서로 변환해주는 역할을 합니다. ORM을 사용하면 관계형 데이터베이스의 것을 객체 지향적으로 다룰 수 있어 개발자가 SQL 작성이나 데이터베이스 세부 구현에 신경 쓰지 않아도 됩니다. 2. 스프링 프레임워크에서 ORM 사용하기 스프링 프레임워크에서는.. 2023. 8. 11.
하루에 하나씩 배우는 컴퓨터 사이언스 개념: 데드락과 스타베이션 개념 오늘은 컴퓨터 사이언스 개념 중 하나인 데드락(Deadlock)과 스타베이션(Starvation)에 대해 살펴봅니다. 이 두 가지 개념은 멀티 스레딩 환경에서 흔히 발생할 수 있는 문제로, 컴퓨터 공학 지식 기반의 원인 이해가 필요합니다. 이번 글에서 공유자원 액세스를 위한 잠금 기본 원칙, 그리고 데드락과 스타베이션의 정의, 원인 및 대응방안을 자세히 알아보겠습니다. 1. 공유자원 액세스를 위한 잠금 기본 원칙 멀티 스레딩 환경에서 여러 스레드가 동시에 공유 자원에 접근하려면 동기화가 필요합니다. 이를 확보하기 위해서는 잠금(Locking) 이라는 기본 원칙이 존재합니다. 그렇다면 잠금 기법이 완벽한 동기화를 보장할까요? 아쉽게도 잘못 사용된 경우 문제를 초래할 수 있습니다. 데드락과 스타베이션은 잠금.. 2023. 8. 11.
728x90
반응형