Node.js 란?
·
Node.js
Node.js는 비동기 이벤트 기반의 JavaScript 런타임으로, 확장 가능한 네트워크 애플리케이션을 구축하도록 설계되었습니다. 다음의 "hello world" 예제에서는 많은 연결을 동시에 처리할 수 있습니다. 각 연결마다 콜백이 호출되지만, 할 일이 없으면 Node.js는 대기 상태가 됩니다.이는 운영 체제 스레드를 사용하는 오늘날의 더 일반적인 동시성 모델과 대조됩니다. 스레드 기반 네트워킹은 상대적으로 비효율적이며 사용하기도 매우 어렵습니다. 또한, Node.js 사용자는 락(lock)이 없기 때문에 프로세스가 데드락에 걸릴 걱정을 할 필요가 없습니다. Node.js의 거의 모든 함수는 직접 I/O를 수행하지 않으므로, Node.js 표준 라이브러리의 동기 메서드를 사용하여 I/O를 수행하는 ..
패턴 매칭(Pattern Matching)
·
Java 문법정리 (Array부터)
패턴 매칭(Pattern Matching)이란?패턴 매칭은 문자열 데이터에서 특정 규칙(패턴)을 사용하여 원하는 부분을 추출하거나 확인하는 기술입니다. 주로 정규 표현식(Regualr Expression)을 활용하며 문자열을 분해, 분석, 검증하는 데 널리 사용된다. 패턴 매칭의 동작 방식패턴 매칭은 두 가지 주요 단계로 이루어진다. 패턴 정의 정규 표현식으로 문자열의 구조를 정의합니다.예를 들어, (\d{1, 2})([SDT])([*#]?)는 다트 점수 문자열에서 숫자, 보너스, 옵션을 추출하기 위한 패턴이다. 패턴 적용문자열과 정규식을 비교하며 패턴과 일치하는 부분을 추출하거나 매칭 결과를 반환한다. 패턴 매칭의 활용자바에서는 java.util.regex 패키지의 pattern 클래스와 Matcher..
Java 버전별 정리
·
카테고리 없음
Java SE 1.0 (1996년 출시)주요 특징:Java의 첫 공식 릴리스.객체 지향 프로그래밍 언어로 설계.플랫폼 독립성을 위해 JVM (Java Virtual Machine) 도입.주요 API:java.lang, java.io, java.util, java.net 패키지 포함.GUI 프로그래밍 지원을 위해 AWT (Abstract Window Toolkit) 도입.Applet 지원: 브라우저에서 실행 가능한 프로그램 작성 가능.Java SE 1.1 (1997년 출시)주요 변경 사항:내부 클래스 (Inner Classes): 클래스 내부에 클래스 정의 가능.JDBC (Java Database Connectivity): 데이터베이스와 상호 작용 지원.RMI (Remote Method Invocation..
Spring boot 버전 정리
·
Spring
처음에는 스프링 부트에 대해 아무것도 모르는 상황이라 학원에서 요구하는 버전대로 사용을 해왔지만 이제는 어느정도 익숙해지니 각 버전별로 어떤게 사용이 가능한지 혹은 안되는 것은 무엇인지 알기 위해 버전별로 정리해볼려고 한다. 1.x → 2.x (Spring Boot 2.0) 1. Spring Framework 업그레이드: Spring Framework 5.0 기반으로 변경.  2. Reactive Programming 지원: WebFlux 도입으로 비동기 및 논블로킹 API 지원.  3. Actuator 개선:Actuator 엔드포인트가 /actuator로 기본 경로 변경.새롭게 설계된 Actuator로 세부적인 메트릭스 제공.  4. Configuration Properties 개선:프로퍼티 바인딩 개..
인프라 설계 설명-(12)(우리 지금 만나)
·
우리 지금 만나
클라이언트 상호작용 레이어  1. 사용자/클라이언트:최종 사용자가 브라우저를 통해 시스템에 접근합니다.  2. 브라우저 통신:사용자 요청과 응답이 브라우저를 통해 전달되어 백엔드 인프라와 상호작용합니다. AWS 인프라 퍼블릭 서브넷:  1. 인터넷 게이트웨이:퍼블릭-facing 자원과 인터넷 간의 통신을 제공합니다.  2. 애플리케이션 로드 밸런서(ALB):들어오는 트래픽을 적절한 백엔드 서비스로 분산시켜 확장성과 장애 허용성을 보장합니다.  3. 배스천 호스트:개인 서브넷 자원에 SSH로 안전하게 접근할 수 있도록 지원합니다. 프라이빗 서브넷-1 (서비스 계층):  1. 모니터링 및 시각화 스택:Kibana, Logstash, Grafana, prometeus로그 집계, 성능 모니터링, 실시간 시각화를..
HTTP에서 웹소켓으로 전환되는 과정
·
WebSocket
HTTP에서 웹소켓으로 전환되는 과정이 어떻게 이루어지나요?1. 클라이언트가 서버에 WebSocket 업그레이드 요청 WebSocket 연결은 기존의 HTTP 요청을 통해 시작됩니다.클라이언트는 HTTP 요청의 Upgrade 헤더를 사용하여 WebSocket 연결로의 업그레이드를 서버에 요청합니다. HTTP 요청 예시GET /chat HTTP/1.1Host: example.com:80Upgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==Sec-WebSocket-Version: 13 주요 헤더 설명: Upgrade: websocket: HTTP 프로토콜에서 WebSocket 프로토콜로 업그레이드를 요청.Connecti..
STOMP 포멧 종류
·
STOMP
1. CONNECT기능: 클라이언트가 서버와 연결을 요청할 때 사용하는 STOMP 프레임입니다. 주요 헤더:accept-version: 클라이언트가 지원하는 STOMP 버전(예: 1.0, 1.1, 1.2 등).host: 클라이언트가 연결하려는 대상 호스트 정보를 명시. 설명: 클라이언트는 이 프레임을 통해 자신이 지원하는 STOMP 버전과 연결할 호스트 정보를 서버에 알립니다. 서버는 이를 참고하여 연결 가능 여부를 판단합니다. 2. CONNECTED기능: 서버가 클라이언트의 연결 요청을 수락했음을 알리는 응답 프레임입니다. 주요 헤더:version: 서버가 지원하는 STOMP 버전. 설명: 서버는 클라이언트의 요청을 승인한 후 이 프레임을 반환하며, 서버와 클라이언트 간의 연결이 성공적으로 이루어졌음을..
1대1매칭 이후 1대1 채팅으로 이어지는 시퀸스 다이어 그램-(11)(우리 지금 만나)
·
우리 지금 만나
해당 시퀸스 다이어그램은 1대1 매칭 후 매칭된 두 유저에게 1대1 채팅방에 자동 생성된 후 Client A가 채팅 메세지를 보낸후 Client B에게 전달되는 과정을 간략하게 표현한 다이어그램입니다.   다이어그램 순서 설명 1. 매칭 요청(Client A → Main Server):Client A가 Main Server로 매칭을 요청합니다.Main Server는 매칭 서버로 사용자 정보를 전달합니다. 2. 매칭 성공 알림(Matching Server → Main Server):Matching Server는 매칭 성공 여부를 판단한 후 Main Server로 알림을 보냅니다.이 과정에서 매칭 결과는 MySQL에 저장됩니다.  3. RabbitMQ를 통한 이벤트 전달:Matching Server가 매칭 ..
1대1 채팅 시퀸스 다이어그램 정리-(10)(우리 지금 만나)
·
우리 지금 만나
현제 구현한 1대1 채팅 기능이 어떻게 작동이 되는지 시퀸스 다이어그램을 통해 알려드리겠습니다. 왜 기능을 구현할때 시퀸스 다이어그램으로 정리하는 이유가 무엇인가요?시퀀스 다이어그램을 그려야 하는 이유는 시스템 설계와 기능 구현 과정에서의 명확한 이해와 커뮤니케이션을 돕기 위해서입니다. 이를 구체적으로 살펴보면 다음과 같습니다: 1. 기능의 흐름을 시각화 시퀀스 다이어그램은 사용자와 시스템 간의 상호작용, 또는 시스템 내부의 컴포넌트 간 데이터 흐름을 시간 순서에 따라 시각적으로 표현합니다.이를 통해 기능의 동작 방식을 한눈에 파악할 수 있어 설계 과정에서 누락된 부분이나 비효율적인 흐름을 사전에 발견할 수 있습니다. 2. 명확한 요구사항 분석 시퀀스 다이어그램은 요구사항을 기능적으로 상세히 표현하기에 ..
채팅 시스템 성능 개선-(9)(우리 지금 만나)
·
우리 지금 만나
Direct Exchange 사용 메세지 라우팅의 간결성정확한 라우팅 Direct Exchange는 라우팅 키(Routing key)를 기반으로 메세지를 특정 큐로 직접 전달합니다. 특히 사용자가 특정 채팅방(큐)에만 메세지를 보내야 할 경우 적합합니다. 다른 라우팅 방식과 비교했을땐?Fanout Exchange: 메시지를 모든 큐에 브로드캐스트함 → 1:1 채팅에서는 과도한 자원 낭비.Topic Exchange: 패턴 매칭을 통한 라우팅 → 복잡성이 증가할 수 있음. 성능 효율성으로는 어떤 이점이 있나요?낮은 오버헤드메시지가 라우팅 키로 정확히 하나의 큐로만 전달되므로 라우팅 오버헤드가 적습니다. 메시지를 복사하거나 불필요한 큐로 보내는 작업이 없기 때문에 메시지 처리 속도가 빨라집니다.1:1 채팅에서..