목록전체 글 (23)
ordinary
커널/ 유틸리티 커널 : 유닉스 시스템의 심장 유틸리티 : 모든 유닉스 커맨드 로그인 셸 로그인을 요청할 때 마다 getty프로그램을 시작한다. ssh나 telnet, rlogin등을 사용할 때는 원격요청을 지원하며 가상터미널이 할당된다. 로그인을 하면 /etc/passwd 디렉터리를 확인하게 된다. 계정마다 표준(init)이 바뀌도록 설정 할 수 있다. (/bin/sh, /bin/ksh, /bin/bash 등) who 커맨드를 사용해서 시스템에 로그인 했는지 확인할 수 있다. 셸에 커맨드를 입력 특정 프로그램을 호출하면 해당 프로그램을 찾을 때 까지 PATH의 모든 디렉터리를 단계별로 실행한다. 프로그램을 발견하면 shell은 shell자체를 복사하고 (subshell)을 만들고 커널에 서브셸을 지정된..
item35 : ordinal 메서드 대신 인스턴스 필드를 사용하라 ordinal메서드 : 열거타입에서 몇번째에 위치하는지 반환하는 기본 메서드 public enum Ensemble { SOLO, DUET, TRIO, QUARTET, QUINTET, SEXTET, SEPTET, OCTET, NONET, DECTET; public int ordinalFunc() { return ordinal(); } ] 위와 같은 코드에서와 같이 사용할 수는 있지만 권장하지 않는다 EnumSet과 EnumMap의 열거타입 기반 범용 자료구조에서 사용하고, 몇번째 상수인지 구할 때는 인스턴스 필드를 이용해서 구하자.
item34 : int상수 대신 열거타입을 사용하라 열거타입(enum) 클래스타입 public enum Apple { A, B, C } public enum Orange { E, F, G } public static final 인스턴스 통제 싱글턴 타입안정성 제공 (건네받은 참조는 enum클래스 안의 값중 하나임이 확실) 추상개념을 표현할 수 있음 메서드 표현으로 사용 가능 메서드에서 열거타입 상수와 연결지으려면 final 변수라서 생성자에서 데이터를 받아야 한다. 열거타입의 내부에서 어떻게 작동한는지 출력가능 private // pacage private enum클래스에서 만든 메서드들을 클라이언트에 노출되지 않도록 한다. 예시 switch-case를 이용 public enum Opreation { P..
날짜 $ date 사용자 확인 $ who $ who am i 문자 출력 $ echo $ echo print letters 결과 : print letters 파일 출력 $ ls 파일명만 $ ll 권한, 내부파일개수, 사용자, 용량, 수정일자 등도 포함 파일 내용 출력 $ cat 파일 복사 $ cp 전 후 경로로 지정가능 파일 이름 변경 $ mv 전 후 경로 설정 가능 파일 삭제 $ rm $ rm -rf 는 고민하고 써야할 조심해야 할 명령어 디렉터리 생성 mkdir 작업 디렉터리 출력 pwd
item 30의 재귀적 한정타입을 사용한 max메서드 package effectivejava.chapter5.item30; import java.util.*; // Using a recursive type bound to express mutual comparability (Pages 137-8) public class RecursiveTypeBound { // Returns max value in a collection - uses recursive type bound public static E max(Collection c) { if (c.isEmpty()) throw new IllegalArgumentException("Empty collection"); E result = null; for (E..
Item32 : 제네릭과 가변인수를 함께 쓸 때는 신중하라 Item33 : 타입 안전 이종 컨테이너를 고려하라 Item32 : 제네릭과 가변인수를 함께 쓸 때는 신중하라 가변인수(varagrs) : 메서드에 넘기는 인수의 개수를 클라이언트가 조절할 수 있게 해줌 얼핏 보면 제네릭하고 잘 어울릴 것 처럼 보인다!! 메서드를 선언할 때 실체화 불가 타입으로 varargs 매개변수를 선언하면 컴파일러가 heap오염 경고를 낸다. 타입안정성이 깨지기 때문에 varargs 배열 매개변수에 값을 저장하는 것은 안전하지 않기 때문 경고가 뜨지 않도록 @SupressWarnings("unchecked") 나 @SafeVarargs 을 사용할 수 있다. @SafeVarargs는 재정의할 수 없는 메서드에만 달아야 한다...