본문 바로가기

WEB_Programming/Pure Java

JAVA + SSL Tutorial (server and client examples) JAVA + SSL Tutorial (server and client examples) from http://stilius.net/java/java_ssl.php Certificate 인증 첫번째, 인증을 받을 필요가 있다. 이것은 J2SE SDK 에 있는 keytool을 이용하여 처리한다. (이 프로그램을 실행하면 인증하는 사람의 정보와 비밀번호를 묻게 된다. 이때 123456으로 패스워드를 입력한다.) keytool -genkey -keystore mySrvKeystore -keyalg RSA 인증을 마치고 나면 작업 디렉토리에 키툴에서 발행한 인증 파일을 확인할 수 있다. Server source code (EchoServer.java)import javax.net.ssl.SSLServerSocke.. 더보기
Generics > Generics and Subtyping 이제 generics에 대해서 이해해보는 테스트를 해보자. 다음 부분 코드는 적법한 형식일까? List ls = new ArrayList(); // 1 List lo = ls; // 2 첫번째 라인은 확실하게 문법에 맞다. 문제에서 햇갈리는 부분이 2번째 라인이다. 이것은 문제를 일으키는 부분으로 String의 리스트인지, Object 리스트인지 어렵게 한다. 대부분의 사람은 본능적으로 옳다고 이야기 할 것이다.다음 몇 라인을 확인해보자. lo.add(new Object()); // 3 String s = ls.get(0); // 4: Attempts to assign an Object to a String! 여기에서 ls와 lo라는 앨리어스를 가지고 있으며, ls에 접근할때는 String의 리스트라는것.. 더보기
Generics > Defining Simple Generics List와 Iterator를 java.util패키지에서 지정한 내용을 발췌한 것이다. public interface List { void add(E x); Iterator iterator(); } public interface Iterator{ E next(); boolean hasNext(); } 이 코드는 모두 익숙한 코드이다. < 을 제외하고 말이다. 여기에는 포맷 타입 파라미터를 설정하는 것으로 인터페이스인 List와 Iterator 에 지정하고 있다.타입 파라미터는 generics 선언을 통해서 이용할 수 있으며, 일반적인 타입을 이용할때 매우 유용하다. 중요한 제약을 원하는 경우 The Fine Print.부분을 참조하면 된다. 소개에서 우리는 List처럼 리스트의 generic 타입을 지정하.. 더보기
Generics > Introduction JDK 5.0 은 몇가지 새로운 확장 기능을 제공한다. 이것중에 하나가 generics이다.이 트레일은 generics에 대해서 소개한다. 다른 언어에서와 같이 유사한 생성자를 가지고 있으며, 대부분 C++ 템플릿과 같은 형식을 가진다. 그러므로 generics에서는 유사한점과 중요한 차이점 둘다 확인해 볼 수 있다. 만약 다른 것과 유사한점을 모른다면 더 낳을 수 있다. 이전 내용을 통해서 오해없이 새롭게 시작할 수있다. Generics는 추상 타입을 허용하도록 해준다. 가장 공통적인 예제는 컨테이너 타입이다. 이것은 컬렉션의 계층 구조와 같이 보면 된다. 여기네는 사용방법을 순서대로 기술해 두었다. List myIntList = new LinkedList(); // 1 myIntList.add(new.. 더보기
Regular Expression > Methods of the PatternSyntaxException Class PatternSyntaxException 는 체크되지 않는 예외로 정규식 표현에서 문법 에러에 대해서 처리를 수행한다. PatternSyntaxException 클래스는 다음과 같은 메소드를 반환한다. 이것은 무엇이 잘못 되었는지 알려주는 역할을 한다. public String getDescription(): 에러에 대한 설명을 반환한다. public int getIndex(): 에러 인덱스를 반환한다. public String getPattern(): 잘못된 정규식 패턴을 반환한다. public String getMessage(): 문법 에러와 해당 인덱스에서 표현된 멀티라인을 반환한다. 에러가난 정규식에서는 패턴을 포함한 인덱스에 대해서 보여준다. 다음 소스 코드 RegexTestHarness2.ja.. 더보기
Regular Expression > Methods of the Pattern Class 지금까지 우리는 test harness를 이용하여 패턴 객체를 생성하고 그들의 기본 폼을 이용하였다. 이번 섹션에서는 좀더 향상된 기술로 플래그와 함깨 패턴을 생성하거나 포함된 플래그 표현들을 이용할 것이다. 우리가 아직 논의하지 않은 몇가지 유용한 추가적인 내용들에 대해서 논의할 것이다.Creating a Pattern with FlagsPattern 클래스는 플래그를 제공하는 새로운 compile 메소드를 가지고 있다. 플래그 파라미터는 비트 마스크 처리가 되며 다음과 같이 public static field들로 구성되어 잇다. Pattern.CANON_EQ 규칙에 의해서 같은지 검사하도록 한다. 이 플래그가 지정되면 2개의 캐릭터는 매치를 수행할때 전체가 규칙에 의해서 분해를 수행한 것이 매칭이 되.. 더보기
Regular Expression > Boundary Matchers 지금까지 우리는 특정 위치에서 입력된 스트링의 부분이 맞는지 아닌지에 대해서 관심을 가졌다. 그러나 우리는 매치가 어디서 이루어 지는지에 대해서는 다루지 않았다.boundary matchers를 이용하여 더욱 정밀하게 특정 정보에 대해서 매치되는 패턴을 만들 수 있다. 예를 들어, 부분적인 단어를 찾는데 관심을 가지고 있을때, 이 매치되는 값이 처음 라인과 끝 라인에 이 값이 나타나기를 원하는 경우가 잇을 것이다. 혹은 단어의 영역에서 매치가 이루어 지는지 알고 싶을 수 있고, 또는 이전 매치의 끝에서 이루어 지는지에 대해서 원할 수 있다. 다음은 boundary matcher의 예이다. Boundary Matchers ^ The beginning of a line $ The end of a line \.. 더보기
Regular Expression > Capturing Groups 이전 섹션에서 어떻게 수량 지정자를 하나의 문자, character class와 capturing group에 지정하는지에 대해서 알아 보았다. 그러나 지금까지 우리는 capturing group에 대해서 상세하게 논의하지 않았다.Capturing groups 은 하나의 유닛으로 복수의 문자를 다룬다. 이러한 방법은 ()로 문자 그룹을 둘러 쌓면 된다. 예를 들어 정규식 (dog)는 하나의 그룹으로 "d" "o" "g"를 연속적으로 입력하면 된다. 입력 문자의 부분 캡쳐링 그룹으로 묶고 이것을 메모리에 저장한 후 다음에 다시 backreferences를 이용하여 다시 호출할 수 있다. 이것은 이번 섹션 마지막에서 Backreferences를 이용하여 처리한다. Numbering Pattern API에서 .. 더보기