본문 바로가기
728x90

TIL16

[Java] BigDecimal을 이용한 정확한 소수 계산 개요개발을 하다 보면 소수 계산이 필요한 경우가 자주 있다. 처음에는 double이나 float 같은 기본 자료형을 사용했었는데, 이러한 자료형은 금액대가 커질수록 오차가 나는 것을 체감할 수 있다. 가격 계산이나 금액과 관련된 도메인을 다룰 때, 이러한 오차는 치명적일 수 있으므로 자바에서 제공하는 BigDecimal이라는 클래스를 사용하고 있는데 이 클래스가 기존에 사용하던 클래스와 어떤 부분이 다른지 정리하고자 한다.  BigDecimal의 필요성 자바의 double과 float는 부동소수점 연산을 사용해 실수를 처리한다. 이는 빠른 계산을 가능하게 하지만, 미세한 소수점 이하 자리에서 오차가 발생할 수 있다. 특히 금융 관련 애플리케이션에서는 이런 작은 오차도 큰 문제가 될 수 있다. 따라서 정확.. 2024. 9. 22.
자바 객체의 equals()와 hashCode() 오버라이드 시 주의할 점 개요개발을 하다 보면 객체를 비교하는 상황이 자주 발생한다. 최근 프로젝트에서 HashSet을 사용해 중복을 제거하는 기능을 구현하면서, equals()와 hashCode()의 오버라이드가 제대로 이루어지지 않아 의도치 않은 결과를 경험했다. 이 문제를 해결하면서 객체 비교와 해시 테이블 기반 컬렉션(HashSet, HashMap 등)의 동작 원리를 이해하는 것이 중요하다는 것을 깨달았다. 이번 글에서는 자바에서 객체의 equals()와 hashCode()를 올바르게 오버라이드하는 방법과 그 과정에서 주의할 점을 중점적으로 설명하려 한다.  객체 비교에서 equals()와 hashCode()의 역할 자바에서 객체를 비교할 때 가장 기본적인 메서드가 equals()와 hashCode()다. equals().. 2024. 9. 22.
[Java] 향상된 try catch문: try-with-resources 개요최근 차세대 프로젝트에서 파일 입출력을 자주 다루게 되면서 자원 관리를 어떻게 최적화할지 고민하게 되었다. 기존의 try-catch-finally 구조를 사용해 자원을 닫는 코드를 작성했지만, 코드가 복잡해지고 실수할 가능성도 많았다. 코드 리뷰를 통해 자바 7에서 도입된 try-with-resources 문법을 알게 되었고, 자원 관리가 훨씬 간편해졌다. 이 글에서는 try-with-resources의 동작 방식과 이점에 대해 알아보고, 예제를 통해 쉽게 설명하려고 한다. 자바의 자원관리자바에서 파일, 데이터베이스 연결, 네트워크 소켓과 같은 자원은 프로세스가 사용한 후 반드시 명시적으로 해제해야 한다. 그렇지 않으면 메모리 누수와 같은 심각한 문제를 초래할 수 있다. 전통적으로는 try-catch.. 2024. 9. 21.
프로메테우스란? 개요 프로메테우스는 그리스 로마 신화에서 사람들에게 불을 가져다 준 신으로 알려져 있는데 사람들은 이 불을 통해 음식을 익혀먹고, 밤에 보지 못했던 것들을 볼 수 있게 되었다. 모니터링 툴 Prometheus는 불을 통해 무언가를 잘 관찰할 수 있게 해 준 신의 이름을 차용해 지어졌다고 한다. 사전적인 의미로 정의하면 프로메테우스는 SoundCloud에서 만든 오픈소스 시스템 모니터링 및 경고 툴킷으로 요약할 수 있다. 아래 그림은 프로메테우스 공식 홈페이지에 있는 특징들인데, 큰 특징들만 추려 정리하자면 아래와 같다. 메트릭을 수집하여 시계열 데이터 저장 수집한 데이터의 시각화 (with Grafana) PromQL을 통한 강력한 쿼리 AlertManager를 통한 쉽고 정확한 알림 다양한 클라이언트 .. 2023. 3. 1.