전체 글 19

[Spring Boot] websocket 공부하기 1 - 이론

1. websocket 이란?websocket은 TCP 를 기반으로 양방향/실시간 통신이 가능하게 하는 애플리케이션 계층 프로토콜이다. 2. HTTP와 WebSocket의 차이점HTTP는 stateless하며, cleint에서 요청이 발생했을 때만 응답을 받는다. 또한, HTTP에서 실시간성을 위해서는 Polling이 필요하다. Polling이란 일정 시간마다 cleint에서 request를 보내고 서버 response를 받아 업데이트하는 방식이다. (여기서 포인트는 반드시 request가 필요하다는 것이다.) 반면 webSocket은 stateful하며, 연결이 유지되기 때문에 cleint에서 요청하지 않더라도 서버에서 이벤트가 발생하면 response를 보내는 양방향 통신이 가능하다. 3. ..

Spring Boot 2025.09.23

[Network] 우리는 어떻게 웹사이트에 접속할까?

우리가 매일 이용하는 네이버, 구글과 같은 웹사이트는 도메인 이름을 통해 접속할 수 있다.그렇다면 이런 도메인 이름을 가지고 어떻게 웹사이트에 접속하는 것일까? 결국 최종 도메인 서버에 도달하기 위해서는 IP주소가 필요하기 때문에,가장 먼저 OS는 로컬 캐시나 hosts 파일에 도메인 이름에 해당 IP가 존재하는지 확인한다.만약 로컬 DNS에 해당 도메인이 존재하지 않는다면 ISP의 DNS 서버에 접속하여 IP 주소를 알아내야한다. 하지만 DNS 서버에 접속하는 것도 단순하지는 않다.DNS 서버에 패킷을 보낼때 출발지 IP가 필요하므로,가장 먼저 DHCP(Dynamic Host Configuration Protocol)를 통해 해당 기기의 IP 주소를 발급받아야한다 (IP가 없거나 초기 연결 시).DH..

Network 2025.07.31

[Spring Boot] 스프링 공식 문서로 공부하기1 - IoC 컨테이너

본 글은 Spring Framework 공식 문서이 글은 Spring Framework 공식 문서의 The IoC Container 섹션을 참고하여 작성되었습니다. 1. IoC(Inversion of Control)와 DI(Dependency Injection)IoC는 스프링의 핵심 개념으로 일반적으로 객체가 직접 자신의 의존성을 생성하고 관리하는 것과 달리, 외부 컨테이너가 이를 담당하는 것을 이야기한다. 쉽게 설명하자면 A가 B가 필요하다고 요청을 하면 외부 컨테이너(스프링 컨테이너)가 B 객체를 만들어서 넣어주는 것이다. DI는 이런 IoC의 한 형태로 객체가 자신이 필요로 하는 의존성을 생성자 인자, 팩토리 메서드 인자, 객체 생성 후 설정되는 프로퍼티 등을 통해 정의하는 방식이다.이때 IoC..

Spring Boot 2025.07.29

[Spring Boot] RestTemplate, Webclient의 차이

1. Servlet과 Reactive stack먼저 Web on Servlet Stack과 Web on Reactive Stack에 대해 알아야한다.Web on Servelet Stack은 Spring MVC 기반의 전통적인 서블릿(Tomcat 등) 기반 웹 애플리케이션으로 동기/블로킹 이다.Web on Reactive Stack은 Spring WebFlux 기반의 리액티브(Netty 등)웹 애플리케이션으로 비동기/이벤트기반/non-blocking이다. 하지만 Spring MVC와 Spring WebFlux에서 사용하는 몇몇 애너테이션들의 이름이 동일하기 때문에 헷갈릴 수 있다.예를 들어 Spring Boot에서 자주 사용하는 @RestController라는 애너테이션은 Spring MVC와 Sprin..

Spring Boot 2025.07.23

[Network] 스위치 MAC 주소 테이블

1. MAC 주소 테이블스위치의 Mac 주소 테이블은 아래와 같은 형태로 구성된다.MAC 주소포트A1B2C3D4 *실제 MAC주소는 12자리이며, 데이터 링크 계층의 포트(랜선 꽂는 부분)는 애플리케이션 계층의 포트 개념과 다르다.MAC 주소 : 16진수 (4비트) * 12자리 => 48비트 (24 비트는 OUI, 24비트는 Serial) 2. MAC 주소 테이블을 통한 프레임 전송 과정스위치는 프레임을 받을 때마다 프레임이 들어온 포트 번호와 출발지 MAC 주소 정보를 MAC 주소 테이블에 기록한다.(일정 시간이 경과할 동안 사용하지 않은 정보는 삭제한다.) 전송할 MAC주소가 MAC 주소 테이블에 존재하면 해당 포트로 프레임을 전송한다. 만약 목적지 MAC 주소 정보가 MAC 주소 테이블에 없을..

Network 2025.07.18

[Network] 네트워크 장비 (허브, 스위치, 브리지, 라우터)

1. 허브와 스위치의 개념1-1. 허브네트워크 장치 중 하나로, 받은 신호를 단순히 모든 포트로 전달(broadcast) 한다. 1-2. 스위치 (L2 스위치)각 장치의 MAC 주소를 학습하고 기억하여, 수신된 데이터를 정확한 대상 포트로만 전송(unicast)할 수 있는 장치이다. 2. 허브와 스위치의 공통점 두 장비 모두 일반적으로 이더넷 기반으로, LAN(Local Area Network)에서 여러 장치를 연결하는 네트워크 장비라는 공통점이있다. 하지만 두 장치는 여러 차이점이 존재한다. 3. 허브와 스위치의 차이점 3-1. 계층이 다르다허브는 1계층인 물리 계층이며, 스위치는 2계층인 데이터 링크 계층이다. 즉 스위치는 mac 주소를 판단할 수 있지만 허브는 그렇지 못한다는 의미이다. 3-..

Network 2025.07.18

[compiler] LR Parsing

C언어의 Parser는 문법과 테이블들로 이루어진다. 아래는 LR Parsing의 문법과 테이블들이다. Action Table1. Si   Si는 총 세 가지 동작을 순차적으로 수행 한다.   1) token 을 stack에 push   2) state number 을 stack에 push   3) 새로운 token 읽기  2. Ri   Ri 는 문법 규칙을 사용하여 reduce 작업을 수행한다. 여기서 reduce는 ‘다시 되돌리다’ 라는 의미이다.   Ri생성 규칙을 A→α라고 한다면, (여기서 α는 right hand side의 길이 == 심볼 개수를 의미한다.)   1) 2α개 만큼 stack에서 삭제 (α개의 상태 번호+ α개의 심볼)   2) A를 stack에 push   3) goto[sta..

Compiler 2025.03.17