개발
-
spring transaction개발/Spring 2021. 4. 6. 21:48
출처 deveric.tistory.com/86 https://goddaehee.tistory.com/167 글 작성 동기 : 스프링 트랜잭션에 대해 알아보고자 다수의 트랜잭션이 경쟁시 발생할 수 있는 문제 다수의 트랜잭션이 동시에 실행되는 상황에선 트랜잭션 처리방식을 좀 더 고려해야 한다. 예를들어 특정 트랜잭션이 처리중이고 아직 커밋되지 않았는데 다른 트랜잭션이 그 레코드에 접근한 경우 다음과 같은 문제가 발생할 수 있다. ▶ Problem1 - Dirty Read - 트랜잭션 A가 어떤 값을 1에서 2로 변경하고 아직 커밋하지 않은 상황에서 트랜잭션B가 같은 값을 읽는 경우 트랜잭션 B는 2가 조회 된다. - 트랜잭션 B가 2를 조회 한 후 혹시 A가 롤백된면 결국 트랜잭션B는 잘못된 값을 읽게 된 ..
-
junit5 에러 테스트개발/Spring 2021. 3. 21. 13:28
예외를 기대하고 테스트를 할 때가 있다. 이런경우 예제를 찾아보니 1. @Test(expected = IllegalArgumentException.class) @Test(expected = IllegalArgumentException.class) 와 같이 어노테이션을 통해 간단히 테스트를 할 수 있었지만, junit5 환경으로 작업해보면서 되지 않았다. 2. 두번째로는 try catch를 사용하여 테스트를 할 수 있었다. try { userRepository.findByIdAndIsDeleted(1l, false).orElseThrow(()-> new IllegalArgumentException("없는 사용자 id 입니다.")); }catch (IllegalArgumentException e){ Syst..
-
JVM(Java Virtual Machine) 구조개발/JAVA 2021. 3. 19. 23:09
학습을 기록하기 위한 글로 아래 블로그를 통해 학습 하였습니다. jeong-pro.tistory.com/148 출처: https://jeong-pro.tistory.com/148 [기본기를 쌓는 정아마추어 코딩블로그] JVM 구조와 자바 런타임 메모리 구조 (자바 애플리케이션이 실행될 때 JVM에서 일어나는 일, 과정 JVM(Java Virtual Machine) : 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체다. CPU나 운영체제(플랫폼)의 종류와 무관하게 실행이 가능하다. 즉, 운영체제 위에서 동작하는 프로세스로 자 jeong-pro.tistory.com JVM - Class Loader, Execution Engine, Garbage Collector, Runtime Data Are..
-
Garbage collection -가비지 컬렉션개발/JAVA 2021. 3. 19. 22:55
가비지 컬렉션을 학습을 기록하기 위에 쓰는 글이며, 다른 분들이 잘 정리한 글들을 적은 것이며 참조한 글들은 아래와 같습니다. yaboong.github.io/java/2018/06/09/java-garbage-collection/ d2.naver.com/helloworld/1329 www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html 다른 블로그들을 참고하여 잡힌 개념 : JVM의 Runtime Data Area 에서 참조를 잃은 Heap 메모리 데이터를 삭제 하는게 garbage collector의 역할. garbage collection이 일어나는 동안에는 수행하는 쓰레드를 제외한 모든 쓰레드가 일시정지된다(stop-the-..
-
Collection과 Map개발/JAVA 2021. 3. 19. 14:30
Collection 인터페이스는 List, Set, Queue로 크게 3가지 상위 인터페이스로 분류 된다. 종류와 특징은 다음과 같다. 인터페이스 인터페이스 특징 구현클래스 특징 Collection Set 순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다. HashSet - 가장빠른 임의 접근 속도 - 순서를 예측할 수 없음 TreeSet - 정렬방법을 지정할 수 있음 List 순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. LinkedList - 양방향 포인터 구조로 데이터의 삽입, 삭제가 빈번할 경우 데이터의 위치정보만 수정하면 되기에 유용 - 스택, 큐, 양방향 큐 등을 만들기 위한 용도로 쓰임 Vector - 과거에 대용량 처리를 위해 사용했으며, 내부에서 자동으로 ..
-
array형 json string값을 object로 변환할때 ( json string array to object)개발/JAVA 2021. 3. 17. 16:11
{"id" : "아이디", "name" : "이름"} 과 같이 json 형태의 string을 object로 변환하는 것은 obejct mapper로 간단하게 변환할 수 있다. String userStr = "{"id" : "아이디", "name" : "이름"}"; ObjectMapper objectMapper = new ObejctMapper(); User user = objectMapper.readValue(userStr, User.class); 하지만 [ {"id" : "아이디", "name" : "이름"}, {"id" : "아이디", "name" : "이름"}] 와 같이 array인 형태는 어떻게 해야할까? list형태로 생각되어 List로 변환하려 하였으나 잘 되지 않았다. -> List가 아닌 ..
-
프로그래머스 - 주식가격개발/Algorithm 2021. 3. 9. 12:03
programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr @Test void stockPrice(){ int[] prices = new int[] { 2, 1, 2, 3, 1, 2, 4, 3 }; int[] result = solution(prices); System.out.println(Arrays.toString(result)); } public int[] solution(int[] pr..
-
jpa또는 querydsl로 union 쿼리 사용개발/Spring 2021. 2. 25. 18:55
보통 jpa로 불러오다가 좀 더 세밀한 쿼리가 필요하면 querydsl을 사용한다. 이번에 기존 테이블과, 이 테이블의 데이터를 백업한 두 테이블 데이터를 함께 불러와야하는 일이 생겼다. union 쿼리를 사용하면 되는데 jpa에서도, querydsl에서도 union은 지원하지 않는다. (아마 제대로 설계했다면 유니온이 왜 필요해? 라고 되묻는 것 같다.) 그래서 native query로 직접 입력 할 수밖에 없었다. 그래서 모습은 @Query(nativeQuery = true, value = "select * from (" + "select a.id, a.field1, a.field2 from test_tableA a where a.status =?1 union " + "select b.id, b.fi..