분류 전체보기 (222) 썸네일형 리스트형 [이펙티브자바] 아이템7. 다 쓴 객체 참조를 해제하라 자바에서는 다쓴 객체를 알아서 회수해가는 가비지 컬렉터가 있다. 자칫 메모리 관리에 신경을 쓰지 않아도 된다고 오해할 수 있는데 절대 아니다. Stack클래스의 메모리 누수 public class Stack { private Object[] elements; private int size = 0; // 처음 stack 사이즈 private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); // 배열 사이즈 체크 elements[size++] = e; } public .. Spring Boot @DataJpaTest 사용방법 @DataJpaTest JPA 관련 테스트 설정을 로드한다. 데이터소스 설정이 정상인지 JPA를 사용해서 생성, 수정, 삭제 등의 테스트를 할 수 있다. 실제 데이터베이스를 사용하지 않고 내장형을 사용해서 테스트할 수 있기 때문에 실제DB에 영향을 주지 않는다. 기본적으로 임베디드 데이터베이스를 사용한다. // JPA테스트가 끝날때마다 자동으로 테스트에 사용한 데이터 롤백 @DataJpaTest // Replace.Any를 사용하면 내장된 데이터 소스를 사용하고 // Replace.NONE을 설정하면 ActiveProfiles에 설정한 환경값에 따라 적용된다. // spring.test.database.replace: NONE 도 가능 @AutoConfigureTestDatabase(replace = A.. Spring Boot @EnableAutoConfiguration @SpringBootApplication @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 스프링부트에서 시작점은 @SpringBootApplicaion 어노테이션이다. run을 실행하면 서버를 시작할 수 있다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan(excludeFilters.. Spring Boot 외부 설정 @Value, @ConfigurationProperties 스프링 부트 프로퍼티 파일은 설정이나 기타 정적인 값을 키값 형식으로 관리한다. 이것을 이용하면 복잡한 XML설정을 하나의 파일로 관리할 수 있다. YAML 파일을 이용하면 깊이에 따라 관계를 구분 짓기 때문에 List, Set, Map 등 다양한 바인딩형 매핑이 가능하다. 매핑 방식 중 유용하게 사용되는 @Value와 @ConfigurationProperties를 비교해본다. 유연한 바인딩: 프로퍼티 값을 객체에 바인딩할 때 Camel표기법으로 선언하고 프로퍼티 키는 카멜, 케밥 등 다양한 표기법으로 선언해서 바인딩할 수 있다. 메타데이터 지원: 프로퍼티 키에 대한 정보를 메타데이터 파일로 제공한다. 이름, 타입, 디폴트값 등 힌트가 되는 정보를 얻을 수 있다. SpEL(Spring Expression.. 백준 2075번 N번째 큰 수 자바 풀이 ❓문제 N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48 14 28 35 25 52 20 32 41 49 이러한 표가 주어졌을 때, N번째 큰 수를 찾는 프로그램을 작성하시오. 표에 채워진 수는 모두 다르다. 🔠 입력 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. 🖨️출력 첫째 줄에 N번째 큰 수를 출력한다. ✍️ 예제 입력 5 12 7 9 15 5 13 8 11 19 6 21 1.. Spring Boot 멀티 모듈 프로젝트 관리 Gradle을 이용한 멀티 모듈 프로젝트 관리 방법을 소개한다. 사용하는 이유는 프로젝트가 커질 수록 공통으로 사용하는 서버가 많아지는데 (혹은 클래스) 그 클래스들을 전부 복사&붙여넣기를 할 수 없다. 수정이 필요한 경우 전부 수정을 해야하고 실수의 여지가 많다. 하나의 공통 프로젝트를 둔 다음 해당 프로젝트에서 가져다 쓸 수 있도록 할 때 사용한다. 프로젝트 구조 multi-module-root 를 두고 하위에 domain과 sub-web을 두었다. 최상위 multi-module-root를 만든 후 new -> module -> gradle -> java 로 만들면 된다. settings.gradle rootProject.name = 'multi-module-root' include 'sub-web'.. [이펙티브자바] 아이템6. 불필요한 객체 생성을 피하라 똑같은 기능을 하는 객체는 매번 생성하기보다 재사용하는 편이 빠르고 세련되다. String s = new String("bikini"); String s = "bikini"; 첫 번째 코드는 실행될 때마다 String 인스턴스를 새로 만들고 두 번째 코드는 하나의 String인스턴스를 재사용한다. 정적 팩터리 메서드 사용 생성자 대신 정적팩터리 메서드를 사용하면 불필요한 객체 생성을 막을 수 있다. Boolean(String) 생성자 대신 Boolean.valueOf(String)팩터리 메서드 사용하는 것이 좋은 예이다. (생성자는 자바9에서 deprecated됨) 생성 비용이 비싼 객체 사용 지양 static boolean isRomanNumeral(String s) { return s.matches(.. [이펙티브자바] 아이템5. 의존 객체 주입을 사용해라. 많은 클래스가 하나이상의 자원에 의존한다. 정적 유틸리티 클래스를 예로 들어볼 수 있다. 정적유틸리티 잘못 사용한 예 - 유연하지 않고 테스트 하기 어렵다. public class SpellChecker { private static final Lexicon dictionary = ..; private SpellChecker() {} public static boolean isValid(String word) { ...} public static List suggestions(String typo) { ...} } 싱글턴을 잘못 사용한예 - 유연하지 않고 테스트 어렵다 public class SpellChecker { private static final Lexicon dictionary = ...; p.. 이전 1 ··· 13 14 15 16 17 18 19 ··· 28 다음