전체보기101 [Spring] WebClient WebClient는 Spring 5에서 도입된 HTTP 클라이언트로 REST API와 같은 웹 서비스를 호출하기 위해 사용된다. 기존의 RestTemplate를 대체하며 **비동기와 논블로킹** 방식으로 설계되어 있다. Spring WebFlux의 일부지만, Spring MVC 프로젝트에서도 사용할 수 있다. 특징 및 장점비동기 및 논 블로킹 I/OWebClient는 Netty와 같은 비동기 논블로킹 I/O 라이브러리를 활용해 설계되었다.이를 통해 대규모 요청을 처리할 때 더 적은 리소스를 사용하며 높은 동시성을 제공한다반응형 프로그래밍 지원Mono와 Flux와 같은 Reactor 타입을 반환하여 비동기 데이터 스트림을 처리한다.이를 통해 데이터의 지연 로드, 병렬 처리, 오류 처리등을 효율적으로 수행할.. 2024. 12. 9. [JAVA] GC의 내부 동작 가비지 컬렉터는 힙 메모리에서 더 이상 사용되지 않는 객체를 탐지하고 제거하여 메모리를 회수하는 역할을 한다. 프로그래머가 명시적으로 메모리를 해제하지 않아도 메모리 누수를 방지하고, 힙 메모리를 효율적으로 사용하도록 돕는 역할을 한다. GC의 주요 동작 과정1. 루트 탐색GC는 사용중인 객체와 사용되지 않는 객체를 구분하기 위해 먼저 GC Roots에서부터 참조를 탐색한다. GC Roots는 다음을 포함한다스택에 저장된 지역 변수현재 실행 중인 스레드의 참조정적 변수네이티브 코드에서의 참조GC는 루트부터 시작하여 참조 그래프를 따라가며 도달 가능한 객체를 활성(Reachable) 객체로 표시한다 2. 참조 그래프 탐색모든 GC Roots에서 시작하여 연결된 객체를 탐색하고 활성 객체로 마킹한다.도달할 .. 2024. 12. 9. [JAVA] 객체가 생성될 때 Stack과 Heap은 객체가 생성될 때 발생하는 과정1. 객체 생성 요청객체를 생성하기 위해 new 키워드를 호출한다.Class obj = new Class(); 객체를 힙 메모리에 할당하고, 객체의 참조(reference)를 반환한다. 2. 힙 메모리에 메모리 할당1. 힙 영역에 공간 확보JVM은 객체를 저장할 크기만큼의 메모리를 힙에서 확보한다2. 메모리 초기화할당된 메모리를 초기화한다모든 인스턴스 변수는 기본 값으로 초기화 된다3. 객체의 메타데이터 설정객체가 어떤 클래스의 인스턴스인지 식별하기 위해 클래스 메타데이터가 연결된다가상 메서드 테이블에 대한 참조가 포함된다(다형성 지원을 위함)3. 생성자 호출1. 스택에 생성자 호출 정보 저장생성자를 호출하면 생성자의 매개변수와 지역 변수가 스택에 저장된다호출된 생성자가 객.. 2024. 12. 9. CS 메세지 큐(Message Queue) 메세지 큐는 소프트웨어 간의 비동기적으로 메세지를 전달하기 위한 통신 시스템이다. 생산자와 소비자간의 데이터를 임시로 저장하는 중간 매개체 역할을 하며, 일반적으로 메세지의 안정적인 전달, 비동기 처리, 시스템 분산 및 확장성 향상에 도움이 된다. 메세지 큐의 구조1. 생산자(Producer)메세지를 생성하여 큐에 넣은 애플리케이션이나 서비스이다. 생산자는 특정 주제(Topic) 또는 메세지를 큐에 전달한다. 2. 소비자(Consumer)큐에서 메세지를 읽고 처리하는 애플리케이션이다. 소비자는 메세지 큐로부터 메세지를 가져와 작업을 수행한다. 3. 메세지 브로커(Message Broker) 생산자와 소비자 사이에서 메세지를 전달하고 큐를 관리하는 시스템이다. 브로커는 메세지의 순서, 전달 보장, 재시도 .. 2024. 12. 9. [Network] API 게이트웨이, NAT 게이트웨이 API 게이트웨이개념API 게이트웨이는 클라이언트(모바일 앱, 웹, 다른 서비스 등)가 내부의 다양한 백엔드 서비스나 마이크로서비스의 API에 접근할 때, 중앙 집중적인 진입점(Entry Point) 역할을 하는 서비스다. 즉 여러 개의 분산된 서비스 및 API 엔드포인트를 한 곳에서 통합하고 관리하며, 외부 요청을 내부 서비스로 라우팅해주는 **프록시**나 **프런트 도어** 같은 역할을 한다. 기능 및 특징엔드포인트 관리 및 라우팅각기 다른 서비스로 분산된 API들을 단일 도메인 및 엔드포인트로 노출함으로써 클라이언트는 복잡한 내부 구조를 알 필요 없이 간단한 URL하나로 접근 가능하다.인증/인가 및 보안토큰 검증, OAuth, JWT 등의 인증/인가 로직을 게이트웨이 레벨에서 처리할 수 있어 각 서.. 2024. 12. 7. [Network] Web Socket 웹 소켓은 웹 환경에서 클라이언트와 서버 간에 양방향(Full-Duplex) 통신을 할 수 있도록 해주는 프로토콜이다. 기존의 HTTP 통신 방식은 클라이언트가 요청(Request)을 보내면 서버가 응답(Response)을 하는 식의 단방향, 요청 - 응답 패턴에 기반하고 있었기 때문에 실시간 양방향 데이터 송수신에 제약이 많았다. 이를 극복하기 위해 웹 소켓이 등장했다. 특징실시간 양방향 통신웹소켓 연결이 수립되면 서버와 클라이언트 양쪽 모두 언제든지 자유롭게 데이터를 전송할 수 있다. 클라이언트가 요청을 보내지 않아도 서버가 주기적으로 필요할 때마다 클라이언트로 데이터를 push할 수 있다.지속적인 연결 상태 유지일반적인 HTTP 요청은 매번 요청-응답 시 연결을 맺었다 끊는 과정을 반복하지만, 웹소.. 2024. 12. 7. [Web] DNS(Domain Name System) 인터넷에 연결된 컴퓨터, 서비스, 혹은 다른 자원들의 도메인 이름을 IP 주소로 변환해주는 분산형 계층적 네이밍 시스템이다. 간단히 말해서 DNS는 사람이 읽을 수 있는 웹주소 (문자로 구성되어 있는)를 컴퓨터가 이해할 수 있는 숫자 형태의 IP주소로 바꿔주는 주소록 역할을 한다. 사용자는 이를 통해 복잡한 숫자 대신 기억하기 쉬운 도메인 이름을 사용해 웹사이트나 서비스를 편리하게 접속할 수 있다. DNS 관리 업체를 통해 설정할 수 있다. 필요성사용자 편의성IP주소는 숫자 조합이라 기억하기 어렵지만 도메인은 사람들에게 직관적이고 기억하기 쉽다. 유연한 인프라 관리서버 IP 주소가 바뀌어도 사용자들은 같은 도메인 이름을 통해 접근이 가능하다. DNS 레코드만 업데이트하면 되기 때문에 인프라 확장이나 이전.. 2024. 12. 7. [Web] CORS(Cross-Origin Resource Sharing) 웹 브라우저가 다른 도메인, 포트, 혹은 프로토콜에 존재하는 리소스에 접근할 수 있도록 허용하는 HTTP 헤더 기반 보안 메커니즘이다. 기본적으로 웹 브라우저는 보안 상의 이유로 **동일 출처 정책 (Same-Origin Policy)**을 따르는데 웹 페이지가 로드된 도메인과 다른 도메인에 있는 자원에 직접적으로 접근하는 것을 제어한다 CORS는 이런 제한을 완화하는 표준 방식이다. 동일 출처 정책(Same-Origin Policy)브라우저는 스크립트가 로드된 출처와 동일한 프로토콜, 도메인, 포트를 가진 자원에만 무제한적으로 접근하도록 하는 보안 정책이다출처는 프로토콜(http , https), 도메인(testdomain.com), 포트(:8080)로 구성된다ex : http://testdomain... 2024. 12. 7. JAVA Error & Exception Error와 Exception은 문제가 발생했음을 나타내는 객체다 ㅇ Error애플리케이션 실행 중에 복구할 수 없는 심각한 문제를 나타낸다. 개발자가 예외 처리(try-catch)로 복구할 수 없는 문제JVM이나 시스템의 문제가 원인인 경우가 많음ex 메모리 부족, 스택오버플로우 주요 하위 클래스OutOfMemoryError : 힙 메모리가 부족할 때 발생StackOverflowError : 재귀 호출이 너무 깊어져 스택 메모리가 초과될 때 발생NoClassDefFoundError : JVM이 필요한 클래스를 찾을 수 없을 때 발생처리 방법 : 보통 에러는 애플리케이션 내에서 복구할 수 없으므로 예외 처리로 잡지 않고 프로그램을 중단하거나 로그를 남긴다.public class ErrorExample {.. 2024. 12. 2. 이전 1 2 3 4 5 ··· 12 다음