전체 글 (276) 썸네일형 리스트형 SOLID 의 LID 리스코프 치환 법칙 (Liskov Substitution Principle) 타입 S가 타입 T의 서브타입이라면 기존 코드의 변경없이 타입 T의 객체를 타입 S의 객체로 교환(치환)할 수 있어야한다는 원칙이다. Fish는 Cat의 서브타입이 아니므로 speak함수에 대한 재설계가 필요하다. Cat 객체를 BlackCat으로는 치환할 수 있지만 Fish 객체로는 치환할 수 없다. package solid; public class LiskovSubstitutionPrinciple { static class Cat { public void speak() { System.out.println("meow"); } } static class BlackCat extends Cat { @Override public v.. 개방 폐쇄 원칙(Open Closed Principle) 개방-폐쇄 원칙(OCP, Open-Closed Principle)은 '소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다'는 프로그래밍 원칙이다. 각 동물들의 울음소리를 출력하는 hey()함수를 이용한 OCP 학습 기존의 요구사항 고양이와 강아지의 대한 speak 구현 package solid; interface Animal { void speak(); } class Cat implements Animal { public void speak() { System.out.println("meow"); } } class Dog implements Animal { public void speak() { System.out.println("bark");.. 단일 책임 원칙(single responsibility principle) 객체 지향 프로그래밍에서 단일 책임 원칙(single responsibility principle)이란 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일컫는다. import java.time.LocalDateTime; public class SRP { public static int add(int num1, int num2) { return num1 + num2; } public static void numPrint(int num){ System.out.println(num); } // 더하기와 프린팅하는 두가지 기능을 가지고 있는 매소드 (분리하여야함) public static int addPrint(int num1, int num2) { int num = num1 +.. 2024/03/05 TIL @RepositoryDefinition JpaRepository는 기본적으로 모든 필드에 대해 사용 가능한 메서드를 만들어준다. 하지만 findByPassword처럼 password를 조회하는 기능을 사용하지 못하도록 제한 하고싶을 수 있다. @RepositoryDefinition(domainClass = User.class, idClass = Long.class) public interface UserRepository { Optional findById(Long id); Optional findByEmail(String email); } @RepositoryDefinition는 내가 정의한 메서드만 사용할 수 있도록 제한한다. 2024/03/04 SQL, JPQL, QueryDSL SQL('Structured Query Language'의 약자로, 데이터베이스에서 데이터를 추출하고 조작하는 데에 사용하는 데이터 처리 언어) 테이블을 대상으로 쿼리를 수행한다. JPQL('Java Persistence Query Language'의 약자로, JPA에서 제공하는 SQL을 추상화한 객체지향 쿼리 언어) 테이블이 아닌 엔티티 객체를 대상으로 쿼리를 수행한다. QueryDSL(QueryDSL은 하이버네이트 쿼리 언어(HQL: Hibernate Query Language)의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크이다.) JPQL 빌더 역할을 한다. 회원이름이 "kim"인 엔티티를 조회하는 쿼리문을 통해서 비교 @Entity public class Member { @Id @Gene.. 2024/02/19 단위 테스트를 위한 기존 코드 수정은 올바른가? 기존 코드 package com.ptjcoding.nbcampspringnewsfeed.domain.member.dto; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; import lombok.Getter; @Getter public class LoginRequestDto { @NotBlank @Pattern(regexp = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$") private String email; @NotBlank @Pattern(regexp = "^(?!.+ ).+$") @Pattern(regexp = "^(?=.*\\d.. 2024/02/02 금요일 TIL HTTP 상태 코드 4xx Client error responses 400 Bad Request 서버가 클라이언트의 요청을 오류로 인식 (잘못된 요청 등)으로 요청을 처리할 수 없거나 처리하지 않는 상태401 Unauthorized 응답이 승인되지 않음을 의미, 클라이언트는 요청한 응답을 받기위해 자신을 인증해야함402 Payment Required 이 응답코드는 향후 사용을위해 예약되어있음. 초기 목적은 디지털 결제 시스템에 사용하기 위한 것이었지만, 매우 드물게 사용됨403 Forbidden 클라이언트에 콘텐츠에 대한 엑세스 권한이 없으므로 서버가 요청된 리소스를 제공하지 않습니다. 401 권한 없음과 달리 클라이언트의 신원이 서버에 알려져있음404 Not Found 서버에서 요청된 리소스를 찾을 수 없는 상태, 브라우저에서는.. 2024/02/01 목요일 TIL HTTP 상태 코드 5xx 5xx Server error responses 500 (Internal Server Error) 서버에서 처리 방법을 모르는 상황이 발생501 (Not Implemented) 요청 메서드가 서버에서 지원되지 않아 처리 할 수 없는 상태 GET, HEAD는 이 코드를 반환하지 않는다 (반드시 구현)502 (Bad Gateway) 서버가 요청을 처리하는데 필요한 응답을 얻기 위해 게이트웨이 역할을 하는 동안 잘못된 응답을 받은 상태503 (Service Unavailable) 서버가 요청을 처리할 준비가 되지 않은 상태 유지 관리를 위해 서버가 다운 되었거나 과부하가 걸린 경우 응답에 사용자에게 문제를 설명하는 내용이 전달 되어야함 일시적인 상황에 사용하여야 하고, 복구 예상시간을 포함해야함504 (Gat.. 이전 1 2 3 4 ··· 35 다음