study
-
[JAVA] 제네릭study/java 2020. 8. 8. 00:31
제네릭 ( Generic ) 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능 제네릭이 필요한 이유 public class ArrayListEx { private int size; private Object[] elements = new Object[5]; public void add(Object value){ elements[size++] = value; } public Object get(int index){ return elements[index]; } } 위의 코드는 ArrayList를 직접 만든 예시다. public class Main { public static void main(String[..
-
[JAVA] GCstudy/java 2020. 8. 6. 00:43
GC란? Java는 JVM ( Java Virtual Machine ) 위에서 구동이 된다. JVM에서 애플리케이션이 사용하는 메모리를 관리하는 작업이 있는데 이를 GC라고 한다. Garbage Collection의 약자로 런타임 시에 힙 영역에 저장되는 객체들을 주기적으로 확인하여 사용하지 않는 객체를 해제하여 정리하는 역할을 한다. Stop-the-world GC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것을 말한다. Full GC가 발생하면 JVM은 애플리케이션의 실행을 멈추고 GC를 실행하는 스레드만 동작한다. 웹 서버에서 Full GC가 발생하면 서비스는 중단될 것이고 서비스가 중단된 동안 각종 Time out이 발생할 것이며 미뤄진 작업들이 쌓여 또 다른 Full GC를 발생시키게 ..
-
[SPRING] DispatcherServletstudy/spring 2020. 8. 4. 23:53
DispatcherServlet : 서블릿 컨테이너에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일 앞에 둬서 중앙 집중식으로 처리해주는 프론트 컨트롤러 클라이언트로부터 요청이 들어오면 Tomcat 같은 서블릿 컨테이너가 요청을 받는데 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 프론트 컨트롤러 장점 web.xml의 역할을 축소시켰다. default / jsp *.jsp jsp *.jspx 기존엔 위처럼 모든 서블릿에 대해서 URL 매핑을 위해 반드시 web.xml에 등록해야 했지만 dispatcher org.springframework.web.servlet.DispatcherServlet 1 dispatcher / 으로 DispatcherServlet을 등록해주어 ..
-
[JAVA] Jar,Warstudy/java 2020. 8. 4. 22:46
Jar와 War 모두 Java의 jar 툴을 이용하여 생성된 압축 파일 여러 클래스 파일과 리소스 파일들을 모아서 애플리케이션을 쉽게 배포하고 동작하게 할 수 있게 해주는 역할 Jar ( Java Archive ) 클래스와 같은 Java 리소스와 속성 파일, 라이브러리 파일 등이 포함되어 있다. Java 애플리케이션이 동작할 수 있도록 Java 프로젝트를 압축한 파일로 볼 수 있다. 라이브러리나 응용 소프트웨어를 배포하기 위한 포맷 ec2에 배포하는 방법 ec2 서버에 jar 파일을 설치하고 실행하면 배포 완료 ( 톰캣이 jar 안에 내장되어 있음 ) War ( Web Application Archive ) servlet/jsp 컨테이너에 배치할 수 있는 웹 애플리케이션 압축 파일 포맷 jsp, serv..
-
[JAVA] static 키워드study/java 2020. 7. 30. 23:30
static field(변수, 상수) public class Car{ public String name; public static int sNumberOfCars = 0; public final static String CAR_NAME = "SANTAFE"; public Car(String name){ this.name = name; this.sNumberOfCars++; } } 클래스 안에서 변수를 선언하면 멤버 변수로 선언이 된다. 멤버 변수에 접근하려면 car.name 처럼 객체를 통해서 접근해야 한다. public static void main(String[] args) { Car car = new Car(); System.out.println(car.name); } 만약 static 키워드를 사..
-
[JAVA] Try-with-resourcesstudy/java 2020. 7. 30. 21:37
try-with-resources : try(...)에서 선언된 객체들을 try가 종료될 때 자동으로 자원을 해제해주는 기능 try에서 선언된 객체가 AutoCloseable 인터페이스를 구현하였다면 Java는 try 구문이 종료될 때 객체의 close() 메소드를 호출해줌. 기존에 try-catch-finally로 자원 해제하는 방법 Java7 이전에 try-catch-finally 구문에서 자원을 해제하려면 번거로웠다. public static void main(String[] args) throws IOException { BufferedReader br = null; try{ br = new BufferedReader(new InputStreamReader(System.in)); int input..
-
[SPRING] Reqeust 흐름과 WASstudy/spring 2020. 7. 26. 22:36
Client(Browser) - WebServer(Apache) - WAS(Tomcat) - Servlet(ServletDispatcher) - DI Container - Controller Web Server ( Apache, nginx ) 흔히 웹 서버라고 하면 웹 애플리케이션이 설치되어 웹 서비스를 제공하는 서버라고 생각한다. 큰 의미로는 맞는 말이지만, 좁은 의미로 사용한다면 정적 컨텐츠를 제공하는 것이 웹 서버이다. 사용자가 웹 서버로 요청을 보내면 먼저 웹 서버가 요청을 보고 동적 컨텐츠를 제공해야한다면 WAS로 보내고, 정적 컨텐츠(.html, .css 등 변화가 없는 파일)로 제공해야한다면 웹 서버에서 직접 응답한다. 웹 서버가 필요한 이유는 웹 서버에서 정적인 콘텐츠만을 처리하도록 기능을..
-
[NETWORK] HTTP1.1 vs. HTTP2.0study/network 2020. 7. 26. 17:56
HTTP : 웹상에서 클라이언트와 서버 간에 요청/응답으로 정보를 주고받을 수 있는 프로토콜 HTTP/1.1 : 기본적으로 연결당 하나의 요청과 응답을 처리하는 방식 HTTP/1.1의 문제점 1. 연결당 하나의 요청과 응답을 처리하기 때문에 동시 전송 문제와 다수의 리소스를 처기하기에 속도와 성능면에서 이슈가 존재한다. 2. 사양상의 제한으로 클라이언트 요청의 순서와 서버 응답 순서는 동기화가 되어야 하는데 이때 HOL(Head Of Line) Blocking, 즉 특정 응답 지연 문제가 발생한다. 먼저 받은 요청이 끝나지 않으면 그 뒤에 있는 요청의 처리가 아무리 빨리 끝나도 먼저 온 요청이 끝날 때까지 기다려야 함. 3. RTT(Round Trip Time) 증가, 양방향 지연 문제 발생 RTT란 네..