자바
-
SQL 튜닝자바 2024. 3. 5. 14:34
sql 튜닝 인덱스 사용하기 SELECT * FROM orders WHERE order_date > '2021-01-01' ORDER BY order_id CREATE INDEX idx_order_date ON orders (order_date); CREATE INDEX idx_order_id ON orders (order_id); 적절한 join 사용하기 불필요한 join을 피하고 쿼리의 실행 속도를 향상시킬 수 있음 SELECT * FROM orders JOIN customers ON orders.customer_id = customers.customer_id WHERE orders.order_date > '2021-01-01' 대신 SELECT * FROM orders WHERE orders.ord..
-
Builder 디자인 패턴자바 2024. 2. 13. 15:15
Builder Pattern이란? 빌더 패턴(Builder Pattern)은 복잡한 객체의 생성 과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 생성 패턴이다. 이해하기 쉬운 사례로 수제 햄버거를 들 수 있다. 수제 햄버거를 주문할때 빵이나 패티 등 속재료들은 주문하는 사람이 마음으로 결정된다. 어느 사람은 치즈를 빼달라고 할수 있고 어느 사람은 토마토를 빼달라고 할수 있다. 이처럼 선택적 속재료들을 보다 유연하게 받아 다양한 타입의 인스턴스를 생성할수 있어, 클래스의 선택적 매개변수가 많은 상황에서 유용하게 사용된다. 빌더패턴의 탄생 배경 점층적 생성자 패턴 점층적 생성자 패턴(Telescoping Constructor Pattern)은 필수 매개변수와 함께 선택 매개변수를 0개, 1개, ..
-
전략 디자인 패턴자바 2024. 2. 6. 10:50
전략 디자인 패턴이란? 전략 디자인 패턴(Strategy Design Pattern)은 객체 지향 소프트웨어 디자인에서 사용되는 패턴 중 하나로, 알고리즘을 정의하고 각각의 알고리즘을 캡슐화하여 서로 교환 가능하도록 만듭니다. 이 패턴은 알고리즘을 독립적으로 변경하고 클라이언트에 영향을 주지 않고 새로운 알고리즘을 추가할 수 있도록 합니다. 전략 패턴은 OOP의 집합체 GoF의 디자인 패턴 책에서는 전략 패턴을 다음과 같이 정의한다. 동일 계열의 알고리즘군을 정의하고 각각의 알고리즘을 캡슐화하여 이들을 상호 교환이 가능하도록 만든다. 알고리즘을 사용하는 클라이언트와 상관없이 독립적으로 알고리즘을 다양하게 변경할 수 있게 한다. 예시 1. 간단한 정렬 알고리즘을 다양한 전략으로 교체할 수 있는 상황을 자바..
-
TDD자바 2024. 1. 22. 20:57
TDD (test-driven development) - 테스트 주도 개발 소프트웨어 개발 방법론 중의 하나로, 선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법을 말한다. 다시 말해 먼저 자동화된 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식의 개발 방식을 말한다. TDD를 이용한 개발방법 테스트 케이스 작성 만들고 싶은 기능을 점검할 테스트 코드를 작성한다. 이때, 아직 기능 코드를 구현하지 않았으므로 테스트 결과는 실패로 반환된다. 실패하는 테스트를 가장 빠르게 구현하는 방법은 아무 값이나 반환하도록 하는 것이다. 테스트 케이스를 통과하는 코드 작성 테스트 코드를 만족시킬 수 있는 기능을 구현한다. 테스트 통과를 최우선으로 생각하며 작업한다. 즉 단위..
-
Spring boot3에서 Swagger Springdoc 사용하기 - maven자바 2024. 1. 9. 18:26
swagger fox 대신 doc 쓰는 이유 fox는 업데이트 이제 안 됨 spring 3 이상의 버전에서는 fox를 쓰면 이러한 에러가 발생 더보기 Application run failed org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper' at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:287) 이 오류 로그는 Spring Boot 애플리케이션을 실행하는 동안 발생한 문제를 보여줍니다. documentationPlug..
-
stream API + 람다식자바 2023. 12. 12. 19:23
Stream API 사용 3단계 - Stream 생성(소스) - Stream 중개 연산(0개 이상): 스트림에 대한 작업이 결과적으로 또 다른 스트림을 생성. 파이프 필터 패턴 적용 - 지정된 조건을 만족하는 다른 스트림 생성해서 반환 - Stream 최종 연산 int[] values = {1,2,3,4,5,6}; Arrays.stream(values).filter(v -> v%2 ==0).sum(); 주요 Stream API - map() : 객체를 다른 객체로 변환하는 기능. - filter() : 조건에 따른 연산 수행 List numbers = Arrays.asList("1","2","3","4","5"); List even = numbers.stream() .map(s -> Integer.val..
-
annotation 종류자바 2023. 12. 11. 18:42
- lombok @NoArgsConstructor : 기본 생성자. People p = new People(); @AllArgsConstructor : 모든 멤버 변수 자동 초기화 @Getter : 모든 멤버 변수값을 반환하는 변수당 1:1 메소드 @Setter : 모든 멤버 변수값을 새로운 데이터로 초기화하는 변수 당 1:1 메소드 @ToString : 모든 멤버 변수값 결합해서 하나의 문자열로 반환하는 재정의 메소드. public String toString(){} @RequiredArgsConstructor : 선별해서 원하는 멤버변수만 초기화 가능한 동적 parameter 생성자 생성 @NonNull : @RequiredArgsConstructor 와 매핑, 선언된 멤버 변수만 초기화하는 생성자 ..