전체 글

바쁜 새벽(busymidnight)을 살아보고자 만든 블로그
문제yum으로 설치가능한 OpenJDK는 11까지만 지원이 되기 때문에 17버전을 설치 할 수 없음 해결17버전이 필요하다면 아래와 같이 수동으로 설치할 수 있다. 1. 외부에서 소스를 받기 위한 패키지를 설치 (설치되어 있다면 생략)sudo yum -y install wget curl 2. 외부 링크에서 압축파일을 다운로드 후 해당 파일의 압축을 해제한다. https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gzwget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138e..
@NotNull -> null만 걸러냄 ("", " " 같은 데이터는 허용) @NotEmpty -> null, "" 걸러냄 (" " 데이터는 허용) @NotBlank -> null, "", " " 데이터 전부 걸러낸다 해당 어노테이션들에 대해 간단히 정리하자면 위와 같다. 하지만, 블로그로 다시 한번 정리하는 이유는 실무에서 개발을 하다가 놓친 부분이 있었기 때문이다. 바로, 허용되는 변수의 타입! @NotNull해당 필드가 null 값을 허용하지 않음을 나타냄. 이 어노테이션을 사용하면 메소드나 매개변수, 필드 등에서 null 값이 들어오지 않도록 강제할 수 있음. 특징:허용되는 타입: 모든 타입설명: 해당 필드가 null이 될 수 없다는 것을 의미public class User { @NotNull p..
모기업 인터뷰에서 받은 질문인데 순간적으로 다양한 답변이 생각나지 않아 대답을 만족스럽게 하지 못했다. 익숙함에 속아 중요한 걸 놓치지 말자! 아쉬운 마음에 블로그로 기록해본다. 1. 직관적인 방법 직접 == 연산으로 비교하는 방법이다. 가장 떠올리기 쉬운 방법! String str = null; if (str != null) { // 문자열이 null이 아닌 경우 } else { // 문자열이 null인 경우 } 2. equals() Objects 클래스의 equals 메서드를 사용하여 null 체크하는 방법 String str = null; if (Objects.equals(str, null)) { // 문자열이 null인 경우 } else { // 문자열이 null이 아닌 경우 } 이때 주의할 점은..
현재 직장에서 진행 중인 프로젝트에서 고민이 생겼다.이전에 개인적으로 팀 프로젝트를 진행했을때는 Req,Res 클래스를 매번 만들어 도메인 별로 관리를 했다. 그러나 실무에서 적용할 때는 가급적 관리할 클래스 수를 줄이고 싶었고, 중복코드를 줄이고 싶었다. 그렇게 고민 끝에 세가지 방안을 내놓게 되는데 .... (사실 서버단은 나 혼자이기 때문에 혼자 먼저 고민한 후 최종으로 클라이언트단과 합의하여 결정했다.)1.목적마다 DTO를 생성한다장점목적에 맞고 필요한 필드만 가지는 DTO를 생성추후 문제가 발생할 여지가 적음불필요한 필드를 프론트 쪽에 노출 시키지 않음각각의 DTO가 유의미한 이름을 가짐(이름으로 의도 파악 가능)단점클래스의 수가 많아짐중복된 코드 다수 발생재사용이 어려움클래스 수가 많아질수록 ..
Service단에 매번 선언되는 에러메시지 상수들…(신경쓰임) 프로젝트 전체에서 공통으로 사용되는 에러 메시지를 한 곳에서 관리하고 싶었다. 중복을 피하고 유지보수성을 높일 수도 있고 가독성도 향상되는 효과를 기대하며 아래와 같이 클래스로 관리하기 시작했다. 변경 전 public class FruitService(){ public static final String FRUIT_NOT_FOUND_MESSAGE = "해당하는 과일 없음" ... } public class VegitableService(){ public static final String VEGITABLE_NOT_FOUND_MESSAGE = "해당하는 채소 없음" ... } public class KitchenService(){ public ..
kotlin은 정적으로 입력되는 언어. 즉, 컴파일 시간에 유형이 결정되고 절대 변경되지 않음 val: 값이 변경되지 않는 변수 var: 값이 변경될 수 있는 변수 kotlin변수는 기본적으로 null값을 보유할 수 없음 null 값을 포함하는 변수는 nullable 유형이어야함 val languageName: String? = null 조건문 자바와 다른 점 if (count == 42) { println("I have the answer.") } else if (count > 35) { println("The answer is close.") } else { println("The answer eludes me.") } ---- val answerString: String = if (count == ..
Annotation이란? Java 소스 코드에 추가하여 사용할 수 있는 메타 데이터의 일종 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할 런타임 시 특정 기능을 실행하도록 정보를 제공 코드의 생산성을 증가 코드량을 감소 유지보수에 용이 Annotation 정의 @Target({ElementType.[적용대상]}) @Retention(RetentionPolicy.[정보 유지되는 대상]) public @interface [어노테이션 이름] { ... } Annotation Name: 어노테이션을 정의할 때는 @interface Target: 어노테이션의 적용 대상 ElementType.TYPE (class, interface, enum) ElementType.FIELD (instance variab..
비슷한 동작을 하지만 다르게 구현되어 있는 행위(전략)들을 공통의 인터페이스를 구현하는 각각의 클래스로 구현하고, 동적으로 바꿀 수 있도록 하는 패턴이다. 동일 계열의 알고리즘군을 정의하고 각각의 알고리즘을 캡슐화하여 이들을 상호 교환이 가능하도록 만든다. 장점 클라이언트는 인터페이스를 통해 알고리즘을 사용하므로, 실행 중에 다른 알고리즘으로 교체하는 것이 쉬워 애플리케이션의 유연성과 확장성이 증가 각각의 알고리즘을 독립적인 클래스로 구현하기 때문에, 코드를 재사용이 용이 전략 클래스를 인터페이스를 통해 분리하여 개별적으로 테스트 가능 알고리즘을 사용하는 클라이언트와 상관 없이 독립적으로 알고리즘 변경이 가능 단점 각각의 알고리즘을 독립적인 클래스로 구현해야 하므로, 전략의 개수가 많을 경우 클래스의 수..
쁜새
(안)게으른 블로그