지금까지 List를 생성할 때 대부분 new ArrayList()를 사용했었다. 회사에서 다른 분들의 코드를 보다가 Arrays.asList()를 이용한 부분이 있었고 참고해서 사용했는데, 차이점을 정확히 알고 싶어 정리하고자 한다. 1. 다른 class, 다른 return type 다른 class : new ArrayList()와 Arrays.asList()는 다음과 같이 class가 다르다. // new ArrayList() import java.util.ArrayList; // Arrays.asList() import java.util.Arrays; new ArrayList()는 ArrayList를 Arrays.asList()는 Arrays의 정적 클래스인 ArrayList를 리턴한다. 아래는 Ar..
전체 글
백엔드 개발자 토발자입니다.우선순위 큐(Priority Queue)와 힙(Heap)에 대해 간단히 알아보자. 우선순위 큐(Priority Queue)란? 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조이다. 어떤 데이터를 우선순위에 따라 처리하고 싶을 때 사용한다. ex) 상품 데이터를 자료구조에 넣었다가 비싼(가치가 높은) 상품부터 꺼내서 조회할 경우 : 이 때 상품의 가치를 상품과 함께 저장해 추출 시 가치가 높은 상품부터 꺼내도록 한다. 여기서 다시 한 번 스택(Stack), 큐(Queue), 우선순위 큐(Priority Queue) 자료구조를 비교/정리해보고 가자. 자료구조 가장 먼저 추출되는 데이터 스택(Stack) 가장 나중에 삽입된 데이터(후입선출) 큐(Queue) 가장 먼저 삽입된 데이터(선입선출) 우선순..
Windows 10 Home에서 Docker를 설치해보자. 사실 몇 달 전 토이 프로젝트를 하며 Docker를 사용하고자 설치를 시도했지만 현재 내 노트북에서는 설치가 안됐었다. 이후로 사용하지 않아 내버려두고 있다가 Docker를 공부하며 사용해보고 싶어 다시 설치를 해보았고 성공했다. 1. Docker 사용 가능 여부 확인하기 Windows에 Docker를 설치하기 위해서는 WSL2나 Hyper-V backend and Windows containers 가 설치되어 있어야 한다. Windows에서 Hyper-V를 지원해주는지 확인하기 위해서는 시스템 - 정보에서 Windows 사양을 확인한다. Windows 10 Pro를 사용한다면 Docker를 사용할 수 있지만, Windows 10 Home의 경우..
HashMap과 HashSet을 사용하며 두 가지의 차이점에 대해 정리하고 싶었다. 간단하게 정리해보자. HashMap vs HashSet 차이점 1. 정의 HashMap : Map Interface의 구현체로 HashTable과 유사한 자료구조로 데이터를 저장한다. HashSet : Set Interface의 구현체로, 내부적으로 HashMap을 사용해 데이터를 저장하기 때문에 HashTable과 유사한 자료구조로 데이터를 저장한다고 할 수 있다. 2. 데이터 저장 형태 HashMap : key-value 형태로 데이터를 저장한다. 각 value들이 key에 mapping되어 있다. HashSet : 객체 그 자체를 저장한다. key 값으로는 삽입되는 객체 자체를, 내부 구현 코드에서 필드로 선언한 객..
개인 프로젝트에서는 쓴 적이 없던, 회사에서 처음 본 속성이다. 그것은 바로 @Transactional의 noRollbackFor 속성. 간단히 말하면 이름 그대로 롤백이 일어나지 않도록 하는 속성이다. 대부분의 비즈니스 로직이 실행되는 Service 단에서 각 메서드마다 @Transactional 어노테이션을 붙여 메서드 내부의 작업들이 하나의 트랜잭션으로 묶여 처리되도록 한다. 물론, Service 단이 아닌 Controller 단에서도 불가피하게 호출하는 Service 단의 메서드가 많다면.. 해당 어노테이션을 사용해 하나의 트랜잭션으로 묶을 수 있다. 이 때, 호출된 해당 트랜잭션이 수행되던 중 어떠한 이유로 에러가 발생한다면 묶여있는 모든 트랜잭션이 rollback 처리가 된다. 하지만! 특정한..