[JAVA] List의 null 체크 (with isEmpty()) 아래와 같은 List가 있다고 가정할때 List stringList = new ArrayList(); stringList.get(0); List에 아무런 값이 없을 경우에 위와 같이 get을 사용하여 값을 가져오고자 하면 Nullpointerexception이 발생하게 된다. if (stringList != null && !stringList.isEmpty()) { TestDto testDto = stringList.get(0); } 이경우 null과 "" 빈값을 체크해주면 된다. 또는 ObjectUtils.isEmpty();를 사용해주면 되는데 ObjectUtils.isEmpty() 란? null과 .isEmpty()를 동시에 체크하고..
[JAVA] 빌더 패턴(Builder Pattern) 사용해야 하는 이유 생성자는 빌더패턴에 비해 단점이 너무 많다 매개변수가 많을 경우에 대응이 어렵다. 생성자 호출을 위해서 설정하길 원하지않는 매개변수의 값까지 지정해줘야하는 불편함 실수로 매개변수의 순서룰 바꿀수있다. 자바빈즈 패턴 매개변수가 없는 생성자로 객체를 만든 후 Setter메서드를 사용하여 매개변수의 값을 설정하는 방식 디폴트 생성자를 통해 객체만 생성하고 필요한 경우 매개변수들을 setter로 값을 설정해주는데 매개변수의 갯수가 너무 많다면 객체가 생성되기 전까지 일관성이 깨지게된다. 디버깅이 어렵다 빌더패턴 위와같은 단점을 해결하기 위해 나온게 빌더패턴 (Builder Pattern)이다. 점층적 생성자 패턴의 안전성과 자바빈즈 패턴의..
싱글톤 패턴(Singleton Pattern)은 디자인 패턴 중 하나로, 어떤 클래스가 최초 한 번만 메모리를 할당하고(static) 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴입니다. 스프링 프레임워크에서는 빈(Bean)으로 등록된 객체들이 모두 싱글톤으로 관리됩니다. 즉, 스프링 컨테이너는 객체를 생성할 때, 최초 한 번만 생성하고, 이후에는 해당 객체를 계속 사용합니다. 싱글톤 패턴 사용 이유 1. 리소스 공유 어떤 클래스의 인스턴스를 여러 개 만들 경우, 그만큼 메모리를 많이 사용하게 됩니다. 하지만 싱글톤 패턴을 사용하면 하나의 인스턴스만 생성하여 필요한 모든 곳에서 공유하여 사용할 수 있습니다. 이렇게 하면 리소스를 효율적으로 사용할 수 있습니다. 2. 데이터 공유 여러 개의 인스턴스가..
[JAVA] streamApI로 숫자 합산하기 기본형 특화 스트림 int 요소 : IntStream double 요소 : DoubleStream long 요소 : LongStream 숫자 스트림의 합계를 계산하는 SUM, 최댓값 요소를 검색하는 MAX 각각 인터페이스는 리듀싱 연산 수행 메서드와 다시 객체 스트림으로 복원하는 기능도 제공한다. int calories = menu.stream() .map(Dish::getCalories) .reduce(0, Integer::sum); 숫자 스트림으로 매핑 mapToInt, mapToDouble, mapToLong 3가지 메서드를 가장 많이 사용 mapToInt 메서드는 Dish에서모든 Calories를 가져와 IntStream으로 반환하며 sum 메서드를 ..
[Spring] ResponseEntity 사용법 1. ResponseEntity란? Restful API에서 return Type으로 사용되고있다. ResponseEntity를 사용하여 반환되는 Response의 Header의 Http Status Code를 제어 할 수 있다. ResponseEntity를 사용하여 반환되는 Response의 body에 Json 형태로 Return해 줄 수 있다. 2. 200 OK 3. 400 BadRequestException 4. 500 InternalServerError
스프링부트에서는 @ControllerAdvice와 @ExceptionHandler 어노테이션을 사용하여 전역적인 예외 처리를 할 수 있습니다. 이를 통해 각각의 컨트롤러에서 예외 처리를 하지 않아도 되며, 예외 처리 로직의 중복을 제거할 수 있습니다. 1. @ControllerAdvice @ControllerAdvice 어노테이션을 사용하여 공통 예외 처리를 수행하는 클래스를 정의합니다. 이 클래스에는 @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드를 정의합니다. @ExceptionHandler 어노테이션을 사용하여 예외 처리 메서드에 처리할 예외 클래스를 지정할 수 있습니다. 2. @ExceptionHandler @ExceptionHandler 어노테이션을 사용하여 예외 처리 메..
Java Map null값 체크하는 방법 Java map null값 체크방법 3가지를 알아보도록하겠습니다. 1. common-collections4 dependency 사용 1. dependency 추가 // https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 implementation group: 'org.apache.commons', name: 'commons-collections4', version: '4.4' 2. MapUtils를 사용하여 null 체크 Map map = new HashMap; MapUtils.isEmpty(map); 3. MapUtils.isEmpty() 메소드 사용 /** * Null-safe ..
스프링 프레임워크에서 의존성을 주입하는 방법 3가지 1. 생성자 주입 (Constructor Injection) 2. 필드 주입 (Field Injection) 3. 수정자 주입 (Setter Injection) 1. 생성자 주입(Constructor Injection) 1. 객체를 생성할 때 생성자를 통해 의존성을 주입하는 방식입니다. 2. 객체 생성 시점에 모든 의존성이 주입되므로, 의존성 누락이나 잘못된 순서로 주입되는 일을 방지할 수 있습니다. 3. 컴파일 타임에 의존성 주입이 일어나므로 런타임에 NullPointerException과 같은 예외가 발생할 가능성이 줄어듭니다. 4. 생성자 파라미터를 통해 어떤 의존성이 필요한지 명시적으로 표시되기 때문에 코드 가독성이 좋아집니다. 장점 1. 객체 ..
myisam innodb 차이 회사에서 myisam을 쓰고있어서 내가알던 innodb와 어떤차이가 있나 궁금해졌다. 1. MyISAM 비 - 트랜잭션-세이프 테이블을 관리한다. 항상 테이블에 ROW COUNT를 가지고 있기 때문에 SELECT명령시에 빠른속도를 자랑한다. 전체 문장 검색 능력 뿐만 아니라, 고성능 스토리지 복구 기능을 제공한다. ROW-LEVEL-LOCKING을 지원하지 못해 SELECT INSERT UPDATE DELETE시 해당 Table 전체에 Locking이 걸린다. row수가 커지면 커질수록 속도는 엄청나게 느려진다 2. InnoDB InnoDB는 모든 5.0 바이너리 배포판에 디폴트로 포함되어 있다. InnoDB 및 BDB 스토리지 엔진은 트랜잭션에 안전한 테이블을 제공하는 트..
파이썬 기초 문법 문자열 길이 구하기 - len() 문자열 슬라이싱[:] [:5] : 앞에서 부터 4번째까지 text = 'helloWorld' result = hello[:5] print(result) #결과는 hello [5:] 5번째 부터 끝까지 text = "helloWorld" result = text[5:] print(result) # 결과는 World [2:4] 2번째 부터 3번째까지 text = "helloWorld" result = text[2:4] print(result) # 결과는 ll 문자열 자르기 email = test@google.com result = email.split('@')[1].split('.')[0] print(result) # 결과는 google 리스트 a_list..