Developer 썸네일형 리스트형 Throwable.printStackTrace(...) should not be called catch 문에서 별생각 없이 e.printStackTrace를 사용했더니 스택 로그에 기본 스트림을 출력할 때 문제가 발생한다고 경고받았습니다. 빠르게 log.error로 변경했습니다. ㅠㅠ 더보기 DecimalFormat BigDecimal로 선언된 데이터에 시각화하기 위해 DecimalFormat을 사용했습니다. DecimalFormat("###,###,###,###");으로 서비스(@Service)에 생성하여 사용했는데 Non-thread-safe로 잡혀 아래처럼 모델(@Data)에서 선언하여 처리하도록 변경했습니다. BigDecimal : https://halfstorage.tistory.com/45?category=875846 더보기 [Oracle, MySQL, MSSQL] PROCEDURE 테스트를 위해 더미 데이터를 생성할 일이 생겼습니다. 프러시저를 통해 데이터를 주입했는데, 고객사별로 DB가 다르다 보니 정리할 필요성을 느꼈습니다. 테이블은 임시로 USER테이블을 만들었습니다. # MySQL 프러시저 DELIMITER $$ CREATE OR REPLACE PROCEDURE PROC_INSERT_USER ( IN grpId INT(11), IN startCnt INT(20), IN cnt INT(20) ) BEGIN DECLARE i INT DEFAULT startCnt; WHILE i 더보기 [MySQL] int(11), ZEROFILL MySQL에서 int로 컬럼을 만들면 기본값으로 int(11)로 생성됩니다. int가 표현할 수 있는 자릿수가 10자리이기 때문에 int(10)으로 생성될 거라고 생각했었는데, 왜 int(11)로 생기는지 궁금증이 생겨 찾아보니 정렬을 위한 여유공간 쯤으로 해석할 수 있었습니다. (정확한 이유는 아직 찾는 중입니다...) 그리고 나머지 크기 int(1)~int(10) 또한 자릿수를 나타내기 위함을 확인할 수 있었습니다. 위에 생성한 테이블에 아래와 같이 데이터를 넣어 확인했습니다. 양수일 경우는 int(11)도 int(10)과 마찬가지로 10자리까지 밖에 적재되지 않습니다. 하지만, int(1)로 선언해도 10자리수를 사용할 수 있기 때문에, 다른 이유를 찾아보니 ZEROFILL을 사용하기 위함이였습니다.. 더보기 SimpleDateFormat 사용법 및 UTC 관련 기존에 년-월-일까지 받아서 포맷을 변경했었는데, 추가로 시:분:초까지 처리하게 되어 신규 포맷으로 생성했습니다. 그런데 전달받은 시간이 UTC가 추가되어 있어 simpleDateFormat으로 포맷했을 때는 아래와 같이 정상적으로 변경되지만 fullDateFormat으로 포맷했을 때는 null이 반환되었습니다. UTC 타임을 제거하도록 함수를 만들어 제거해서 사용했습니다. 이러한 현상의 원인은 보시는 바와 같이 simpleDateFormat에서는 시간을 별도로 처리하지 않기 때문에 Date형식으로 출력한 것을 보면 00:00:00으로 지정되어 있어 변환이 되지만 fullDateFormat으로 포맷하려고 할 경우 시간 형태를 SimpleDateFormat이 인식하지 못하여 발생한 문제였습니다. 그냥 Lo.. 더보기 BigDecimal 매출, 회계 등 금액적인 부분에 대한 개발을 하다 보면 BigDecimal을 사용하게 됩니다 JAVA에서 숫자를 가장 정밀하게 저장하고 표현할 수 있는 장점을 가지고 있습니다 저는 보통 소수점보다는 금액을 처리할 때 주로 사용합니다 다만, 속도가 느리다는 단점과 처음 사용할 때 사용법이 기본 자료형들과는 상이한 부분이 어색하게 느껴졌습니다 초기화 BigDecimal은 아래와 같이 초기화하여 사용할 수 있습니다 다만 BigDecimal은 실수를 표현할 때 문자열로 초기화하지 않으면 아래와 같이 경고를 발견할 수 있습니다 그래서 valueTest를 선언한 것과 같이 valueOf나 ""와 같이 문자열로 초기화해야 합니다. 연산 BigDecimal은 객체이기 때문에 주소값을 비교하는 연산자인 ==을 사용하면 .. 더보기 CBV(Call By Value), CBR(Call By Reference) - CBV(Call By Value)는 기본 자료형과 같이 대상에 주소값을 가지지 않고 값을 할당받아 사용됩니다. * 기본자료형 정수형: byte(1), short(2), int(4), long(8) 실수형: float(4), double(8) 문자형: char(2) 논리형: boolean(1) - CBR(Call By Reference)는 대상을 선언할 때 주소값이 부여되어 ==으로는 주소값이 달라 비교 연산을 할 수 없지만 equals와 같이 해당 주소에 있는 값에 대한 비교연산은 가능합니다. * Class, Object ==: 주소값을 비교 equals: 해당 주소의 값을 비교 기본 자료형은 stack메모리에 실제 값을 저장하기 때문에 == 비교 연산을 할 수 있습니다. 참조 자료형은 stack에 .. 더보기 [JUnit 5] @TestMethodOrder 테스트 순서를 정할 수 있는 @TestMethodOrder 어노테이션입니다. 아래와 같이 @Order(n)를 사용해서 먼저 실행될 메소드를 지정할 수 있습니다. 더보기 이전 1 ··· 3 4 5 6 7 8 9 다음