Computer Science

운영체제란운영체제: 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어입니다. 하드웨어를 제어하고 응용 프로그램이 하드웨어 자원을 효율적으로 사용할 수 있도록 중간에서 조율하는 역할을 합니다.대표적인 운영체제로는 Windows, Linux, Mac 등이 있습니다. 운영체제의 주요 역할프로세스 관리: 여러 프로그램이 동시에 실행될 수 있도록 CPU의 사용 순서를 조절하고, 프로세스 간 통신 및 자원 공유를 관리합니다.저장장치 관리: 메인 메모리와 하드디스크 등의 자원을 효율적으로 관리하고, 가상 메모리와 파일 시스템을 통해 안정적인 데이터 저장을 지원합니다.네트워킹: 인터넷 연결 및 다양한 네트워크 프로토콜(TCP/IP 등)을 지원하여, 시스템 간 통신을 가능하게 합니..
JVM, JDK, JREJVM(Java Virtual Machine: 자바 가상 머신)자바 애플리케이션을 실행하기 위해 이식 가능한 런타임 환경을 제공하는 소프트웨어 입니다.JVM의 주요 목적은 자바 프로그램이 어떤 운영체제나 기기에서도 동일하게 실행할 수 있도록 지원하는 것과 프로그램의 메모리를 관리하고 최적화하는 역할을 수행합니다. 또한, JVM은 OS와 Java 프로그램 사이에서 중재자 역할을 하며, 특정 OS에 종속되지 않고 애플리케이션이 독립적으로 동작할 수 있게 해줍니다. JRE(Java Runtime Envirnment: 자바 런타임 환경)자바 프로그램을 실행하기 위한 환경으로 JVM과 자바 프로그램을 실행하는 데 필요한 라이브러리 파일이 포함되어 있어, 개발이 아닌 실행만 할 때 사용됩니다..
1. 트랜잭션(Transaction)트랜잭션은 데이터베이스에서 하나의 논리적인 작업 단위를 의미합니다.트랜잭션은 모두 수행되거나(Commit), 하나도 수행되지 않아야(Rollback) 데이터의 일관성을 유지할 수 있기 때문에 트랜잭션은 데이터베이스의 신뢰성과 무결성을 보장하는 핵심 개념입니다. ■ 트랜잭션이 왜 필요한가요?트랜잭션은 예기치 못한 시스템 장애나 동시성 문제로부터 데이터의 무결성을 보호하기 위해 필요합니다.예를 들어, 현금 인출 도중 정전이 발생하거나, 두 사용자가 동시에 같은 계좌를 인출할 경우 데이터가 꼬일 수 있습니다. 이러한 상황에서 트랜잭션을 사용하면, 중간에 문제가 생겨도 전체 작업을 되돌릴 수(Rollback) 있기 때문에 데이터의 정합성과 일관성을 유지할 수 있습니다.또한, ..
Connection Pool : 데이터베이스와 연결되는 Connection 객체를 미리 여러 개 생성해두고, 이를 요청할 때 꺼내서 사용하고 다시 반환하는 기법 ■ 사용하는 이유웹 애플리케이션에서는 클라이언트의 요청이 들어올 때마다 DB 연결이 필요하지만, 매번 새로운 Connection을 생성하고 소멸하는 과정은 성능상 부담이 크다.→ Connection Pool을 사용하면 매번 연결을 새로 만들 필요 없이, 미리 만들어진 Connection을 재사용함으로써 DB 접근 시간을 단축하고 리소스 사용을 효율화할 수 있다. → 동시에 생성 가능한 Connection 수를 제한하여 DB 서버에 부하가 집중되는 것을 방지할 수 있다. ■ Connection이 부족할 때, 시스템은 어떻게 동작하나요?Connect..
Idea그리디(Greedy) 알고리즘은 현재 상황에서 가장 좋은 선택을 하는 방식으로 최적의 해답을 찾는 알고리즘이다. 각 단계에서 가장 좋다고 생각되는 선택을 함으로써 최종적인 해답에 도달하는 것이 목표이다. 따라서 그리디 알고리즘이 항상 최적의 해를 보장하지는 않지만, 특적 문제에서는 매우 효과적으로 작용한다.첫 번째 그림과 같은 그래프가 있을 때, 거쳐가는 모든 값의 최댓값을 만든다고 한다면 정답은 Optimal 부분의 0 → 3 → 100 일 것이다. 하지만 그리디 알고리즘을 사용한다면 현재 위치에서의 최선의 선택을 하기 때문에 0의 위치에서는 3과 10 중에 10이 더 크므로 10으로 이동하고 10의 위치에서는 7과 8 중에 8이 더 크므로 8로 이동할 것이다. 즉, 그리디 알고리즘을 사용하면 ..
Idea이진 탐색(이분 탐색)은 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다.이진 탐색을 사용할 때는 반드시 배열 내부의 데이터가 정렬되어 있어야 한다.(left, mid, right)를 사용하며 찾아야 하는 수의 범위 중 가운데의 값과 찾고자 하는 값을 비교하여 대소관계에 따라 특정 구간으로 이동하는 것을 반복한다.범위 속의 원소의 개수가 1개가 될 때까지 계속 탐색을 진행해야 하므로 while문을 통해 (left 영상의 Binary search(이분 탐색)과 Sequential search(순차 탐색)의 비교 횟수를 보면 이분 탐색의 탐색 횟수가 훨씬 적은 것을 확인할 수 있다.Codepublic class BinarySearch { // 반복문 이용 ..
Idea 기수 정렬은 맨 뒤에 있는 자릿수부터 해당 자릿수를 기준으로 정렬한 뒤, 앞으로 이동하며 각 자리 수를 기준으로 정렬하다가 최종적으로 가장 높은 자리수를 기준으로 정렬하는 방법이다. [823, 916, 423, 840, 268]을 기수 정렬을 이용해서 정렬해보겠다. 가장 낮은 1번째 자리(1의 자리)부터 가장 높은 3번째 자리(100의 자리) 순으로 정렬한다.  첫 번째로 가장 낮은 자리인 1의 자리 수를 기준으로 버킷에 넣는다.0 ~ 9 까지 버킷 번호에 각 숫자들이 자리를 찾아 배치되고 정렬되어 나온다.(버킷 내에서 정렬되는 것이 아님)이렇게 1의 자리수를 오름차준으로 정렬하여 [0, 3, 3, 6, 8]이 되고, 이를 기준으로 계수를 정렬하면 [840, 823, 423, 916, 268]으..
버블 정렬Idea첫 번째 값과 두 번째 값을 비교하고, 두 번째 값과 세 번째 값을 비교하며 n-1 번째 값과 n 번째 값을 비교한다. 만약 n-1 값이 n 값 보다 크다면 서로 순서를 바꾼다. 이렇게 한 번 루프를 거치면 가장 큰 값이 오른쪽 끝에 위치하게 된다. 이 루프를 반복하여 정렬을 완료한다.Codepublic class Main { public static int n; public static int[] arr = new int[100]; public static void bubbleSort() { boolean sorted; do { sorted = true; for(int i = 0; i arr[i + 1])..
kyung.Kh
'Computer Science' 카테고리의 글 목록