자바웹프로그래밍
-
CDN은 왜 사용할까? GSLB는 무엇일까?자바웹프로그래밍 2024. 10. 4. 09:50
CDN(Content Delivery Network)을 사용하는 이유는 주로 성능 향상, 사용자 경험 개선, 그리고 서버 부하 감소를 위함입니다. 주요 이유는 다음과 같습니다:전송 속도 향상: CDN은 전 세계에 분산된 서버를 통해 콘텐츠를 사용자에게 제공하기 때문에, 사용자와 가장 가까운 서버에서 데이터를 전송합니다. 이를 통해 지연 시간을 줄이고 웹 페이지 로딩 속도를 빠르게 합니다.서버 부하 분산: 많은 사용자가 동시에 접근할 때 하나의 서버에만 요청이 몰리는 경우 서버가 과부하되거나 다운될 수 있습니다. CDN은 여러 서버로 트래픽을 분산시켜 서버 부하를 줄여줍니다.높은 가용성 및 신뢰성: CDN은 여러 지역에 서버를 분산시켜 두기 때문에 한 지역의 서버에 문제가 생기더라도 다른 서버가 이를 대신..
-
로컬 캐시(Local Cache)와 글로벌 캐시(Global Cache)는 캐시의 범위와 사용 방법자바웹프로그래밍 2024. 9. 30. 14:54
1. 로컬 캐시 (Local Cache)로컬 캐시는 개별 애플리케이션 인스턴스(또는 서버)의 메모리에 저장되는 캐시입니다. 특정 서버 또는 애플리케이션 프로세스에만 유효하고, 다른 서버나 애플리케이션 인스턴스와 공유되지 않습니다. 주로 서버나 애플리케이션의 성능을 높이기 위해 자주 접근하는 데이터를 메모리에 저장하는 방식입니다.특징:빠른 접근 속도: 메모리 내에 캐시되어 있어 매우 빠른 접근이 가능하며, 네트워크 통신이 필요 없습니다.서버별 독립성: 각 서버나 애플리케이션 인스턴스가 자신만의 캐시를 유지합니다. 서로 다른 서버 간에는 캐시가 공유되지 않기 때문에 다른 서버의 캐시 업데이트를 반영할 수 없습니다.스케일 문제: 여러 대의 서버가 있는 경우, 각 서버가 다른 버전의 캐시를 가지고 있을 수 있습..
-
Http1.1 vs http2.0 차이점 및 분석자바웹프로그래밍 2024. 9. 12. 22:26
HTTP/1.1과 HTTP/2.0의 주요 차이점은 웹 통신 방식과 성능 최적화에 있습니다. 간단하게 설명하자면, HTTP/2.0은 HTTP/1.1의 한계를 극복하고 더 빠르고 효율적인 웹 통신을 지원하기 위해 개발된 버전입니다. 차이점을 자세히 설명하자면:1. 전송 방식HTTP/1.1: 하나의 요청에 하나의 응답만 가능하며, 다중 요청을 처리할 때 병목 현상이 발생할 수 있습니다. 이를 해결하기 위해 여러 연결을 사용해 병렬 처리를 시도하지만, 네트워크 자원을 많이 사용하게 됩니다.HTTP/2.0: 하나의 연결로 여러 요청과 응답을 동시에 처리할 수 있습니다. 이를 **멀티플렉싱(Multiplexing)**이라고 하며, 하나의 연결을 효율적으로 사용하여 성능을 크게 향상시킵니다.2. 헤더 압축HTTP/1..
-
HttpServletReqeust에서 getInpustStream을 한번만 사용가능한 이자바웹프로그래밍 2024. 9. 6. 18:30
1. 네트워크 소켓을 통한 데이터 전달HTTP 요청이 서버로 전달되면, 서버는 클라이언트와의 네트워크 소켓 연결을 통해 데이터를 주고받습니다. 클라이언트가 데이터를 보내면, 이 데이터는 바로 메모리에 적재되는 것이 아니라 서버의 네트워크 버퍼로 먼저 들어오게 됩니다. 이 네트워크 버퍼에서 데이터를 읽어들이기 위해 InputStream을 사용합니다.요청 본문 데이터는 네트워크 소켓을 통해 서버로 전달됩니다.getInputStream()을 호출할 때까지 요청 본문은 메모리로 읽어들이지 않습니다.getInputStream()을 호출하는 순간, 서버는 소켓을 통해 데이터를 읽어들여서 이를 처리합니다.2. InputStream을 통한 데이터 읽기getInputStream()을 호출하면, 서버는 네트워크 버퍼에서 ..
-
내부 스태틱 클래스(static nested class)를 사용하는 이유와 그 동작 방식자바웹프로그래밍/JAVA 2024. 7. 25. 14:00
내부 스태틱 클래스(static nested class)를 사용하는 이유논리적인 그룹화: 내부 스태틱 클래스는 외부 클래스와 밀접한 관련이 있는 클래스를 논리적으로 그룹화하는 데 유용합니다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있습니다.캡슐화: 내부 스태틱 클래스는 외부 클래스의 private 멤버에 접근할 수 있기 때문에, 외부 클래스의 구현 세부 사항을 캡슐화하는 데 도움이 됩니다.외부 클래스와의 결합도 낮추기: 내부 클래스(non-static inner class)와 달리, 내부 스태틱 클래스는 외부 클래스의 인스턴스에 대한 참조를 갖지 않기 때문에 외부 클래스와의 결합도가 낮아집니다. 이는 내부 스태틱 클래스의 독립성을 높입니다.내부 스태틱 클래스의 메모리 관리내부 스태틱 클래스는 외..
-
BufferedOutputStream를 사용하면 성능이 좋아지는 이유 및 자세한 설명 with FileDescriptor자바웹프로그래밍/JAVA 2024. 7. 24. 14:37
Contents --> Java에서 데이터를 디스크에 쓰는 과정은 여러 단계로 구성되어 있으며, 최종적으로는 운영 체제의 네이티브 파일 시스템 호출로 이어집니다. 여기서 BufferedOutputStream이 실제로 어떻게 작동하는지, 그리고 네이티브 코드에서 어떻게 구현되는지 살펴보겠습니다. 데이터가 디스크에 적재되는 과정Java 애플리케이션 코드: 애플리케이션은 FileOutputStream 또는 BufferedOutputStream을 사용하여 데이터를 파일에 씁니다.Java 클래스: FileOutputStream과 BufferedOutputStream 클래스는 Java 표준 라이브러리의 일부이며, 데이터를 디스크에 쓰기 위한 메서드를 제공합니다.네이티브 메서드 호출: FileOutputSt..
-
InputStream 과 OutputStream에 차이 !자바웹프로그래밍/JAVA 2024. 7. 24. 14:18
Contents --> OutputStream과 InputStream은 Java의 I/O 시스템에서 데이터를 순차적으로 읽고 쓰는 데 사용되는 기본적인 스트림 클래스입니다. 이 두 클래스는 각각 출력과 입력에 대한 추상적인 개념을 제공합니다. 차이점역할:InputStream: 데이터를 소스(파일, 네트워크, 메모리 등)에서 읽어 들입니다.OutputStream: 데이터를 대상(파일, 네트워크, 메모리 등)으로 씁니다.메소드:InputStream: 주로 read 메서드를 사용하여 데이터를 읽습니다. 대표적인 메서드는 다음과 같습니다:int read(): 한 바이트를 읽고, 0에서 255 사이의 값을 반환하거나, 더 이상 데이터가 없으면 -1을 반환합니다.int read(byte[] b): 바이트 배열 b..
-
JSESSIONID의 역할 및 생성과정 및 JSESSIONID가 필요없는경우자바웹프로그래밍 2024. 7. 23. 14:42
Contents --> JSESSIONID는 Java EE 및 Spring 기반 웹 애플리케이션에서 사용되는 세션 식별자(Session Identifier)입니다. 이 식별자는 서버가 클라이언트와의 세션을 관리하기 위해 사용됩니다. 세션은 서버와 클라이언트 간의 상태 정보를 유지하기 위한 기술로, HTTP의 무상태(stateless) 특성을 보완하기 위해 사용됩니다. JSESSIONID의 역할세션 식별:JSESSIONID는 서버에서 생성되며, 각 클라이언트에 대해 고유합니다. 클라이언트가 서버에 요청할 때마다 JSESSIONID를 사용하여 해당 요청이 어느 클라이언트로부터 왔는지 식별할 수 있습니다.세션 상태 유지:HTTP는 본래 무상태 프로토콜이므로, 각 요청 간에 상태를 유지하지 않습니다. JS..