본문 바로가기

김영한

[HTTP | HTTP 웹 기본지식 | HTTP 헤더2 - 캐시와 조건부 요청] 캐시, 프록시 캐시 HTTP 헤더의 캐싱은 웹 성능 최적화의 핵심적인 부분이다. 캐싱은 서버와 클라이언트 간의 데이터 전송량을 줄여주며, 페이지 로딩 시간을 단축시켜 사용자 경험을 개선한다. 이 과정에서 사용되는 주요 HTTP 헤더를 살펴보자.Cache-Control: 이 헤더는 캐시의 동작을 제어한다. 예를 들어, Cache-Control: no-store는 어떠한 캐시도 사용하지 않도록 지시하며, Cache-Control: max-age=3600은 리소스를 3600초 동안 캐시로 저장하고 사용할 수 있음을 나타낸다.Expires: 이 헤더는 리소스가 언제 만료되는지를 나타내는 날짜와 시간을 제공한다. Expires 헤더가 설정되어 있으면, 그 시간 이후에는 캐시된 복사본을 사용하지 않고 서버로부터 새로운 복사본을 요청해.. 더보기
[HTTP | HTTP 웹 기본지식 | URI와 웹 브라우저 요청 흐름]URI URI(Uniform Resource Identifier)는 인터넷에 있는 자원을 식별하는 데 사용되는 문자열의 표준 형식이다. URI는 자원을 이름 지을 뿐만 아니라 위치를 지정할 수도 있어, 인터넷 상의 자원을 찾는 데 필수적인 역할을 한다. 이는 웹 페이지, 파일, 서비스 또는 이메일 주소와 같은 다양한 형태의 자원을 식별할 수 있다.URI의 구성 요소URI는 다음과 같은 주요 구성 요소로 이루어져 있다:스킴(Scheme): 자원에 접근하는 데 사용되는 프로토콜을 명시한다. 예를 들어, http, https, ftp 등이 있다.호스트(Host): 자원이 호스팅되는 서버의 도메인 이름이나 IP 주소.포트(Port): 서버에서 자원에 접근하는 데 사용되는 포트 번호(명시적으로 표시되지 않은 경우 기본 .. 더보기
[HTTP | HTTP 웹 기본지식 | 인터넷 네트워크] TCP, UDP 인터넷 프로토콜은 데이터 통신을 위한 규칙들을 정의하며, 특히 인터넷에서 데이터를 안전하고 효율적으로 전송하기 위해 여러 계층으로 구성되어 있다. 이 중에서도 네트워크 통신의 핵심을 이루는 4계층은 다음과 같다.링크 계층 (Link Layer): 이 계층은 네트워크의 가장 낮은 단계로, 물리적인 매체를 통해 데이터를 전송하는 역할을 한다. 이러한 매체에는 케이블, 광섬유, 무선 연결 등이 포함된다. 링크 계층의 대표적인 예로는 이더넷(Ethernet)과 Wi-Fi가 있다.인터넷 계층 (Internet Layer): 이 계층의 가장 중요한 프로토콜은 인터넷 프로토콜(IP)이며, IP 주소를 사용하여 데이터를 송수신하는 기기 간의 라우팅을 담당한다. 이 계층에서는 패킷이 올바른 목적지로 전송되도록 경로를 설.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 빈 스코프 ] 싱글톤 빈과 함께 사용시 문제점 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 빈 생명주기 콜백] 빈 생명주기 콜백 시작 public class NetworkClient { // 네트워크 클라이언트를 위한 클래스 선언 private String url; // 네트워크 연결을 위한 URL 주소를 저장하는 변수 public NetworkClient() { // 클래스의 생성자 System.out.println("생성자 호출, url = " + url); // 생성자 호출 시 URL 상태를 출력 connect(); // 네트워크 연결 메소드 호출 call("초기화 연결 메시지"); // 초기 메시지 전송을 위한 메소드 호출 } public void setUrl(String url) { // URL을 설정하는 메소드 this.url = url; // 인스턴스 .. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 의존관계 자동 주입] 조회 빈이 2개이상 - 문제 @Primary 사용`@Primary` 는 우선순위를 정하는 방법이다. @Autowired 시에 여러 빈이 매칭되면 `@Primary` 가 우선권을 가진다. @Primary, @Qualifier 활용코드에서 자주 사용하는 메인 데이터베이스의 커넥션을 획득하는 스프링 빈이 있고, 코드에서 특별한 기능으로 가끔 사용하는 서브 데이터베이스의 커넥션을 획득하는 스프링 빈이 있다고 생각해보자. 메인 데이터베이스의 커넥션을 획득하 는 스프링 빈은 `@Primary` 를 적용해서 조회하는 곳에서 `@Qualifier` 지정 없이 편리하게 조회하고, 서브 데이터베 이스 커넥션 빈을 획득할 때는 `@Qualifier` 를 지정해서 명시적으로 획득 하는 방식으로 사용하면 코드를 깔끔하게 유지할 수 있다. 물론 이때 메인 .. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 의존관계 자동 주입] 다양한 의존관계 주입 방법 @Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public O.. 더보기
[스프링| 스프링 핵심 원리 | 기본편 | 컴포넌트 스캔] 필터, 중복등록과 충돌 package hello.core.scan.filter; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springfra.. 더보기