전체 글

· 네트워크
▶ 1) 주소 공간 크기버전비트 수주소 개수IPv432비트약 43억 개IPv6128비트사실상 무한대IPv4 주소 고갈로 인해더 큰 주소 공간이 필요한 게 IPv6 출발점.▶ 2) 표기 방식IPv4: 123.45.67.89 (10진수 4개, 8비트씩)IPv6: 2001:db8::ff00:42:8329 (16진수 8개, 16비트씩)IPv6는 압축을 허용하여 :: 사용 가능.▶ 3) NAT 필요성IPv4는 주소 부족 때문에 사설 IP + NAT 구조 필요.IPv6는 주소가 넘쳐서 NAT 불필요.(진짜 End-to-End 가능)▶ 4) ARP 유무IPv4: ARP 존재 (IP → MAC 변환, L2 브로드캐스트)IPv6: ARP 제거됨→ 대신 NDP(Neighbor Discovery Protocol) 사용→ 브..
패키지import java.io.*;import java.util.*;입출력빠른 입출력// 기본 템플릿BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));StringTokenizer st = new StringTokenizer(br.readLine());// 한 줄 읽기String line = br.readLine();// 공백으로 구분된 입력st = new StringTokenizer(br.readLine());int n = Integer.parseInt(st.nextToken());int m..
개요웹 애플리케이션은 HTTP를 기반으로 동작한다.HTTP 요청(Request)클라이언트가 서버에 보내는 메시지 구조.HTTP 응답(Response)서버가 클라이언트에 돌려주는 메시지 구조.📌 핵심 요약HTTP는 요청 ↔ 응답의 약속이다.C.1 HTTP란 무엇인가?HTTP란, 웹 애플리케이션에서 클라이언트가 서버와 소통하는 방식이다.프로토콜의 역할프로토콜은“어떻게 말하고, 어떻게 대답할 것인가”에 대한 약속이다.HTTP의 본질HTTP는클라이언트와 서버가 어떻게 대화하는지를 기술하는 프로토콜이다. HTTP는 다음을 전제로 한다:클라이언트가 요청(Request) 을 보낸다.서버가 응답(Response) 을 보낸다.이 두 가지를 묶어 요청–응답(request–response) 모델이라 부른다. 프로토콜은클라..
1. XML 시대의 시작과 끝과거: 스프링 초창기에는 컨텍스트와 전반적인 설정을 XML로 정의했다.현재: 이제 XML 설정은 레거시(구식) 프로젝트에서만 남아 있다.이유:XML은 읽기 어렵다 ❌유지보수성이 떨어진다 ❌어노테이션은 훨씬 간단하고 직관적이다 ✅👉 결론: 새로 배우는 사람은 XML을 배울 필요가 없다. 오직 구식 프로젝트 유지보수가 불가피할 때만 학습하라.2. XML 설정의 기본 구조XML에서는 설정을 정의할 별도 파일(config.xml)이 필요하다.이 파일은 resources 폴더에 두며, 루트 태그는 이다. ❶ parrot1이라는 식별자를 가진 Parrot 타입의 빈 생성❷ Parrot 객체의 name 속성을 "Kiki"로 설정3. XML 설정의 개념 ..
개요들어가며이 부록에서는 소프트웨어 개발 과정에서 마주치게 되는 몇 가지 핵심 아키텍처 개념을 다룬다.이 책을 제대로 이해하기 위해서는, 적어도 이 개념들에 대해 인지하고 고수준의 개괄적 이해를 가지고 있어야 한다.여기서는 모놀리식(monolith), 서비스 지향 아키텍처(SOA: Service-Oriented Architecture), 그리고 **마이크로서비스(microservices)**를 소개한다.더 깊이 학습하고 싶다면 참고할 수 있는 추가 자료도 함께 안내할 것이다주제의 난이도이 주제들은 매우 복잡하다.이미 수많은 책과 수십 편의 프레젠테이션이 이 아키텍처들을 다루고 있다.따라서, 단 몇 페이지로 너를 전문가로 만들 수는 없다.그러나, 이 부록을 읽는 것만으로도 스프링(Spring)을 왜 특정한..
개요🔹 이 장에서 배우는 것✅ 왜 테스트가 중요한가✅ 테스트가 어떻게 동작하는가✅ 단위 테스트(Unit Test) 구현✅ 통합 테스트(Integration Test) 구현🔹 테스트란?👉 특정 기능이 예상대로 작동하는지 검증하는 작은 로직 조각단위 테스트: 작은 로직을 고립시켜 검증통합 테스트: 여러 컴포넌트가 올바르게 상호작용하는지 검증⚠️ "테스트"라고만 하면 두 범주 모두 포함한다.🔹 왜 테스트가 필수인가?🛡 회귀 방지: 코드 변경으로 기존 기능이 깨지는 것을 막는다📄 문서 역할: 테스트를 읽으면 해당 유스케이스 의도가 드러난다🔁 자동 반복: 수동 검증이 아니라, 언제든지 재실행 가능🚨 빠른 피드백: 개발 중 새 버그를 조기에 잡는다🔹 수동 테스트 대신 자동 테스트를 쓰는 이유수동: ..
개요📌 이 장에서 다루는 것Spring Data가 어떻게 동작하는가Spring Data 리포지토리 정의 방법Spring Data JDBC를 사용해 Spring 애플리케이션의 영속성 계층 구현하기Spring Data란?Spring Data는 Spring 생태계의 프로젝트로,최소한의 노력으로 애플리케이션의 persistence layer(영속성 계층)을 구현할 수 있게 해준다.프레임워크의 본질적 역할프레임워크란?→ 애플리케이션에 곧바로 연결해서 사용할 수 있는 기능을 제공하는 것.효과:개발 시간을 절약해 준다.앱의 설계를 더 쉽게 이해할 수 있도록 돕는다.리포지토리 정의 방식리포지토리는 인터페이스 선언만으로 정의한다.구현체는 프레임워크가 자동 제공한다.결과적으로:직접 구현하지 않아도 된다.최소한의 노력으로..
개요✅ 이 장에서 다루는 내용트랜잭션이란 무엇인가스프링이 트랜잭션을 관리하는 방식스프링 애플리케이션에서 트랜잭션 사용하기⚖️ 왜 트랜잭션이 필요한가?데이터 관리에서 가장 중요한 것은 정확성이다.잘못된 실행 시나리오로 인해 불일치한 데이터가 발생해서는 안 된다.💡 예시: 전자 지갑 애플리케이션사용자는 여러 계좌를 가지고 있고, 계좌 간 돈을 이체할 수 있다.이 기능은 단순히 두 단계로 이루어진다:출금 계좌에서 돈을 인출한다.입금 계좌에 돈을 입금한다.한 계좌에서 돈을 빼고다른 계좌에 그 금액을 더한다👉 반드시 두 단계가 모두 성공해야 한다.⚠️ 문제 상황만약 두 번째 단계가 실패한다면?예시:John의 계좌: $1,000Jane의 계좌: $500John이 Jane에게 $100 이체 → 기대 결과:John..
개발연구소
개발연구소