JAVA
-
[NIO.2]NetworkChannelJAVA/NIO2 2014. 2. 14. 00:40
자바에서 소켓은 JDK 1.0에서 소개 되었고, 버젼이 올라가고 시간이 흐르면서 많은 것이 변했다.특히 자바7 NIO.2에서 TCP/UDP 기반 애플리케이션을 작성하는 새로운 인터페이스/클래스를 추가하고, 기존 클래스에 새로운 매소드를 추가해서 소켓 지원을 개선 했다. 무엇보다도 NIO.2에서는 모든 네트워크 채널 클래스에 공통 매서드를 제공하는 NetworkChannel 인터페이스를 도입했다.소켓 채널을 동기화하는 주요 클래스인 ServerSocketChannel, SocketChannel, DatagramChannel은 모두 NetworkChannel 인터페이스를 구현 한다. NetworkChannel 주요 내용 - 로컬 주소에 바인딩 하거나 반환하는 매서드 - 새로운 SocketOption 인터페이..
-
[NIO.2]FileChannelJAVA/NIO2 2014. 2. 5. 01:09
FileChannel은 자바 1.4에서 소개됐지만, SeekableByteChannel 새 인터페이스를 구현하기 위해 최근에 업데이트 되었다. SeekableByteChannel은 임의 접근 파일 기능을 제공하며, FileChannel은 파일의 특정 영역을 잠그거나, 고속 접근을 위해 특정 영역을 메모리에 직접 매핑하는 등의 고급 기능을 제공한다. 다음 예제는 지정된 경로를 읽기/쓰기 할 수 있는 채널을 가져온다. public void useFileChannel(){ Path path = Paths.get("C:/TEMP", "story.txt"); //읽기 쓰기 파일 채널 try(FileChannel fileChannel = (FileChannel.open(path, EnumSet.of(Standard..
-
[NIO.2]ByteBufferJAVA/NIO2 2014. 2. 4. 17:29
버퍼는 근본적으로 데이터를 읽고 쓸 수 있는 배열이다. Buffer 인터페이스는 ByteBuffer, ChrBuffer, IntBuffer, ShortBuffer, LongBuffer, FloatBuffer, DoubleBuffer 을 제공한다.(보통 ByteBuffer 을 많이 사용한다.)또한 ByteBuffer 을 생성시 allocateDirect 를 이용하면 다이렉트 버퍼(힙이 아닌 일반 메모리로 접근)로 만들수 있다. ByteBuffer 속성필수 요소 - Limit : 버퍼에 쓸 때 얼마나 많은 데이터를 가질 수 있는지를 가르킨다. - Position : 얼마나 많은 데이터를 읽고 쓰는지 추적한다. - Capacity : 버퍼에 저장할 수 이있는 데이터의 최대 크기를 가르킨다.0 ≤ positio..
-
[NIO.2]SeekableByteChannelJAVA/NIO2 2014. 2. 4. 17:23
SeekableByteChannel 인터페이스는 채널에서 위치라는 개념을 구현하여 RAF를 지원 합니다. 채널에서 바이트 버퍼를 읽어올 수 있고, 바이트 버퍼를 채널에 쓸 수 있으며, 현재 위치 지정과 설정, 지원된 차원의 채널에 연결된 엔티티를 잘라내기를 할 수 있습니다. 다음은 이러한 기능을 지원 하는 메소드 입니다.postion() : 채널의 현재 위치를 반환한다.(정수) position(long) : 채널의 위치를 long 값으로 지정한다.(정수)truncate(long) : long 값의 채널에 연결된 엔티티를 잘라낸다.read(ByteBuffer) : 바이트를 채널에서 버퍼로 읽어 들인다.write(ByteBuffer) : 바이트를 채널에서 버퍼로 쓴다.size() : 이 채널의 연결된 엔티티..
-
PolymorphismJAVA/in 기초 2014. 2. 3. 00:02
다형성이란 하나로 여러가지 일을 하는 것을 이야기 한다. 상속과 관련된 다형성의 기법들 - 인터페이스(interface) - 오버라이딩(Overriding) - 추상 클래스(Abstract Class) - 추상 메소드(Abstract Method) - 다운캐스팅(Downcasting) - 업케스팅(Upcasting)*예를 들자면, 객체지향을 이야기 한다. 객체(Object)는 모든 형태로 변환(캐스팅)이 가능 하다 Abstract Class & Abstract Method 추상 메소드 - 메소드 몸체가 없는 메서드를 추상 메서드라고 한다. - 메소드 선언부에 abstract 키워드를 사용해야 한다. //일반 메소드 public void sayHello(){} //추상 메소드 public abstract ..
-
Overloading, Constructor, Inheritance, Overriding, this, superJAVA/in 기초 2014. 2. 2. 20:57
Overloading오버로딩이란 하나의 메소드 이름에 여러 개의 메소드를 만들 수 있게 해주는 기법이다. 오버로딩의 정의 - 하나의 이름으로 여러개의 메서드를 만드는 기법 오버로딩 메소드를 만드는 규칙 - 반드시 매개변수의 개수나 매개변수의 형이 달라야 한다. 오버로딩을 사용하는 이유 - 해당 클래스의 메서드를 사용할 때 사용자의 편리를 위해서 - 매서드의 이름 하나로 여러 가지 작업에 대처할 수 있다. * 오버로딩은 컴파일러가 발전하면서 등장한 기술이다. 컴파일러 차원에서 메서드의 이름을 자동으로 바꾸어 주기 때문에 사용자가 펴리하게 이것을 사용하는 것이다. //원본 소스 int plus(int a, int b); float plus(float a, float b); double plus(double ..
-
Java in MemoryJAVA/in 기초 2014. 1. 19. 22:42
1. JVM Memory 메소드 영역 - 메소드의 바이트코드 - 클래스 변수 힙(heap) 영역 - 객체 스택(stack) 영역- 매개변수- 지역변수 PC 레지스터 Native 메소드 스택 데이터 영역 구분 메소드 영역 : 모든 스레드가 공유하는 영역으로 JVM이 시작될 때 생성된다. JVM이 읽어 들인 각각의 클래스와 인터페이스에 대한 런타임 상수 풀, 필드와 메소드 정보, Static변수 메소드의 바이트 코드 등을 보관한다.힙(Heap) 영역 : 인스턴스 또는 객체를 저장하는 공간으로 가비지 컬렉션 대상이다. GC로 관리되는 영역이다.스택(Stack) 영역 : 스택은 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 생성된다. 스택프레임(Stack Frame)라는 구조체를 저장하는 스텍으로 JVM은 ..
-
[NIO.2]File Store AttributesJAVA/NIO2 2013. 12. 30. 19:39
파일 저장소 정보에 대하여 FileStore 클래스를 이용하여 알 수 있다. 예를 들면, 얼마나 디스크 용량이 사용 가능한지.getFileStore(Path) Method는 파일 저장소 공간에 대한 정보를 불러온다. 다음 코드는 사용 용량을 출력하는 예제 이다. Path file = ...; FileStore store = Files.getFileStore(file); long total = store.getTotalSpace() / 1024; long used = (store.getTotalSpace() - store.getUnallocatedSpace()) / 1024; long avail = store.getUsableSpace() / 1024; DiskUsage 샘플은 기본 파일 시스템에서 디스크..