JVM 종료 직전 Spring Context를 먼저 종료하도록 해 주는 설정
ctx(ApplicationContext)를 얻어와서 아래와 같은 setting method를 호출해 준다. ctx.registerShutdownHook();
ctx(ApplicationContext)를 얻어와서 아래와 같은 setting method를 호출해 준다. ctx.registerShutdownHook();
영화로 영어공부를 하면서… 지나간 대사를 다시보기 위해서 왼쪽 방향키로 후방탐색을 했을 때, (예: 팟플레이어) 최소한의 시간만 뒤로 돌리고 싶은데 (예: 1초) 5초, 10초 이렇게 뒤로 이동해 버려서 김빠지는 경우가 많이 있었다. 그래서 인터넷 검색을 하다가, 이것이 keyframe 이라는 요소와 관련되어 있다는 말을 들어서, 동영상의 keyframe을 직접 수정하는 작업을 시도하였다. 물론 이것은 동영상을 다시 인코딩… Read More »
JMXServiceURL url = new JMXServiceURL(“service:jmx:rmi:///jndi/rmi://0.0.0.0:9001/jmxrmi”); JMXConnector jmxc = JMXConectorFactory.connect(url, null); MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); ObjectName gatewayObjName = new ObjectName(“org.bruce.test:name=TestServiceManaged”) mbsc.invoke(gatewayObjName, “testRemoteMethod”, null, null);
Main thread 에서 System.exit(0)를 사용하면 의미가 없고, 별도의 thread에서 System.exit(0)를 호출해야만 JVM을 종료할 수 있다.
java.util.Collection의 retainAll()과 removeAll()을 사용하여 두 List를 비교할 수 있다.
java… 에는 없는 것 같고, apache commons StringUtils.stripEnd() 를 사용하자!!
※ 결과 객체 조작의 문제 mybatis-ehcache를 사용할 때, selectOne()의 결과로 캐싱된 객체를 얻을 경우, 그 객체에 변경을 가하면 이후 다른 곳에서 동일한 쿼리를 호출했을 때 변경된 결과(쿼리의 결과를 조작한 값)을 리턴하게 된다. => 디버깅하기 대단히 어렵다!!! 그렇기 때문에 절대 select의 결과 객체를 가공해서는 안된다. 이 문제를 방지하기 위해서는 ehcache 설정에서 copyOnRead 옵션을 true로 주어야 한다. 그러나… Read More »
cpath=. cpath=$cpath:`ls -l $LIB_HOME | nawk -v rpa=$LIB_HOME ‘/.jar/{printf “%s/%s:”,rpa,$9}’` cpath=$CONF_HOME:$cpath
* 백그라운드에서 프로세스 실행하기 test.sh & * 백그라운드에서 실행되던 프로세스를 포그라운드로 돌리기 fg * 터미널 세션을 종료해도 살아 있는 백그라운드 프로세스 기동하기 nohup test.sh &
몰랐는데, mkv 파일의 경우 자막을 동영상 내에 병합(merge)시킬 수가 있었다. MKVToolNix 라는 툴을 사용하면, 현재 동영상 파일에 어떤 자막이 병합되어 있는지 확인하거나, 기존에 자막이 병합되어 있을 경우 삭제하거나, 자막이 없을 경우 새로운 자막을 병합시킬 수도 있다. 신기하네… * 추가 정보 Subtitle Edit 이라는 프로그램을 사용하면, mkv 파일에 내장된 자막을 별도의 파일로… Read More »
MySQL 쓰면서 하지 말아야 할 것 17가지
Eclipse plugin 설치 2. Gradle Project 생성 (아니면 기존 프로젝트 우클릭 후 configure > convert as gradle project 를 해도 된다고 하는데, 이럴 경우 build.gradle 등 파일이 생성되지 않아서 일단 보류…) (그래서 Dynamic Web Project에 build.gradle가 생성되도록 커맨드라인 명령을 사용해 보려고 함…) 3. build.gradle 파일에 dependency 추가 (위에서 fileupload 추가한 것 – 이렇게… Read More »
정확하지는 않으나… 일단 경험한 것 위주로 써 본다면… SYNC_SENT : 상대방 방화벽이 막혀 있을 경우 TIME_WAIT : 소켓 연결을 상태방이 끊었을 경우 ※ 잘못된 정보가 있으면 댓글로 지적 바랍니다~~
set BASEDIR=”D:\TEST” for /r %BASEDIR% %%i in (*.txt) do ren “%%i” “%%~ni.bak”
Properties props = new Properties(); try{ props.load(new FileInputStream(ResourceUtils.getFile(“classpath:config/properties/test.properties”))) //classpath 기준으로 찾을 경우 //props.load(new FileInputStream(ResourceUtils.getFile(“file:C:/project/src/main/resources/config/properties/test.properties”))) //파일시스템 기준으로 찾을 경우 }catch(IOException e){ e.printStackTrace(); } String testValue = props.get(“testKey”); * 이러한 류의 작업은 File I/O를 사용하기 때문에 시스템 기동부나 테스트코드에서 사용해야지, 자주 반복되는 구간에서 사용해서는 안된다.
웹페이지에서 refresh 를 하면서 JMX로 Hazelcast의 상태를 모니터링하는 프로그램이 있었다. 그런데 왜 일정한 주기로(며칠…) 다운되나 jconsole로 원인을 살펴보았더니, 이 JMX 조회를 수행할 때, JMX connection이 초기화되지 않고 계속 생성되면서, Hazelcast 내부 스레드(thread) 제한 갯수인 5000 에 육박하였기 때문이었다. 이 문제는 해당 프로그램에서 조회시마다 connection close를 잘 해 주도록 수정하여 해결되었다. 끝~~
Connection reset by peer (혹은 “peer로 연결 재설정”) 이 메세지는, 잘은 모르지만 느낌상 Netty에서 뿌려주는 메세지처럼 보인다. 내 경우에는, 연결을 유지하는 소켓통신을 사용중, 거래가 없기 때문에 상대방이(서버) 연결을 끊은 경우 (상대방 방화벽/어플리케이션 에서 자동으로 연결종료?), 내 쪽 (클라이언트) 에서 이 메세지를 볼 수 있었다. 검색을 좀 해 보니, 이것은 상대방이 TCP RST 패킷(리셋)을 보낼… Read More »
* 실제로 이렇게 사용하는 것이 괜찮은가 하는 것은 잘 모르겠으나, 일단 한 번 구현해 보았다. public static final Charset CHARSET_EUC_KR = Charset.forName(“EUC-KR”); public static final String KSC5601_START_HEX = “A1A1”; //EUC-KR 코드페이지 내에서 KSC5601의 시작코드 public static final String KSC5601_END_HEX = “FEFE”; //EUC-KR 코드페이지 내에서 KSC5601의 종료코드 public static final int KSC5601_START_INT = Integer.parseInt(KSC5601_START_HEX, 16); public… Read More »
칼슘에 관한 모든 것
Maven 프로젝트 하나를 checkout 받았는데, 구조가… [이클립스프로젝트명] > [모듈명1] > src > main … [이클립스프로젝트명] > [모듈명2] > src > main … 이렇게 되어 있었다. 그래서 이 프로젝트를 그냥 checkout 하는 것만으로는 Maven 프로젝트로서 기능을 할 수도, build path를 설정할 수도 없었다. 이 경우에는 Module 별로 Maven 프로젝트를 import 하면 된다고 한다. 패키지익스플로러에서… Read More »