'[언어] JAVA/Java'에 해당되는 글 24건

  1. 2015.02.20 dynamic removeFirstPrepend
  2. 2015.02.20 JDK 1.7 Ant FTP전송 에러
  3. 2015.02.20 Templete
  4. 2015.02.20 e.printStackTrace() 을 String 으로 변환
  5. 2015.02.20 javax.servlet.jsp.tagext.SimpleTagSupport
  6. 2015.02.20 줄바꿈 처리 CR/LF
  7. 2015.02.20 HttpClient 4.X
  8. 2015.02.20 Random
  9. 2015.02.20 부드러운 움직임 , 회전
  10. 2015.02.20 자바 정규식

dynamic removeFirstPrepend

[언어] JAVA/Java 2015. 2. 20. 15:24

<select id="gcmDAO.selectGcmList" parameterClass="searchVO" resultClass="egovMap">

        SELECT

               PA_ID, SENDER_ID, APP_NAME, API_KEY, PKG_NAME

          FROM GCM

        <dynamic prepend=" WHERE ">

        <isEqual removeFirstPrepend="true" property="searchCondition" compareValue="0">

            <isNotEmpty prepend=" AND " property="searchKeyword">

              PA_ID = #searchKeyword#

            </isNotEmpty>

        </isEqual>

            <isEqual removeFirstPrepend="true" property="searchCondition" compareValue="1">

                <isNotEmpty prepend=" AND " property="searchKeyword">

            SENDER_ID = #searchKeyword#

                </isNotEmpty>

        </isEqual>

        <isEqual removeFirstPrepend="true" property="searchCondition" compareValue="2">

                <isNotEmpty prepend=" AND " property="searchKeyword">

APP_NAME LIKE CONCAT('%', #searchKeyword#, '%')

                </isNotEmpty>

        </isEqual>

        <isEqual removeFirstPrepend="true" property="searchCondition" compareValue="3">

            <isNotEmpty prepend=" AND " property="searchKeyword">

            API_KEY LIKE CONCAT('%', #searchKeyword#, '%')

                </isNotEmpty>

        </isEqual>

        <isEqual removeFirstPrepend="true" property="searchCondition" compareValue="4">

            <isNotEmpty prepend=" AND " property="searchKeyword">

PKG_NAME LIKE CONCAT('%', #searchKeyword#, '%')

                </isNotEmpty>

        </isEqual>

  </dynamic>

         ORDER BY PA_ID DESC

         LIMIT #firstIndex#, #recordCountPerPage#

    </select>

'[언어] JAVA > Java' 카테고리의 다른 글

JDK 1.7 Ant FTP전송 에러  (0) 2015.02.20
Templete  (0) 2015.02.20
e.printStackTrace() 을 String 으로 변환  (0) 2015.02.20
javax.servlet.jsp.tagext.SimpleTagSupport  (0) 2015.02.20
줄바꿈 처리 CR/LF  (0) 2015.02.20
:

JDK 1.7 Ant FTP전송 에러

[언어] JAVA/Java 2015. 2. 20. 15:15


BUILD FAILED
C:\workspace\workspaceUTF\MyHomeAppRobot\build.xml:50: error during FTP transfer: java.net.SocketException: Permission denied: recv failed
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:150)
        at java.net.SocketInputStream.read(SocketInputStream.java:121)
        at java.io.BufferedInputStream.read1(BufferedInputStream.java:273)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
        at org.apache.commons.net.telnet.TelnetInputStream.__read(TelnetInputStream.java:114)
        at org.apache.commons.net.telnet.TelnetInputStream.run(TelnetInputStream.java:535)
        at java.lang.Thread.run(Thread.java:722)


CMD에서 Administrator 계정 에서 친다
netsh advfirewall set global StatefulFTP disable



Could not create type ftp due to java.lang.NoClassDefFoundError: org/apache/commons/net/ftp/FTPClientConfig
설정에서
ant > clobal entries 에
commons-net-1.4.1.jar추가


could not change remote directory: 550 /home/appsvctech/wwwdev/: No such file or directory
/home/user/www 의 경우
remotedir="/www" 로 해야됨.


java.lang.NoClassDefFoundError: org/apache/oro/text/regex/MalformedPatternException
설정에서
ant > clobal entries 에
jakarta-oro-2.0.8.jar


'[언어] JAVA > Java' 카테고리의 다른 글

dynamic removeFirstPrepend  (0) 2015.02.20
Templete  (0) 2015.02.20
e.printStackTrace() 을 String 으로 변환  (0) 2015.02.20
javax.servlet.jsp.tagext.SimpleTagSupport  (0) 2015.02.20
줄바꿈 처리 CR/LF  (0) 2015.02.20
:

Templete

[언어] JAVA/Java 2015. 2. 20. 15:01
package packagename;

import java.util.*;


[public|final] class Templete extends [Classname]  implements 해당인터페이스
public interface 인터페이스이름 //메서드 선언과 , 상수(static final)만 가질수 있다.
{
/*
자료형
boolean
char 0 ~ 65535 (2byte)
byte -128 ~ 128  (1byte)
short -32,768 ~ 32,767(2byte)
int -2,147,483,648 ~ 2,147,483,647 (4byte)
long (8byte)
float (4byte)
double (8byte)
지역변수(local) -메소드안에 변수
멤버변수(class) -class안에 변수
정적변수(static) -객체간 자료 공유하기 위한 변수

상수선언 
static final 상수이름 =상수값;
*/

/*
조건문
switch(조건)
{
case 조건1:
실행문 1;
break;
case 조건2:
실행문 2;
break;
default:
실행문 default;
break;
}
*/

/*
Method Overloading : 생성자를 여러개 만드는것
같은 클래스내에서 같은 이름을 가진 메서드가 여러 개를 구현하는 것을 말함
Method Overrriding : 메서드 치환
상위 클래스의 메서드를 하위 클래스에서 재정의 하는 것을 의미.
*/

/*
public :아무 객체나 접근가능
private :외부 객체 접근 불가
protected :상속 관계에 있는 클래스만 접근 가능
friendly :디폴트 접근 제어자로써 같은 디렉토리내에서접근 가능
상속 관계에서의 부모 메서드 호출
super.메소드이름();
super.멤버변수;
추상메소드
abstract 반환형 메서드_이름(인자); //내용이 없는 추상 메서드,추상클래스,객체생성불가
인터페이스 메소드
public void 메소드명();
Warpper클래스의 형변환 메소드
byteValue();
shortValue();
intValue();
longValue();
floatValue();
doubleValue();
*/

public static void main(String[] args) 
{
System.out.println("Hello World!");
}
}


'[언어] JAVA > Java' 카테고리의 다른 글

dynamic removeFirstPrepend  (0) 2015.02.20
JDK 1.7 Ant FTP전송 에러  (0) 2015.02.20
e.printStackTrace() 을 String 으로 변환  (0) 2015.02.20
javax.servlet.jsp.tagext.SimpleTagSupport  (0) 2015.02.20
줄바꿈 처리 CR/LF  (0) 2015.02.20
:

e.printStackTrace() 을 String 으로 변환

[언어] JAVA/Java 2015. 2. 20. 14:52
/**
 * e.printStackTrace() 을 String 으로.
 * @param t
 * @return
 */
public static String makeStackTrace(Throwable t) {
if (t == null)
return "";
try {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
t.printStackTrace(new PrintStream(bout));
bout.flush();
String error = new String(bout.toByteArray());
return error;
} catch (Exception ex) {
return "";
}


'[언어] JAVA > Java' 카테고리의 다른 글

JDK 1.7 Ant FTP전송 에러  (0) 2015.02.20
Templete  (0) 2015.02.20
javax.servlet.jsp.tagext.SimpleTagSupport  (0) 2015.02.20
줄바꿈 처리 CR/LF  (0) 2015.02.20
HttpClient 4.X  (0) 2015.02.20
:

javax.servlet.jsp.tagext.SimpleTagSupport

[언어] JAVA/Java 2015. 2. 20. 14:50
JSTL을 사용하기 위해서는
Tomcat root directory/common/lib
jstl.jar 파일과 standard.jar 파일이 필요하다.

최근 변경  jsp-api.jar


'[언어] JAVA > Java' 카테고리의 다른 글

Templete  (0) 2015.02.20
e.printStackTrace() 을 String 으로 변환  (0) 2015.02.20
줄바꿈 처리 CR/LF  (0) 2015.02.20
HttpClient 4.X  (0) 2015.02.20
Random  (0) 2015.02.20
:

줄바꿈 처리 CR/LF

[언어] JAVA/Java 2015. 2. 20. 14:47
0x0d(CR) / 0x0a(LF) = CR+LF
윈도우 : CR+LF
유닉스 : LF


'[언어] JAVA > Java' 카테고리의 다른 글

e.printStackTrace() 을 String 으로 변환  (0) 2015.02.20
javax.servlet.jsp.tagext.SimpleTagSupport  (0) 2015.02.20
HttpClient 4.X  (0) 2015.02.20
Random  (0) 2015.02.20
부드러운 움직임 , 회전  (0) 2015.02.20
:

HttpClient 4.X

[언어] JAVA/Java 2015. 2. 20. 14:46
package test.shopclient;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.cookie.Cookie;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;

public class ShopclientHttpClient {
public void checkGet(){
  HttpClient httpclient = new DefaultHttpClient();
        try {
            HttpGet httpget = new HttpGet("http://127.0.0.1:8080/ompMainTain/index.jsp");

            System.out.println("executing request " + httpget.getURI());
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();

            System.out.println("----------------------------------------");
            System.out.println("Chunked?: " + entity.isChunked());
            System.out.println(response.getStatusLine());

            Header[] headers = response.getAllHeaders();
            for (int i = 0; i<headers.length; i++) {
                System.out.println(headers[i]);
            }
            
            if (entity != null) {
                System.out.println("Response content length: " + entity.getContentLength());
                
                //System.out.println("Response content length: " + entity.getContent());
            System.out.println("----------------------------------------");
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                entity.writeTo(out);
                
                System.out.println(new String(out.toByteArray()));
                
            }
            System.out.println("----------------------------------------");

            // Do not feel like reading the response body
            // Call abort on the request object
            httpget.abort();
            
        } catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }
}
public void checkPost(){
  HttpClient httpclient = new DefaultHttpClient();
        try {
            HttpPost httppost = new HttpPost("http://127.0.0.1:8080/ompMainTain/index.jsp");
           
            //해더 셋팅 방법
            //httppost.setHeader("Set-Cookie","JSESSIONID=ACAE3A1CF04B36AD27EF5F1311E61979; Path=/ompMainTain");
            
            List<NameValuePair> formparams = new ArrayList<NameValuePair>();
            formparams.add(new BasicNameValuePair("A", "aValue"));
            formparams.add(new BasicNameValuePair("B", "bValue"));
            UrlEncodedFormEntity uentity = new UrlEncodedFormEntity(formparams, "UTF-8");
            
            httppost.setEntity(uentity);

            HttpResponse response  = httpclient.execute(httppost);
            HttpEntity entity  = response.getEntity();

            System.out.println("----------------------------------------");
            System.out.println("Chunked?: " + entity.isChunked());
            System.out.println(response.getStatusLine());//HTTP/1.1 200 OK
            if (entity != null) {
                System.out.println("Response content length: " + entity.getContentLength());
                
                //System.out.println("Response content length: " + entity.getContent());
            System.out.println("----------------------------------------");
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                entity.writeTo(out);
                
                System.out.println(new String(out.toByteArray()));
                
            }
            System.out.println("----------------------------------------");

            // Do not feel like reading the response body
            // Call abort on the request object
            httppost.abort();
            
        } catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }
}
public void checkPost2(){
  HttpClient httpclient = new DefaultHttpClient();
        try {
            HttpPost httppost = new HttpPost("http://127.0.0.1:8080/ompMainTain/index.jsp");
           
            //해더 셋팅 방법
            //httppost.setHeader("Set-Cookie","JSESSIONID=ACAE3A1CF04B36AD27EF5F1311E61979; Path=/ompMainTain");
            
            List<NameValuePair> formparams = new ArrayList<NameValuePair>();
            formparams.add(new BasicNameValuePair("A", "aValue"));
            formparams.add(new BasicNameValuePair("B", "bValue"));
            UrlEncodedFormEntity uentity = new UrlEncodedFormEntity(formparams, "UTF-8");
            //httppost.setEntity(uentity);
            
            StringEntity se = new StringEntity("ABCDEFGHIJK");
            httppost.setEntity(se);
            
            HttpResponse response  = httpclient.execute(httppost);
            HttpEntity entity  = response.getEntity();

            System.out.println("----------------------------------------");
            System.out.println("Chunked?: " + entity.isChunked());
            System.out.println(response.getStatusLine());//HTTP/1.1 200 OK
            int sc = response.getStatusLine().getStatusCode();
            if (sc == HttpStatus.SC_OK) {
            
            }
            if (entity != null) {
                System.out.println("Response content length: " + entity.getContentLength());
                
                //System.out.println("Response content length: " + entity.getContent());
            System.out.println("----------------------------------------");
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                entity.writeTo(out);
                
                System.out.println(new String(out.toByteArray()));
                
            }
            System.out.println("----------------------------------------");

            // Do not feel like reading the response body
            // Call abort on the request object
            httppost.abort();
            
        } catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }
}
public void checkTest(){
        HttpClient httpclient = new DefaultHttpClient();
        try {
            // Create a local instance of cookie store
            CookieStore cookieStore = new BasicCookieStore();

            // Create local HTTP context
            HttpContext localContext = new BasicHttpContext();
            // Bind custom cookie store to the local context
            localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

            HttpGet httpget = new HttpGet("http://www.kimjaehyun.co.kr/");

            System.out.println("executing request " + httpget.getURI());

            // Pass local context as a parameter
            HttpResponse response = httpclient.execute(httpget, localContext);
            HttpEntity entity = response.getEntity();

            System.out.println("----------------------------------------");
            System.out.println(response.getStatusLine());
            if (entity != null) {
                System.out.println("Response content length: " + entity.getContentLength());
            }
            List cookies = cookieStore.getCookies();
            for (int i = 0; i < cookies.size(); i++) {
                System.out.println("Local cookie: " + ((Cookie)cookies.get(i)));
            }

            // Consume response content
            EntityUtils.consume(entity);

            System.out.println("----------------------------------------");

        } catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }
}

/**
 * http://mudchobo.tistory.com/479
 * http://blog.naver.com/dltjdals8110/50105576361
 * http://credemol.blogspot.com/2011/03/httpclient-4x.html
 * http://failure.egloos.com/1871086
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
ShopclientHttpClient shc = new ShopclientHttpClient();
//shc.checkGet();
shc.checkPost2();
//shc.checkTest();
}
}


'[언어] JAVA > Java' 카테고리의 다른 글

javax.servlet.jsp.tagext.SimpleTagSupport  (0) 2015.02.20
줄바꿈 처리 CR/LF  (0) 2015.02.20
Random  (0) 2015.02.20
부드러운 움직임 , 회전  (0) 2015.02.20
자바 정규식  (0) 2015.02.20
:

Random

[언어] JAVA/Java 2015. 2. 20. 14:30
0 에서 100 정수 뽑기
SELECT ROUND(dbms_random.value(0,100),0) FROM dual;


'[언어] JAVA > Java' 카테고리의 다른 글

줄바꿈 처리 CR/LF  (0) 2015.02.20
HttpClient 4.X  (0) 2015.02.20
부드러운 움직임 , 회전  (0) 2015.02.20
자바 정규식  (0) 2015.02.20
Thread join  (0) 2015.02.20
:

부드러운 움직임 , 회전

[언어] JAVA/Java 2015. 2. 20. 14:17
[움직임]

this.x = this.x +rate(targetX-this.x)

this.x = this.y +rate(targetY-this.y)

rate : 0.1~1.0 (값이 클수록  빨리움직임)

[회전]
function (targetX , targetY){
 diffX = targetX-this.x;
 diffY = targetY-this.y;
 this.rotation = Math.atan2(diffY,diffX)*180/Math.PI;
}

[탄성]
a : (-2<a<2) -2에 가까울수록 속도가빠름
b : (-1<b<0) -1에 가까울수록 진폭이큼

a*a+4b (-4<a*a+4b<0)

function(a,b,targetX,taretY){
 tempX=this.x;
 tempY=this.y;

 this.x= a*(this.x-targetX)+b*(this.prevX-targetX)+targetX;
 this.y= a*(this.y-targetY)+b*(this.prevY-targetY)+targetY;

 this.prevX=tempX;
 this.prevY=tempY;
}

탄성은 스케일로 변경해서 크기를 탄성력있게도 작업가능함.


'[언어] JAVA > Java' 카테고리의 다른 글

HttpClient 4.X  (0) 2015.02.20
Random  (0) 2015.02.20
자바 정규식  (0) 2015.02.20
Thread join  (0) 2015.02.20
Iterator,Enumeration  (0) 2015.02.20
:

자바 정규식

[언어] JAVA/Java 2015. 2. 20. 14:07
import java.util.regex.Matcher;
import java.util.regex.Pattern;

. 특수 문자는 임의의 한 문자를 나타냅니다. ex) a.b  : acb , adb , azd
* 특수문자는 바로 앞의 문자를 나타냅니다. ex) hello* hell , hello, helloo, hellooo
+ *특수문자와는 달리 반드시 하나 이상의 문자가 반복을 해야 한다는 것입니다 ex) hello+  : hello , helloo, hellooo, helloooo
? 특수문자의 바로 앞의 문자가 하나가 있거나,없거나 하는 것을 의미합니다 ex) hello?  : hell, hello
^ 특수문자는 문장의 처음을 나타냅니다. ex) ^Hello  : Hello World
$ 특수문자는 문장의 끝을 나타냅니다.  ex) World$ : Hello PHP World
[] 특수문자의 의미는 괄호 안의 문자 중 일치하는 것  ex) ^[a-zA-Z0-9]  : 숫자나 영문자로 시작되는 모든 문자열 , [abc] : a, b, c, ab, abc 등
[^] 일치하지 않는 문자열을 포함하고 있는 패턴. ex) [^abc] : de dde, fde, zde 등
{} 특수문자 앞의 문자나 문자열의 반복되는 개수 ex) gu{5}ggle  : guuuuugle , gu{3,}ggle :(u가 3개 이상) , gu{2,4}ggle
() 특수문자 안의 글자들을 하나의 문자로 봅니다 ex) (hello){3}  : hellohellohello, hey hellohellohello 등
| 패턴 안에서 OR연산을 사용할 때 사용합니다 ex) left|right : left, right, leftright 등
rex = ((A)(B(C)))
0 전체
((A)(B(C)))
(A)
(B(C))
4 (C)

[a-zA-Z] [[:alpha:]]  \p{Alpha}
[0-9] [[:digit:]]  \p{Digit}
[a-zA-Z0-9] [[:alnum:]] \p{Alnum}
공백  [[:space:]] \p{Space}
Pattern.CANON_EQ  None 
Pattern.CASE_INSENSITIVE  (?i)
Pattern.COMMENTS  (?x)
Pattern.MULTILINE  (?m)
Pattern.DOTALL  (?s)
Pattern.LITERAL  None
Pattern.UNICODE_CASE  (?u)
Pattern.UNIX_LINES  (?d)





/*
. 특수 문자는 임의의 한 문자를 나타냅니다. ex) a.b  : acb , adb , azd
* 특수문자는 바로 앞의 문자를 나타냅니다. ex) hello* hell , hello, helloo, hellooo
+ *특수문자와는 달리 반드시 하나 이상의 문자가 반복을 해야 한다는 것입니다 ex) hello+  : hello , helloo, hellooo, helloooo
? 특수문자의 바로 앞의 문자가 하나가 있거나,없거나 하는 것을 의미합니다 ex) hello?  : hell, hello
^ 특수문자는 문장의 처음을 나타냅니다. ex) ^Hello  : Hello World
$ 특수문자는 문장의 끝을 나타냅니다.  ex) World$ : Hello PHP World
[] 특수문자의 의미는 괄호 안의 문자 중 일치하는 것  ex) ^[a-zA-Z0-9]  : 숫자나 영문자로 시작되는 모든 문자열 , [abc] : a, b, c, ab, abc 등
[^] 일치하지 않는 문자열을 포함하고 있는 패턴. ex) [^abc] : de dde, fde, zde 등
{} 특수문자 앞의 문자나 문자열의 반복되는 개수 ex) gu{5}ggle  : guuuuugle , gu{3,}ggle :(u가 3개 이상) , gu{2,4}ggle
() 특수문자 안의 글자들을 하나의 문자로 봅니다 ex) (hello){3}  : hellohellohello, hey hellohellohello 등
| 패턴 안에서 OR연산을 사용할 때 사용합니다 ex) left|right : left, right, leftright 등
rex = ((A)(B(C)))
0 전체
((A)(B(C)))
(A)
(B(C))
4 (C)

[a-zA-Z] [[:alpha:]]  \p{Alpha}
[0-9] [[:digit:]]  \p{Digit}
[a-zA-Z0-9] [[:alnum:]] \p{Alnum}
공백  [[:space:]] \p{Space}
Pattern.CANON_EQ  None 
Pattern.CASE_INSENSITIVE  (?i)
Pattern.COMMENTS  (?x)
Pattern.MULTILINE  (?m)
Pattern.DOTALL  (?s)
Pattern.LITERAL  None
Pattern.UNICODE_CASE  (?u)
Pattern.UNIX_LINES  (?d)

*/


'[언어] JAVA > Java' 카테고리의 다른 글

Random  (0) 2015.02.20
부드러운 움직임 , 회전  (0) 2015.02.20
Thread join  (0) 2015.02.20
Iterator,Enumeration  (0) 2015.02.20
System.out.printf  (0) 2015.02.20
: