클래스를 사용할 때 패키지 이름을 생략할 수 있다.컴파일러에게 클래스가 속한 패키지를 알려준다.이름이 같은 클래스가 속한 두 패키지를 import 할 때는 클래스 앞에 패키지명을 붙여줘야 한다해당 코드에서 Date() 클래스가 sql 패키지인지 util 패키지인지 알
public class sort{}추가compare return값이 양수이면 두 자리를 변경하며 0,-1은 그대로 하여 오름차순으로 정렬된다.

스트림(Stream) > - 스트림(Stream) API은 람다식(Lambda Expression)를 이용한 기술 중에 하나로 데이터 소스(컬렉션, 배열, 난수, 파일 등…)를 조작 및 가공, 변환하여 원하는 값으로 반환해주는 인터페이스를 의미합니다. 해당 기능을 사용

stack에 값이 그대로 저장빠르게 값에 접근 가능stack에 값이 그대로 저장되어 있지 않다.stack에는 heap의 어딘가를 가리키는 주소가 저장stack을 갔다가 heap을 가서 값을 찾아와야하므로 데이터 접근 속도가 느리다.참조 타입은 보통 원시 타입에 비해 기

JVM(Java Vitual Machine)기능으로 자바는 OS에 독립적인 특징을 가진다.자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드바이트 코드의 각 명렁어는 1바이트 크기의 Opcode와 추가 피연산자로 이

먼저 들어간 자료가 나중에 나옴 LIFO(Last In First Out) 후입선출 구조시스템 해킹에서 버퍼오버플로우 취약점을 이용한 공격을 할 때 스택 메모리의 영역에서 함 인터럽트처리, 수식의 계산, 서브루틴의 복귀 번지 저장 등에 쓰임그래프의 깊이 우선 탐색(DF
리터럴을 이용한 방식string constant pool이라는 영역에 존재String을 리터럴로 선언할 경우 내부적으로 String의 intern() 메서드가 호출되게 되고 intern() 메서드는 주어진 문자열이 string constant pool에 존재하는지 검색
@NoArgsConstructor : 매개 변수가 없는 기본 생성자를 생성@RequiredArgsConstructor : final이나 @NonNull으로 선언된 필드만을 파라미터로 받는 생성자를 생성@AllArgsConstructor : 모든 필드를 포함한 생성자를
구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API컴파일 시간이 아닌 실행 시간(런타임 시점)에 동적으로 특정 클래스의 정보를 추출할 수 있는 프로그래밍 기법ClassObject.getClass().clas
- 프로세스와 스레드 개념 프로세스 > - 운영체제로부터 자원을 할당받는 작업의 단위 > - 디스크로부터 메모리에 적재되어 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받음 > - 함수의 매개변수, 복귀 주소, 로컬 변수와 같은 임시 자료를 저장하는 프로세스 스
volatile은 Java 변수를 Main Memory에 저장하겠다는 것을 명시하는 키워드이다. 즉, 매번 변수의 값을 Read할 때마다 CPU Cache가 아닌 Main Memory에서 읽고, Write할 때마다 Main Memory에 작성하는 것이다.현대의 컴퓨터는
instance = new Singleton()은 실제로 3단계로 나뉩니다:JVM과 CPU는 성능 최적화를 위해 명령어 순서를 재정렬할 수 있습니다:volatile은 happens-before 관계를 보장합니다:Thread A가 instance에 쓰기 작업을 하면Thr
Lazy Holder 패턴은 static 내부 클래스를 이용해서 싱글톤 인스턴스를 지연 생성(Lazy Initialization)하는 방법입니다.실행 결과:실행 결과:왜 Thread-Safe 한가?JVM의 클래스 로더가 보장클래스 로딩은 JVM이 내부적으로 동기화함한
함수형 인터페이스는 단 하나의 추상 메서드만을 가지는 인터페이스입니다. Java 8부터 도입된 람다 표현식과 함께 사용되어 함수형 프로그래밍을 가능하게 합니다.정확히 하나의 추상 메서드만 포함@FunctionalInterface 어노테이션으로 명시 (선택사항이지만 권장
Profiler 소개(2. Profiler 시작하기(3. CPU Profiling(4. Memory Profiling(5. 실제 성능 개선 사례(6. Best Practices(IntelliJ IDEA의 Profiler는 애플리케이션의 성능 병목 지점을 찾아내는 강력한
얕은 복사는 배열의 참조만 복사하는 방식입니다. 원본 배열과 복사된 배열이 같은 메모리 주소를 가리키게 됩니다.특징:원본과 복사본이 같은 메모리 주소를 참조한쪽을 수정하면 다른 쪽도 영향을 받음메모리를 추가로 사용하지 않음깊은 복사는 배열의 실제 데이터를 새로운 메모리
Memory-Mapped File은 파일의 내용을 프로세스의 가상 메모리 주소 공간에 매핑하는 기술입니다. 운영체제가 파일을 메모리처럼 다룰 수 있게 해주어, 디스크 I/O 작업을 메모리 접근처럼 처리할 수 있습니다.빠른 성능: 버퍼링 오버헤드가 줄어들고, 커널 영역과
Chronicle 시리즈는 OpenHFT(High Frequency Trading)에서 개발한 오픈소스 라이브러리로, 초저지연(ultra-low latency)이 필요한 금융권, 실시간 시스템에서 널리 사용됩니다.Off-Heap Memory 기반 Key-Value 저장
AOP(관점 지향 프로그래밍)는 프로그램의 핵심 비즈니스 로직과 부가 기능을 분리하여 모듈화하는 프로그래밍 기법입니다. 로깅, 트랜잭션 관리, 보안 등과 같이 여러 곳에서 반복적으로 사용되는 공통 관심사를 별도의 모듈로 분리하여 코드의 재사용성과 유지보수성을 높입니다.