Programming/Java5 [JAVA] Math.random()보다 안전한 SecureRandom Ⅰ SecureRandom 개요 SecureRandom은 자바에서 암호학적으로 안전한 난수(CSPRNG)를 생성하기 위해 제공되는 클래스이다. 기존의 Random이나 Math.random()처럼 단순한 LCG 기반 난수를 사용하지 않고, 운영체제의 엔트로피 소스를 활용해 사실상 예측이 불가능한 난수를 만들어낸다. SecureRandom은 내부적으로 OS가 제공하는 non-blocking 엔트로피 소스(/dev/urandom 등)를 활용하며, 시드(seed)는 시스템 이벤트·마우스 이동·네트워크 시점·CPU 노이즈·하드웨어 난수 생성기(HWRNG) 등에서 가져온다. 이 엔트로피는 예측이 어려워 공격자가 난수 패턴을 추정하기 어려운 구조이다. 이러한 특징 때문에 SecureRandom은 주로 인증번호, 토.. 2025. 11. 24. [JAVA] 제네릭 (Generic) Ⅰ 제네릭(Generic) 개요제네릭이란?다양한 타입을 처리할 수 있도록 타입 매개변수를 사용하는 기능컴파일 타임에 타입을 체크하여 타입 안정성을 높이고, 형 변환을 줄임코드의 재사용성을 높이고, 유지보수를 쉽게 할 수 있음클래스, 인터페이스, 메서드에서 사용 가능제네릭 사용법제네릭에는 네이밍 규칙이 강제되지 않지만, 알파벳 대문자 한 글자를 사용하는 것이 관례물론 아래의 예제 이외의 알파벳이나 단어를 사용할 수도 있음 타입 파라미터 의미 예제 T (Type)일반적인 타입을 표현class Box {}E (Element)컬렉션에서 요소를 표현interface List {}K (Key)Key-Value 구조의 Key를 표현MapV (Value)Key-Value 구조의 Value를 표현MapN (Numbe.. 2025. 3. 14. [JAVA] static 키워드 Ⅰ static 이란?static 키워드를 사용하면 클래스 로딩 시점에 메모리에 할당되어, 객체를 생성하지 않아도 접근 가능즉, 인스턴스에 귀속되지 않고 클래스 레벨에서 관리되기 때문에 여러 객체가 공유할 수 있음일반 변수/메서드는 객체를 생성해야 사용 가능하지만, static 키워드가 붙으면 클래스 자체에서 직접 접근 가능따라서 static을 사용하면 객체 간 굥유해야하는 데이터나 유틸리티 성격의 기능을 만들 때 유용함 Ⅱ static 변수 (클래스 변수)인스턴스 변수 vs 클래스 변수구분db">인스턴스 변수클래스 변수 (static)선언 위치db">클래스 내부, static 없음클래스 내부, static 있음메모리 할당 시점db">객체 생성 시클래스 로딩 시사용 방법db">객체를 생성한 후 사용클래스.. 2025. 3. 14. [JAVA] final 키워드 Ⅰ final 이란?final 키워드는 불변성을 보장하고, 실수를 방지하며, 코드의 안정성을 높이는 역할을 함final은 클래스, 변수, 메서드에 적용할 수 있으며, 각각의 의미는 다음과 같음 대상 사용 예시 효과 클래스final class MyClass {}상속 불가능변수final int number = 10;값 변경 불가능메서드final void myMethod() {}오버라이딩 불가능 Ⅱ final 클래스 final class Parent { void myMethod1() {} void myMethod2() {}}class ChildClass extends Parent {} -> 오류 : final 클래스는 상속 불가능final 클래스는 상속을 금지하므로, 핵심 로직이 변경되지.. 2025. 3. 10. [JAVA] 데이터 타입의 메모리 할당 Java 데이터 타입의 메모리 할당목차 ▲Ⅰ JAVA 메모리 영역Ⅰ JAVA 데이터 타입01. 기본 데이터 타입 (Primitive Types)02. 참조 데이터 타입 (Reference Types)03. 기본 데이터 타입과 참조 데이터 타입의 차이점Ⅲ JAVA 데이터 타입들의 메모리 할당 구조01. 기본 데이터 타입의 메모리 할당 구조02. 래퍼 클래스의 메모리 할당 구조03. 컬렉션 프레임워크의 메모리 할당 구조Ⅰ JAVA 메모리 영역 Method 영역클래스 메타데이터(클래스 정보, 메서드, static 변수 등)가 저장되는 공간프로그램 실행 중 JVM이 클래스를 로드할 때 정보를 저장모든 스레드가 공유하며, 프로그램 종료 시까지 유지Stack 영역메서드 호출 시 생성되는 스택 프레임과 메서드 내의 .. 2025. 1. 4. 이전 1 다음 728x90