[링크] java enum의 활용법
https://effectiveprogramming.tistory.com/entry/enum%EC%9D%98-%ED%99%9C%EC%9A%A9%EB%B2%95
https://effectiveprogramming.tistory.com/entry/enum%EC%9D%98-%ED%99%9C%EC%9A%A9%EB%B2%95
/** * Fragment를 신규 생성하여 리턴한다. (동적 생성) * * – 추가기능으로 액션바의 타이틀을 arguments 에 넣어준다. * * @param clazz * @param <T> * @return */ public static <T extends BaseFragment> T newFragment(Class<T> clazz){ T ret = null; try { ret = clazz.newInstance(); } catch (java.lang.InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e)… Read More »
– 출처: https://stackoverflow.com/questions/2800739/how-to-remove-leading-zeros-from-alphanumeric-text – // 간단하게 하면 이렇게 s.replaceFirst(“^0+(?!$)”, “”); // 정규식 객체를 사용하면 이렇게 Pattern.compile(“^0+(?!$)”).matcher(s).replaceFirst(“”); * 참고: 이 방식은 “0000” 같은 문자열이 들어오면 마지막 0 하나는 남겨준다.
(1) 심플한 방법 ObjectMapper mapper = new ObjectMapper(); String beautifiedJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(mapper.readValue(srcJson, LilnkedHashMap.class)); (2) (1) 을 수행했는데 마음에 들지 않을 경우, 사용자정의를 할 수 있는 포인트가 있다. (내 경우에는 indent가 tab이 아니라 space 2개로 되어 있는 것이 마음에 들지 않아서 적용해 보았다.)
담에 또 써먹을 일이 있을까 모르겠지만… 일단 끄적여 본다~ // 이 문자열에서 시간표시 이전만 남기고 제거하고 싶다. String msg = “블라블라블라블라 (09:01 13:57:14) 블라블라블라”; String msgSubStr = “”; // 잘라낸 결과 Pattern pattern = Pattern.compile(“\\(\\d\\d”); // 위 msg 문자열에서 “(09” 에 해당하는 정규식패턴 Matcher matcher = pattern.matcher(msg); int foundIdx = 0; if(matcher.find()){ foundIdx =… Read More »
* jackson 2.7 버전 사용시 spring 4.3 버전 미만이면 오류가 발생한다.
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=포트번호 -Dcom.sun.management.jmxremote.rmi.port=포트번호 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false 위와 같이 하면 왠만하면 되는데, 그래도 안된다면 아래의 옵션도 추가해 보자. -Djava.rmi.server.hostname=서버IP
https://spring.io/blog/2012/05/07/spring-mvc-3-2-preview-introducing-servlet-3-async-support
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() 를 사용하자!!
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 »
나도 잘은 모르겠으나… 해당 메서드의 implementation 에서 checked exception을 throw 하는 API를 호출할 가능성을 배제할 수 없으므로, (ex: 외부 라이브러리 메서드 호출), 이 부분은 그냥 유지하는 게 좋지 않을까 싶다.
Scanner scanner = new Scanner(System.in); while(true){ System.out.println(“실행할 서비스를 선택하세요 : “); String input = scanner.nextLine(); //block loop try{ //input 값으로 분기하여 필요한 로직 수행 //이 안에서 Exception 발생 가능성 있음 }catch(Exception e){ scanner.reset(); //Exception이 발생해도 중지되지 않고 계속 입력을 받을 수 있도록 처리 } }
로컬에서 잘 돌던 A.java 파일이 개발서버에서 Runtime시 NoClassDefFoundError 를 뿜고 있었다. 에러로그를 보니 A.java 가 외부 라이브러리 클래스 (jar 에 포함된 클래스) B.class 의 static method 를 호출하는 순간이었는데, 문제는 B의 static method가 JNI library(*.so 파일)를 호출하는데, JVM을 실행시킨 user의 권한이 *.so 파일을 실행시키는데 부족했기 때문이었다. 그래서, 해당 *.so 파일들의 권한을 750 => 755 로 모두… Read More »
* jstack [PID] > dump.txt 로 스레드덤프 추출 * 일단 BLOCK이 있는지 검사해 보자
* 접근 불가능한 필드에 접근하기 Map<String, Field> fieldMap = new HashMap<String, Field>(); Field[] fields = Example.class.getDeclaredFields(); for(Field f : fields) { fieldName = f.getName(); f.setAccessible(true); fieldMap.put(fieldName, f); } * 필드에 접근해서 값 셋팅하기 //this는 fieldMap에 해당하는 멤버를 지닌 객체 fieldMap.get(“returnMsg”).set(this, “success”);
public class NumberUtility { private static final Log LOG = LogFactory.getLog(NumberUtility.class); public static final BigDecimal INT_MIN_IN_BIGDECIMAL = new BigDecimal(Integer.MIN_VALUE); public static final BigDecimal INT_MAX_IN_BIGDECIMAL = new BigDecimal(Integer.MAX_VALUE); public static final BigDecimal LONG_MIN_IN_BIGDECIMAL = new BigDecimal(Long.MIN_VALUE); public static final BigDecimal LONG_MAX_IN_BIGDECIMAL = new BigDecimal(Long.MAX_VALUE); /** * 생성 금지 */ private NumberUtility(){} /** * Object를… Read More »