목록개발 일지 (16)
csct3434
equals() 두 객체의 동등성을 비교하기 위해 오버라이딩하는 메서드 동등성 : 두 객체가 동등한 정보를 가지고 있는 지(equals) 동일성 : 두 객체가 동일한 객체인지 (==) Object 클래스의 equals()는 기본적으로 동일성을 비교하기 때문에, 객체의 동등성을 비교하려면 equals() 메서드를 재정의해야 함 hashCode() Object 클래스의 hashCode() 메서드는 네이티브 메서드로, 객체의 주소 값을 이용하여 생성한 해시 코드를 반환 주의할 점은, 객체의 주소 값을 이용하는 것이지 주소 값 자체가 해시 코드 값이 아니라는 점이다. equals() 메서드 오버라이딩 시 주의사항 Object 클래스의 hashCode() 메서드 주석을 보면, 빨간 글씨로 equals() 메서드를..
인트로 Offset 페이징과 No-Offset 페이징의 성능을 비교하기 위해 더미 데이터를 추가하던 중, 호기심이 생겨 다양한 방식으로 적재 속도를 비교해 보았습니다. 실행 환경 PC : Apple M2 Pro (저전력모드) Tool : IntelliJ Datagrip Docker : MySQL 8.0.31 더미 데이터 1,000만 건의 Article 레코드 외래키 제약조건 1개, Check 제약조건 2개가 존재 성능 측정 1. 개별 Insert from datetime import datetime #SQL 파일 생성 sql_file_path = 'individual_insert.sql' with open(sql_file_path, 'w') as sql_file: # 1부터 10000000까지의 데이터 ..
인생 처음으로 오픈소스 프로젝트에 기여를 했다! 🎉 주석에 있던 오타를 정정한 게 전부였지만, 오픈소스 기여 경험이 없었고 그 대상도 자바 개발자라면 한번쯤 들어본 AssertJ 라이브러리여서 몹시 두근거렸다 ❤️🔥 검토되는 데 오래 걸릴 줄 알았는데, 잠깐 사이에 AssertJ 레포지토리에 내 아이디가 떠있어서 정말 신기했다 😁 예전에 지나가다 본 블로그에서 대형 프로젝트에 이런 식으로 기여했다는 글을 보고 정말 부러웠는데, 나도 우연히 발견한 오타로 오픈소스 프로젝트에 기여해 볼 수 있어서 참 즐거웠다 :) 정말 사소한 기여였지만, 오픈소스 기여의 첫걸음을 떼었기에 나에게는 의미가 큰 경험이었다 👊
문제 상황테스트 코드를 작성하던 중, 실제 엔티티의 생성 시간과 DB에 저장된 값이 일치하지 않는 오류가 발생했습니다.로그를 확인해 보니, DB에 저장된 값은 22초인데 실제 생성 시간은 21.805265로 약 0.2초의 오차가 있었습니다.문제 원인JPA Auditing에서 LocalDateTime은 기본적으로 MySQL의 datetime과 매칭되는데, 이는 실제로 datetime(0)에 해당합니다.여기서 0은 반올림 자리수를 나타내는 값으로, 소수점 첫번째 자리에서의 반올림을 의미합니다.이로 인해, MySQL에 21.805265 값이 전달되어도 22.0으로 반올림 되어 오차가 발생하게 됩니다.해결 방법1. datetime 반올림 자릿수 변경datetime의 반올림 자리수를 변경하여 JPA Auditin..
문제 상황 AWS EC2 t2.micro 인스턴스 상에서 gradle로 프로젝트 빌드 시 인스턴스가 다운되는 문제 발생 configuring 혹은 initializing 단계의 0%에서 더 이상 진행되지 않음 "gradlew clean" 실행 시, 인스턴스가 다운되는 문제 발생 문제 원인 EC2 인스턴스의 메모리가 부족한 것이 원인 t2.micro (혹은 t3.micro)의 메모리 크기는 1GB AWS에서 제공하는 Ubuntu AMI에는 SWAP 메모리가 설정되어 있지 않음 문제 해결 해결 방법 SWAP 메모리 설정을 통한 메모리 추가 확보 SWAP 메모리 권장 크기 메모리가 2GB 이하인 경우, 메모리의 2배를 권장 t2.micro (혹은 t3.micro)의 경우 RAM이 1GB이므로, 스왑 메모리의 ..
스프링부트 프로젝트에 Certbot으로 Let's Encrypt에서 발급받은 SSL 인증서를 사용하여 HTTPS를 적용하는 방법이다. 서버 환경 : Ubuntu 22.041. Nginx 설치sudo apt-get updatesudo apt-get install nginx2. Nginx 리버스 프록시 설정sudo vi /etc/nginx/conf.d/default.confserver { listen 80; server_name {도메인이름.com}; # 도메인 주소 입력 location / { proxy_pass https://localhost:8080; # 스프링 서버의 포트번호가 8080이 아니면 맞춰서 수정 proxy_set_header X-Real-IP ..