본문 바로가기
728x90

전체 글110

[Java] 0.1 + 0.2 = 0.3이 아니다! @Test public void doubleTest() { Double a = 0.1; Double b = 0.2; Double c = 0.3; Assert.assertEquals(a + b, c, 0.0); } java.lang.AssertionError: Expected : 0.3 Actual : 0.30000000000000004 Double Type인 a 변수값은 0.1, b 변수값은 0.2를 대입하고 a + b를 더했다. 0.1 + 0.2 = 0.3은 당연한 결과이다. 하지만 프로그래밍에서는 당연하지 않는 결과가 나오게 된다. 0.3의 결과를 원하지만 실제로는 0.30000000000000004의 값이 나왔기 때문이다. 어떻게 된걸까? 간단하게 설명부터 하자면 0.1을 이진법으로 변환하게 되면 .. 2022. 11. 11.
[Spring] Javers로 자바 객체 비교 쉽게 하자! Javers는 자바 객체 비교 라이브러리이며 비교할 두 객체 변수들의 Diff 정보를 간단하게 얻을 수 있다. Javers는 많은 기능들을 지원하는 것 같다 RDB Repository의 Entity의 변경사항을 인지할 수도 있고 직접 두 객체를 compare 함수를 이용하여 비교 정도를 획득할 수도 있다. 이번 포스팅은 Javers의 Compare 함수를 이용하여 두 객체 비교 하는 방법에 대해 기록해보도록 하자. Javers Document 참고 Gradle Dependancies implementation group: 'org.javers', name: 'javers-core', version: '6.7.0' Data Class public class Person { private String nam.. 2022. 11. 11.
[Java] 클래스로더(Class loader) 자바 애플리케이션 실행 과정 컴파일러를 통하여 자바 소스파일인. java를 바이트코드(.class) 파일로 변환한다. 클래스 로더가 요청에 의한 바이트코드(.class)를 JVM 메모리에 로드한다. 실행 엔진이 JVM 메모리에 실행하고자 하는 바이트코드가(.class)를 실행하며 만약 바이트코드(.class)가 없으면 클래스 로더에게 요청하여 바이트코드(.class)를 로드한다. 클래스 로드 과정 첫번째. 로딩 과정 바이트코드(.class) 파일을 메모리에 로드하는 것으로 클래스 로드의 가장 주요한 작업이다. 사용시점(필요 시점)에 의해 바이트코드를 JVM 메모리에 로드한다. 두 번째. 링킹 과정 로드된 클래스나 인터페이스 등을 검증하고 준비하고 해석하는 과정을 거치는 단계이다. 검증 단계 : 바이트코드.. 2022. 11. 10.
[Spring] Amazon MQ (Active MQ) : Virtual Destinations 기능 Active MQ Queue 메시지 전달 방식에 대한 새로운 요구조건이 발생되어 조건을 충족시키기 위해 Active MQ의 Virtual Destinations 기능을 사용해서 해결한 내용을 기록하고자 한다. Message 방식을 Queue로 되어 있었고 Round Robin 방식으로 Consumer가 한 번씩 돌아가며 Message를 받아 처리하고 있는 구조였다. (Active MQ Consumer 운영 포스팅을 참고) Producer와 Consumer는 서버가 분리되어 있지만 같은 제품 서비스이기도 했고 Producer에서 보내는 Message는 같은 제품 서비스의 Consumer 서버만 수신받도록 되어 있었다. Message 수신에 대한 요구 조건 위의 이미지와 같이 A 제품 서비스의 Consume.. 2022. 11. 10.
300x250