본문 바로가기

app/java

(39)
socket url 이용시 한글 중간 깨짐 현상 소켓을 사용하여 받아오는 과정에서 아래와 같이 한글이 깨집니다.한글깨진다면 인코딩을 손보면 되겠지만 신기한건 중간중간이 깨집니다. 그것도 받아올때마다 똑같은 곳만 깨집니다.(이말은 받아오는 소켓에는 문제가 없다는것이지요.)또한 않깨진 곳의 한글은 정확하게 잘 나온다는겁니다.(깨진곳만 계속 깨진다는것은 결국 인코딩 문제이지요.) 그래서 한글 인코딩으로 모두 확인했었습니다.new String(str.getBytes("현재인코딩"), "변경인코딩") utf-8, euc-kr, ksc5601, x-windows-949, iso-8859-1 까지..알고 있는 인코딩을 모두 해봤지만 전부 다 깨지던가 위에처럼 중간만 깨지더군요.구글을 아무리 찾아봐도 않나왔고, 받을때 int 형으로 받은다음 char형으로 변경하면 ..
java BigInteger 사용하기 import java.math.BigInteger; public class bigInt { public static void main(String[] args) { //BigInteger 객체 생성 MAX값은 없는듯하다. BigInteger bi = new BigInteger("1000000000000000000000000000000000"); //덧셈(더하기 10) bi = bi.add(BigInteger.valueOf(10)); System.out.println(bi+ "\n"); //뺄셈(빼기 10) bi = bi.subtract(BigInteger.valueOf(10)); System.out.println(bi+ "\n"); //곱셈 (곱하기 2) bi = bi.multiply(BigInteger..
java replace / replaceFirst / replaceAll $ 주의 할점. 일반적으로 ibatis 에서는 숫자형은 # 문자열은 $로 표기한다. 그래서 파라미터를 넣고 변환하는 과정의 프로그램을 만들다가 알아낸건데. java의 replace 관련 함수들은 (replaceFirst / replaceAll 포함) 정규표현식을 제공한다. 문제는 $ 표기는 정규표현식에서 문자열의 가장 끝을 나타낸다. 이는 replace에서 $를 기준으로 문자열을 치환한다면 문자열의 가장 끝으로 문자가 붙어 버린다. ex) String str = "$aa "; str = str. replace("$" , "aaa"); 이라고 할때 str은 "aaaaa " 이 아닌 "$aa aaa" 이렇게 나오게 된다. 결국 $를 replace 함수 (replaceFirst / replaceAll 포함) 의 첫번째 파라미..
if 문에 대한 단상 오늘 희한한 소스(첨에 봤을땐 이해가 가지 않았다.)보고서 새로운걸 깨달았다. 먼서 소스 공개 원본 : http://codepad.org/Fb8Uo9Yu 누군가는 너무나 기초적인 연산자만 배우면 된다는데 전혀 이해가 가지 않았다. (>=),(==) 이 연산자는 무엇인가? 비트 연산자도 아닌데 저것들은 뭐지? 위의 구문을 자바로 풀어보면 다음과 같다. public class operator { public static void main(String[] args) { int i,j; boolean l; boolean k; i=10; j=5; k=(i>=j); l=(i==j); System.out.println(k && l); System.out.println(k||(!l)); } } 자바에서는 확연하게 들어..
-Djava.endorsed.dirs= 을 찾을수 없습니다. 두번째! JAVA_HOME 패스 설정만으로도 성공하실수 있습니다. 아래를 따라가세요. http://uiandwe.tistory.com/366 위의 설정을 해도 않될 경우 아래를 참조하세요. 톰캣에서 startup 으로 실행하려 했으나 -Djava.endorsed.dirs= 에러가 난다. JAVA_HOME 패스를 지정해줬음에도 이런 경우라면 Tomcat 의 bat 파일에 경로를 지정해 주면 된다. 1. 먼저 Tomcat 의 bin 폴더로 들어가 보면 setclasspath.bat 파일을 볼수 있다. 편집을 눌러서 편집 모드로 들어간다. 2. 가장 상단에 JDK의 경로를 적어준다. set JAVA_HOME= JDK 경로 ex) set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0..
java postpix 후위연산자 package com.my; public class postpix { stack stack = new stack(); public String postpixCal(String str){ for(int i = 0; i 0){ for(int i = stack.outputMaxNumber(); i >0 ; i--) System.out.print(stack.output()); } return str; } public void chackCal(String str){ if(str.equals("(")){ stack.input(str); }else if(str.equals(")")){ int stackSize = stack.outputMaxNumber(); for(int j = stackSize; j > 0 ; j-..
java class 파일 디컴파일 프로그램 그 유명한? JAD!! 이클립스로 설치 가능한데 어디가 막혔는지 설치가 되질 않는다..-_-;; 남이 만든 소스를 보고 싶을 때 아주 유용한 프로그램 되시겠다.(사실 class 파일만 있어서 사용한거에요. 남의거 배낄려고 하는거 아네요) 압축을 풀면 jad.exe 파일이 있다. 디컴파일시킬 프로그램은 같은 폴더안에 넣어준다.(아니면 경로를 써야하므로) cmd로 해당 jad 폴더로 들어갑니다. 명령어는 jad hlep를 보고 싶으시면 커맨드 창에 jad를 치거나 폴더안의 readme를 읽어주시길. 이제 디컴파일의 명령어를 해보자. >jad -o -s jad -o 는 무조건 덮어쓴다. -s 는 완료하면 jad를 끝낸다 이다. 위와 같은 문구가 보인다면 폴더로 가보자. 기대하던 java 파일이 당신을 기다리고..
java.lang.NumberFormatException: For input string 에러 메시지로 검색해보니 대부분 String 의 값이 null 이거나 빈공간이 들어가 있어서 parseInt 할때 에러라고 하는데..-_- 나의 경우는 Int 형의 범위를 넘어서 버렸다. 해결 방법? 간단함. Int형 보다 범위가 큰 Long 형이나 float, double 형으로 바꿔주면 된다. (나의 경우는 Long로 바꾸어 주었다. 실수형으로 보이면 않되는 것이여서.. 금액 부분이였다. ) 받는 부분을 Long 형으로 바꿔주고 String 에서 Long 형으로 변환형은 Long.parseLong(string str) 로 하면 된다. 보너스로 JAVA의 데이터 형의 범위 표이다.