Engineering Log
Posts
장애 대응, 백엔드, 인프라, 네트워크, DB 기록을 정리합니다.
PKCS12(Java 8) 호환성 문제 SSL 인증서 갱신 회고
개요최근 사내에서 운영 중인 PTC Integrity Server 12.x(Java 8 사용)의 SSL 인증서 만료가 임박하여 인증서 갱신 작업을 진행하였다.작업 자체는 단순히 인증서를 교체하는 수준으로 예상했지만, 실제로는 여러 단계의 오류가 발생했고 최종적으로는 Java 8 기반 환경과 OpenSSL 3.x가 생성한 PKCS12 포맷 간의 호환성 문제를 확인하게 되었다.이 글은 인증서 갱신 과정에서 발생한 문제와 원인을 분석하고, 왜 최신 OpenSSL 환경에서 생성한 PKCS12가 Java 8 기반 애플리케이션에서 문제가 될 수 있는지 정리해보려고 한다.시스템 환경PTC Integrity ServerPTC Integrity Server 12.xTomcat EmbeddedJava 8 (JRE 1.8)..
Comparator와 Comparable
이전 포스트에서 질문이 있어, 새롭게 글을 작성하게 되었습니다. 우선, Comparable은 '비교할 수 있는 ~Class'라는 뜻이 될 것이고, Comparator는 '비교자'라는 뜻이 될 것 입니다.Time이라는 Class는 시간과 관련하여 역할을 갖고 있는 주체입니다.따라서 Time이 갖고 있는 비교 인터페이스는 Comparable이 더 어울리지 않나 생각이 듭니다.// 물론 이것과 다른 의견이 있으신 분들은 환영입니다!!! 우선 TreeSet을 통해 구현해보겠습니다. Comparator를 통한 비교import java.util.Comparator;import java.util.TreeSet;public class ComparableTime { private static class Time i..
자바의 정렬의 모든 것
자바를 사용하면서 구현할 때, 정렬이 많이 헷갈리고 한번 딱 짚고 넘어가야지 정확하게 자신의 머릿속에 들어올 수 있습니다. 여기서, 한 번에 정리할 수 있도록 해드리겠습니다. 대부분, 참조 객체의 정렬에 대해서 설명하겠습니다.참조 객체는 정렬의 기준없이 일반 원시타입이나 래퍼타입 처럼 정렬 .sort() private static class Time { int hour; int minutes; int seconds; Time (int hour, int minutes, int seconds) { this.hour = hour; this.minutes = minutes; this.seconds = seconds; }} 이렇게 있을 때. pub..
Arrays.copyOf가 왜 빠를까
Arrays.copyOf 메소드가 for문을 사용해서 직접 배열을 복사하는 것보다 빠른 이유는 내부적으로 시스템 수준의 최적화를 사용하기 때문입니다. Arrays.copyOf는 자바의 표준 라이브러리인 java.util.Arrays 클래스에 포함되어 있으며, 내부적으로는 시스템 호출인 System.arraycopy를 사용합니다. System.arraycopy는 네이티브 메소드로 구현되어 있으며, 이는 자바가 아닌 C나 C++ 같은 언어로 작성되어 JVM(Java Virtual Machine) 밖에서 직접 실행됩니다. 이러한 네이티브 메소드는 직접 메모리를 조작할 수 있으며, 운영 체제 레벨에서 최적화가 가능하기 때문에 순수 자바 코드인 for문을 사용하는 것보다 더 빠르게 동작할 수 있습니다. 또한, ..