[Java / 알고리즘] 대표적인 정렬 알고리즘. 버블 정렬, 삽입 정렬, 선택 정렬
·
알고리즘 & 코딩 테스트/알고리즘
정렬 알고리즘은 n개의 숫자가 입력으로 주어졌을 때, 이를 사용자가 지정한 기준에 맞게 정렬하여 출력하는 알고리즘이다. 예를 들어 n개의 숫자가 저장되어있는 배열을, 오름차순의 조건으로 작성하여 입력하면 오름차순으로 정렬된 배열을 출력으로 구할 수 있다. 정렬 알고리즘은 정말 다양한데, 이에 따라 각각의 수행시간도 천차 만별이다. 1. 버블 정렬(Bubble Sort) 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 방식이다. [ 코드 ] static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { boolean swap = false; for (int j = ..
[LoaTodo / Spring] 코드 리팩토링 SELECT 리팩토링
·
Project/LoaTodo
1. 서론 연관관계 테이블이 늘어나면서 캐릭터 데이터를 호출할 때 SQL문이 여러번 실행된다. 1 - 1. 기존코드 @Query(value = "SELECT c FROM Character c WHERE c.member = :member AND c.serverName = :serverName") List findCharacterListServerName(@Param("member") Member member, @Param("serverName") String serverName); JPA로 Member Entity를 불러와서 Controller에서 DTO로 변경할 때 필요한 데이터들을 LAZY 형식으로 불러온다. 1 - 2. 기존코드 결과 2023-11-24 17:32:29.777 DEBUG 39633 -..
[LoaTodo / Spring] JPA 영속성 컨텍스트 더티체킹 VS JPQL로 벌크업데이트
·
Project/LoaTodo
1. 서론 프로젝트에서 JPA를 사용하여 CRUD 중 Update를 구현할 때,보통 변경감지(Dirty Checking)를 이용합니다. Entity를 조회하여 조회된 Entity 데이터를 변경만 하면 데이터 베이스에 자동으로 반영이 되도록 하는 기능입니다. 1 - 1. 영속성 컨텍스트 JPA에서는 Entity Manager를 통해 데이터 베이스 작업을 처리합니다. Entity Manager는 내부적으로 영속성 컨텍스트라는 메모리 영역을 가지며 이 안에 데이터베이스로부터 조회한 Entity 객체들이 저장되어 있습니다. 1 - 2. 영속성 컨텍스트 변경감지(더티 체킹) JPA는 트랜잭션 되는 순간 내부적으로 flush()가 호출됩니다. 그때 엔티티와 1차 캐시 내의 스냅샷(최초 상태)을 비교합니다. 비교했을..
[책 정리] 디자인 패턴 - 옵저버 패턴
·
책&강의 정리
1. 옵저버 패턴 옵저버 패턴(Observer Pattern)은 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴 여기서 주체란 객체의 상태 변화를 보고 있는 관찰자이며, 옵저버들이란 이 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 '추가 변화 사항'이 생기는 객체들을 의미한다. -> 위의 그림처럼 주체와 객체를 따로 두지 않고 상태가 변경되는 객체를 기반으로 구축하기도 한다. 1) 트위터 옵저버 패턴을 활용한 서비스 내가 어떤 사람인 주체를 '팔로우'했다면 주체가 포스팅을 올리게 되면 알림이 '팔로워'에게 가야한다. 2) MVC 패턴 주체라고 볼 수 있는 모델(model)에서 변경..
[책 정리] 디자인 패턴 - 전략 패턴
·
책&강의 정리
전략 패턴은 정책 패턴이라고도 하며, 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴 컨텍스트 프로그래밍에서의 컨텍스트는 상황, 맥락, 문맥을 의미하며 개발자가 어떠한 작업을 완료하는 데 필요한 모든 관련 정보를 말한다 1. 자바의 전략 패턴 어떤 것을 살 때 네이버페이, 카카오페이 등 다양한 방법으로 결제하듯이 어떤 아이템을 살 때 LUNACard로 사는 것과 KAKAOCard로 사는 것을 구현한 예제 결제 방식의 '전략'만 바꿔서 두 가지 방식으로 결제하는것 구현 import java.text.DecimalFormat; import java.util.ArrayList; import java.u..
[Java] Java8 표준 함수형 인터페이스
·
Java
Java 8에서 기본으로 제공하는 함수형 인터페이스는 무엇이 있을까? 참고링크 1. 표준 함수형 인터페이스 Java 8부터 기본으로 제공하는 함수형 인터페이스 Java.lang.function 패키지 활용 예시 ArrayList 클래스의 forEach 메소드를 보면 Consumer를 매개 값으로 활용하고 있는 것을 알 수 있다 Consumer : T를 받아서 아무 값도 리턴하지 않는 함수형 인터페이스 public class ArrayList extends AbstractList @Override public void forEach(Consumer
마볼링
게임을 좋아하는 개발자의 블로그