본문 바로가기

Java9

equals() & hashCode() - hashCode() 목적은 객체들을 식별하기 위한 값. 단 서로 다른 객체라도 동일한 hashCode()를 가질 수 있다(HashCode Collisions) Java애플리케이션을 실행하는 동안 동일한 개체에 대해 호출될 때마다 해시 코드 메서드는 개체에 대한 동등한 비교(equals)에 사용되는 정보가 수정되지 않는 한 동일한 정수를 일관되게 반환해야 한다. Default는 Object 클래스의 구현체로써 객체의 내부 메모리 주소를 숫자로 변환한 값을 기반으로 한다) - equals() 객체의 동등성을 비교하는데 사용. - equals() 와 hashCode()의 관계 만약 두 객체가 equals()를 통한 동등한 객체인 경우, hashCode() 함수 호출 결과는 반드시 동일한 정수를 반환해야한다.. 2020. 3. 24.
Java Synchronized vs ReentrantLock Synchronized import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MultiThreadTest { private static Logger logger = LoggerFactory.getLogger(MultiThreadTest.class); public static void main(String[] args) { Target target = new Target(); new Thread(() -> target.criticalSection()).start(); new Thread(() -> target.criticalSection()).start(); Target2 target2 = new Target2(); new Thread.. 2020. 3. 18.
SpringBoot에 Let's Encrypt 적용 Spring Boot에 Let's Encrypt 적용하기 ##Let's Encrypt? https://letsencrypt.org/ 사이트에 HTTPS를 적용하기 위해서는 Certificate Authority에서 발급한 인증서가 필요하다. 일반적으로는 CA에서 돈을 지불하고 인증서글 구입해야 하지만, HTTPS를 보급화 하기 위한 몇몇 조직들의 후원으로 무료 CA인 Let's Encrypt가 탄생했다. 아쉬운 점은 인증서의 기간이 최대 90일로 비교적 짧은 편이다. 하지만 Certbot을 이용해 자동 갱신이 가능하다. 설치하기 https://letsencrypt.org/getting-started/ 인증서를 설치하기 위해서 크게 두 가지 방법이 있는데, 첫번째는 shell을 이용, 이용하지 않는 방법이.. 2020. 2. 23.
완전히 실행 가능한 Spring Boot 배포 Spring Boot를 $ java -jar 명령어를 이용해 실행할 수도 있지만 spring boot 1.3.0 버전에서 추가된 기능을 이용해 별도 스크립트 없이 리눅스 환경에서 서비스로 등록해서 실행, 관리할 수 있다. 스프링 레퍼런스에서는 이런 형태를 완전히 실행 가능한 jar (fully executable jar)로 표현하고 있다. 실행 가능한 jar를 만들기 위해서는 maven에 아래 plugin을 추가해야 한다. org.springframework.boot spring-boot-maven-plugin true 그리고 프로젝트를 빌드해서 생성되는 아티팩트를 그냥 스크립트처럼 아래와 같이 실행하면 된다. $ ./my-application.jar 이는 위에 추가한 플러그인으로 인해 생성되는 실행 스.. 2018. 2. 6.