Category Archives: JAVA

[Java] 제네릭(Generic) 관련 소스 샘플

By | 8월 1, 2017

  /** * 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 »

숫자 문자열의 앞에 붙는 0 (leading zero) 제거하기 (ex: "00001" => "1")

By | 6월 2, 2017

– 출처: https://stackoverflow.com/questions/2800739/how-to-remove-leading-zeros-from-alphanumeric-text – // 간단하게 하면 이렇게 s.replaceFirst(“^0+(?!$)”, “”); // 정규식 객체를 사용하면 이렇게 Pattern.compile(“^0+(?!$)”).matcher(s).replaceFirst(“”); * 참고: 이 방식은 “0000” 같은 문자열이 들어오면 마지막 0 하나는 남겨준다.   

Jackson 2 를 사용하여 json 을 이쁘게 출력하기 (beautifier, formatter)

By | 11월 24, 2016

(1) 심플한 방법 ObjectMapper mapper = new ObjectMapper(); String beautifiedJson = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(mapper.readValue(srcJson, LilnkedHashMap.class));   (2) (1) 을 수행했는데 마음에 들지 않을 경우, 사용자정의를 할 수 있는 포인트가 있다. (내 경우에는 indent가 tab이 아니라 space 2개로 되어 있는 것이 마음에 들지 않아서 적용해 보았다.)      

Java 에서 정규식(Regex)을 사용하여 substring 하기

By | 11월 19, 2016

담에 또 써먹을 일이 있을까 모르겠지만… 일단 끄적여 본다~   // 이 문자열에서 시간표시 이전만 남기고 제거하고 싶다. 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 »

원격지(remote)에서 JMX 접속(connection)을 할 수 있도록 하는 JAVA(JVM) option – (JMX 수신자의 입장)

By | 4월 5, 2016

-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

jmx를 사용하여 원격 메서드(mbean method)를 호출(invoke)하는 예제

By | 2월 5, 2016

  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);  

Java 소켓통신에서 Connection reset by peer (peer로 연결 재설정) 오류가 발생할 경우의 사례

By | 11월 24, 2015

Connection reset by peer  (혹은 “peer로 연결 재설정”)   이 메세지는, 잘은 모르지만 느낌상 Netty에서 뿌려주는 메세지처럼 보인다. 내 경우에는, 연결을 유지하는 소켓통신을 사용중, 거래가 없기 때문에 상대방이(서버) 연결을 끊은 경우 (상대방 방화벽/어플리케이션 에서 자동으로 연결종료?), 내 쪽 (클라이언트) 에서 이 메세지를 볼 수 있었다. 검색을 좀 해 보니, 이것은 상대방이 TCP RST 패킷(리셋)을 보낼… Read More »

java에서 KSC5601 규격에 해당하는 문자만 허용하는 유효성검사 코드

By | 11월 20, 2015

* 실제로 이렇게 사용하는 것이 괜찮은가 하는 것은 잘 모르겠으나, 일단 한 번 구현해 보았다.   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 »

java interface method 에 붙은 throws Exception 구문을 코드 인스펙터가 지적했다. (그냥 Exception 말고 디테일한 Exception을 던지라고) 어떻게 해야 하는가??

By | 10월 14, 2015

나도 잘은 모르겠으나… 해당 메서드의 implementation 에서 checked exception을 throw 하는 API를 호출할 가능성을 배제할 수 없으므로, (ex: 외부 라이브러리 메서드 호출), 이 부분은 그냥 유지하는 게 좋지 않을까 싶다.      

java.util.Scanner 와 while 문을 사용하여 콘솔(console) 입력을 계속 받아서 수행하는 프로그램 샘플

By | 10월 14, 2015

  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이 발생해도 중지되지 않고 계속 입력을 받을 수 있도록 처리 } }

NoClassDefFoundError 의 특이한 케이스

By | 10월 1, 2015

로컬에서 잘 돌던 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 »

java 리플렉션(Reflection) 샘플

By | 3월 30, 2015

* 접근 불가능한 필드에 접근하기 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”);        

java 에서 숫자값을 갖는 object를 int나 long으로 형변환 해 주는 유틸 클래스(NumberUtility) 샘플 코드 (자작)

By | 2월 23, 2015

    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 »