전체 글(73)
-
이것이 코딩테스트다. 그리디 - 거스름돈(java)
문제 당신은 음식의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 떄 거슬러 줘야 할 동전의 개수를 구하라. 단 거슬러 줘야 할 돈은 항상 N의 10의 배수이다. 남은 돈 : 1260원 큰 화폐단위로 확인을 해주면 된다. public class greedy1 { public static void main(String[] args) { int n = 1260; int count = 0; int[] coins = {500, 100, 50, 10}; for (int i = 0; i< coins.length; i++) { count += n / coins[i]; n %= coins[i];..
2022.12.30 -
인덱스 정리
인덱스란? 데이터베이스의 테이블에 대한 검색 속도를 향상시키는 자료구조 컬럼의 데이터를 정렬한 후 별도의 공간에 데이터의 물리적 주소와 함께 저장하는 것을 의미 컬럼의 값과 물리적 주소를 (key, value)의 한 쌍으로 저장 인덱스의 장단점 장점 : 테이블의 검색하는 속도가 향상된다. 단점 :인덱스를 관리하기 위해 작업공간이 필요하고, 삽입, 삭제, 수정 등이 자주 발생하면 검색 성능이 저하될 수 있다. 인덱스가 적용된 컬럼에 삽입, 삭제, 수정이 자주 발생하면 인덱스를 수정해줘야 되는데 인덱스는 제거되는 것이 아니라 사용하지 않음으로 남겨두기 때문에 인덱스가 과도하게 커질 수 있다. 인덱스를 활용하면 좋은 경우 1. 규모가 큰 테이블 2. 삽입, 수정, 삭제 작업이 자주 발생하지 않는 컬럼 3. w..
2022.12.21 -
트랜잭션 REQUIRES_NEW 옵션
상위 트랜잭션 @Service @RequiredArgsConstructor public class ParentService { private final JpaMemberRepository jpaMemberRepository; private final ChildService childService; @Transactional public void save(Member member) { System.out.println("parent 트랜잭션 시작"); jpaMemberRepository.save(member); childService.save(); } } 하위 트랜잭션 @Service @RequiredArgsConstructor public class ChildService { private final J..
2022.12.18 -
spring field id doesn't have a default value
스프링 테스트 중 field id doesn't have a default value라는 오류가 발생하였다. 키값을 기본으로 생성하라는 옵션이 있었지만 오류가 발생하여 검색을 하다보니 mysql을 사용할 경우 workbench에서 옵션을 추가해주면 된다는 사실을 알게 되었다. 여기서 AUTO_INCREMENT 옵션을 추가 해주면 된다. 정상적으로 테스트가 작동하는 것을 확인 할 수 있다.
2022.12.18 -
CQRS
CQRS란? Commond Query Responsibility Segregation의 약자로 명령과 조회의 책임을 분리하는 법칙입니다. CQRS는 왜 사용 하는 것일까? 간단한 어플리케이션일 경우 crud로도 문제없이 작동할 것입니다. 하지만 어플리케이션의 복잡해짐에 따라 요구사항이 커지면 초기 모델에서 확장되거나 변하게 됩니다. 이로 인해 모델 간의 데이터에 차이가 발생하게 됩니다. 그래서 모델 부분을 쿼리모델(조회) 하는 부분과 커멘드모델(명령)하는 부분으로 나누는 방식으로 문제를 해결합니다. 출처 : https://always-kimkim.tistory.com/entry/cqrs-pattern
2022.12.16 -
트랜잭션
트랜잭션이란? - 트랜잭션은 쪼갤 수 없는 업무 처리의 최소단위로 db의 상태를 변환시킬 때 하나의 논리적 기능을 수행하기 위한 작업의 단위이다. 트랜잭션에 대해 예시로 이해를 해보자 예를 들어 A라는 사람의 통장에 2만원이 있을고 B의 통장에 5만원이 있을 때 A가 B에게 1만원을 송금을 하는 상황이 있다고 하자. 그러면 정상적으로 거래가 완료되려면 A의 통장의 잔액은 1만원이 되는 동시에 B의 통장의 잔액은 6만원이 되야한다. 이처럼 쪼갤 수 없는 업무 처리를 할 때 트랜잭션을 활용한다. 트랜잭션의 4가지 특징(ACID) 원자성(Atomicity) - 트랜잭션이 db에 모두 반영되거나, 혹은 전혀 반영되지 않아야 된다. 일관성(Consistency) - 트랜잭션이 완료된 결과값이 일관적인 상태를 유지..
2022.12.14