정규표현식을 쓰실 때 마다 머리가 지끈지끈 거리시죠? 다음 사이트에서 정규표현식을 Debugging 할 수 있습니다. 단순히 매칭 되는 것만 보여준다면 소개할 필요가 없겠죠?사이트 Debuggex[그림1 Main page][그림1. example]위의 예제와 같이 정규표현식이 알고리즘 그림형태로 보여줍니다. 각 입력구간 위에는 bar가 있는데 이 것을 움직임으로써 정의한 정규표현식과 테스트 할 문자열 그리고 그림으로 표현한 알고리즘의 구간별 상태를 보여줍니다.
1. Classloader와 JAVA 패키지 JAVA의 압축 Package들은 Application이 압축된 형태 그대로 사용할 수 있다. 어떤 Application이 사용하느냐에 따라 확장자가 달라진다. - JAR (Java ARchive) - 기본적으로 JAVA Application이 사용할 수 있도록 되어 있다. path 등의 방식을 이용하여 경로를 유지하기 때문에 jar 파일의 사용 및 배포는 경로설정의 문제에서 벗어날 수 있다. Class Loader 관점에서는 EJB 파일을 배치하게 되면, JAR 파일 당 각각의 Class Loader를 생성하게 된다. 그래서, 다른 JAR파일에 있는 Class들은 참조를 할 수가 없고, 오로지 Parent Class Loader인 JVM Level의 CLAS..
1. Java Application Server ClassLoader 자바 취약점 분석을 위해서는 Web Application Server의 위계구조까지 확장해서 알아둘 필요성이 있는 것 같다. Web Application Server의 위계구조를 그려보면 다음과 같다. - Bootstrap ClassLoader - (=Primordial ClassLoader, 부트스트랩 클래스로더) 모든 ClassLoad의 부모 ClassLoader이다. JVM이 실행될 때 맨 처음 실행되는 Class Loader로, 이 ClassLoader를 사용해서 JAVA실행에 필요한 기본적인 JDK 클래스들(/jre/lib/jt.jar, i18n.jar와 같은 기본적인 Archieve, -Xbootclasspath)를 로드하게..
1. ClassLoader의 기술적 특징 Class Loader란 자바의 장점중 하나로, Runtime시 동적으로 Class를 로딩할 수 있게 해주는 기술이다. 이는 모든 Class는 참조 되는 순간 동적으로 Load 및 Link가 이루어진다는 의미이다. 그래서 Bytecode를 Filesystem, Jar Archieve 또는, network socket(Applet)를 동적으로 로딩 할 수 있도록 지원한다. 이러한 모든 Performance는 Dynamic Linking이라고 한다. 1.1. Hierarchical "계층적 구조(위계 구조 or 위임 구조)"라는 의미이다. Class loader는 계층적 구조를 가지도록 생성이 가능하다. 이는 상위(부모, Parent) 클래스로더에서 자식 클래스로더를..