오블완12 『Network』 www.google.com을 주소 창에 쳤을 때 일어나는 과정 웹 동작 방식브라우저에서 www.google.com(URL)을 입력하면, DNS lookup을 통해 해당 도메인의 서버 IP 주소를 알아낸 후 서버와 TCP 연결을 설정한다.IP 주소로 HTTP 요청 메시지(request message) 전송 요청을 한다.생성된 HTTP 요청 메시지를 TCP/IP층에 전달한다.HTTP 요청 메시지에 헤더를 추가해서 TCP/IP 패킷을 생성한다.해당 패킷은 전기 신호로 랜선을 통해 네트워크로 전송되고 목적지 IP에 도달한다.server에 도착한 패킷은 unpacking을 통해 message를 복원하고 server의 process로 보낸다.server의 process는 HTTP 요청 메시지에 대한 response data를 가지고 HTTP response message를 생.. 2024. 11. 27. 『Network』 한 번에 끝내는 DNS 인터넷을 사용할 때 www.naver.com과 같은 도메인 이름을 주소창에 입력한다. 하지만 실제로 컴퓨터는 이러한 도메인 이름이 아닌 IP 주소를 통해 통신한다. 그렇다면 어떻게 도메인 이름이 IP 주소로 변환될까? 이때 중요한 역할을 하는 것이 바로 DNS(Domain Name System)다. DNS란 무엇인가?DNS는 분산 구조형 데이터베이스로 도메인 이름을 IP 주소로 변환해 주는 서비스다. 마치 전화번호부에서 사람의 이름으로 전화번호를 찾는 것과 비슷하다. 도메인 네임의 구조와 관리도메인 네임은 트리 구조로 되어 있으며 각 영역(Zone) 별로 구분되어 분산 관리된다. 예를 들어, www.naver.com에서 com은 최상위 도메인(TLD)이고 naver는 그 하위 도메인이다. 마지막으.. 2024. 11. 26. 『Spring Boot』 Spring Boot Annotation 정리 스프링 부트를 사용하여 RESTful API를 개발할 때 주로 사용하는 어노테이션을 알아보자. 특히 JSON 형식의 데이터를 처리할 때 유용한 애노테이션들을 중심으로 살펴보자. 어노테이션을 사용할 때에도 내부 동작 원리나 해당 어노테이션을 사용하게 된 배경을 아는 것 또한 중요하지만 Deep Dive 하기 전에 40개 정도만 가볍게 한번 훑어보자. @RestController @Controller와 @ResponseBody를 결합한 애노테이션으로 컨트롤러의 메서드들이 JSON 형식의 데이터를 반환하도록 한다. @ResponseBody 메서드의 반환 값을 HTTP 응답 본문으로 변환한다. @RestController에서는 기본적으로 적용된다. @RequestMapping 클래스나 메서드 수준에.. 2024. 11. 25. 『Java』 내부 클래스, 정적 중첩 클래스, 지역 클래스, 익명 클래스 Java에서 중첩 클래스(Nested Class)는 다른 클래스 내부에 정의된 클래스를 의미한다. 중첩 클래스의 종류중첩 클래스는 다음과 같이 네 가지로 분류된다.내부 클래스(Inner Class)정적 중첩 클래스(Static Nested Class)지역 클래스(Method Local Inner Class)익명 클래스(Anonymous Class)각각의 중첩 클래스는 사용하는 방법과 특징이 다르므로 아래에서 자세히 살펴보자. 내부 클래스 (Inner Class)내부 클래스는 외부 클래스의 멤버로 선언되는 클래스이며 Non-Static Nested Class라고도 한다.외부 클래스의 인스턴스에 종속적이다.외부 클래스의 모든 멤버(인스턴스 변수 및 메서드)에 접근할 수 있다.외부 클래스의 인스턴스를 생성.. 2024. 11. 24. 『Network』 User Mode와 Kernel Mode 운영 체제는 하드웨어와 소프트웨어 사이에서 중재자 역할을 하며 이를 위해 User Mode (사용자 모드)와 Kernel Mode (커널 모드)라는 두 가지 실행 모드를 제공한다. 이 두 모드는 네트워크 통신의 OSI 7 계층 모델과 밀접하게 연관되어 있다. User Mode와 OSI 상위 계층 (5~7 계층)세션 계층(5 계층), 표현 계층(6 계층), 응용 계층(7 계층)은 주로 사용자 모드에서 동작하는 애플리케이션에 의해 구현된다.이러한 애플리케이션은 직접 하드웨어에 접근하지 않고, 시스템 콜이나 API를 통해 커널 모드에 요청을 전달한다. Kernel Mode와 OSI 하위 계층 (1~4 계층)물리 계층(1 계층), 데이터 링크 계층(2 계층)은 NIC(Network Interface Card)와.. 2024. 11. 23. 『Java』 HashMap은 어떤 원리로 동작하는가 HashMap은 자주 사용하는 컬렉션 중 하나다. 키와 값을 쌍으로 저장하며 데이터의 삽입, 삭제, 검색이 평균적으로 O(1) 시간 복잡도를 갖는 자료구조다. HashMap의 내부 동작 원리와 해시 충돌 해결 방법에 대해 알아보자. HashMap 개념HashMap은 키(Key)와 값(Value)이 1:1로 매핑되는 자료구조다. 여기서 키는 중복을 허용하지 않지만 값은 중복될 수 있다. 내부적으로 배열을 사용하며 각 배열의 요소를 버킷(bucket)이라고 한다.키를 해시 함수에 통과시켜 해시 값을 얻고 해시 값을 이용해 버킷 배열의 인덱스를 결정한다.일반적으로 해시 함수는 hashcode() % M 형태로 계산되기에 서로 다른 키가 동일한 인덱스를 가리키는 해시 충돌(hash collision)이 발생.. 2024. 11. 22. 『Java』 상속보다 컴포지션을 사용해야 하는 이유 상속보다 컴포지션을 사용해야 하는 이유 상속이란 한 클래스가 다른 클래스를 확장하여 기능을 재사용하고 추가하는 것을 말한다. 반면에 컴포지션은 기존 클래스의 인스턴스를 새로운 클래스의 필드로 포함하여 기능을 사용하는 것을 말한다. 상속이 항상 나쁜 선택일까?다음과 같은 경우에는 상속을 사용해도 문제가 없다. 같은 프로그래머나 팀이 상위 클래스와 하위 클래스를 모두 통제할 수 있을 때상위 클래스가 상속을 고려하여 잘 설계되고 문서화되어 있을 때명확한 is-a 관계가 있을 때 (예: Dog는 Animal이다) 상속의 문제점, 캡슐화의 파괴 캡슐화는 객체의 내부 구현을 숨기고 공개된 인터페이스를 통해서만 상호작용하도록 하는 원칙이다. 상속을 사용할 때 하위 클래스는 상위 클래스의 내부 구현에 의존하게 .. 2024. 11. 20. 『Spring Core』 Bean Scopes Bean Scope 스프링 프레임워크에서 빈 스코프란 빈이 생성되고 유지되는 범위를 의미한다. 빈이 얼마나 오래, 어떤 범위에서 유지될지를 결정한다. 스프링은 다음과 같은 빈 스코프를 제공한다. 싱글톤 (Singleton)기본 스코프로, 스프링 컨테이너 시작부터 종료까지 빈이 유지된다. 프로토타입 (Prototype)요청 시마다 새로운 빈 인스턴스를 생성하며, 생성과 의존관계 주입까지만 컨테이너가 관리한다. 웹 관련 스코프request: HTTP 요청이 시작되고 끝날 때까지 빈이 유지된다.session: 세션이 활성화되는 동안 빈이 유지된다.application: 서블릿 컨텍스트와 동일한 범위로 빈이 유지된다. Singleton Scope 싱글톤 스코프는 스프링의 기본 스코프이므로 별도의 설정 없이.. 2024. 11. 19. 『DataBase』 Oracle SQL 기초 문법 MySQL, MariaDB만 사용해 왔는데 어쩌다 보니 Oracle을 사용하게 되었다.다음에 진행할 프로젝트에서 ORM을 사용할지 Mapper를 사용할지 결정된 게 없기 때문에 우선 Oracle 기초 문법부터 살펴보자. SELECT문과 별칭 사용DISTINCT 키워드를 사용하여 조회 결과에서 중복된 행을 제거할 수 있다.AS 키워드를 사용하여 열이나 테이블에 별칭을 지정할 수 있다. 날짜 함수NEXT_DAY(date, char): 주어진 날짜 이후의 다음 특정 요일의 날짜를 반환한다.ADD_MONTHS(date, n): 주어진 날짜에 n개월을 더하거나 뺀다.MONTHS_BETWEEN(date1, date2): 두 날짜 사이의 개월 수를 계산한다. 조건문(CASE) 사용 CASE 문은 SQL에서 조건.. 2024. 11. 18. 이전 1 2 다음