Java
-
Java - Math.random() 보안 취약점Java 2025. 6. 1. 11:01
Java에서 Math.random()은 간단한 의사 난수(pseudo-random number)를 생성하는 데 사용되지만, 보안적인 목적으로는 절대 사용하면 안 됩니다.Math.random()은 예측 가능한 알고리즘을 사용하며, 이는 공격자가 다음 난수를 예측하거나 역추적할 수 있게 하여 보안 취약점을 야기할 수 있습니다.보안적으로 안전한 난수 생성이 필요한 경우, Java에서는 java.security.SecureRandom 클래스를 사용해야 합니다. java.security.SecureRandom의 장점SecureRandom은 다음과 같은 이유로 보안적인 상황에 적합합니다:암호학적으로 안전한 의사 난수 생성기 (CSPRNG): SecureRandom은 Math.random()이나 java.util...
-
Java - URL 인코딩 디코딩 예제Java 2025. 5. 16. 17:53
웹 개발을 하다 보면 종종 URL에 한글이나 특수 문자를 포함해야 할 때가 있습니다.이 때 사용하는 것이 바로 URL 인코딩(encoding)입니다.Java에서는 java.net.URLEncoder와 java.net.URLDecoder 클래스를 사용하면 URL 인코딩과 디코딩을 간단하게 처리할 수 있습니다.URL 인코딩이란?URL에 포함할 수 없는 문자(예: 한글, 공백, 특수문자)를 %와 숫자 조합으로 바꾸는 작업입니다.예시:공백 → %20 (또는 +)한글 → %ED%95%9C%EA%B8%80: → %3A 기본 사용법import java.net.URLEncoder;import java.net.URLDecoder;import java.nio.charset.StandardCharsets;public cla..
-
Java - ArrayList addAll과 add의 차이점Java 2024. 11. 19. 23:16
자바의 ArrayList에서 addAll() 메소드와 add() 메소드의 차이점은 다음과 같습니다. 1. 추가하는 요소의 수add(): 한 번에 하나의 요소만 추가합니다.addAll(): 여러 요소를 한 번에 추가할 수 있습니다. 2. 매개변수 타입add(): 단일 요소를 매개변수로 받습니다.addAll(): Collection 타입의 객체를 매개변수로 받습니다. 3. 사용 목적add(): 리스트에 개별 요소를 추가할 때 사용합니다addAll(): 다른 컬렉션의 모든 요소를 현재 리스트에 추가할 때 사용합니다 4. 리턴값add(): 요소가 성공적으로 추가되면 true를 반환합니다.addAll(): 리스트가 변경되었으면 true를, 그렇지 않으면 false를 반환합니다. 5. 내부 동작add(): 단순히 ..
-
Java - 컬렉션 정렬 시 Null safeJava 2024. 6. 21. 23:23
자바8부터 도입된 Stream을 이용하면 Collection을 정렬할 수 있다. Comparator 클래스를 이용해서 쉽게 정렬이 가능하다. List list = Arrays.asList(Person.of(30), Person.of(35));List sortedList = list.stream() .sorted(Comparator.comparing(Person::getAge)) .collect(toList()); Comparator.comparing() 메서드에 람다식을 넘겨서 age를 기준으로 정렬이 가능하다. 그런데 이 때 Person의 age가 Null인 경우가 발생하면 정렬하는 중에 NPE가 발생한다. 이럴 경우 NullPointerException을 방지하기 위해서 Co..
-
Java - Set example code 사용법Java 2024. 4. 1. 22:56
자바에서 Set은 중복 요소를 포함할 수 없는 Collection입니다. Set의 종류로는 HashSet, LinkedHashSet, TreeSet 등이 있습니다. Set의 용도 Set은 중복을 허용하지 않는 데이터 집합을 관리할 때 사용합니다. 예를 들어, 고유한 값을 관리해야 할 때나 데이터의 존재 여부가 중요할 때 주로 사용합니다. Set의 주요 특징 1. 중복 요소 불허: Set은 각 요소의 유일성을 보장. 동일한 요소를 두 번 추가하려고 하면, 무시됨. 2. 순서 미보장: 요소들이 특정 순서로 저장되지 않음. 순서를 보장하지 않음. Set 코드 예제 import java.util.HashSet; import java.util.Set; public class Example { public stat..
-
Java - ArrayList 초기화Java 2024. 3. 26. 23:16
자바에서 ArrayList(List)를 초기화하는 방법을 소개합니다. 1. Arrays.asList()를 이용한 초기화 Arrays.asList() 를 사용하여 초기 값들로 ArrayList를 초기화할 수 있습니다. 고정된 크기의 리스트를 생성하므로, 나중에 element를 추가하거나 삭제할 수 없습니다. List list = Arrays.asList("Element1", "Element2", "Element3"); 2. 익명 내부 클래스를 이용한 초기화 익명 내부 클래스를 사용하여 초기화 블록에서 ArrayList를 초기화할 수 있습니다. List list = new ArrayList() {{ add("Element1"); add("Element2"); add("Element3"); }}; 3. Str..
-
Java - int를 String으로 변환하기Java 2024. 3. 25. 23:07
Java에서 int(Integer)를 String 문자열로 바꾸는 방법입니다. 1. String.valueOf(int) int num = 123; String str = String.valueOf(num); System.out.println(str); // Outputs "123" 2. Integer.toString(int) int num = 123; String str = Integer.toString(num); System.out.println(str); // Outputs "123" 3. String.format(String, Object...) int num = 123; String str = String.format("%d", num); System.out.println(str); // Outp..
-
Java - LocalDateTime custom Serializer DeserializerJava 2023. 9. 19. 07:45
Spring에서 LocalDateTime을 사용하다보면 serialize, deserialize 할때 에러가 종종 발생한다. 그럴때 전체 config를 고치는 방법도 있지만 커스텀 serializer, deserializer를 만들어서 활용하는 방법이 있다. Serializer import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException; import java.time.LocalDateTime; import java.time.form..