개발/Spring

    Disk

    디스크 - 반영구적 저장 장소. 자성체를 입힘 알루미늄프로 덮여진 원판으로 이뤄진 플래터를 회전시켜 헤드를 얹어 자기 디스크의 자기 배열 방식을 변경하는 방식으로 읽거나 쓰는 방식임. 플래터를 빨리 돌릴 수록 속도는 빠르지만 전력소모량과 소음이 증가한다. 물리적으로 돌리기 때문에 한계가 있음 디스크 조각 모음이란? 하드디스크에 파일을 저장하거나 저장된 파일을 읽어 들이는 속도가 빨랐는데 몇 개월 후에는 같은 작업을 해도 빠르지 않다. 하드디스크의 속도 저하는 PC 전반의 성능을 저하시킨다. 이러한 원인은 십중팔구 하드디스크 상의 데이터들이 많은 수로 조각났기 때문이다. 하드디스크가 조각난다는 의미 물리적으로 쪼개졌다는 의미가 아니라, 내부의 데이터가 기록되는 부분, 플래터 표면에 데이터의 기록 부분이 가..

    RAM, 랜덤엑세스

    Random Access Memory 데이터를 기록할 수 있는 임시 기억 장치 Random Access(직접 엑세스) -> 램에 저장된 어느 데이터든 접근 시간이 동일하기 때문. 메모리의 어드레스만 지시하면 어느 부분에서도 즉시 기억 데이터를 읽어낼 수 있는 호출 방식. 자기 테이프는 데이터의 기억장소까지 맨 앞부터 차례로 탐색해야만 하는 것과 정 반대 개념 (시퀀셜 엑세스) 논리적 물리적 연결된 순서에 따라 차례대로 블록을 읽는 방식 인덱스 리프 블록은 앞뒤를 가리키는 주소값을 통해 논리적으로 서로 연결되어 있음 이 주소 값에 따라 순차적으로 스캔하는 방식 랜덤 액세스는 데이터마다 레코드 번호를 붙여 어느 번호의 데이터를 디스크의 어느 부분에 기억시켜 놓았는가의 번지표를 작성 해둠 하지만 전원이 꺼지면..

    ServletContextListner 구현

    서블릿은 다양한 시점에서 발생하는 이벤트와 이벤트를 처리하기 위한 인터페이스를 정의 하고 있다. 이들 이벤트와 인터페이스를 이용하면 웹앱에서 필요로 하는 데이터의 초기화나 요청 처리등을 추적할 수 있다. 서블릿 규약은 다양한 이벤트를 처리할 수 있는 인터페이스를 구현하고 있음 ServletContextListener를 이용한 이벤트 처리 웹앱이 시작되거나 종료되는 시점에 특정 클래스의 메서드를 실행할 수 있는 기능을 제공하고 있다. 초기화 작업, 자원 반환 등의 작업 수행 가능. 웹 앱이 시작되고 종료될 때 특정한 기능을 java.servlet.ServletContextListenr(웹앱이 시작되거나 종료될 때 호출할 메서드를 정의한 인터페이스) 인터페이스를 구현한 클래스를 작성한다. web.xml 파일..

    JSP란

    JavaServer Pages, 동적 페이지를 작성하는데 사용하는 자바의 표준 기술로서 HTML응답을 생성하는데 필요한 기능을 제공하고 있다.더 정확히는 XML, JSON, 바이너리 등 파일등도 응답으로 생성할 수 있지만 주로 HTML생성 목적으로 사용한다. JSP를 이용해서 만든 프로그램을 실행하려면 톰캣이나 제티 또는 JBoss EAP와 같으 ㄴ서버 프로그램이 필요하다. 왜 사용하는가 ? CGI 처럼 사용되지만 자바 서블릿(Java Servlet) 서블릿이란 웹페이지를 동적으로 생성하기 위해 서버측 프로그램을 말한다. 이는 자바 언어를 기반으로 만들지며 웹 어플리케이션 서버 ( Web Application Sever ) 위에서 컴파일 되고 동작한다. JSP 와 서블릿 JSP 와 서블릿의 차이점은 결과..

    자바 Object 클래스

    기본적으로 아무런 상속을 받지 않으면 java.lang.Object 클래스를 확장한다. 자바에서 한번에 이중 상속을 받을 수 없지만, 여러 단계 상속을 받을 수 있다. 그러면 왜 Object 클래스의 상속을 받을까? 가장 큰 이유는 Object 클래스에 있는 메소드들을 통해서 클래스의 기본적인 행동을 정의할 수 있기 때문이다. 클래스는 이정도의 메소드는 정의되어 있어야 하고, 처리해줘야 한다. 는 것을 정의하는 작업이 필요하기 때문에 Object 클래스를 상속 받았다고 생각하면 된다. Object 클래스에서 제공하는 메소드들의 종류는? Object클래스에 선언되어 있는 메소드는 객체를 처리하기 위한 메소드와 쓰레드를 처리하기 위한 메소드로 나뉜다. 쓰레드는 프로그램이 실행되는 작은 단위 중 하나이다. 웹..

    자바 상속

    확장을 하면 부모 클래스에 선언되어 있는 public protected로 선언되어 있는 모든 변수와 메소드를 내가 갖고 있는 것처럼 사용할 수 있다. 즉 다른 패키지에 선언된 부모 클래스의 접근 제어자가 없거나 privat로 선언된 것들은 자식 클래스에서 사용할 수 없다. 하나를 제대로 만들어 놓고 그것에서 파생되는 것들을 조금씩 바꾸어 판매하면 사용자는 기호에 따라 여러 모델을 살 수 있을 것이다. 자바에서의 상속도 비슷한 개념이다. 상속과 생성자 부모 클래스에서는 기본 생성자를 만들어 놓는 것 이외에는 상속을 ㅜ이해서 아무런 작업을 할 필요는 없다 매개변수가 있는 생성자를 만들었을 때 기본 생성자는 자동으로 만들어지지 않는다. 부모 클래스에 매개변수가 없는 기본 생성자를 만든다. 자식 클래스에서 부모..

    패키지와 접근 제어

    자바 애플리케이션을 개발할 때 클래스들을 분류하지 않으면 이름이 중복되거나, 어떤 클래스가 어떤 일을 하는지 혼동되는일이 발생한다. 그래서 패키지가 존재한다. 패키지 이름은 모두 소문자로 지정, 약속이 되어 있고 99.9프로 자바 개발자들이 소문자로 선언하여 사용하고 있음 자바의 예약어를 절대 사용하면 안된다. import를 이용하여 다른 패키지에 접근하기 JDK5 부터는 import static이라는 것이 추가되었다. 이 import static은 static한 변수와 static 메소들를 사용하고자 할 때 용이하다. 만약 Package 클래스에 import한 동일한 이름의 static 변수나, static메소드가 자신의 클래스에 있으면, 자신의 클래스에 있는 static 변수나 메소드가 import ..

    Serializable, NIO

    생성한 객체를 파일로 저장할 일, 다른 서버에서 생성한 객체를 받을 일, 보낼일, 이럴 때 꼭필요한 것이 serializable 이다. 파일을 읽거나 쓰거나 보내거나 받도록 하려면 반드시 이 인터페이스를 구현해야한다. 이 인터페이스를 구현해야만 JVM 에서 해당 객체는 저장하거나 다른 서버로 전송할 수 있도록 해준다. ObjevctOutputStream 이라는 클래스를 사용하면 객체를 저장할 수 있다. ObjevcInputStream 은 객체를 읽을 수 있다. transient라는 예약어는 Serializable과 떨어질 수 없는 관계이다. 객체를 저장하거나 다른 JVM으로 보낼 때 , transient라는 예약어를 사용하여 선언한 변수는 Sereialiable의 대상에서 제외된다. 해당 객체를 생성한 ..

    자바 참조 자료형

    말그대로 나머지 다이다. 기본 자료형 8개를 제외한 나머지 타입은 모두 참조 자료형이다. 가장 큰 차이는 new를 사용해서 객체를 생성하는지 여부의 차이라고 보면 된다. (new없이 생성할 수 있는 유일한 참조자료형은 String 뿐) 기본 생성자는 이미 생성자가 선언되어있으면 생성되지 않는다. 자바에서 생성자는 왜 필요할까? 생성자는 자바 클래스의 객체를 생성하기 위해서 존쟇나다. 컴파일러가 생성자의 이름이 클래스와 동일해야 생성자로 인식하기 때문이다. DTO는 데이터 전송용 객체 VO 데이터 보관용 객체 VO가 DTO에 속하는 개념이라, DTO를 많이 사용한다. DTO를 만들어 두면, 메소드를 선언할 대 리턴타입은 한가지만 선언할 수 있다. 이와 같이 복합적인 데이터를 리턴하려면 String[]과 같..

    자바 배열

    한 변수에 여러 개의 값을 넣을 수 있는 것이 배열이다 배열의 기본값 기본 자료형 배열의 기본값은 각 자료형의 기본값과 동일하다. 지역변수의 경우에는 초기화를 하지 않으면 사용이 불가능하다고 얘기했다. 하지만 배열에서는 지역변수라고 할지라도 배열의 크기만 지정해주면 된다. 참고로 char 배열의 기본값은 \u0000 이며 화면에 출력할 대에는 한칸의 공백으로 보인다. boolean의 기본값은 false이다. 배열의 크기를 지정하여 배열 객체를 초기화만 하면 기본값이 지정되며, 참조 자료형 배열의 각각의 값은 각각의 값을 초기화 해줘야만 null이 되지 않음(String포함) static 배열은 클래스 객체를 생성할 때마다 배열을 새로 생성하지 않는다