반응형

java

    자바 Annotation 만들기

    자바에서 Annotation은 별도의 properties파일이나 xml같은 설정파일에 작성하는 부가적인 정보를 어노테이션으로 간편하게 설정할 수 있다. 형태 123456789101112131415@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Anno { public String defaultVal() default “OK”; public String val(); } Colored by Color Scriptercs Target은 어노테이션의 적용 대상을 선정하고, Retension은 이 어노테이션의 정보가 어디 까지 유지되는지 설정한다. @Target - Constructor, Field..

    Java Reflection 설명 및 사용법

    자바는 Reflection이라는 언어의 특징이다. 리플렉션은 자가 프로그램이 자기 자신을 조사하거나, “introspect”하는 것을 실행하거나, 프로그램의 내부 프로퍼티의 조작을 허락하는 것을 말한다. 예를 들어 멤버변수의 이름을 취득하여 조작할 수 있다. 123456789try { Class c = Class.forName(args[0]); Method m[] = c.getDeclaredMethods(); for (int i = 0; i

    Java 문자열의 toString과 valueOf의 차이

    두 메소드 모두 오브젝트의 값을 String으로 변경하지만 변경하고자 하는 오브젝트가 null 일경우 toString은 NPE 오류를 발생시키지만, valueOf는 null이라는 특수문자로 처리한다. 그래서 valueOf를 사용하는게 조금더 안전하다.

    커맨드 패턴 (command pattern)

    커맨드 패턴은 이벤트가 발생되었을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생시키는 클래스는 변경하지 않고 재사용하고자 할 때 유용하다. 다음 예를 살펴보자 자동차의 시동버튼이 눌러졌을 때 시동이 켜지도록 설계해보자. 12345678910111213141516171819202122232425262728// 버튼 클래스public class Button { private Engine engine; public Button(Engine engine) { this.engine = engine; } public void on() { engine.execute(); } } // execute 인터페이스public interface Execute { void execute();} // 엔진 p..

    데코레이트 패턴 (Decorator Pattern)

    데코레이트 패턴은 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에 각 추가 기능을 Decorator 클래스로 정의한 후 필요한 Decorator 객체를 조합함으로써 추가 기능을 설계하는 방식이다. 문제가 되는 예를 확인해보자. 만약 음식을 할 때, 준비를 해는 클래스 ReadyDish가 있다고 해보자. 생선 음식을 준비해야할 때는 ReadyDish 클래스에서 하는 ready() 메소드가 필요하며, 생선클래스를 위한 메소드 readyForFish()메소드가 필요하다. 그럴경우 기본적인 기능은 ReadyDish 클래스에 정의하고 추가적인 기능은 다음과 같이 하위클래스로서 상속받아서 진행할 수도 있다. 12345678910111213141516171819202122package decorator; pu..

    추상 팩토리 패턴 (Abstract Factory Pattern)

    추상 팩토리 패턴(Abstract Factory Pattern)은 관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유용하다. 아래에서 예를 통해 알 수 있겠지만 Door와 Motor를 종류에 따라 얻기 위해 Factory 클래스를 정의해서 사용하기 보다는 관련 객체들을 일관성 있게 생성할 수 있도록 Factory 클래스를 정의하는 것이 효과적이다. 예를 들어보자. [문제상황] 엘레베이터 모터를 움직여야 할 경우 엘레베이터 브랜드에 따라 door와 motor를 별도로 설정해주어야 하는 경우에는 다음과 같이 별도로 두 개의 과정을 거쳐야해서 불편하다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344..

    Java File클래스를 이용한 파일입출력 사용

    123456789101112131415161718192021import java.io.File; File fileff = new File("파일경로"); boolean is_file = fileff.isFile(); // 파일인지 검사 boolean is_dir = fileff.isDirectory(); //디렉토리 인지 검사 boolean is_hiddenFile = fileff.isHidden(); // 숨김파일인지 검사 str = fileff.getAbsolutePath(); // 절대 경로 추출 strf = fileff.exists(); // 존재여부 str = fileff.getName(); //이름 출력 str = fileff.getParent(); // 처음부터 / 까지 리턴cs 요새는 NI..

    스프링 DispatcherServlet 설정 방법

    DispatcherServlet Spring MVC는 dispatcherServlet을 사용하기 위해서는 web.xml에 정의를 해주었어야 했다. 하지만 web.xml에 설정하지 않고도 다른 Java 파일로 설정할 수 있는 방법이 있다. 기존의 web.xml에 설정방식은 다음과 같다. 12345678910111213141516 dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/dispatcher-config.xml 1 dispatcher /Colored by Color Scriptercs XML에 정의한 서블릿 설명은 다음과 같다. 1. 이름은 dispatcher 이다. 2. o..

    Javascript 처리과정

    javascript의 처리과정 순서에 대해서 알아보자. 브라우저에서 이벤트가 발생하면 Event Queue에 삽입해 놓고 이를 stack이 비어지면 Event Queue에서 작업이 있는지 확인한다. 그리고 작업이 있는 경우 그것을 꺼내서 사용한다. [작업순서](1) 이벤트 큐에 작업이 있는지 확인한다. (2) 스택이 비었을 때 큐에 있는 작업을 꺼내 수행한다.

    Runnable을 사용한 MD5 다이제스트 생성방법

    Runnable을 사용한 MD5 다이제스트 생성방법 package practice1; import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.security.DigestInputStream;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException; import javax.xml.bind.DatatypeConverter; public class practice implements Runnable{ private String fil..

반응형