Collection

플밍/자바 | 2010/05/26 17:17 | 흐멀

Collection: 가장 상위 인터페이스이다.
  • Set : 중복을 허용하지 않는 집합을 처리하기 위한 인터페이스이다.
  • SortedSet : 오름차순을 갖는 Set 인터페이스이다.
  • List : 순서가 있는 집합을 처리하기 위한 인터페이스이기 때문에 인덱스가 있어 위치를 지정하여 값을 찾을 수 있다. 중복을 허용하며, List 인터페이스를 상속받는 클래스 중에 가장 많이 사용하는 것으로 Vector가 있다.
  • Queue : 여러 개의 객체를 처리하기 전에 담아서 처리할 때 사용하기 위한 인터페이스이다. 기본적으로 FIFO를 따른다.
  • Map : Map은 키와 값의 쌍으로 구성된 객체의 집합을 처리하기 위한 인터페이스이다. 이 객체는 중복되는 키를 허용하지 않는다.
  • SortedMap : 키를 오름차순으로 정렬하는 Map 인터페이스이다.


Set
  • HashSet : 데이터를 해쉬 테이블에 담는 클래스로 순서 없이 저장된다.
  • TreeSet : red-black이라는 트리에 데이터를 담는다. 값에 따라서 순서가 정해진다. HashSet보다 성능상 느리다. 데이터를 담으면서 동시에 정렬할 때 유용하다.
  • LinkedHashSet : 해쉬 테이블에 데이터를 담는데, 저장된 순서에 따라서 순서가 결정된다.

List
  • Vector : 크기를 객체 생성시 지정할 필요가 없는 배열 클래스이다.
  • ArrayList : Vector와 비슷하지만, 동기화 처리가 되어 있지 않다.
  • LinkedList : ArrayList와 동일 하지만, Queue 인터페이스를 구현했기 때문에 FIFO큐 작업을 수행한다.

Map
  • Hashtable : 데이터를 해쉬 테이블에 담는 클래스이다. 내부에서 관리하는 해쉬 테이블 객체가 동기화되어 있으므로, 동기화가 필요한 부분에서는 이 클래스를 사용하기 바란다.
  • TreeMap : red-black 트리에 데이터를 담는다. TreeSet과 다른 점은 키에 의해서 순서가 정해진다는 것이다.
  • LinkedHashMap : HashMap과 거의 동일하며 이중 연결 리스트라는 방식을 사용하여 데이터를 담는다는 점만 다르다.
Queue
  • PriorityQueue : 큐에 추가된 순서와 상관없이 먼저 생성한 객체가 먼저 나오도록 되어 있는 큐이다.
  • LinkedBlockingQueue : 선택적으로 저장할 데이터의 크기를 정할 수도 있는 FIFO기반의 링크 노드를 사용하는 블로킹 큐이다.
  • ArrayBlockingQueue : 저장된는 데이터의 크기가 정해져 있는 FIFO 기반의 블로킹 큐이다.
  • PriorityBlockingQueue : 저장되는 데이터의 크기가 정해저 있지 않고, 객체의 생성 순서에 따라서 순서가 저장되는 블로킹 큐이다.
  • DelayQueue : 큐가 대기하는 시간을 지정하여 처리하도록 되어 있는 큐이다.
  • SynchronousQueue : put() 메소드를 호출하면, 다른 스레드에서 take()메소드가 호출될 때까지 대기하도록 되어 있는 큐이다. 큐에는 저장되는 데이터가 없다. API에서 제공하는 대부분의 메소드는 0이가 null을 리턴한다.

Iterator
  • boolean hasNext() : 만약 요소가 더 존재하면 true를 반환한다. 그렇지 않으면 false를 반환한다.
  • Object next() : 다음 요소를 반환한다. 만약 다음 요소가 존재하지 않으면 NoSuchElementException 예외를 던진다.
  • void remove() : 현재 요소를 삭제한다. 만약 next() 메소드가 호출되기 전에 remove() 메소드의 호출이 시도된다면 IllegalState-Exception 예외를 던진다.
ListIterator
  • void add(Object obj) : 리스트에서 다음의 next() 메소드 호출이 반환할 요소 앞에 obj 를 삽입한다.
  • boolean hasNext() : 만약 다음 요소가 존재하면 true를 반환한다. 그렇지 않으면 false를 반환한다.
  • boolean hasPrevious() : 만약 이전 요소가 존재하면 true를 반환한다. 그렇지 않으면 false를 반환한다.
  • Object next() : 다음 요소를 반환한다. 만약 다음 요소가 존재하지 않으면 NoSuchElementException 예외를 던진다.
  • int nextIndex() : 다음 요소의 위치를 반환한다. 만약 다음 요소가 존재하지 않으면, 리스트의 크기를 반환한다.
  • Object previous() : 이전 요소를 반환한다. 만약 이전 요소가 존재하지 않으면 NoSuchElementException 예외를 던진다.
  • int previousIndex() : 이전 요소의 위치를 반환한다. 만약 이전 요소가 존재하지 않으면, -1을 반환한다.
  • void remove() : 리스트에서 현재 요소를 삭제한다. 만약 next()나 previous() 메소드가 호출되기 전에 remove() 메소드가 호출되면 Illegal-StateException 예외를 던진다.
  • void set(Object obj) : 현재 요소에 obj를 할당한다. 할당된 obj는 next()나 previous() 메소드를 호출할 때 마지막으로 반환되는 요소이다.
Dictionary
: 키/값 기억 장소를 표현하고 마치 Map 같이 동작하는 추상 클래스이다. 키와 값이 주어지면, Dictionay 객체에 값을 저장할 수 있다. 값이 한번 저장되면, 키를 사용하여 그 값을 가져올 수 있다. 따라서, 마치 맵과 같이 dictionary를 키/값 쌍의 리스트로 생각할 수 있다. 비록 자바 2에서 실제로 사장되지는 않았지만, dictionary는 Map으로 대체되기 때문에, 거의 사용되지 않는 클래스로 분류된다. 그러나, Dictionary는 여전히 사용되고 있다.

Hashtable
: 원래 java.util의 일부분이고 Dictionary의 실제 구현이다. 그러나, 자바 2에서는 Map 인터페이스를 구현하기 위해서 Hashtable이 재작성되었다. 따라서, Hash-table은 이제 콜렉션 프레임워크로 통합되었다. Hashtable은 HashMap과 비슷하지만, 동기화를 제공한다.

Properties
: Hashtable의 하위클래스이다. Properties는 키가 String이고, 값도 String인 값들의 리스트를 유지하기 위해 사용된다. Properties클래스는 많은 다른 자바 클래스들에 의해 사용된다.

윈도우 도스 기본 명령어

분류없음 | 2010/05/05 13:06 | 흐멀
리눅스를 공부하니 윈도우가 덩달아 궁금하기 시작했다.
특히 GVIM을 쓰면서.. 더더욱.
커맨드 라인에서 help명령어를 쳐봤다.
흠..굉장히 많아서 파일로 만들기로 했다. 리눅스에서라면 help > 1.txt 하면 되는데 윈도우에서도 될까?
실행해 보니까 된다.. 흠 신기하군.. 다음에 파이프도 해봐야겠다 라는 맘을 먹었지만 일단 구지 필요 없으니까.
특정 명령어에 대한 자세한 내용이 필요하면 HELP 명령어 이름을 입력하십시오.
ASSOC    파일 확장명 연결을 보여주거나 수정합니다.
AT       명령어와 프로그램의 실행을 스케줄합니다.
ATTRIB   파일 속성을 표시하거나 바꿉니다.
BREAK    확장된 CTRL+C 검사를 설정하거나 지웁니다.
CACLS    파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정합니다.
CALL     한 일괄 프로그램에서 다른 일괄 프로그램을 호출합니다.
CD       현재 디렉터리 이름을 보여주거나 바꿉니다.
CHCP     활성화된 코드 페이지의 번호를 표시하거나 설정합니다.
CHDIR    현재 디렉터리 이름을 보여주거나 바꿉니다.
CHKDSK   디스크를 검사하고 상태 보고서를 표시합니다.
CHKNTFS  부팅하는 동안 디스크 확인을 화면에 표시하거나 변경합니다.
CLS      화면을 지웁니다.
CMD      Windows 명령 인터프리터의 새 인스턴스를 시작합니다.
COLOR    콘솔의 기본색과 배경색을 설정합니다.
COMP     두 개 또는 여러 개의 파일을 비교합니다.
COMPACT  NTFS 분할 영역에 있는 파일의 압축을 표시하거나 변경합니다.
CONVERT  FAT 볼륨을 NTFS로 변환합니다. 현재 드라이브는
         변환할 수 없습니다.
COPY     하나 이상의 파일을 다른 위치로 복사합니다.
DATE     날짜를 보여주거나 설정합니다.
DEL      하나 이상의 파일을 지웁니다.
DIR      디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.
DISKCOMP 두 플로피 디스크의 내용을 비교합니다.
DISKCOPY 플로피 디스크의 내용을 다른 플로피 디스크로 복사합니다.
DOSKEY   명령줄을 편집하고, Windows 명령을 다시 호출하고, 매크로를 만듭니다.
ECHO     메시지를 보여주거나, 명령어 반향을 켜거나 끕니다.
ENDLOCAL 일괄 파일에서 환경 변경의 지역화를 끝냅니다.
ERASE    하나 이상의 파일을 지웁니다.
EXIT     CMD.EXE 프로그램(명령 인터프리터)을 마칩니다.
FC       두 파일 또는 파일의 집합을 비교하여 다른 점을
         표시합니다.
FIND     파일에서 텍스트 문자열을 찾습니다.
FINDSTR  파일에서 문자열을 찾습니다.
FOR      파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.
FORMAT   Windows에서 사용할 디스크를 포맷합니다.
FTYPE    파일 확장 연결에 사용되는 파일 형식을 표시하거나 수정합니다.
GOTO     Windows 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진
         줄로 가게 합니다.
GRAFTABL Windows가 그래픽 모드에서 확장 문자 세트를 표시할
         수 있게 합니다.
HELP     Windows 명령어에 관한 도움말을 제공합니다.
IF       일괄 프로그램에서 조건 처리를 수행합니다.
LABEL    디스크의 볼륨 이름을 만들거나, 바꾸거나, 지웁니다.
MD       디렉터리를 만듭니다.
MKDIR    디렉터리를 만듭니다.
MODE     시스템 장치를 구성합니다.
MORE     출력을 한번에 한 화면씩 표시합니다.
MOVE     하나 이상의 파일을 한 디렉터리에서 다른 디렉터리로 옮깁니다.
PATH     실행 파일의 찾기 경로를 보여주거나 설정합니다.
PAUSE    일괄 파일의 처리를 보류하고 메시지를 보여줍니다.
POPD     PUSHD 명령으로 저장된 디렉터리로 바꿉니다.
PRINT    텍스트 파일을 인쇄합니다.
PROMPT   Windows 명령 프롬프트를 바꿉니다.
PUSHD    현재 디렉터리를 저장한 후 디렉터리를 바꿉니다.
RD       디렉터리를 지웁니다.
RECOVER  불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구합니다.
REM      일괄 파일 또는 CONFIG.SYS에서 주석을 기록합니다.
REN      파일 이름을 바꿉니다.
RENAME   파일 이름을 바꿉니다.
REPLACE  파일을 대체합니다.
RMDIR    디렉터리를 지웁니다.
SET      Windows 환경 변수를 보여주거나, 설정하거나, 지웁니다.
SETLOCAL 일괄 파일에서 환경 변경의 지역화를 시작합니다.
SHIFT    일괄 파일에서 바꿀 수 있는 매개 변수의 위치를 바꿉니다.
SORT     입력을 정렬합니다.
START    지정된 프로그램이나 명령을 별도의 창에서 시작합니다.
SUBST    경로를 드라이브 문자로 지정합니다.
TIME     시스템 시간을 보여주거나 설정합니다.
TITLE    CMD.EXE 세션에 대한 창의 창 제목을 설정합니다.
TREE     드라이브 또는 경로의 디렉터리 구조를 그래픽으로 화면에 표시합니다.
TYPE     텍스트 파일의 내용을 보여줍니다.
VER      Windows 버전을 보여줍니다.
VERIFY   파일이 디스크에 올바로 쓰였는지 검증할지
         여부를 지정합니다.
VOL      디스크 볼륨 이름과 일련 번호를 보여줍니다.
XCOPY    파일과 디렉터리 트리를 복사합니다.
흠.. 내가 지금 당장 필요한건 파일 생성인데..
옛날에 도스 배울때는 있던걸로 기억하는데.. 윈도우에서는 없는건가?
이밖에 EDIT라든지 이런 명령어는 어디서 찾을 수 있는것인가..
환경설정에서 path를 보고 더 공부해봐야겠다.

javascript

플밍/자바스크립트 | 2010/04/27 20:01 | 흐멀
Closures

JavaScript 에서 이러한 public, private, privileged 멤버들의 구현이 가능한 것은, closure 때문이다. closure 의 의미는(Javascript의 closure 구현이 시사하는 바는), inner function 은 outer function 의 var 선언 변수와 매개변수에 접근할 수 있으며, 심지어 outer function 이 리턴된 이후에도 가능하다는 뜻이다. 이는 굉장히 강력한 언어 속성인데, JavaScript 에서 어떻게 이것이 가능한지 파헤쳐놓은 책은 아직은 없다. 대부분 아예 언급할 생각조차 없는 같다.

private 과 privileged 멤버는 object 가 생성될 때에만 만들 수 있다. 반면, public 멤버는 언제든 만들 수 있다.


Patterns


Public

function Constructor(...) {
    this.membername = value;
}
Constructor.prototype.membername = value;


Private

function Constructor(...) {
    var that = this;
    var membername = value;

    function membername(...) {...}
}


Note: function 구문

function membername(...) {...}



var membername = function(...) {...};
표현의 축약이다.


Privileged

function Constructor(...) {
    this.membername = function (...) {...};
}


(원 문에) Copyright 2001 Douglas Crockford. All Rights Reserved Wrrrldwide.
생성자
function Rectangle(w,h){
this.width=w;
this.height=h;
}
var rect1= new Rectagle(2,4); //rect1={width:2,height:4}

생성자 함수에는 일반적으로 반환값이 없다. 다시 말해, 생성자 함수는 this키워드가 가리키는 객체를 초기화시킬 뿐 아무런 값도 반환하지 않는다. 하지만 생성자 함수에서 결과값으로 객체를 반환하면 반환값을 가질 수 있으며, 이때 반환되는 객체는 new 문장의 결과값이 된다. 그리고 생성자 안의 this가 가리키고 있던 객체는 페기도니다.

프로토타입과 상속
자바스크립트의 모든 객체는 프로토타입이라고 불리는 또 다른 객체를 내부적으로 참조할 수 있다. 그리고 객체는 프로토타입의 프로퍼티들을 자신의 프로퍼티로 가져온다. 다시 말해 자바스크립트의 객체는 자신의 프로토타입에 있는 프로퍼티를 상속받는다.
function Rectangle(w,h){
this.width=w;
this.height=h;
}
Rectangle.prototype.area=function(){return this.width * this.height;}

상속받은 프로퍼티의 읽기와 쓰기
읽을때 객체에 프로퍼티가 없으면 프로토타입 객체에 프로퍼티를 검사한다.
쓸때는 프로토타입을 검사하지 않는다. 객체에 해당 프로퍼티가 없으면 그 프로퍼티를 만든다.

내장형 타입의 확장
프로토타입을 사용하면 내장객체의 프러퍼티를 만들수 있다. 하지만 좋은 방법은 아니다.
내장형 네이티브 클래스의 프로토타입을 확장하는 것이 안전하고 유용하다.

자바스크립트의 클래스 시뮬레이션
자바나 C++ 자바스크립트간의 비교
자바스크립트의 객체는 프로퍼티의 개수에 제한이 없으며, 동적으로 추가할 수도 있다.
자바나 C++에서 클래스는 객체의 구조를 정의한다.
인스턴스 프로퍼티
인스턴스 메서드
클래스 프로퍼티
클래스 메소드

공통적인 객체 메서드
toString()메서드
valuOf()메서드
비교메서드
 a<b a.compareTo(b) <0
 a<=b a.compareTo(b) <=0
 a>b a.compareTo(b)>0
 a>=b a.compareTo(b)>=0
 a==b a.compareTo(b)==0
 a!=b a.compareTo(b)!=0

슈퍼클래스와 서브 클래스

상속없이 확장하기
  • Function()생성자를 사용하면 실행시점에 자바스크립트 코드를 동적으로 생성하고 컴파일할 있다. 이러한 점에서 Function() 생성자는 전역 함수인 eval() 함수와 유사하다.
  • Function()생성자는 호출될 때마다 함수 몸체를 파싱하고 새로운 함수 객체를 생성한다. 따라서 만약 생성자 호출이 루프안이나 자주 호출되는 함수 안에서 이루어진다면, 이러한 작업은 비효율적일 수 있다. 반면에 루프와 함수안의 함수 리터럴이나 중첩된 함수는 그것이 나타날 때마다 매번 다시 컴파일되지 않는다. 또한 함수 리터럴이 나타날 때마다 생성되는 함수는 서로 다른 함수 객체가 생성된 것이 아니다.
  • 끝으로 Function()생성자의 가장 중요한 점은 생성된 함수가 어휘적 유효범위를 사용하지 않는다는 것이다. 대신 Function()생성자에 의해 생성된 함수는 다음 코드에서 확인할 있듯이 마치 최상위 레벨의 함수인 것처럼 컴파일된다.
이전 1 2 3 4 5 ... 14 다음