목록웹프로그래밍 (48)
bdfgdfg
흔히 쓰레드라는 말이나오면 프로세스와 같이 설명이 된다. 프로세스란 하드에 있는 프로그램이 메모리에 올라와 실행상태에 놓이게 되는 것. 즉 실행중인 프로그램을 의미하며 쓰레드는 프로세스의 자원을 이용해 실제로 작업(코드 실행)을 수행하는 것이 바로 쓰레드. -> 그렇기에 기본적으로 모든 프로세스는 최소한 하나의 쓰레드를 가진다. 쓰레드는 프로그래머에 의해 둘 이상의 쓰레드가 존재할 수 있고 이를 멀티쓰레드 환경이라고 한다. 멀티 쓰레드의 장점은 이론상 멀티코어 CPU상에서 하나의 코어 = 쓰레드 이므로 CPU사용률이 향상된다. -> 다만 쓰레드는 스케쥴링 대상이므로(컨텍스트 스위칭) 너무 많은 쓰레드 생성 시 오히려 성능이 더 저하될 수 있다. -> 또한 데이터의 경쟁상태(race condition) 및..
제네릭스 제네릭스란 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. -> 객체의 타입을 컴파일시에 체크하기에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. class Box { T item; void setItem(T item ) { this.item = item;} T getItem() {return item;} } 제네릭의 사용방법은 위와 같다. T에 해당하는 문자는 다른 문자가 와도 상관없다. 기존에는 다양한 종류의 타입을 다룰 때 Object타입을 사용했고, 그로인해 형변환이 불가피 했지만 이제는 제네릭을 이용해 원하는 타입을 지정하여 사용만 하면 된다. import java.io.FileInputStream; import java.ut..
자바에는 컬렉션 클래스가 존재한다. 간단히 말하면 자료구조를 모아놓은 클래스들. 구현된 자료구조 클래스들(파랑색)은 각각의 인터페이스를 상속받아 구현되어 있따. 주로 Hash가 붙은것들은 해시테이블로 구현되어있고, Tree,Sorted가 붙은것은 완전이진탐색트리(레드-블랙트리)로 구현되어 있다. -> 키(Key)가 필요한 Map 인터페이스를 상속받는 Hash 클래스는 키가 사용자 정의 클래스라면 hashcode를 구현해야하며, SortedMap은 comparator를 구현해주어야 한다. 이러한 자료구조 컬렉션 클래스들은 이미 구현된걸 가져다 쓰는 편리함도 있고, 공통된 인터페이스를 구현하였기에(Collection,Map) 가독성도 높다는 장점이 있다. List인터페이스 List인터페이스는 중복을 허용하면..
자바의 날짜와 시간과 관련된 클래스는 Date -> Calendar -> java.time에 속한 클래스의 순서로 발전해왔다고 한다. 상대적으로 빈약한 Date와 그보다 더 발전한 Calendar. 다만 몇가지의 단점으로 인해 java.time패키지에 속한 클래스들이 기존의 단점을 개선한 버전으로 나왔다곤 하지만.. 이미 Date와 Calendar가 오래 사용되어 왔기에 가볍게 보고는 가야한다. Calendar / GregorianCalendar Calendar는 추상클래스이기에 직접 객체를 생성할 수 없고 메소드를 통해 완전히 구현된 클래스의 인스턴스를 얻어야 한다고 한다. import java.io.FileInputStream; import java.util.*; public class Hello {..