전체 글
-
네트워크 - 쿠키(Cookie)네트워크 2026. 7. 20. 20:55
HTTP는 무상태 프로토콜이라 서버가 클라이언트 상태를 기억하지 못한다고 앞서 정리했었는데, 이 문제를 실무에서 가장 널리 해결하는 방법이 바로 쿠키입니다. 이에 대한 내용을 정리해보려고 합니다.1. Set-Cookie와 CookieSet-Cookie: 서버 → 클라이언트로 쿠키를 전달(응답 헤더)Cookie: 클라이언트가 서버로부터 받은 쿠키를 저장해두었다가, 이후 요청 시 서버로 함께 전달(요청 헤더) 2. 쿠키의 사용처와 주의점사용처사용자 로그인 세션 관리광고 정보 트래킹주의점쿠키 정보는 요청할 때마다 항상 서버로 전송되기 때문에, 쿠키에 담는 데이터가 많아질수록 네트워크 트래픽이 늘어나기 때문에 세션 id, 인증 토큰 정도의 최소한의 정보만 담는 것이 좋음서버에 전송할 필요 없이 브라우저 내부에만..
-
네트워크 - HTTP 헤더 정리네트워크 2026. 7. 20. 20:45
HTTP 헤더는 HTTP 메시지를 전송하는 데 필요한 모든 부가 정보를 담습니다. 어떤 형식의 데이터를 보내는지, 클라이언트가 어떤 응답을 선호하는지, 인증은 어떻게 할지 등이 전부 헤더에 담깁니다. 1. 헤더 분류HTTP 헤더는 적용 범위에 따라 크게 4가지로 분류됩니다.분류설명예시General 헤더메시지 전체에 적용되는 정보Connection: closeRequest 헤더요청에 대한 정보User-Agent: Mozilla/5.0 (Macintosh; ..)Response 헤더응답에 대한 정보Server: ApacheRepresentation 헤더표현 데이터 바디에 대한 정보Content-Type: text/html, Content-Length: 3423 2. 표현(Representation) 헤더표..
-
네트워크 - HTTP의 특징과 속성네트워크 2026. 7. 20. 20:28
HTTP의 기본 구조와 특징, 그리고 HTTP 메서드가 갖는 세 가지 속성(안전, 멱등성, 캐시 가능)을 정리해보려고 합니다. 1. HTTP는 클라이언트-서버 구조HTTP(HyperText Transfer Protocol)는 기본적으로 클라이언트가 요청을 보내고, 서버가 응답을 돌려주는 단방향 요청-응답 구조로 동작합니다. 브라우저(클라이언트)가 서버에 요청하면, 서버는 그에 맞는 데이터를 응답으로 돌려주는 방식입니다. 2. HTTP의 두 가지 핵심 특징무상태 프로토콜 (Stateless)서버가 클라이언트의 이전 요청 상태를 기억하지 않는다는 뜻입니다. 각 요청은 독립적으로 처리되며, 서버 입장에서는 매번 처음 보는 요청처럼 취급됩니다.예시: 온라인 쇼핑몰에서 로그인을 한 뒤 상품 목록 페이지로 이동했다..
-
네트워크 - IP(Internet Protocol) 그리고 TCP와 UDP네트워크 2026. 7. 20. 20:18
IP(인터넷 프로토콜)한계와, 그 한계를 TCP가 어떻게 보완하는지, 그리고 UDP는 왜 다른 선택을 했는지 정리해보려고 합니다. 1. 인터넷 프로토콜 스택은 4계층으로 이루어져 있다우리가 인터넷으로 데이터를 주고받을 때, 실제로는 여러 계층의 프로토콜이 순서대로 데이터를 감싸고 벗기며 동작하게 됩니다.프로토콜 4계층을 표로 정리해보자면 다음과 같습니다.계층이름프로토콜/예시역할4애플리케이션 계층HTTP, FTP, DNS실제 우리가 사용하는 서비스 데이터(웹 문서 등)를 생성3전송 계층TCP, UDP포트를 이용해 프로세스 간 데이터 전달, 신뢰성 제어2인터넷 계층IP목적지 IP 주소까지 패킷을 전달(라우팅)1네트워크 인터페이스 계층이더넷, LAN 드라이버, 물리 장치실제 케이블/신호로 데이터를 전송데이터를..
-
Java - 돈 계산에 BigDecimal을 써야 하는 이유언어/Java 2026. 6. 29. 11:58
프로젝트를 진행하면서 돈과 관련된 필드는 BigDecimal을 사용했었는데 ,이 글에서는 double로 돈계산을 할 때 왜 위험한지, BigDecimal이 정확히 어떤 문제를 해결해주는지, 그리고 BigDecimal을 사용할때 마주칠 수 있는 주의점을 코드로 직접 확인하며 정리해보려고 합니다. 1. double의 함정: 2진법은 10진 소수를 정확히 표현하지 못한다double a = 0.1;double b = 0.2;System.out.println(a + b);// 결과: 0.30000000000000004 double은 IEEE 754 이진 부동소수점 방식으로 숫자를 저장합니다. 컴퓨터는 모든 실수를 2의 거듭제곱의 합으로 표현하는데, 0.1처럼 흔한 10진 소수도 2진법으로는 무한소수가 되어버립니다..
-
JPA 연관관계 매핑 - @OneToOne서버 & 프레임워크/Spring & SpringBoot 2025. 12. 28. 22:13
JPA를 사용하는 프로젝트를 진행하면서 @OneToOne 연관관계 매핑을 하는 경우가 종종 발생했는데,다대일이나 일대다 관계보다 고려할 것이 많아엔티티를 설계에 어려움을 겪으며 얻은 지식과 경험을 작성해 보려고 합니다. 먼저상품, 그리고 상품에 대한 재고 엔티티가 있다고 가정을 해보겠습니다.@Entitypublic class Product { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_id") private Long id; private String name;} @Entitypublic class Stock { @Id @GeneratedValue(strategy..
-
SpringBoot - QueryDSL 환경세팅서버 & 프레임워크/Spring & SpringBoot 2025. 6. 7. 13:56
현재 사용하는 SpringBoot 버전 3.3.5 이다.QueryDSL 5.0.0 버전부터는 javax가 아닌 jakarta Persistence 기반이기 때문에jakarta EE 기반인 3.x.x 버전과 호환이 된다.그래서 5.0.0 버전으로 세팅했다. implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"annotationProcessor "jakarta.annotation:jakarta.annotation-api"annotationProcessor "jakarta.persistence:jakarta.persistence-api" build.gra..
-
Factory method 'sqlSessionFactory' threw exception; nested exception is java.io.FileNotFoundException: class path resource [mapper/] cannot be resolved to URL because it does not exist 에러 해결서버 & 프레임워크/Spring & SpringBoot 2025. 2. 18. 10:18
Factory method 'sqlSessionFactory' threw exception; nested exception is java.io.FileNotFoundException: class path resource [mapper/] cannot be resolved to URL because it does not exist Mybatis 환경세팅을하고 스프링부트를 실행시켰는데 해당 에러가 나면서 실행이 되지 않았다.파악해보니, Mybatis가 Mapper XML 파일을 읽어들이지못해 나는 에러였다. XML 파일에 추가해주었더니 해결되었다.