목록Java (7)
변수의 기록
자바 제네릭(Generic)의 구조적 이해 – 타입, 힙/스택, 참조형까지 완전 정리1. 제네릭이란?제네릭(Generic) 은 자바에서 컴파일 시점에 타입을 명시적으로 지정할 수 있게 하는 문법이다.타입 안정성을 높이고 형변환을 줄이기 위해 도입되었으며, 대표적으로 List, Map, Box 등의 형태로 사용된다.예시:List list = new ArrayList();list.add("abc");String value = list.get(0); // 형변환 없이 사용 가능2. 자바 제네릭의 핵심 특징 – 타입 소거(Type Erasure)자바의 제네릭은 타입 소거(Type Erasure) 방식으로 동작한다.즉, 제네릭 타입 정보는 컴파일 시에만 존재하고, 런타임에는 모두 제거된다.예:List list =..
불변 객체란 뭘까?프로그래밍 하다 보면 "이 객체 상태가 바뀌면 안 되는데..." 싶은 순간이 있죠.그럴 때 딱 맞는 개념이 바로 불변 객체(Immutable Object)입니다.불변 객체는 한 번 만들면 내부 상태가 절대 바뀌지 않는 객체를 말해요.객체의 내부 상태를 제공하는 메소드를 제공하지 않거나 방어적 복사(defensive-copy)를 통해 제공한다.쉽게 말해, 생성 이후에는 그냥 읽기 전용! (read-only) 왜 불변 객체가 좋을까?.1. 코드가 깔끔하고 안전함상태가 안 바뀌니까 예상 못 한 사이드 이펙트도 없고, 디버깅도 쉬워져요.특히 협업할 때 다른 사람이 뭘 건드릴까 걱정 안 해도 되는 게 제일 큼.2. 자료구조와 찰떡궁합Map, Set, Cache 같은 데서 많이 쓰이는데,값이 안 ..

Java에서는 데이터를 저장할 때 다양한 형태의 배열 구조를 사용할 수 있습니다.세 가지 대표적인 구조인 기본 배열(Array), 동적 배열(Dynamic Array), 연관 배열(Associative Array)의 개념과 내부 동작 원리를 설명하겠습니다.1. 배열 (Array)배열은 같은 타입의 데이터를 일정한 순서로 나열하여 저장하는 자료구조입니다. Java에서 배열은 다음과 같은 특성을 가집니다:📌 특징동일한 데이터 타입만 저장 가능→ 예: int[], String[] 등고정 크기→ 생성 시 크기를 지정하면 이후 변경 불가연속된 메모리 공간에 저장→ 메모리의 주소가 연속적으로 할당되어 있음인덱스를 통한 접근→ 0부터 시작하는 정수 인덱스를 사용하여 요소 접근 int[] nums = new int[..

회사 프로젝트에서 기존 이클립스 쓰다가 IntelliJ로 툴 변경함.환경 설정하면서 JSP 화면 반영이 안 되는 문제가 생김.🔍 문제 상황이클립스에선 JSP 수정하면 바로 반영됐음IntelliJ에선 서버는 잘 뜨는데 JSP 변경이 적용 안 됨심지어 jsp 파일이 호출은 되는데, 수정 내용이 안 보이는 상태였음처음엔 캐시 문제인가 싶어서 서버 재시작도 해보고, clean도 해봤지만 소용없었음🧩 원인Run > Edit Configurations... 들어가보니Environment 항목 아래 Working directory가 비어 있었음* 만약 Working directory 필드가 안보인다면 -> Modify options -> Working directory 체크 하면 필드 표시 됨.!!!!!!!..

유저 모드와 커널 모드, 그리고 인터럽트와 시스템 콜1. 유저 모드 vs 커널 모드모던 운영체제는 CPU의 실행 권한을 **유저 모드(User Mode)**와 **커널 모드(Kernel Mode)**로 나눔.이유는 운영체제와 시스템 자원을 보호하기 위함임.유저 모드애플리케이션(사용자 프로그램)이 실행되는 환경CPU는 제한된 명령어만 사용 가능직접 하드웨어 접근 불가 (예: 디스크, 메모리 제어, 네트워크 등)문제가 발생하더라도 시스템 전체에는 영향을 미치지 않음커널 모드운영체제의 핵심인 커널이 실행되는 환경CPU는 모든 명령어 실행 가능 (하드웨어 제어 포함)시스템 자원 관리 (메모리, CPU 스케줄링, 파일 시스템 등)모든 프로세스의 보호와 보안을 책임짐2. 모드 전환 (유저 모드 → 커널 모드)유저 ..

자바 스레드의 상태 – OS 프로세스와 어떻게 다를까?멀티스레드 프로그래밍을 하다 보면, Runnable, Blocked, Waiting 같은 자바 스레드 상태들이 헷갈릴 수 있습니다.운영체제(OS)의 프로세스 상태와도 비슷한 듯 다른 이 구조, 이번 글에서 명확하게 정리해보겠습니다.1. OS의 프로세스 상태 (Process States in OS)운영체제에서 프로세스는 기본적으로 다음과 같은 상태를 가집니다: 상태설명New프로세스가 막 생성됨 (아직 실행 준비 X)Ready실행 준비 완료, CPU 할당을 기다림RunningCPU에서 실행 중Waiting (Blocked)I/O 등 외부 자원을 기다리며 대기Terminated실행 완료 후 종료됨 특징:CPU 중심적인 상태 변화실행 준비 / 실행 중 / ..
2025년 4월 3일자바 자료구조 공부자료구조 기초 정리1. 배열 (Array)배열은 동일한 자료형의 데이터를 연속된 메모리 공간에 저장하는 선형 자료구조로, 인덱스를 기반으로 한 임의 접근(random access)이 가능하다. Java에서 배열은 선언 시 고정된 크기를 가지며, 이후 크기를 변경할 수 없다. 배열은 인덱스를 이용한 조회 연산에서 시간 복잡도 O(1)의 효율을 가지며, 삽입 또는 삭제 시 전체 데이터를 이동해야 하므로 O(n)의 시간 복잡도를 갖는다. ex) int[] arr = new int[5];arr[0] = 10; 배열은 메모리상 연속된 공간을 점유하므로 CPU 캐시 효율이 높고, 인덱스를 통한 접근이 매우 빠르다. 그러나 삽입과 삭제 연산이 잦은 경우에는 성능상의 단점이 존재한..