본문 바로가기

Develop197

Java 진수 변환 10진수 → n진수 public class Test { public static void main(String[] args) { int k = 15; System.out.println("10진수 → 2진수"); System.out.println(Integer.toString(k,2)); System.out.println(Integer.toBinaryString(k)); System.out.println(); System.out.println("10진수 → 3진수"); System.out.println(Integer.toString(k,3)); System.out.println(); System.out.println("10진수 → 4진수"); System.out.println(Integer.toString.. 2023. 2. 18.
2개 리스트의 교집합, 합집합, 차집합 구하기 교집합 retainAll() 메서드로 두 리스트의 교집합 구하기 import java.util.Set; import java.util.HashSet; import java.util.Arrays; import java.util.List; import java.util.ArrayList; public class Test { public static void main(String[] args) { Set str1Set = new HashSet(Arrays.asList("ab", "bc", "cd", "ef", "fg")); Set str2Set = new HashSet(Arrays.asList("cd", "ef", "fg", "gh", "hi")); Set intersection = new HashSet(st.. 2023. 2. 17.
2개의 List를 Stream을 사용하여 비교하기 noneMatch ( 불일치하는 요소 ) import java.util.Arrays; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; public class Test { public static void main(String[] args) { List str1List = Arrays.asList("ab", "bc", "cd", "ef", "fg"); List str2List = Arrays.asList("cd", "ef", "fg", "gh", "hi"); List filteredList = str1List.stream() .filter(el -> str2List.stream().n.. 2023. 2. 17.
Map 순회하기 Iterator 사용 Map map = new HashMap(); Iterator keys = map.keySet().iterator(); while (keys.hasNext()) { String key = keys.next(); map.get(key); } entrySet 사용 Map map = new HashMap(); for (Map.Entry entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); } Map은 Key-Value 쌍으로 이루어져있고, 이 한 묶음을 Entry라고 표현한다. keySet 사용 Map map = new HashMap(); for (String key : map.keySe.. 2023. 2. 10.
ArrayList vs LinkedList List 인터페이스는 Java의 Collection을 확장한 인터페이스이다. ArrayList와 LinkedList 모두 이 List 인터페이스의 구현체이다. ArrayList 먼저, ArrayList는 배열(array)에 기반을 두고 있다. index를 통한 요소 검색에 빠르다는 장점이 있지만, 요소의 추가 삭제가 느리다는 단점이 있다. ArrayList의 일반적인 add() 메서드(맨 마지막 요소 뒤에 요소를 추가하는)를 통한 요소 삽입은 시간복잡도 Big-O 기준 O(1)의 시간복잡도를 가진다. 그러나, 특정 요소 사이에 요소를 삽입하거나 삭제하는 과정의 시간복잡도는 O(n)을 가진다. LinkedList LinkedList는 각 노드(Node)가 서로 연결되어 있는 형태이다. 링크를 건다라는 말을.. 2023. 2. 9.
LRU(Least Recently Used) Cache 교체 알고리즘 Programmers Lv.2 - [1차] 캐시 캐시(Cache)는 연산에 필요한 데이터들을 미리 저장하는 임시 메모리이다. 연산을 처리할 때, CPU에서 주기억장치, 보조기억장치까지 도달해서 연산을 처리한다. 이는 물리적으로 거리가 멀어서 비용이 많이 든다. 캐시의 경우는 CPU 바로 옆에 붙어있기 때문에, 물리적으로 거리가 가까워 비용이 적다. 그렇기 때문에, 연산에 자주 사용되는 값이나 데이터들을 캐시에 미리 적재해놓으면 접근 시간을 줄여 성능을 높일 수 있다. 캐시 히트(Hit)율, 캐시 미스(Miss)율이라는 것이 존재한다. 캐시에 적재된 데이터들을 사용하여 연산을 처리하면, 캐시 히트율이 올라가는 거고, 적재된 데이터들을 사용하지 않으면 캐시 미스율이 올라가는 것이다. LRU 캐시 교체 알고리.. 2023. 2. 8.
Spring Boot Configuration Annotation Processor not configured 민감한 정보의 properties의 정보를 읽어오기 위해서, @ConfigurationProperties(prefix = ) 애너테이션을 사용했을 때, 발생했던 에러이다. 'Spring Boot Configuration Annotation Processor not configured' 이유는 Intellij와 Gradle 버전이 업데이트 되면서 필수적으로 추가해주어야 하는 의존 라이브러리가 생겼다고 한다. 그래서 다음과 같은 의존 라이브러리를 추가해주었다. dependencies { annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor:3.0.2' } reload를 시킨 후, 다시 보니 경고 다음과 같은 경고 문.. 2023. 1. 27.
BigDecimal 금융 관련 프로젝트 도중 double보다 큰 값과 세세하게 계산할 수 있는 타입이 필요했다. BigDecimal 클래스는 Java에서 숫자를 정밀하게 저장하고 표현할 수 있는 유일한 방법이다. (금융권에서는 대부분 BigDecimal을 주로 사용한다) BigDecimal 선언 BigDecimal a = new BigDecimal(100.0);/ --- 첫 번째 방법 BigDecimal a = BigDecimal.valueOf(100.0);/ --- 두 번째 방법 BigDecimal 대소 비교 BigDecimal a = BigDecimal.valueOf(100.0); BigDecimal b = BigDecimal.valueOf(100.0); // 동등 비교 a == b/ --- 첫 번째 방법 a.equal.. 2023. 1. 25.
트랜잭션 적용 순서 ✔ 클래스 레벨과 메서드 레벨의 트랜잭션 적용 순서 클래스 레벨과 메서드 레벨에 @Transactional 애너테이션을 추가할 때 트랜잭션은 다음과 같이 적용된다. 클래스 레벨에만 @Transactional이 적용된 경우 클래스 레벨의 @Transactional 애너테이션이 메서드에 일괄 적용 클래스 레벨과 메서드 레벨에 함께 적용된 경우 메서드 레벨의 @Transactional 애너테이션이 적용 만약 메서드 레벨에 @Transactional 애너테이션이 적용되지 않았을 경우, 클래스 레벨의 @Transactional 애너테이션이 적용 더보기 ✔ 조회 메서드에 @Transactional(readOnly = true) 로 설정하는 이유 findeMember()와 같은 조회 메서드에 @Transactiona.. 2023. 1. 25.