목록분류 전체보기 (114)
suyeonme
헤드 퍼스트 디자인 패턴을 읽고 정리한 내용입니다. 상태 패턴(State Pattern)이란? 상태 패턴을 사용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다. 상태 패턴을 사용하지 않은 경우 뽑기 기계를 구현하는 코드이다. 문제점 코드에 대한 수정이 필요한 경우, 각각의 상태에 의존하는 모든 코드를 모두 고쳐야한다. 상태가 변화함에 따라서 조건문이 복잡해진다. public class GumballMachine { final static int SOLD_OUT = 0; final static int NO_QUATER = 1; final static int HAS_QUATER = 2; final static int SOLD ..
헤드 퍼스트 디자인 패턴을 읽고 정리한 내용입니다. 반복자 패턴이란? 반복자 패턴은 컬렉션의 구현 방법을 노출하지 않으면서 집합체 내의 모든 항목에 접근하는 방법을 제공한다. 반복자 패턴은 Iterator 인터페이스에 의존한다. * 컬렉션(collection)은 집합체(aggregate)라고도 불리운다. * java.util.Iterator는 Iterator 인터페이스를 제공한다. 반복자 패턴 사용시 이점 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어있으면 종류에 관계없이 모든 집합체에 사용할 수 있는 다형적인 코드를 만들 수 있다. 모든 항목에 일일히 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체가 맡는다. 따라서 집합체의 인터페이스와 구현이 간단해지고 집합체는 반복작업이 아닌 자신..
프로세스(Process)란? 프로그램이 실행되면 프로세스가 된다. 프로세스는 컴퓨터 시스템의 작업 단위로 태스크(task)라고도 부른다. 프로그램: 저장장치에 저장되어있는정적인 상태 프로세스: 실행을 위해 메모리에 올라온 동적인 상태 즉, 프로그램을 더블 클릭하여 실행하면, 운영체제는 프로그램을 메모리의 적당한 위치로 가져와서 프로세스 제어 블록을 생성한다. 시분할 방식 CPU가 1개인 컴퓨터에서 여러개의 프로세스를 동시에 실행한다. CPU가 시간을 쪼개어 여러 프로세스에 적당히 배분하기때문에 사용자는 여러개의 프로세스가 동시에 실행하는 것처럼 느낄 수 있다. 프로세스 제어 블록(Process Control Block) 하나의 프로세스를 실행하려면 프로세스 구분자, 메모리 관련 정보, 프로그램 카운터와 ..
CPU와 메모리, 주변 장치의 작업속도가 다르다. CPU는 CPU 내부버스로 연결되어있고 메모리, 주변 장치는 시스템 버스로 연결되어있다. 따라서 CPU에 비해 메모리가 느린 것은 물론이고 프로그램과 데이터를 보관하는 하드디스크의 속도는 더욱 느리다. 버퍼(Buffer) 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 한다. 느린 입출력장치에서 데이터를 읽을 때마다 하나씩 전송하면 작업량에 비해 실제로 전송되는 데이터의 양이 매우 작다. 버퍼를 사용하여 일정량의 데이터를 모아 한꺼번에 전송하면 적은 노력으로 많은 양의 데이터를 옮길 수 있다. 예시: 계란을 하나씩 옮기는 것보다 바구니에 여러개 담아 옮기는 것이 더 빠르다. 버퍼의 종류 하드디스크의 메모리 버퍼 동영상 스트리밍 (네트워크에..
BufferedReader/BufferedWriter란? BufferedReader/BufferedWriter는 버퍼(buffer)를 사용하여 읽기/쓰기를 하는 함수로, 입력된 데이터를 바로 전달하지 않고 버퍼에 저장해두었다가 한번에 전달한다. 외부 장치와 데이터 입출력시, 입출력시마다 데이터를 이동시키는 것보다 메모리 버퍼에 데이터를 저장하고 묶어서 한번에 이동시키는 것이 더 효율적이다. Scanner vs BufferedReader Scanner space, enter를 경계로 입력값을 인식 데이터를 따로 가공하지않아도 된다. BufferedReader enter만 경계로 입력값을 인식 데이터가 String으로 고정되어 추가적인 가공(데이터를 구분하여 나누는)이 필요하다. 데이터의 양이 많은 경우, ..
헤드 퍼스트 디자인 패턴을 읽고 정리한 내용입니다. 템플릿 메소드 패턴(Template Method Pattern)이란? 템플릿 메소드 패턴은 즉 일련의 단계로 알고리즘을 정의한 메소드이다. 여러 단계중 하나 이상의 단계가 추상 메소드로 정의되며 그 추상 메소드는 서브 클래스에서 구현한다. 템플릿 메소드 패턴 구현 구현 순서 prepareRecipe()는 어떤 알고리즘의 템플릿 역할을 한다. 템플릿 메소드는 서브 클래스에서 오버라이드하지 못하도록 final로 선언한다. 템플릿 메소드의 일부 알고리즘(추상 메소드)은 서브 클래스에서 구현한다. public abstract CaffeineBeverage { final void prepareRecipe() { // 템플릿 메소드 boilWater(); brew..
리눅스의 기본 폴더 목록을 정리한 내용이다. 폴더 내용 / 최상위 폴더, Root directory /bin Binary의 약자로, 관리자를 포함한 모든 사용자를 위한 공통 명령어가 모여있는 폴더 (명령어 바이너리) /boot 부팅과 관련된 파일이 모여있는 폴더 /dev Device의 약자로 장치 파일이 모여있는 폴더 (장치 파일: 파일 시스템안에 보이는 장치 드라이버의 인터페이스) /etc 환경 설정 파일이 모여있는 폴더 (확장자: .conf, .cnf등) /home 개별 사용자의 home 폴더 /lib 각종 라이브러리가 모여있는 폴더 /root root계정의 home directory /usr 사용자 읽기전용(readonly) 파일들을 계층형으로 보관한 폴더 (사용자 유틸리티, 애플리케이션 보관등) ..
hosts 파일이란? hosts 파일은 운영 체제가 호스트 이름을 IP 주소에 매핑할 때 사용하는 컴퓨터 파일이다. 이 hosts 파일은 플레인 텍스트 파일이며 전통적으로 hosts라는 이름을 사용한다. hosts파일에 ip address와 매칭되는 도메인명을 작성하면 해당 도메인으로 접속을 하면 연결된 ip로 바이패스를 해준다. 즉 hosts 파일는 DNS보다 먼저 호스트명을 IP로 변경해 주는 파일이다. (hosts 파일 = mapping table) /etc/hosts 1. hosts 파일의 내용 확인 $ cat /etc/hosts 2. hosts 파일 내용 수정 hosts 파일을 수정하기 위해서는 관리자 권한이 필요하다. 따라서 sudo 명령어를 사용해야한다. $ sudo vi /etc/hosts..