●Collection

 ▷데이터의 집합, 그룹

 ▷Type parameter (<T>) 를 통해 지정된 Object들을 저장한다.

 ▷import java.util.*

 

 

○Set

 ▷순서를 유지하지 않는 데이터의 집합

 ▷데이터의 중복을 허용하지 않는다.

 

 ▶HashSet

  ▷가장 빠른 임의 접근 속도

  ▷순서를 예측할 수 없다.

 

 ▶TreeSet

  ▷정렬 방법을 지정 가능하다.

 

 ▶메소드

 

 

○List

 ▷순서가 있는 데이터의 집합

 ▷데이터의 중복을 허용한다.

 

 ▶LinkedList

  ▷양방향 포인터 구조로 이루어져있음. (Doubly)

  ▷삽입, 삭제가 비교적 자유로움

  ▷Stack, Queue, DQueue등에 사용

 

 ▶Vector

  ▷대용량 처리를 위해 사용했으며, 내부에서 자동 동기화가 일어남

  ▷비교적 성능이 좋지 않고, 무거움

 

 ▶ArrayList

  ▷단방향 포인터 구조로 이루어져 있음.

  ▷각 데이터에 대한 인덱스를 가짐

 

 ▶메소드

  ▷boolean add(T): T를 List에 추가한다.

  ▷String toString(): List를 문자열로 바꿔 반환한다.

  ▷int size(): List의 크기를 반환한다.

  ▷T get(index): 해당 index의 element를 반환한다.

  ▷boolean remove(T) / remove(index): 해당 index의 element/ element를 지운다.

  ▷boolean removeAll(List): 인자의 List에 있는 모든 element를 지운다.

  ▷int indexOf(T): T와 같은 element의 index를 반환한다. (처음부터 찾음)

  ▷int lastIndexOf(T): T와 같은 element의 index를 반환한다. (끝부터 찾음)

  ▷boolean contains(T): T를 가지는지 확인한다.

  ▷boolean containsAll(List): List내의 모든 element들을 가지는지 확인한다.

  ▷List subList(startIndex, endIndex): startIndex부터 endIndex까지로 새로운 List를 만든다.

  ▷void clear(): List를 비운다.

  ▷Iterator<T> iterator(): List를 순회하는 Iterator<T>를 반환한다.

   ▷boolean hasNext(): 다음 element가 있는지 확인한다.

   ▷boolean next(): 다음 element를 가리킨다.

  ▷boolean isEmpty(): List가 비었는지 확인한다.

 

 

○Map

 ▷Key와 Value의 쌍으로 이루어진 데이터의 집합

 ▷순서가 유지되지 않음.

 ▷Key의 중복은 허용하지 않지만, Value의 중복은 허용

'컴퓨터 언어 > java' 카테고리의 다른 글

Exception  (0) 2020.11.19
Lambda Expression  (0) 2020.11.16
Interface  (0) 2020.11.16
Inheritance  (0) 2020.11.14
Package  (0) 2020.11.13

○Interface

 ▷class가 해야할 일을 명시하는 일종의 signature class

 ▷정의되지 않은 메소드들을 가진다.

 ▷abstract class와 비슷하다.

 ▷여러 Class에 대해 일반화된 함수를 지원해줌. ( ex) 다른 Class간의 비교 )

 

 ▶선언

  ▷Class와 비슷한 방식으로 선언한다. (class 대신 interface)

  ▷메소드를 선언만 하고, 정의하지 않는다.

 

 ▶포함 (implements)

  ▷Class는 interface를 implements할 수 있다.

  ▷implements한 interface의 모든 method를 정의해야 한다. (abstract class와 비슷)

  ▷한번에 여러 개의 interface를 implements할 수 있다. (,를 통해 구분)

 

 ▶Interface variable

  ▷Abstract Class와 다르게, Interface 타입의 변수를 선언할 수 있다.

  ▷해당 Interface를 포함한 모든 Class가 변수에 들어갈 수 있다.

 

 ▶Default Interface Method (Java8)

  ▷default 키워드를 통해 기본 implement를 정의 가능함.

  ▷implementes되었을때, 자동으로 default method를 생성하게 됨.

  ▶Default Interface Methodd Extends (상속)

   ▷extends: default method 상속함.

   ▷extends + redeclare: default method가 abstract하게 됨.

   ▷extends + redefine: default method를 override함.

 

 

 

 ▶Static Interface Method (Java8)

  ▷Interface의 이름으로 접근 가능한 Method.

  ▷내용이 정의될 수 있다.

  ▷다른 default, static method에 접근 가능하다.

'컴퓨터 언어 > java' 카테고리의 다른 글

Lambda Expression  (0) 2020.11.16
Collection  (0) 2020.11.16
Inheritance  (0) 2020.11.14
Package  (0) 2020.11.13
Inner class  (0) 2020.11.11

○Inheritance

 ▷subclass가 superclass의 모든 멤버를 상속하는 것.

 ▷subclass는 superclass의 모든 멤버를 가지며, 추가로 새로운 멤버를 정의 가능하다.

 

 ▶선언

  ▷Superclass가 정의된 상태에서, Subclass를 정의함.

  ▷class subclass extends superclass

  ▷sub는 super의 모든 멤버 변수, 메서드를 가지게 된다.

 

 ▶접근

  ▷상속받은 public, protected 멤버들에 접근가능하다.

  ▷protected의 사용은 자제하는 편이 좋다.

  ▷super 키워드를 통해 superclass의 멤버에 접근 가능하다.

 

 

 ▶Overload

  ▷같은 이름의 메소드라도, 매개변수가 다르면 다른 메소드 취급하는 것.

  ▷superclass, subclass간의 Overload가 가능하다.

 

 ▶Override

  ▷superclass의 함수를 재정의하는 것.

  ▷같은 이름의 함수를 subclass에서 재정의한다.

  ▷super 키워드를 통해 원래 superclass의 함수에 접근 가능하다.

  ▷@Override 영역: Override된 함수만 위치 가능하다. (실수 방지)

 

 ▶Constructor

  ▷subclass의 생성자는, superclass의 생성자를 호출 가능하다.

  ▷super(arg1, ...)을 통해 superclass의 생성자를 호출한다.

  ▷다만 그 호출은 subclass의 생성자에서 첫 statement이여야 한다.

 ▶Polymorphism

  ▷superclass 변수는 그 subclass들을 담을 수 있다.

 ▶Abstract class

  ▶abstract method를 가진 class

   ▷abstract method: 선언만 가능하고, 정의가 불가능한 method

   ▷subclass에서 상속받고 Override해야 한다.

   ▷subclass에서 정의되지 않으면 그 class도 abstract class이다.

 

  ▷class에 abstract modifier를 붙여 Abstract class를 만들 수 있다.

 

  ▷abstract class는 객체를 생성하는데 사용할 수 없다.

  ▷subclass를 정의하는데 사용된다.

 

 ▶final method

  ▷더 이상 Override될 수 없는 메소드

 

 

 

※Object Class

 ▷java의 모든 class는 기본적으로 object class를 상속한다.

'컴퓨터 언어 > java' 카테고리의 다른 글

Collection  (0) 2020.11.16
Interface  (0) 2020.11.16
Package  (0) 2020.11.13
Inner class  (0) 2020.11.11
Generic  (0) 2020.11.11

○Package

 ▷여러 Sub-packages들과 classes, interfaces를 포함하는 group

 ▷Directory와 유사함.

 ▷같은 이름의 Class/sub-package라도 Package가 다르면 허용됨. -> 이름 충돌을 피하기 위해 사용됨.

 

 ▶선언

  ▷package 키워드를 통해 해당 Class가 속해있는 package를 정의함.

  ▷선언하지 않으면 default package에 속하게 됨.

 

 ▶사용

  ▷같은 Package의 Class는 별도의 선언 없이 Access 가능함.

   ▷public, package의 visibility인 경우

  ▷다른 Package의 Class는 import 키워드를 통해 Class를 넣어야 Access 가능함.

   ▷각각 import하거나, *를 통해 해당 Package내의 모든 Class를 import 가능함.

   ▷public class만 다른 Package에서 Access 가능함.

 

 ▶Sub-package

  ▷Package는 또 다른 Package를 포함할 수 있음

  ▷.을 통해 접근함 (Package.subPackage.Class

 

 ▶Package Hierarchy

  ▷Package들은 Directory 구조에 저장됨.

  ▷Package는 Directory와 같은 구조를 지녀야 함

 

 ▶static import

  ▷클래스에 대한 인스턴스 생성 없이 static 메서드/필드를 사용 가능

 

'컴퓨터 언어 > java' 카테고리의 다른 글

Interface  (0) 2020.11.16
Inheritance  (0) 2020.11.14
Inner class  (0) 2020.11.11
Generic  (0) 2020.11.11
Java Documentation Comments  (0) 2020.11.10

○Solid State Disks (SSD)

 ▷HDD를 대체하기 위해 개발된 고속 보조기억장치

 

 ▶구성

  ▷Flash Translation Layer (FTL): HDD와 동일한 interface로 구동 가능하도록 함.

  ▷Page: 512KB ~ 4KB까지의 정보를 저장 가능, SSD의 기본 단위

  ▷Block: 32~128 페이지들을 저장 가능

  ▷100,000만번의 반복적인 쓰기 작업 이후에 Block사용이 불가능함.

 

 ▶Flash Memory R/W

  ▷전자의 유무로 1/0을 판정: 전자가 있으면 0, 없으면 1

  

 ▶NAND Flash Memory

  ▶장점

   ▷높은 집적도 (고용량, 가격의 낮음)

   ▷낮은 전력 소모

   ▷낮은 지연시간

   ▷높은 쇼크, 진동에 대한 저항

   ▷작은 form factor

 

  ▶단점

   ▷덮어쓰기 불가

   ▷제한된 수명

   ▷Bad blocks (횟수 이상 지우면 해당 Block에 access할 수 없다.)

   ▷신뢰성 약화

 

 

 ▶Flash Translation Layer (FTL)

  ▷기능적으로 HDD를 모방하는 소프트웨어

  ▷HDD와 동일한 File system으로 동작 가능하게 함.

  ▷Flash Memory의 특성을 숨김 (덮어쓰기 불가, Bad block...)

 

  ▶Re-mapping

   ▷Flash memory는 덮어쓰기가 불가능함.

   ▷데이터를 덮어쓰려면, 다른 위치에 데이터를 쓰고, 해당 위치를 가리키도록 함.

 

  ▶Wear-leveling

   ▷Flash memory는 지우는 횟수에 제한이 있음.

   ▷SLC (Single-Level-Cell): 100,000 / MLC(Multi..): 10,000

   ▷Block들의 지우기 횟수를 비슷하게 하여 수명을 늘림.

 

  ▶Bad Block Management

   ▷Bad Block: Block에 더이상 access할 수 없음.

   ▷Initial bad blocks: 다른 임시 Block을 가리키도록 함.

   ▷Run-time bad blocks: 중간에 생기는 Bad block들

 

 ▶Mapping

  ▶Block-Mapping

   ▷Block 단위로 Mapping함.

   ▷작은 SRAM으로도 충분

   ▷작은 크기를 쓸때 비효율적

 

  ▶Page-Mapping

   ▷Page 단위로 Mapping함.

   ▷충분히 큰 크기의 SRAM이 필요함.

   ▷작은 크기도 효율적으로 처리 가능

'컴퓨터 지식 > 시스템' 카테고리의 다른 글

Memory Hierarchy  (0) 2020.11.17
Locality  (0) 2020.11.17
Disk Drive  (0) 2020.11.12
Memory R/W  (0) 2020.11.12
Nonvolatile Memory  (0) 2020.11.12

+ Recent posts