일단 씻고 나가자
23.05.19 본문
2023. 05. 19 금요일
- [Effective Java] 컴포지트 패턴이란? 3가지 구성 요소와 각각의 설명?
: Composite Pattern. 구조 패턴 중 하나.
컴포지트 패턴은 크게 Component, Leaf, Composite 3가지로 구성된다.
Component
// interface. Leaf와 Composite 객체가 implements 할 때 공통이 되는 메소드를 abstarct 하게 정의해야 한다.
2. Leaf
// Component를 구현한 class.
3. Composite
// Component를 구현한 class. Leaf 객체를 담을 수 있는 List를 내부로 가지고 있다.
당연히 이 List에 add와 remove 할 수 있는 메서드도 구현해야 하며,
사용자가 Leaf와 Composite 객체를 동일하게 취급하고 활용할 수 있기 위해 Component를 마찬가지로 구현하여야 한다.
- 리눅스 명령어와 설명? (실행 중인 프로세스 목록, 종료, 파일 복사)
1. ps [options]
Process Status. 실행 중인 프로세스 목록.
ps만 치게 되면 작성 중인 shell 프로그램(bash)와 ps 명령어 실행으로 생성된 ps 프로세스만 뜬다. daemon 프로세스(x)와 모든 사용자의 프로세스(a), 그리고 각 프로세스의 소유자가 누구인지(u) 한 번에 보기 위해 보통 ps aux처럼 세 가지를 조합하여 옵션으로 사용한다. (순서는 상관없음)
2. kill [options] [pid/job number]
해당하는 프로세스를 종료시킴.
ps를 통하여 알아낸 종료시킬 프로세스의 pid를 직접 적어 종료시키는 방법이 있고,
jobs를 통하여 알아낸 job number로(순번) %job number을 통해 종료시킬 수 있다.
option 중 –9는 강제 종료 명령이다. 특정 프로세스의 순서나 꼬임 때문에 종료 명령이 실행이 안 될 수 있는데, 이때 사용하면 강제 종료된다.
3. cp [options] [원본 파일/디렉토리명] [새로 만들 파일/디렉토리명]
해당 파일/디렉토리를 복사하여 설정한 이름으로 만듦.
option 중 cp –rf [directoryA] [directoryB] 하면 A의 하부 파일, 폴더를 전부 B로 복사함.
- 하드 링크와 소프트 링크란? 명령어?
: 하드 링크란 원본 파일을 가리키는 바로가기 파일로, 원본 파일이 삭제되어도 데이터가 삭제되지 않음.
이는 디렉토리 엔트리로 원리를 찾을 수 있는데, 하드 링크를 걸게 되면 디렉토리 엔트리에만 새로 만든 하드 링크 파일이 생기고, 그 파일은 역시 원본 파일의 inode를 가리킨다.
이때 원본 파일이 삭제되면 inode는 내부적으로 하드 링크의 개수를 판별하여 하드 링크가 하나라도 남아 있다면 내용을 삭제하지 않는다.
(디렉토리 엔트리 -> inode 블록 -> 데이터 블록(실제 데이터))
명령어는 ln [원본 파일명] [하드 링크를 걸 새로운 파일명]으로 적는다.
소프트(심볼릭) 링크란 역시 바로가기 파일이지만 하드 링크와 다르게 원본 파일이 삭제되면 원본 데이터에 접근할 수 없다. (아무 데이터도 없는 빈 파일이 된다.)
소프트 링크의 생성 시에는 자신만의 inode 블록을 만들게 되고, 그 inode는 데이터 블록을 가리키는데 이때의 데이터는 원본 파일의 디렉토리 엔트리 주소를 가리키는 포인터가 된다.
명령어는 ln –s [원본 파일명] [소프트 링크를 걸 새로운 파일명]으로 적는다.