본문 바로가기

전체 글

(185)
[Linux] 리눅스 명령어 프로세스 명령어 ps : 현 터미널에 관련된 프로세스를 보여줌 PID : 프로세스 번호 TTY : teletype의 약자로 프로세스가 연결된 터미널 TIME : 프로세스의 CPU 사용시간 실행되고 있는 프로세스가 많아 보기 힘들 경우 less 명령어 파이프하여 사용 ex. ps ax | less ps 항목 ps로 알 수 있는 정보 항목 항목 의미 USR 프로세스 소유자 이름 (BSD 계열) UID 프로세스 소유자 이름 (System V 계열) PID 프로세스 식별 번호 PPID 부모 프로세스 ID %CPU CPU 사용 비율 추정치 (BSD) %MEM 메모리 사용 비율 추정치 (BSD) VSZ K 단위 또는 페이지 단위의 가상 메모리 사용량 RSS 실제 메모리 사용량 (Resident Set Size) T..
[Linux] vi, vim 서론 vi, vim Linux나 Unix 환경에서 vi 에디터 혹은 vim 에디터를 기본으로 사용함 vim Editor vim = vi iMproved vi 에디터에서 기능 개선 및 확장이 된 것 참고 자료 OJT 이미지 자료 키 배열 책 165 ~ 166 페이지 vim 사용법 vim 명령어를 통해 실행 (파일명 생략 가능) vim [파일명] 사용모드 모든 명령은 반드시 대소문자를 구분해야 함 편집모드 : 입력 및 수정 명령어 - o : 포커스된 커서 아래 라인으로 이동 후 편집모드 시작 - O : 포커스된 커서 윗 라인으로 이동 후 편집모드 시작 - i : 포커스된 위치에서 편집모드 시작 - I : 포커스된 라인의 맨 앞으로 이동해 편집모드 시작 - a : 포커스된 커서의 다음 문자열에서 편집모드 시작..
[Linux] 리눅스 다중 명령어 - 세미콜론(;), 파이프라인(|), 더블 엔드퍼센트(&&) [요약 ver] 세미콜론( ; ) 세미콜론( ; ) 명령문의 끝을 나타냄 하나의 명령문 라인에서 여러 개의 명령 실행 만약 첫 번째 명령문이 실패해도 두 번째 명령문은 실행됨 한 줄 입력 예시 cp .profile new; cat new; head -3 new; ls -a - .profile 파일을 new 파일에 복사해라. - 그 다음 new 파일을 출력하라. - new 파일을 출력하는데, 앞 세 줄만 출력하라. - 파일 목록을 출력하라. 파이프(Pipe) IPC(InterProcess Communication) 기법 중 하나 IPC 기법 중 커널 영역을 활용한 기법 리눅스에서의 파이프는 두 개의 프로세스를 연결하는 연결 통로를 의미함 프로세스 통신을 위해 도입된 것 특정 프로세스 표준 출력이 다른 프로세스의 표준 입력..
[Effective JAVA] item 22 : 인터페이스는 타입을 정의하는 용도로만 사용하라 서론 인터페이스 자기 자신을 구현한 클래스의 인스턴스를 참조할 수 있는 타입의 역할을 함 클래스가 어떤 인터페이스를 구현한다는 것은 자신의 인스턴스로 무엇을 할 수 있는지 클라이언트에게 이야기하는 것 인터페이스는 그렇기에 '타입을 정의하는 용도'로만 사용되어야 함 상수 인터페이스 안티 패턴 : 사용 금지! 상수 인터페이스 : 메서드 없이 static final 필드로만 이루어진 인터페이스 클래스 내부에서 사용하는 상수는 외부 인터페이스가 아닌 내부 구현에 해당됨 고로 상수 인터페이스를 구현하는 것은 내부 구현 클래스의 API로 노출하는 행동임 상수를 공개할 목적일 경우 특정 클래스나 인터페이스와 강하게 연관된 상수일 경우 그 클래스나 인터페이스 자체에 추가해야함 예시. Integer와 Double에 선언..
[Effective JAVA] item 21 : 인터페이스는 구현하는 쪽을 생각해 설계하라 서론 인터페이스에 메서드 추가하면 보통 컴파일 오류가 발생함 왜냐면 추가된 메서드가 기존 인터페이스에 존재할 가능성이 굉장히 낮기 때문 디폴트 메서드(Default Method) 인터페이스의 디폴트 메서드를 재정의 하지 않은 모든 구현 클래스에서는 디폴트 구현이 사용됨 기존 인터페이스에 메서드를 추가하는 것은 어려운 일은 아니나, 기존 구현체들과 모든게 매끄럽게 연동된다는 보장은 없음 (자바 7까지는 현 인터페이스에 새로운 메서드가 추가될 일은 영원히 없다는 가정 하에 작성되었기 때문임) 자바 8에서는 핵심 컬렉션 인터페이스들에 다수의 디폴트 메서드가 추가됨 이는 람다를 활용하기 위해서임 대부분의 자바 라이브러리에 디폴트 메서드는 코드 품질이 높고 범용적이라 대부분 상황에서 잘 작동하나, 생각할 수 있는..
[Effective JAVA] item 20 : 추상 클래스 보다는 인터페이스를 우선하라 서론 자바의 다중 구현 메커니즘: 인터페이스, 추상 클래스 둘의 차이 - 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 추상 클래스의 하위 클래스가 되어야 함 - 자바는 단일 상속만 지원하기 때문 인터페이스 기존 클래스에 쉽게 새로운 인터페이스 구현 가능 인터페이스가 요구하는 메서드를 추가하고, 클래스 선언에 implements 구문만 추가하면 됨 인터페이스는 믹스인(mixin) 정의에 안성맞춤 믹스인(mixin) 대상 타입의 주된 기능에 선택적 기능을 혼합(mix in)하는 것 클래스가 구현할 수 있는 타입 원래 주된 타입 외에 특정 선택적 행위를 제공하다고 선언하는 효과를 줌 추상 클래스는 기존 클래스에 덧씌울 수 없어 믹스인 정의가 불가함 => 클래스는 두 개의 부모를 가질 수 없고, 클래스..
리눅스 (1) 리눅스 파일 시스템 서론 리눅스는 GUI환경과 달리 명령어로 파일을 관리하기에 이에 대한 이해가 필요함 리눅스의 루트는 ' / ' 로부터 시작됨 상대경로 : ../ 절대경로 : / pwd : 현 위치 디렉토리 ls : 현재 경로의 목록을 보여줌 ls -l : 롱(Long) 방식으로 요약이 아닌 길게 보여줌 ls -a : 숨어있는 파일까지 조회 cd [원하는 경로] '[경로]'로 이동 Directory home 윈도우에서 User와 같은 역할 사용자 계정별 프로필이 들어감 추가로 원하는 디렉토리를 개인 계정에 맞게 만들 수 있음 bin 실행 파일을 두는 곳 media 혹은 mnt 리눅스나 유닉스는 특정 장치에 엮어 파일을 저장하기 위함
[Effective JAVA] 모든 객체의 공통 메서드 (2) equals의 재정의와 hashCode item 11. Equals를 재정의하려면 hashCode도 재정의 하라 equls를 재정의한 클래스 모두에서 hashCode도 재정의해야 함 그렇지 않으면 hashCode 일반 규약을 어겨 해당 클래스의 인스턴스를 HashMap이나 HashSet과 같은 컬렉션의 원소로 사용할 때 문제가 발생함 Object 명세의 규약 - equals 비교에 사용되는 정보가 변경되지 않는다면, 애플리케이션이 실행되는 동안 그 객체의 hashCode 메서드는 몇 번을 호출해도 일관되게 항상 같은 값을 반환해야 함. 단, 애플리케이션을 다시 실행한다면 값이 달라져도 무관함. - equals(Object)가 두 객체를 같다고 판단했다면, 두 객체의 hashCode는 같은 값을 반환해야 함 - equals(Object)가 두 ..