결론 java.util.date 클래스와 Calendar 객체 대신. 1.8에서 지원하는 java.time 패키지의 날짜객체들을 사용하는 것이 좋습니다. 기존의 Java 날짜 객체의 문제점 Java 1.0은 날짜와 관련된 Date객체를 함께 출시 했습니다. import java.util.Date; Date now = new Date(); // 2022-12-05 23:35:02. 생성. 그러나 1.0 에서 지원하는 Date 객체는 여러가지 문제점을 가지고 있었습니다. 햇갈리는 생성자 설계 Date객체 생성자의 파라미터들은 순서대로 '연-월-일 시간-분-초'의 값을 갖습니다. 그렇다면 아래와 같이 파라미터를 입력해서 '2022-12-05 23:45:00' 값을 갖는 날짜 객체를 생성할 수 있을까요. Dat..
방법 1. subList 메서드를 이용한 방법. for (int i = 0; i < data.size(); i += 1000) { memberMapper.bulkRegister(data.subList(i, Math.min(i + 1000, data.size()))); } - subList를 활용한 방법은 OOME를 야기 할 수 있다. subList를 활용해서 쪼개진 List를 만들 때 마다 constructor에서 새로운 List를 할당해 주기 때문이다. 방법 2. 단순 반복문으로 매 1000건 마다 insert 해주는 방식. List partedData = new ArrayList(); for (int i = 0; i < data.size(); i++) { partedData.add(data.get(i..
1000개 단위로 리스트를 짜르려면, sublist 와 반복문을 사용한다. https://stackoverflow.com/questions/5824825/efficient-way-to-divide-a-list-into-lists-of-n-size Efficient way to divide a list into lists of n size I have an ArrayList, which I want to divide into smaller List objects of n size, and perform an operation on each. My current method of doing this is implemented with ArrayList objects in Java. Any stackoverf..
Double형 소수를 new BigDecimal(0.29293) 로 생성하면 0.2929332900004000010202020 와 같은 값으로 생성됨. BigDecimal.valueOf(0.29293)으로 생성해야 0.29293으로 정상적으로 생성됨. new BigDecimal() 의 경우. 매번 새로운 생성자를 생성함. new BigDecimal로 생성하려는경우 인자를 String으로 할당해야 정확한 값을 얻을 수 있다. ex) new BigDecimal("1.12") => 1.12 BigDecimal.valueOf는 미리 캐싱해둔 생성값으로 생성해 낸다. double 형을 인자로 전달할 때는 BigDecimal.valueOf를 사용해야 정확한 값을 얻을 수 있다.
BigDecimal 먼저 BigDecimal에 대해서 간단히 알아보도록 하자. BigDecimal은 큰 수를 표현하거나 부동소수점을 해결할 수 있는 클래스이다. 거두절미하고 코드를 보자. @Test public void primitive() { System.out.println(2.0 - 1.1); } 위 코드에서는 무엇이 출력이 될까? 0.9가 나오길 기대하겠지만, 위코드는 0.8999999999999999 라는 이상한 값을 반환한다. 자바 기본서를 보던 옛날로 돌아가보자. 우리는 첫장에서 primitive type들에 대해서 공부를 했을 것이다. 그리고 각각의 type은 고유의 bit 크기를 가지고 있다. double같은 경우에는 32bit이고 이는 4.94065645841246544E-324 ~ 1..