2014. 12. 22. 10:55

[Java 7] try-with-resources

자바 7에서는 try catch문에서 resources 를 관리할수있다

resources 를 관리하는 대표적인것은 stream이며 자동으로 스트림을 종료하는 메서드가 호출된다

autocloseable을 implement 하여 사용자가 직접 구현도 가능하다

try catch resource 관리 예
try (Outputstream os = Files.newOutputStream (byte형)){
os.write (Data);
//os.close를 자동으로 호출
}catch (IOExeption e){
System.err.println (e);
}

관련 링크 : http://tutorials.jenkov.com/java-exception-handling/try-with-resources.html

http://m.blog.naver.com/skykingkjs/150172682117

https://code.google.com/p/guava-libraries/wiki/ClosingResourcesExplained

auto closeable 가능한 클래스
http://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html

'-=-= 컴퓨터 =-=- > JAVA' 카테고리의 다른 글

자바 예외처리  (0) 2013.06.02
URLDecoder: Illegal hex characters in escape (%) pattern  (0) 2013.04.10
자바 이전 버전 링크  (0) 2013.03.22
자바 역컴파일  (0) 2013.01.02
로딩 타이머  (0) 2012.11.06
2013. 6. 2. 08:39

자바 예외처리

package ExPakage;

public class ExClass {
	public static void main(String[] args) {
		try {
			ExClassCall ec = new ExClassCall();
			ec.a();
		} catch (Throwable e) {
			StackTraceElement[] ste = e.getStackTrace();
			
			StringBuffer sb = new StringBuffer();
			sb.append("ErrorName : "+ e.getClass().getName()).append("\n");
			sb.append("ErrorMessage : "+ e.getMessage()).append("\n");
			sb.append("FileName : "+ ste[0].getFileName()).append("\n");
			sb.append("ClassName : "+ ste[0].getClassName()).append("\n");
			sb.append("MethodName : "+ ste[0].getMethodName()).append("\n");
			sb.append("LineNumber : "+ ste[0].getLineNumber()).append("\n");
			
			System.out.println(sb.toString());
		}
		
	}
}

class ExClassCall{
	
	public void a() throws Throwable{
		
		System.out.println("a호출");
		
		//try {
			throw new Exception("A Exception");
		//함수에 throws가 있어도 예외처리를 하게되면 호출한 메임함수로 예외를 안던진다.
		//} catch (Exception e) {
		//	System.out.println("A Exception Catch : "+e.getMessage());
		//}
		
	}
	
}

결과

a호출

ErrorName : java.lang.Exception

ErrorMessage : A Exception

FileName : ExClass.java

ClassName : ExPakage.ExClassCall

MethodName : a

LineNumber : 32

'-=-= 컴퓨터 =-=- > JAVA' 카테고리의 다른 글

[Java 7] try-with-resources  (0) 2014.12.22
URLDecoder: Illegal hex characters in escape (%) pattern  (0) 2013.04.10
자바 이전 버전 링크  (0) 2013.03.22
자바 역컴파일  (0) 2013.01.02
로딩 타이머  (0) 2012.11.06
2013. 4. 10. 15:20

URLDecoder: Illegal hex characters in escape (%) pattern

java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string

 

파라미터에 %가 들어간경우 %이후 16진수로 인식하므로 값이 없어서 나는 오류

 

http://blog.daum.net/haha25/5388316

 

 

다른 해석

 

GET 방식과 Post방식의 암호화 유무에 따라 차이가 날수도 잇음

 

get방식은 서버에 encode가된 값이 decode되어 들어오고

 

post방식은 서버이 encode가된 값이 encode되어 들어온경우

 

get 방식의 decode된 값을 다시 decode할경우 오류

'-=-= 컴퓨터 =-=- > JAVA' 카테고리의 다른 글

[Java 7] try-with-resources  (0) 2014.12.22
자바 예외처리  (0) 2013.06.02
자바 이전 버전 링크  (0) 2013.03.22
자바 역컴파일  (0) 2013.01.02
로딩 타이머  (0) 2012.11.06
2013. 3. 22. 15:02

자바 이전 버전 링크

자바 옛날버전 받기

 

http://www.oracle.com/technetwork/java/archive-139210.html

'-=-= 컴퓨터 =-=- > JAVA' 카테고리의 다른 글

자바 예외처리  (0) 2013.06.02
URLDecoder: Illegal hex characters in escape (%) pattern  (0) 2013.04.10
자바 역컴파일  (0) 2013.01.02
로딩 타이머  (0) 2012.11.06
JAVA 속성 조회  (0) 2012.11.06
2013. 1. 2. 16:07

자바 역컴파일

 

 

명령어 : jad -o -sjava 파일명.class

 

미러사이트 : http://www.varaneckas.com/jad/

 

출처 : http://junss.tistory.com/156

 

사이트 : http://java.decompiler.free.fr/

 

디컴파일러 이클립스 플러그인 주소 : http://java.decompiler.free.fr/jd-eclipse/update

 

 

다른 방식


출처 : http://blog.naver.com/ndskr?Redirect=Log&logNo=150016631667


사이트

http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download

2012. 11. 6. 14:47

로딩 타이머

화면 로딩 시간 체크용

화면 로딩시 3초 기준으로 판단



package *********;

/**
 * 
 * 
 * 1. Comment  : 화면 로딩시간 타이머
 * 2. FileName  : StopWatch.java
 * 3. Package  : TimeCount
 * 5. 작성일   : 2012. 11. 6. 오후 2:08:11
 * 
*/ public class StopWatch { long startTime; long elapsedTime = 0; StringBuffer currentName; boolean threadFlag = false; public StopWatch() { currentName = new StringBuffer(); startTime = System.nanoTime(); } public StopWatch(boolean threadFlag) { chageMessage("", false, false); } public StopWatch(String message) { chageMessage(message, false, true); } public StopWatch(String message, boolean threadFlag) { currentName = new StringBuffer(); startTime = System.nanoTime(); chageMessage(message, threadFlag, true); } public void chageMessage(String message, boolean threadFlag, boolean resetFlag) { StringBuffer threadName = new StringBuffer(); this.threadFlag = threadFlag; if(threadFlag){ threadName.append("ThreadName=").append(Thread.currentThread().getName()); } currentName.append("[").append(message).append(threadName).append("]"); if(resetFlag){ start(); } } public void start() { startTime = System.nanoTime(); elapsedTime = 0; } public void stop(){ elapsedTime = System.nanoTime()-startTime; } public double getElapsedMS(){ if(elapsedTime == 0){ stop(); } return elapsedTime/1000000.0; } public double getElpasedNano(){ if(elapsedTime == 0){ stop(); } return elapsedTime; } public String toString(){ if(elapsedTime==0) stop(); currentName.append("elapsed Time : ").append(elapsedTime/1000000.0).append("ms"); return currentName.toString(); } } 사용법 <%@ page import="******.util.StopWatch" %> <% StopWatch timer = new StopWatch("Class.method",true); %> 화면 소스 <% out.println(timer); %> 출력결과 [Class.methodThreadName=[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)']elapsed Time : 115.357769ms

'-=-= 컴퓨터 =-=- > JAVA' 카테고리의 다른 글

자바 이전 버전 링크  (0) 2013.03.22
자바 역컴파일  (0) 2013.01.02
JAVA 속성 조회  (0) 2012.11.06
STRING 클래스의 SPLIT 사용시 .(점) 사용시 문제 해결  (0) 2012.07.26
자바 정규식 활용  (0) 2012.05.21
2012. 11. 6. 12:15

JAVA 속성 조회

import java.util.Iterator;
import java.util.Properties;
import java.util.Set;


public class GetProperties {

 /**
  * <PRE>
  * 1. Comment : 시스템 속성 조회 
  * 2. Path  : GetProperties.main()

  * 4. 작성일  : 2012. 11. 6. 오전 10:26:37
  *
  *   @return void
  *   @param args
  *</PRE>
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  
  Properties prop =  System.getProperties();
  Set key = prop.keySet();
  Iterator it = key.iterator();
  
  while (it.hasNext()) {
   String curKey =  it.next().toString();
   System.out.format("%s = %s\n", curKey , prop.getProperty(curKey));
  }
 }

}

 

예상결과

ava.runtime.name = Java(TM) SE Runtime Environment
sun.boot.library.path = C:\Program Files\Java\jre6\bin
java.vm.version = 16.0-b13
java.vm.vendor = Sun Microsystems Inc.
java.vendor.url = http://java.sun.com/
path.separator = ;
java.vm.name = Java HotSpot(TM) Client VM
file.encoding.pkg = sun.io
sun.java.launcher = SUN_STANDARD
user.country = KR
sun.os.patch.level = Service Pack 3
java.vm.specification.name = Java Virtual Machine Specification
user.dir = D:\Source\GetProperties
java.runtime.version = 1.6.0_18-b07
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs = C:\Program Files\Java\jre6\lib\endorsed

.......

 

================================================================

윈도우 SET과 유사한 버전

package SysGetEnv;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class SysGetEnv {

 /**
  * <PRE>
  * 1. Comment : 시스템 환경 변수 조회(윈도우 SET명령어 유사) 
  * 2. Path  : SysGetEnv.main()
  * 4. 작성일  : 2012. 11. 6. 오후 1:25:41
  *
  *   @return void
  *   @param args
  *</PRE>
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Map<String, String> envMap = System.getenv();
  Set key = envMap.keySet();
  Iterator it = key.iterator();
  
  while(it.hasNext()){
   String curKey = it.next().toString();
   System.out.format("%s = %s \n",curKey,envMap.get(curKey));
  }
  
 }

}

'-=-= 컴퓨터 =-=- > JAVA' 카테고리의 다른 글

자바 역컴파일  (0) 2013.01.02
로딩 타이머  (0) 2012.11.06
STRING 클래스의 SPLIT 사용시 .(점) 사용시 문제 해결  (0) 2012.07.26
자바 정규식 활용  (0) 2012.05.21
클래스변수 인스턴스 변수 사용  (0) 2011.09.24
2012. 7. 26. 13:48

STRING 클래스의 SPLIT 사용시 .(점) 사용시 문제 해결

SPLIT 정규식을 사용하는데 .(점) 을 그대로 인식시키기 위해서는 점 앞뒤로  [ ] 을 넣어주면된다.

 

EX : [.]

 

샘플소스

 

public class Spliting {

 public static void main(String[] args) {
  
  String ex_ip = "123.456.789.101";
  
  String [] pre_ip = ex_ip.split("[.]");
  
  System.out.println("***."+pre_ip[1]+".***."+pre_ip[3]);
 }
}

 

참조주소 : http://blog.naver.com/PostView.nhn?blogId=jingjingea&logNo=20088805525

'-=-= 컴퓨터 =-=- > JAVA' 카테고리의 다른 글

로딩 타이머  (0) 2012.11.06
JAVA 속성 조회  (0) 2012.11.06
자바 정규식 활용  (0) 2012.05.21
클래스변수 인스턴스 변수 사용  (0) 2011.09.24
java.math.BigDecimal 형변환 오류  (0) 2011.08.17
2012. 5. 21. 14:31

자바 정규식 활용

http://blog.daum.net/question0921/419

 

http://levin01.tistory.com/240

 

 

일반적으로 replaceAll로도 가능하나

 

cash[i].replaceAll("[^0-9]", "")  <--숫자아닌거 공백으로 변환

 

제대로 사용할려면 Pattern ,Matcher  사용

 

  String pattern = "<[^<|>]*>";
  String replacePattern = "\r\n";
 
  StringBuffer sb = new StringBuffer();
 
  java.util.regex.Pattern p = java.util.regex.Pattern.compile(pattern);
  java.util.regex.Matcher m = p.matcher(strSrc);

  while(m.find()) {
   m.appendReplacement(sb, m.group().replaceAll(replacePattern,""));
  }
  m.appendTail(sb);
  if(replaceText){
   return sb.toString().replaceAll("\r\n","<br>");
  }else{
   return sb.toString();
  }

 

2011. 9. 24. 22:02

클래스변수 인스턴스 변수 사용


public class exClass {
public static void main(String[] args){
System.out.println("클래스메서드"+    TestData.retInt(10,20)   );
System.out.println("클래스변수"+     TestData.classVar       );
TestData test = new TestData();
System.out.println("인스턴스변수"+  test.instanceVar       );
System.out.println("인스턴스메서드"+    test.retInt2(50, 60)      );
}
}

class TestData{
int instanceVar = 2000;
static int classVar = 100;
public static int retInt(int a, int b){
int result = 0; //지역변수
result = a+b;
return result;
}
public int retInt2(int a, int b){
int result = 0;
result = a+b;
return result;
}
}

//결과
클래스메서드30
클래스변수100
인스턴스변수2000
인스턴스메서드110
=================================================================
클래스 변수는  static 영역
인스턴스 변수는 heap 영역

클래스변수는 인스턴스 생성 불필요 클래스 이름.변수이름으로 접근가능
인스턴스변수는 인스턴스 생성후 사용가능 
2011. 8. 17. 15:08

java.math.BigDecimal 형변환 오류


맵에있는 숫자를 가져와서 Int형으로 변환할려니 오류가 난 상황이다.

String.valueof(Obj j) 메소드로 해결..

객체인 맵을 스트링으로 바꾸려니 오류가 남.

참조 : http://blog.naver.com/0131v?Redirect=Log&logNo=110114319053


형변환 모음
http://itbruce.tistory.com/44
2011. 4. 4. 10:12

Java Collection - Vector


package Vectors;

import java.util.Vector;

public class Vectors {
 static Vector<String> vec = new Vector<String>(1, 4); // 스트링 벡터 생성
 // new Vector<String>(1,4); 1,4는 용량 1을 초기 생성 후 부족시 4씩 추가 생성
 private void VectorCreate() {

  System.out.println("벡터크기 : " + vec.size());
  System.out.println("벡터용량 : " + vec.capacity());
  vec.add("김통통");
  vec.addElement("김김김");
  vec.add("케빈");
  vec.add("zzz");
  vec.addElement("생김새");
  vec.add("김통통"); // vector 중복 허용
 }

 private void VectorPrint() {

  System.out.println("\n벡터프린트\n--------------");
  for (Object s : vec) {
   System.out.println((String) s); // 객체로 받았으니 형변환할것
  }
  System.out.println("First Element : " + vec.firstElement()); // 첫번째 요소
                  // 리턴
  System.out.println("Last Element : " + vec.lastElement()); // 마지막요소 리턴
 }

 public static void main(String[] args) {
  Vectors ct = new Vectors();
  ct.VectorCreate();
  ct.VectorPrint();

  System.out.println("");
  vec.remove(3); // index 3번 요소 삭제("zzz")

  for (String str : vec) { // 향상된 for문
   System.out.println(str);
  }
  // vec.trimToSize();  //빈 공간 삭제
  System.out.println("\n벡터크기 : " + vec.size());
  System.out.println("벡터용량 : " + vec.capacity());
  System.out.println("생김새의 위치 : " + vec.indexOf("생김새"));// 인덱스 위치검색
  // index에 없을시 음수 -1 리턴  ///인덱스 요소 시작은 0부터 시작

 }
}
------------------------------------------------------------------------
출력결과
------------------------------------------------------------------------
벡터크기 : 0
벡터용량 : 1

벡터프린트
--------------
김통통
김김김
케빈
zzz
생김새
김통통
First Element : 김통통
Last Element : 김통통

김통통
김김김
케빈
생김새
김통통

벡터크기 : 5
벡터용량 : 9 (trimToSize 이용시 벡터크기와 동일)
생김새의 위치 : 3

2011. 1. 28. 14:34

JAVA프로그래밍 INI 파일 사용하기