728x90 반응형 java148 Timing Attack 방지를 위한 Constant-Time 비교 암호학에서 사용하는 constant-time 연산(타이밍 공격 방지용)에 대하여 알려드리고자 작성하였습니다. 특정 key 인식을 통한 인증 시스템을 구현하는 경우, 보통 언어의 equals 기능을 사용하여 적합한 key인지 판별하게 됩니다. 그러나, 해당 방식으로 사용하게 된다면 문제가 될 수 있다.어떻게 구현되어 있는데?언어별 equals에는 문자열 비교는 1byte씩 비교하다가 다른 글자가 나오면 false를 반환합니다.예시 java 내부 코드public boolean equals(Object anObject) { if (this == anObject) { return true; } return (anObject instanceof String aString) .. 2026. 5. 25. How Netflix Uses Java 2026 Edition 리뷰 2025년에 Java 컨퍼런스에서 Netflix는 Java를 어떻게 사용하였고, 이런게 Netflix에서 어떤 영향을 끼쳤는지에 대하여 이야기해준적이 있습니다. 간단하게 이야기하면 다음과 같은 내용이 인상깊었습니다.Java의 버전을 8에서 17로 올리면서 CPU 사용량이 약 20% 감소했다.Java8의 GC와 Java17의 GC가 차이가 있음으로 인해서 성능이 좋아졌다는 이야기를 했었습니다.G1 GC에서 ZGC로 바꾸면서 STW의 시간이 대폭 줄었고, 이로 인하여 서비스 통신 시간이 감소되어 오류율이 많이 감소되었다.ZGC는 G1 GC에 비하여 많은 메모리를 소모하는 대신 STW의 시간이 대폭 줄어들어 시간적으로는 효과가 있어서 발생한 현상입니다.Spring boot WebFlux를 사용하지 않는다.Ja.. 2026. 5. 15. PriorityQueue vs Collections.sort: 왜 sort가 더 효율적일까? 이전에 어떤 분이 이야기를 해줬던 내용에 대하여 정리하고자 한다.질문 내용import java.util.*;class Main { // SORT 방식 static List solveArr(Map> map) { List arr = new ArrayList(); for (String key : map.keySet()) { arr.add(new Node(key, map.get(key).size())); } Collections.sort(arr); List result = new ArrayList(); for (Node n : arr) { result.add(n.key); }.. 2026. 4. 27. Rust Vec의 growth strategy (feat. Java) 오늘은 Rust의 Vec가 가지는 growth strategy에 대하여 알아보겠습니다.growth strategy 이란?초기 용량인 capactiy을 오버한 경우, 증가시키는 방법입니다.capacity이란?현재 컬렉션이 가지고 있는 size가 아닌, 미리 확보한 용량을 의미합니다. 언어별 및 자료구조별로 growth strategy를 하는 방식이 다양합니다. Java의 ArrayList는 1.5배입니다. 예를 들어import java.lang.reflect.Field;import java.util.ArrayList;public class Main { public static void main(String[] args) throws Exception { ArrayList list = ne.. 2026. 3. 26. 이전 1 2 3 4 ··· 37 다음 728x90 반응형