본문 바로가기

Java27

[ Java ] Map getOrDefault Null-Safe하게 값을 가져오는 법 Map의 getOrDefault 사용하면 null-safe 하게 값을 가져올 수 있다고 생각했는데 HashMap 사용할 경우 override 되어 key의 value가 null인 경우 그대로 null로 리턴된다. Map map = new HashMap(); map.put("a", null); // NullPointerException String s1 = map.getOrDefault("a", 1).toString(); // Null-Safe String s2 = Optional.ofNullable(map.get("a")).orElse("").toString(); 따라서 HashMap 사용할 경우 getOrDefault 보다 Optional 함수를 사용하는 것이 좋다. 2023. 11. 13.
[ Exception ] java.lang.IncompatibleClassChangeError: Found interface org.apache.poi.util.POILogger, but class was expected 아래 에러 뜨는 경우 java.lang.IncompatibleClassChangeError: Found interface org.apache.poi.util.POILogger, but class was expected 해결 방법 : pom.xml 의존성 추가 org.apache.poi poi x.x.x org.apache.poi poi-ooxml x.x.x 2023. 8. 15.
[ JAVA ] synchronized VS Reentrant Lock synchronized과 Reentrant Lock 차이점 synchronized 쓰레드 진입권 획득 순서 보장 안됨 개발자의 실수로 lock 해지하지 않는 경우 없음 코드 간결하게 사용 가능 Lock 어떤 쓰레드가 먼저 락을 획득하게 될지 순서 지정 가능 인스턴스에 한개 이상의 condition 지정 가능 ex) lockInterruptibly(), tryLock() lock 기다리고 있는 쓰레드 목록 간편하게 확인 가능 2023. 8. 14.
[ Spring ] HikariCP 옵션 HikariCP 옵션 autoCommit: auto-commit설정 (default: true) connectionTimeout: pool에서 커넥션을 얻어오기 전까지 기다리는 최대 시간, 허용가능한 wait time을 초과하면 SQLException을 던짐. 설정가능한 가장 작은 시간은 250ms (default: 30000 (30s)) idleTimeout: pool에 일을 안하는 커넥션을 유지하는 시간. 이 옵션은 minimumIdle이 maximumPoolSize보다 작게 설정되어 있을 때만 설정. pool에서 유지하는 최소 커넥션 수는 minimumIdle (A connection will never be retired as idle before this timeout.). 최솟값은 10000m.. 2023. 6. 7.
반응형