| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- HTTP
- 스파르타코딩클럽 #사전캠프
- 스파르타사전캠프
- 깃헙
- 네트워크
- 레퍼클래스
- Java
- Spring
- optional
- 함바그
- 자바
- 내일배움캠프
- springboot
- 스파르타코딩클럽
- 키오스크
- 정규화
- Til
- 캡슐화
- 스파르타코딩클럽 #개발자 #백엔드
- 도메인별
- SQLD
- til #데이터베이스 #sql
- 데이터모델링
- 패키지구조
- 계층형
- 메모리구조
- 사전캠프
- 스터디카페
- 프레임워크
- 스프링부트
- Today
- Total
목록전체 글 (71)
개발일지
TCP/IP 계층 구조 (실제 구현 모델)1. 네트워크 액세스 계층 (Network Access Layer, 또는 Link Layer)OSI의 물리 계층 + 데이터 링크 계층에 해당물리적인 하드웨어와 네트워크 접근 방식을 정의데이터가 실제로 LAN, WAN, 무선 네트워크를 통해 전송되는 역할예: 이더넷(Ethernet), Wi-Fi(802.11), ARP(Address Resolution Protocol)2.인터넷 계층 (Internet Layer)OSI의 네트워크 계층에 해당목적지까지 **경로 선택(라우팅)**과 주소 지정(IP 주소) 담당전송되는 데이터 단위를 패킷(Packet) 이라고 부름대표 프로토콜: IP(IPv4, IPv6), ICMP, ARP, RARP3. 전송 계층 (Transport L..
1️⃣ 문제 상황: 게시판 페이징 조회 시 N+1 문제엔티티 구조Board (게시글) ↔ Member (작성자) : @ManyToOne(fetch = LAZY) @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id", nullable = false) private Member member; 게시글을 조회할 때 Board 객체만 가져오고 Member는 LAZY 로딩 설정따라서 게시글 목록을 조회하면서 board.getMember().getName() 같은 호출이 발생하면 Member를 DB에서 추가로 조회하는 쿼리가 반복적으로 실행실제 로그 예시 (N+1 문제 발생) select * from board limit 10; -- 1번 쿼리 (게시글..
데이터베이스 설계를 할 때 꼭 알아야 하는 개념 중 하나가 바로 **정규화(Normalization)**이다.정규화는 데이터를 중복 없이, 일관성 있게, 효율적으로 저장하기 위해 테이블 구조를 정리하는 작업이다. ✅ 정규화를 왜 해야 할까?같은 정보가 여러 곳에 반복되면 수정할 때 오류가 발생하기 쉽다.중복된 데이터는 저장 공간 낭비로 이어진다.테이블이 복잡하면 유지보수가 어려워진다.이러한 문제를 예방하기 위해 정규화 과정을 통해 데이터를 구조화해야 한다. 📚 정규화의 3단계: 1NF → 2NF → 3NF정규화는 단계별로 적용하며, 각 단계는 이전보다 더 철저한 정리를 목표로 한다. 🧱 1정규화 (1NF) – "한 칸엔 한 값만 있어야 한다"- 테이블의 컬럼이 원자성(한 속성이 하나의 값을 갖는 특성..
데이터베이스를 설계할 때 가장 먼저 해야 할 일은 데이터를 어떻게 구조화할지 설계하는 것이다. 데이터 모델링이란?데이터 모델링은 말 그대로 데이터를 모델링하는 것, 즉 현실 세계의 정보를 데이터베이스 안에 표현할 수 있도록 구조화하는 작업이다. 현실에서 발생하는 다양한 개념들(사람, 물건, 사건 등)을 데이터의 형태로 바꾸는 것.예를 들어 “학생이 강의를 수강한다”는 상황이 있다고 가정함. 여기서 학생과 강의는 각각 하나의 개체(Entity)가 되고, 그 둘 사이의 “수강한다”는 행위는 관계(Relationship)가 된다. 학생이름, 학번, 강의명, 수강날짜 같은 건 속성(Attribute)으로 표현함이런 식으로 현실 세계의 요소들을 분석해서 데이터베이스 구조로 옮기는 게 바로 데이터 모델링이다.데이터..
1. 멱등성이란?멱등성(Idempotency) 은 수학과 컴퓨터 과학에서 사용되는 개념으로, 어떤 연산을 한 번 수행하든 여러 번 수행하든 결과가 같음을 의미한다.HTTP에서는 같은 요청을 여러 번 보내더라도 서버의 상태나 결과가 동일한지 여부를 기준으로 멱등성을 판단한다.즉, 💡 "동일한 요청을 여러 번 수행해도 같은 효과를 가진다면 멱등성 있는 요청이다."2. HTTP 메서드별 멱등성 정리HTTP 메서드멱등성 여부설명GET✅ 멱등성 O리소스 조회 요청. 몇 번 요청해도 서버 상태 변하지 않음PUT✅ 멱등성 O리소스를 대체(수정). 같은 데이터로 여러 번 수정해도 결과는 같음DELETE✅ 멱등성 O리소스 삭제 요청. 이미 삭제된 상태에서 또 삭제 요청해도 상태 동일POST❌ 멱등성 X리소스 생성 요청..
1. ✅ @AuthenticationPrincipal 이란?@AuthenticationPrincipal은 Spring Security에서 현재 로그인한 사용자 정보(principal) 를 컨트롤러 메서드의 파라미터로 바로 주입해주는 어노테이션임이 어노테이션을 사용하면 다음과 같은 코드가:Authentication authentication = SecurityContextHolder.getContext().getAuthentication();AuthUser user = (AuthUser) authentication.getPrincipal();아래처럼 깔끔하게 줄어든다@GetMapping("/profile")public String profile(@AuthenticationPrincipal AuthUser ..
Store 엔티티에는 equals()와 hashCode() 메서드가 직접 구현되어 있지 않기 때문에, contains()가 정확히 작동하지 않을 수 있습니다.특히 JPA에서 엔티티는 동일한 id를 가지더라도 프록시 객체 등으로 인해 서로 다른 인스턴스로 인식될 수 있습니다. 1. member.getVisitedStores().contains(store)가 하는 일member.getVisitedStores()는 **Member가 방문했다고 기록된 Store 객체들의 컬렉션(List 또는 Set)**을 반환해요..contains(store)는 이 컬렉션에 우리가 찾고자 하는 store 객체가 이미 포함되어 있는지 여부를 판단해요.즉, "이 멤버가 이 가게(store)를 방문했었나?"를 묻는 거죠.그런데, 여..
1. DB 부하 및 성능 저하한 번의 쿼리로 너무 많은 데이터 조회DB가 100만 건의 데이터를 한꺼번에 검색해서 전달해야 하므로, 쿼리 실행 시간이 길어지고 DB CPU, 메모리 사용량이 급격히 증가할 수 있음네트워크 트래픽 과다서버와 DB 사이에 엄청난 양의 데이터가 오가게 되어 네트워크 지연과 병목현상이 생길 수 있음2. 애플리케이션 메모리 및 응답 지연서버 메모리 부족애플리케이션 서버가 100만 개의 리뷰 데이터를 메모리에 올려 처리해야 하면, 메모리 사용량이 급증하고 심하면 OOM(Out Of Memory) 오류가 발생할 수 있음응답 속도 저하 및 타임아웃클라이언트에 응답하기까지 시간이 너무 오래 걸려 사용자 경험이 크게 저하됩니다. 요청 타임아웃도 발생할 수 있음3. 사용자 경험 문제한 번에 ..
멤버 관리 기능 개발 프로젝트에서 구현한 멤버 관리 기능(crud)에 대해 소개드리겠습니다1. 개요회원 관리 API의 주요 기능인 회원 조회, 수정, 삭제에 필요한 입력 데이터와 처리 과정을 정리한 문서입니다. 각 기능에서 어떤 입력이 필요한지, 입력 검증과 처리 흐름이 어떻게 이루어지는지 쉽게 이해할 수 있도록 설명합니다.2. 회원 정보 조회2.1 기능로그인한 본인의 회원 정보 조회특정 회원의 프로필 조회 (단, 차단된 회원은 접근 불가)2.2 입력 데이터로그인 사용자 인증 정보: 시스템에서 자동 추출 (AuthUser, Member)조회 대상 회원 ID: URL 경로 변수로 입력2.3 처리 및 검증회원 ID로 DB 조회 → 회원 존재 여부 확인회원이 소프트 삭제 상태(비활성화)인지 확인 → 삭제된 회..
리뷰 기능 개발 보고서프로젝트에서 구현한 리뷰 기능에 대해 소개드리겠습니다1. 기능 개요리뷰 기능은 사용자가 가게에 대한 평가와 의견을 남길 수 있도록 지원하는 기능입니다. 이 기능은 사용자 경험을 높이고, 다른 사용자들에게 신뢰성 있는 정보를 제공하기 위해 꼭 필요한 요소입니다.이 기능을 CRUD 구조로 설계하여 리뷰를 작성, 수정, 삭제할 수 있도록 구현했습니다.2. 시스템 구조본 프로젝트는 Spring Boot를 기반으로 개발되었으며, RESTful API를 통해 클라이언트와 서버 간의 데이터 교환이 이루어집니다. 컨트롤러, 서비스, 리포지토리 계층으로 구성된 MVC 아키텍처를 따르고 있으며, JSON 형식으로 데이터를 주고받도록 설계되었습니다.Controller: HTTP 요청을 받아 서비스로 전..