관리 메뉴

IT.FARMER

기본공부 본문

JAVA

기본공부

아이티.파머 2015. 12. 1. 18:28
반응형

* JVM  구조 


* Thread Process

Process는 응용프로그램 이 실행되는 단위를 말하며, 이실행단위를 CPU 상에서 처리할수 있게 하는 실행단위가 Thread가 된다.

프로세스를 동시에 실행하기위해 멀티 쓰레드로 띄우며,

쓰레드에서는 자원공유가 가능해지기때문에 프로세스를 여러개 뛰우는것보다 하나의 프로세스를 멀티로 뛰어 실행하는것이 좋다


*Collection

List

중복이 있고 순서가 있음

Vector 동기화 : 속도가 느림

ArrayList에 동기화가 보장되도록 최적화한 클래스이다.

JAVA 5.0 이 후로는 AutoBoxing/AutoUnBoxing을 지원한다.

AutoBoxing이란? 기본 Data 타입을 Wrapper 클래스형의 객체로 자동으로 변환해주는 기능. AutoUnBoxing은 AutoBoxing의 반대 개념

ArrayList 비동기화

Stack의 특징

Data의 삽입과 추출이 후입선출(Last-In First-Out) 구조로 되어 있다.

push() method : Data 삽입할 때 사용

pop() method : Data 추출할 때 사용

peek() method : 추출할 Data를 삭제하지 않고 Data만을 가져 올 때 사용

search() method : Stack으로부터 Data를 검색할 때 사용


Set

중복이 없고  순서도 없음

HashSet

ThreeSet 정렬 

Map 

검색할때 가장빠름 , 키값과 벨류 값

List와 Set이 순서나 집합적인 개념의 인터페이스라면 Map은 검색의 개념이 가미된 인터페이스이다. Map 인터페이스는 데이터를 삽입할 때 Key와 Value의 형태로 삽입되며, Key를 이용해서 Value를 얻을 수 있다.


HashTable 동기화

HashMap 비동기화 


기본적으로 객체가 저장되며, 여러 타입이  저장 가능


*

 Connection Timeout : 연결하지 못한 상태

 readTime : 응답받아 처리해야하는 작업을 해당 시간안에 하지 못했을때.



*

실수 연산의 경우 float , double 타입의 사용에 주의해야 한다.

System.out.println(2.0 - 1.1); 를 해보면 그 이유를 알 수 있다.  이에 대한 결과는 0.9가 아니라 0.8999999999  결과가 출력 된다.  이는 컴퓨터가 숫자1.1을 double로 정확하게 표현 할 수 없어 근사치를 출력하기 때문이다.  이에 대한 해결책으로 정확한 소수 연산을 수행하는BigDecimal 타입이 있다.  단, 주의할 점은 항상 BigDecimal(double)이 아닌 BigDecimal(String) 생성자를 사용해야 한다.   이유는BigDecimal(double)을 사용하는 순간, double 자체가 정확하게 수를 표현 못하기 때문에 생성 자체부터 부정확한 값이 기억되기 때문이다.



*  객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙

단일 책임 원칙 (Single responsibility principle) : 한 클래스는 하나의 책임만 가져야 한다.

개방-폐쇄 원칙 (Open/closed principle) : “소프트웨어 요소는 …… 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.”

리스코프 치환 원칙 (Liskov substitution principle) : “프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.” 계약에 의한 설계를 참고하라.

인터페이스 분리 원칙 : “특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.”

의존관계 역전 원칙 (Dependency injection principle) : 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다.”[4] 의존성 주입은 이 원칙을 따르는 방법 중 하나다.


ArrayList 내부적인 배열을 이용해서 리스트를 관리

LinkedList 내부적으로 참조리스트를 이용하여 리스트를 관리

삽입이나삭제의 처리가많으면 LinkedList, 참조 처리가많

으면 ArrayList를 사용하는 편이 성능을 좋게 한다고 말할 수 있다


응집도와 결합도.

응집도가 높고 결합도가 낮은 것이 좋은

해당 업무에 대한 내역이 과도하게 녹아나지 않은 내역에서 재사용 가능한정도.

다른 인터페이스와 많이 엮여있지 않은 간단한 상태.



반응형

'JAVA' 카테고리의 다른 글

FileInputStream vs FileReader 그리고 차이점  (0) 2016.03.15
Java Cache (LRU Cache) LinkedHachMap  (0) 2015.12.10
java proxy , reflect  (0) 2015.04.20
대용량 검색 방법 Mybatis ResultHander  (2) 2015.01.29
JAVA custom listener  (0) 2015.01.15