본문 바로가기

Java

SigKill handle in Java http://stackoverflow.com/questions/2541597/how-to-gracefully-handle-the-sigkill-signal-in-java 예전에 풍주형님께서 구현해서 보여주셨던 내용. 최근에 웹어플이 아닌 일반 자바 어플을 개발하는 케이스가 꽤 되어서..다시 찾아봄~ 더보기
[Java] Initialization on demand holder idiom http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom When to use itUse this pattern if the initialization of the class is expensive and it cannot be done safely at class-loading time and the initialization is highly concurrent. The crux of the pattern is the safe removal of the synchronization overhead associated with accessing a singleton instance.[edit]When not to use itAvoid thi.. 더보기
졍규식 http://sexy.pe.kr/tc/532 (그룹에 관련)http://adnoctum.tistory.com/544 (최소매칭) 더보기
about gc log http://stackoverflow.com/questions/895444/java-garbage-collection-log-messages 더보기
ibatis와 dbcp (Select문에 대한 rollback 실행) http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=40288 처음에는 어느 블로그에서 글을 보고그걸 바탕으로 조사를 했었는데, 위 기고문의 내용을 보니...처음 참고하였던 그 블로그와는 내용이 조금 다른(?.. 결과적으로는 같지만.. 과정 설명이 좀 다른.. )..좀 미묘하게 차이가 나는 부분이 있어서 위 글을 보고 소스를 열어서 참고해보았다. 일단.... ibatis의 아래 설정에 의해서...... ibatis에서 JDBCTransaction이 사용되고.. 거기서 아래와 같이 connection.setAutoCommit(false)가 실행됨..if(conn.getAutoCommit()) { conn.setAutoCommit(fals.. 더보기
[Java] Semaphore(세마포어)를 이용한 ThreadExecutor DB에서 데이터를 읽어와서 네트워크를 통해 뭔가 작업을 한 후 다시 DB에 넣는 작업을 해야하는데 이 데이터의 건수가 많고 네트워크를 통한 작업에 시간이 좀 걸려서 이 부분을 스레드로 돌렸다. 기존에 알고 있는 Executor exec = Executors.newFixedThreadPool(10); 을 사용해서 실행을 했더니 DB에서 데이터 읽어오는 속도가 훨씬 빠른탓에 OOM 에러가 발생하기 시작... 처음에 도무지 왜 에러가 나는지 몰랐는데 확인해보니.. 내부에서 스레드들이 처리하지 못 한 JOB을 Queue에 저장해 두는데 이게 너무 쌓이다보니 문제가 되었던듯 하여... 자바병렬처리 프로그래밍 책을 다시 집어들었다. 미리 준비된 ExecutorService중 스레드가 추가 작업을 하지 못 할 때 w.. 더보기
[Java] 데몬(daemon) 만들기... http://ir.bagesoft.com/640 더보기
[Java] BlockingQueue를 사용한 생산자-소비자 패턴 모델 구현 요즘 회사에서 RabbitMQ를 사용하여 메시지 처리 프로그래밍을 하고 있습니다. 다른 개발자분과 함께 개발 중인데 저는 Consumer 역할을 하는 데몬을 구현중이네요. 생산자-소비자라는 것이 상대적인 부분이 있어서 MQ를 중심으로 제가 개발 중인 데몬은 소비자가 되지만... 제 데몬을 중심으로는 이 소비자가 다시 생산자가 되는 그런 개념이 됩니다. 아무튼 MQ로부터 메시지를 가져오고 그것을 내부 Queue에 저장하여 이런저런 할 일들을 구현을 해야하다보니 데몬안에서도 또 다시 생산자-소비자 패턴의 모델이 되어버렸습니다. 이를위해 Java에서 제공되는 BlockingQueue를 사용하였습니다. "자바 병렬처리 프로그래밍"이란 책에서는 이 Queue가 생산자-소비자 패턴을 구현하는데 아주 좋은 Queue.. 더보기
[Java] 간단한 유사도 계산 라이브러리 코사인기반, 상관 관계 기반, 적응적 코사인 기반의 유사도를 계산하여주는 라이브러리를 만들어보았습니다. https://github.com/need4spd/devyssim 지금은 코사인 기반의 모듈만 커밋되어있는데요 조만간 다른 것도 올리려고 합니다. 다 올렸습니다. :) 클래스의 디자인은 Weka를 보고 따라서 만들어보았습니다. 예전에 한번 제 나름대로 모델링을 하여 만들었었던 것 보다 Weka의 Usage만 보고 따라만든 모델이 훨씬 좋네요 -_-; 부끄럽구요... Usage만 보고 만든거라 내부는 완전 딴판이구요... 사실 간단한 모듈이라서.. 개인적으로 사용하려고 만들었던 것인데 github에 올린김에 그냥 한번 오픈하여 봅니다. 내부 구현 아주 간단합니다. 프로토타입 개발하려고 만들었던 것이라서... 더보기
[Java] 누가 날 부른거요? 날 호출한 클래스 알아내기. 회사에서 검색 서비스 개발 및 운영을 담당하고 있는데요.. 업무 중 하나가.. 솔루션으로 구매하여 사용하는 엔진의 RAW-LEVEL의 API를 우리 개발자들이 사용하기 편하게 한번 감싸서 검색 API를 개발해 제공하는 업무가 있습니다. 주로 성능보다는 재사용성이나 사용하는 입장에서 쓰기 편하게 그리고 검색 서버의 IP등의 프로퍼티 값들의 변경에 쉽게 대응 할 수 있고 디버깅을 쉽게 할 수 있도록 하는데 중점을 두고 API를 만들어 제공하고 있는데요.. 검색 API라는 것이 단순히 쇼핑몰의 검색결과 페이지에서만 사용되는 것이 아니고 카테고리, 기획전, 리뷰, 모바일, 오픈API등 굉장히 많은 곳에서 사용되게 마련이지요.. 그러다보니 의도하지 않은 검색 쿼리들이 유입되는 경우가 있거나 의도적인 악성 검색 쿼.. 더보기