본문 바로가기

JAVA

(41)
JAVA Exception 정리 ## 예외란 오류와 예외의 개념오류는 시스템이 비 정상적인 상황이 생겼을대 발생된다.이는 시스템 레벨에서 발생된 것으로 심각한 수준의 오류이며, 개발자가 미리 예측 할수 없는 부분으로 애플리케이션단에서의 오류에 대한 처리를 신경 쓰지 않아도 된다. 오류가 시스템레벨에서 발생되면 예외는 개발자가 구현한 로직에서 발생된다. 즉 예외 상황을 예측하여 처리 할 수 있다. 예외란 개발자가 처리할수 있기때문에 예외를 구분하고 그에 따른 명확한 처리를 알고 적용하는 것이 중요하다.모든 예외 클레스는 Thowable을 상속 받고 있다. Throwable 을 상속 받는 클레스는 Error 와 Exception 이다. Exceptipn 하위 클레스로 RuntimeException을 살펴보자 RuntimeException에..
ExecutorService / ThreadPoolExecutor 동시 작업을 하기 위한 방법으로 1.5 에서 제공하는 ExecutorService 를 사용한다.예전엔 Thread를 관리하기 위해 ThreadGroup을 만들고 관리 하는 방법이 복잡하고 어려운점이 있었다.ExecutorService를 이용하면 내부적으로 ThreadPoolExecutor 를 생성한다. (new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue());) ThreadPoolExecutor 인자 ThreadPoolExecutor(corePoolSize, maximumPoolSize ,keepAliveTime, TimeUnit, BlockingQueue) Executor 프레임웍 특징..
JSR303 HV000030 Error No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.lang.Integer' wrapper Type 의 경우 @NotNull 을 사용 하여야 한다. Null이 올수 있기 때문이다. 이데 @Size와 혼용이 안되고 HV.... Error @Size를 민 맥스로 봤는데, 케릭터셋이나 Connection, Array 객체의 사이즈였다. @Mix, Max 를 이용하여 처리한다. javax.validation.constraints.Size The annotated element size must be between the specified boundaries (included). Sup..
ExecutorService 를 이용한 javaMail 대량 메일 발송 bulk mail send 1.병렬처리를 이용한 ExecutorService 사용.2. JavaMail Session 유지3. 발송 1000건 마다 메일 발송Transport t = session.getTransport(); t.connect(); try { for(Message m : messages) { m.saveChanges(); t.sendMessage(m, m.getAllRecipients()); } } finally { t.close(); }while (mailSize == 1000) {mailSenderService.send(mailMessage);}좀더 발전시킨다면, 컨슈머와 프로듀서 개념으로 사용하여, 특정 제약 조건을 좀더 명확하게 걸어 주거나,발송건수 제한을 두고, 제한한 데이터 이상의 데이터가 들어왔을때 제..
JAVA try catch with resource 우리는 자바를 사용하여 파일 입출력을 사용할때.finally 에 항상 close() 하는 구문을 선언하여 메모리가 엉뚱한데 잡고 있지 않도록 하였다.이런 기능이 왜 생기지 않았을까 ? 하는 생각이 들때쯤Web Application Service 를 만들라과제를 하던중에 try catch with resource 라는것을 접하게 되었고,WoW 이런 기능이!!try ( ... ) 안에 선언하여 finally 에서 자원을 닫아주지 않아도 자동으로 해당 자원을 close()시켜준다.공식 문서 참조 :https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html간단하게 예제를 적어보면 다음과 같다.protected static ..
FileInputStream vs FileReader 그리고 차이점 FileInputStream, FileReader InputStreamReader extend Reader : 바이트 단위로 처리FileReader extend InputStreamReader : 바이트를 문자(char)단위로 처리 File NIO 참고https://docs.oracle.com/javase/tutorial/essential/io/file.html참고 :InputStreamReader , OutputStreamReader 인코딩이 지정가능 하니, 바이트 단위로 처리 하는 것을 사용하길 권장한다.FileReader , FileWriter 는 시스템 기본 인코딩 정보를 불러와서 인코딩한다.
Java Cache (LRU Cache) LinkedHachMap 자바에서 사용중인 캐시중 EhCache 와 Spring을 사용하여 많이 사용한다. 간단하게 캐시 기능을 이용해 보면 어떨까하여 캐쉬 기능을알아보던중 LinkedHachMap를 이용해 보았다. 일반적으로 Collections의 Map은 순서가 없이 형태로 저장되고, 원하는 값을 검색할때 빠르게 찾을수 있는 특징을 가지고 있다. LinkedHashMap는 기본적으로 HashMap을 상속받아 기능은 Map과 유사하나 저장한 순서대로 값이 들어가 있고, removeEldestEntity() 가 특수한 기능을 한다. removeEldestEntity : 값 생성시 들어온 순서를 기억하고 기준값보다(저장되는) 가장 마지막에 들어온 값을 삭제한다. new LinkendHashMap(5); exa..
기본공부 보호되어 있는 글입니다.