본문 바로가기

Java, JSP15

Java 큐(Queue) 종류 및 특성 Java 큐(Queue) 종류 및 특성 - CopyOnWriteArrayList병렬 처리 성능이 좋고 Iterator를 이용해 데이터를 뽑아낼 시 대상을 복사해서 사용 - LinkedBlockingQueue, ArrayBlockingQueue, PriorityBlockingQueue프로듀서-컨슈머 패턴, 병렬 처리 성능이 좋음PriorityBlockingQueue는 우선 순위를 기준으로 처리 - SynchronousQueue큐에 데이터를 쌓지 않고 하나의 데이터가 큐에 들어가면 그 데이터를 가져갈 때까지 대기 - ConcurrentLinkedQueue병렬 처리 성능이 좋고 비블록 알고리즘이 사용됨 - LinkedTransferQueue프로듀서-컨슈머 패턴, 병렬 처리 성능에 좋고 블로킹, 비블로킹 둘 다.. 2016. 3. 30.
Java return generic type (map to bean) 자바를 사용하다 보면 map을 bean으로 변환해야 할 일이 많다.하지만 변환하다보면 형변환(cast)를 강제적으로 해주면서 코드가 지저분해지는 걸 종종 보게 되는데이를 방지코저 제네릭 타입으로 리턴하는 예제를 해보겠다. public static T map2Bean(Map map, Class clazz) {T t= null; try {t = clazz.newInstance(); for (Entry entry : map.entrySet()) {String key = entry.getKey();Object value = entry.getValue(); if (value == null) { continue;} for (Method m : clazz.getDeclaredMethods()) {if (m.getNa.. 2015. 6. 12.
Java Socket & ServerSocket options Socket & ServerSocket 옵션들(1) TCP_NODELAY - true : 네이글 알고리즘 사용 안함(버퍼화 사용 안함) - false : 네이글 알고리즘 사용(버퍼화 사용)(2) SO_TIMEOUT - 지정된 시간만큼 read() 대기하고 있다가 시간이 지나면 예외발생. 연결은 끊어지지 않고 다시 read() 시도.(3) SO_LINGER - true, seconds : 지정된 시간동안 남아있는 데이터를 전송하려고 시도한다. - false : 남아있는 데이터를 버린다.(4) SO_SNDBUF - 전송 버퍼 크기. 네트워크 속도가 빠를수록 버퍼가 크면 성능이 향상됨.(5) SO_EVCBUF - 수신 버퍼 크기. 네트워크 속도가 빠를수록 버퍼가 크면 성능이 향상됨.(6) SO_KEEPALIV.. 2013. 4. 20.
IO vs NIO performance compare (성능 비교) Java 1.4 버전에서 이미 NIO가 나왔음에도 일반 IO 쓰는게 대부분이다. 이번에 IO와 NIO의 성능 비교를 하고자 파일 복사 테스트를 하였으니 참고 시 유용하게 쓰였으면 한다(단, 걸린 시간만 체크). 테스트조건 - Java 버전: jdk1.6.0_39 - 파일크기: 232 Mbytes (src.zip) - 버퍼사이즈: 8192 bytes (1~6번까지 하나씩 테스트) 공통 private static File srcFile = new File("src.zip"); private static File desFile = new File("des.zip"); private static int bufferSize = 8192; public static void main(String[] args) { S.. 2013. 2. 14.
추상클래스 vs 인터페이스 추상클래스와 인터페이스 정의는 어느 클래스의 구현체가 어떤 기준에 의하여 여러 개가 나올 수 있다면 그 클래스들을 하나의 타입으로 묶어줄 수 있는 역할을 한다. 추상클래스 - 구현체를 포함한다. - 추상클래스로 정의된 클래스는 반드시 추상클래스를 상속받아야 한다. - 단일 상속이기 때문에 다중 상속을 할 경우엔 상속을 여러번 받아야 한다. 인터페이스 - 구현체가 없다. - 구현 계약을 지킨다면 다중 구현이 가능하다. 추상클래스는 부모-자식 관계가 성립되어야만 구현이 가능하도록 의존관계가 생겨서 어느 한 클래스가 수정되면 의존관계인 클래스들에 손상을 줄 수가 있다. 따라서 엄격하게 적합성 여부를 따져봐야 한다. 또 여러 클래스를 타입으로서 정의만 하는 것 외에도 기능의 진화에 더 중점을 두고 있습니다. 인.. 2012. 2. 5.
JSP request, response 과정 1. Request클라이언트(웹브라우저) ----- (request) -----> 서버request.setCharacterEncoding() : 클라이언트가 서버로 데이터를 보낼 때 데이터 문자인코딩 설정 2. Response클라이언트(웹브라우저) .java 생성 -- (complie) --> .calss 생성 ----> 실행 -- (Content-Type) --> HTML 출력pageEncoding이 명시 안되어있을 경우 Content-Type의 문자를 사용 끝. 2012. 1. 13.