기록 111

Findex 프로젝트 회고록

Github : https://github.com/sb10-Findex-4/sb10-findex-team04.gitNotion: https://www.notion.so/Codeit-Spring-10-4-f6765902e5ef8343bfb6818f0144f915?source=copy_link 1. 잘한 점 QueryDSL 적용할 때 팀원들에게 참고하면 좋을 관련 문서 공유한 점은 잘한 것 같다!실제 배포환경을 경험했다는 점 (물론 딸깍 배포긴 하지만 ㅎㅎ...)브랜치 전략을 선택해서 수행한 점 나는 PR 리뷰 진짜 열심히 했다고 생각한다. 팀원들은 어떻게 생각할지 모르겠지만... 주말에도 시간 내서 보고, 명세서랑 하나씩 대조하면서 빠뜨린 부분 적어주고, 칭찬은 꼭 한마디 씩 해줬었다 ㅎㅎ 또, 코드 로직..

Project/Findex 2026.03.20

Weekly Paper #7

1. 웹 API의 발전과정에서 SOAP에서 REST로 전환이 일어난 이유와 그 장단점1️⃣ 배경 : 환경의 급격한 변화사용자 급증: 서비스 규모가 커지며 서버의 확장성이 문제가 됨모바일 시대: PC보다 사양이 낮은 스마트폰이 주 기기가 되었음.Agile한 개발 문화: 복잡한 표준 규격보다는 빠르게 개발하고 배포하는 유연함이 중요해짐.2️⃣ SOAP의 한계점무거운 데이터 : XML 기반, 태그가 데이터보다 훨씬 커지는 경우에 낭비가 심해 속도가 느려짐서버 자원 소모: 프로토콜 자체가 무겁고, 세션이나 상태 정보를 유지하려는 경향이 강함. 이로 인해 서버가 감당할 수 있는 사용자 수가 적고, 서버를 늘릴 때 관리가 매우 복잡하다.높은 진입 장벽과 경직성: 반드시 명세서를 작성해야 하고, 이를 해석할 전용 라..

Weekly Paper 2026.02.27

Weekly Paper #6

1. Spring에서 AOP가 필요한 이유와 이를 활용한 실제 애플리케이션 개발 사례AOP는 비즈니스 로직과 공통 로직을 분리하기 위해 필요하다. 왜 필요한가?만약 모든 메서드가 실행 시간을 측정해야 한다면, AOP가 없을 경우 모든 메서드의 시작과 끝에 시간 측정 코드를 직접 넣어야 한다. 이는 코드 중복을 야기하고, 정작 중요한 비즈니스 로직을 파악하기 어렵게 만든다. AOP는 시간 측정이라는 관점을 따로 떼어내어 관리함으로서 비즈니스 로직을 순수하게 유지해준다. 실제 애플리케이션 개발 사례로깅(Logging): 어떤 메서드가 호출되었고 어떤 파라미터가 들어왔는지 모든 서비스 레이어에 일괄 적용할 때 사용한다트랙잭션 관리(@Transactional): DB 작업 중 에러 발생 시 롤백하는 로직을 직..

Weekly Paper 2026.02.09

HTTP 프로토콜

HTTP란?웹 브라우저와 서버 간의 통신을 위한 표준 규약으로, OSI 7계층 중 응용 계층에 속한다.쉽게 말해서, 클라이언트와 서버 간의 통신을 할 때 정해놓은 "데이터의 규격" 이라고 생각하면 된다.HTTP는 두 가지 핵심 특성을 가진다.비연결성: 하나의 요청에 하나의 응답을 주고 연결을 끊는다.무상태성: 각 요청은 독립적이며, 서버는 이전 상태를 기억하지 않는다.HTTP 메시지 구조HTTP 메시지는 Start Line, Header, Body 세 부분으로 구성된다.POST /login HTTP/1.1 ← Start Line (메서드, 경로, 버전)Host: example.com ← HeaderContent-Type: appli..

Weekly Paper#5

1. 웹 서버와 WAS의 기본 개념웹 서버 : 클라이언트로부터 HTTP 요청을 받아 정적인 콘텐츠를 제공하는 서버처리 대상 : HTML, CSS, 이미지 등역할 : HTTP 요청 수신, 정적 파일 응답예시 : Nginx, Apache HTTP Server특징 : 비즈니스 로직 처리 X, DB 접근 X, 빠르고 가벼움---------------------------------------------------------------------------------WAS : 동적 요청을 처리하는 애플리케이션 실행 환경처리 대상 : 사용자 요청에 따라 로직 실행 결과를 생성역할 : 비즈니스 로직 수행, DB 연동, 트랜잭션, 보안, 세션 관리예시 : Tomcat, Jetty, JBoss, WebLogic특징 : ..

Weekly Paper 2026.02.02

제네릭 (Generic)

1. 제네릭이란?클래스나 메서드에서 사용할 타입을 외부에서 지정할 수 있도록 하는 문법이다.List list = new ArrayList();타입 안정성 보장명시적 캐스팅 제거컴파일 타임 오류 검출IDE 타입 추론 가능2. Generic Class기본 구조class Box { private T value; public void set(T value) { this.value = value; } public T get() { return value; }}// 사용Box box = new Box();box.set("hello");String s = box.get(); // 캐스팅 불필요 타입 매개변수 TT는 실제 타입이 아님컴파일 시 전달된 타입으로 치환됨 ..

람다 표현식 2

1. 익명 클래스 vs 람다람다는 익명 클래스의 대체 문법이지만 이 둘은 완전히 같지 않다! 익명 클래스new Runnable() { @Override public void run() { System.out.println(this); }};새로운 클래스 생성this -> 익명 객체 자신람다 Runnable r = () -> { System.out.println(this);};클래스 생성 Xthis -> 외부 객체차이 구분 익명 클래스 람다생성 구조클래스 생성클래스 없음this자기 자신외부 객체바이트코드클래스 파일invokedynamic목적객체 생성동작 전달 2. 타입 추론람다식에 타입이 존재하지 않는다. 하지만 컴파일은 정상적으로 되는데 이는 함수형 인터페이스가 이미 ..

람다 표현식

1. 람다 표현식 등장 배경자바는 전통적으로 객체지향 언어이다. 클래스 -> 객체 -> 메서드 호출 즉, 동작 하나를 전달하려면 객체가 반드시 필요했었음. 하지만 현대 프로그래밍에서는 다음과 같은 요구가 커졌음이 동작만 넘기고 싶다굳이 클래스가 필요할까?함수를 값처럼 넘길 수는 없나? 2. 람다 표현식이란?람다는 익명 함수라고 설명하지만 이는 정확하지 않음. 람다는 메서드를 구현한 객체를 간결하게 표현하는 문법이다. 자바에는 여전히 함수 타입이 없고, 람다는 객체로 동작한다 !! 3. 람다 표현식 기본 문법(매개변수) -> {실행문}// 예시 (a,b) -> {a + b}// 이 코드와 완전 동일 new Comparator() { @Override public int compare(Intege..

Weekly Paper#3

1. HashSet 내부 동작과 중복 제거 메커니즘 Java에서 HashSet은 내부적으로 HashMap 을 사용한다. HashMap의 실제 저장 구조는 배열과 같다. 배열(table) ├── 0번 버킷 (내부에는 LinkedList가 들어감.) ├── 1번 버킷 ├── 2번 버킷 -> Node -> Node -> Node (LinkedList) ├── ... └── n번 버킷이 배열을 해시 테이블(Hash Table)이라고 부르고, 각 칸을 버킷(bucket)이라고 한다. HashSet에 값 하나를 넣을 때 실제로 일어나는 일set.add("apple");// 1. hashCode() 실행 ex) apple.hashCode() = 93029210int hash = "apple".hashCode();//..

Weekly Paper 2026.01.19

Weekly Paper#2

1. OCP, SRPSRP(단일 책임 원칙) : 하나의 클래스는 하나의 책임만 가져야 한다는 원칙 코드의 이해가 쉬워지고 유지보수가 용이해짐OCP(개방 폐쇄 원칙) : 확장 시 새로운 요구사항이 생겼을 때 기능을 추가할 수 있어야 하고, 기능 추가 떄문에 기존 클래스의 코드를 수정하지 않아야 한다OCP, SRP 위반// SRP, OCP 둘다 위반class PaymentService { public int pay(String type, int price) { int discount = 0; if (type.equals("RATE")) { discount = price * 10 / 100; } else if (type.equals("FIXED")..

Weekly Paper 2026.01.12