java 3

순수 Java로 WAS 구현 (1) - WAS의 심장, 소켓(Socket) 프로그래밍

1. 들어가며: 왜 소켓 통신부터 알아야 할까?스프링 부트로 웹 개발을 하다 보면 내장된 Tomcat(톰캣)이 알아서 HTTP 요청을 처리해 줍니다. 하지만 '문제를 구조적으로 이해하는 개발자'가 되기 위해, 톰캣이라는 거대한 마법 상자를 열어 그 내부를 직접 순수 Java로 구현해 보고자 합니다.웹 서버(WAS)의 본질은 결국 '클라이언트의 연결을 기다렸다가, 요청을 받고, 응답을 돌려주는 무한 반복 프로그램'입니다. 그리고 이 네트워크 통신의 가장 밑바탕이 되는 기술이 바로 소켓(Socket)입니다. 2. 소켓(Socket)이란?소켓은 프로세스 간 네트워크 통신에 사용되는 양쪽 끝단(End-point)을 의미합니다. 자바에서는 TCP 기반의 신뢰성 있는 연결을 위해 java.net 패키지를 사용합니다..

정리/WAS 2026.05.12

순수 Java로 WAS 구현해보기 (1) - 스프링과 WAS의 핵심 개념 이해

지난 2월, 웹 애플리케이션 서버(WAS)의 내부 동작 원리를 깊이 있게 이해하고자 순수 Java만을 이용하여 WAS를 직접 구현해 보는 프로젝트를 진행했습니다.요즘은 Spring Boot가 내장 톰캣(Embedded Tomcat)을 제공하기 때문에, 개발자들은 단순히 main 메서드만 실행하면 뚝딱 웹 서버가 뜨는 '마법'에 익숙해져 있습니다. 하지만 이 마법 상자 안에서 HTTP 요청이 어떻게 파싱되고, 어떤 과정을 거쳐 우리가 만든 @Controller에 도달하는지 그 블랙박스를 열어보는 것은 백엔드 개발자로서 한 단계 성장하기 위한 필수 코스라고 생각합니다.본격적인 코드를 짜기 전에, 오늘은 첫 번째 시간으로 우리가 만들 WAS(톰캣)가 도대체 무슨 일을 하는 녀석인지, 그리고 거대한 스프링 프레..

최대 공약수, 최소 공배수

1. 최대공약수 (GCD - Greatest Common Divisor)'유클리드 호제법'을 사용합니다. 두 수를 나누어 그 나머지를 계속해서 나누는 과정을 나머지가 0이 될 때까지 반복합니다. 코테에서는 보통 코드가 훨씬 짧은 재귀 방식을 애용합니다.Java// 1. 재귀 방식 (코딩 테스트 강력 추천)static int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b);}// 2. 반복문 방식 (메모리나 재귀 깊이가 걱정될 때)static int gcd(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } ..