CS
싱글톤 패턴(Singleton Pattern)이란?
깃헙 블로그에서 편하기 보기 Click! 싱글톤 패턴 싱글톤 패턴(Singleton Pattern)이란, 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴을 말한다. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어든다는 장점이 있다. 보통 데이터베이스를 연결할 때 많이 사용된다. 싱글톤 패턴의 구현 싱글톤 패턴을 구현하는 방법은 크게 두 가지가 있다. 1. Eager initialization // Eager initialization public class Singleton { // SingleObject 객체 생성 // 객체가 오직 하나임을 보장하기 위해 정적(static) 필드 사용 private static final ..
NoSQL
깃헙 블로그에서 편하게 보기 Click! NoSQL의 정의 NoSQL은 Not Only SQL의 약자로, Not Only의 뜻을 생각해봤을 때 RDBMS만 고집하지 말고 필요에 따라 다른 특성의 데이터베이스로 사용해봐라~ 이런 뜻으로 해석하면 된다. NoSQL은 관계 데이터 모델과 SQL을 사용하지 않는 데이터베이스 시스템이다. RDBMS가 일관성에 초점을 맞췄다면, NoSQL은 가용성과 확장성에 초점을 맞춘 데이터베이스이다. NoSQL의 등장 기존의 RDBMS는 정형화된 데이터를 저장하기 때문에 데이터의 형태/크기를 미리 정하고 테이블 단위로 구분하여 데이터를 저장할 수 있다. 또한, 트랜잭션을 통해 데이터를 안전하게 관리할 수 있고, 조인 연산을 사용한 검색도 가능하다. 하지만 기술이 발전함에 따라 ..
Statement vs PreparedStatement
깃헙 블로그에서 편하게 보기 Click! Statement 데이터베이스에 액세스 하는 데 사용된다. Statement 인터페이스는 매개 변수를 허용할 수 없으며 런타임에 정적 SQL문을 사용할 때 유용하다. SQL 쿼리를 한 번만 실행하려는 경우 Statement 인터페이스가 PreparedStatement보다 선호된다. Connection con = DriverManager.getConnection(); // Statement 객체 생성 Statement stmt = con.createStatement(); // Statement 실행 stmt.executeUpdate("CREATE TABLE STUDENT(ID NUMBER NOT NULL, NAME VARCHAR)"); PreparedStatemen..
인덱스(Index)
Index 데이터베이스에서의 인덱스란 데이터를 빠르게 찾을 수 있는 데이터 구조로, RDBMS에서 검색 연산의 속도를 높이기 위한 방법이다. 책 맨 뒷장에 있는 찾아보기처럼 내가 원하는 데이터가 DB의 어디에 저장되어있는지 빠르게 찾을 수 있다. 데이터베이스의 파일 구조에는 인덱스 이외에도 순차 방법과 해싱 방법이 있지만, 순차 방법은 물리적 순서와 논리적 순서를 동일하게 유지해야 하기 때문에 융통성이 떨어지고 탐색 시간이 오래 걸린다는 단점이 있다. 해싱 방법은 등호 연산(=)을 사용할 때는 O(1)로 굉장히 빠르지만, 부등호 연산(>, >=,
데이터베이스
데이터베이스의 정의 데이터베이스는 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합이다. 그리고 이러한 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(Database Management System)이라고 한다. 데이터베이스의 특징 1️⃣ 실시간 접근성 데이터베이스는 사용자의 데이터 요구에 실시간으로 응답할 수 있어야 한다. 2️⃣ 계속 변화 데이터베이스는 데이터의 삽입, 삭제, 수정으로 항상 최신의 데이터를 유지해야 한다. 3️⃣ 동시 공유 데이터베이스는 여러 사용자가 서로 다른 데이터를 동시에 사용 가능해야 하고, 같은 데이터를 동시에 사용하는 것도 가능해야 한다. 4️⃣ 내용 기반 참조 데이터베이스는 주소나 위치가 아닌 데이터의 내용(content)으로..
메모리 계층과 캐시 메모리
깃헙 블로그에서 편하게 보기 Click! 메모리 CPU는 메모리에 올라와 있는 프로그램의 명령어들을 단순히 실행하기만 한다. 메모리는 어떻게 생겼을까? 메모리 계층 메모리 계층은 아래와 같은 구성 요소로 이루어져 있다. 레지스터 캐시 메모리 메인 메모리(주기억장치, RAM) 저장장치(보조기억장치, HDD, SDD) 레지스터는 CPU 내의 작은 메모리이다. 가장 속도가 빠른만큼 비싸고, 가장 용량이 적다. 캐시 메모리 역시 속도가 빠르지만 용량이 적다. 메인 메모리(주기억장치)는 속도도 보통, 용량도 보통이다. 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장한 후 이를 CPU에 전달하는 역할을 한다. 레지스터부터 메인 메모리까지를 상위 계층이라고 하며 전원이 꺼지면 데이터도 모두 사라지는 휘발성 저장..
가상 메모리
가상 메모리 가상 메모리(Virtual Memory)는 메모리 관리 기법의 하나로, 메모리를 추상화하여 사용자에게 무한한 크기의 메모리가 존재하는 것처럼 느끼게 만드는 것이다. 프로그램의 일부분이 메모리에 올라오도록 함으로써 보다 많은 개수의 프로세스를 메모리에 수용함과 동시에 아무리 큰 프로그램도 실행할 수 있다. 도메인 네임만 기억하고 있으면 DNS가 이 주소를 IP 주소로 알아서 변환해주는 것처럼, 메모리관리장치(MMU)가 가상 메모리 주소를 실제 메모리 주소로 매핑해주기 때문에 우리는 실제 주소를 의식할 필요없이 프로그램을 구축할 수 있다. 장점 프로그램의 전체가 메모리에 올라가지 않아도 실행 가능하다. 프로그램 입장에서는 물리적 메모리의 제약을 고려할 필요가 없다. 동시에 여러 프로그램을 실행하..
메모리 관리 기법
메모리 관리 배경 다중 프로그래밍 시스템에서는 여러 개의 프로세스가 실행되고, 각 프로세스는 독립적인 메모리를 할당받아야 한다. 따라서 어떤 프로세스에게 어떤 식으로, 얼마나 메모리를 할당할 것인지 주기억장치를 동적 분할하는 메모리 관리 작업이 필요하다. 메모리 관리 기법 1️⃣ 교체 기법 1. Swapping 2️⃣ 할당 기법 1. 연속 할당 기법 1) 고정분할 방식(단편화) 2) 가변분할 방식 2. 불연속 할당 기법 1) 페이징(Paging) 2) 세그멘테이션(Segmentation) 3️⃣ 배치 기법 1. 최초 적합(First-Fit) 2. 최적 적합(Best-Fit) 3. 최악 적합(Worst-Fit) 교체 기법 - Swapping 스와핑(Swapping)은 현재 사용되지 않는 메모리 내용을 디스..