전체 글 (159) 썸네일형 리스트형 1. 데이터 모델링 1. 데이터 정규화란 무엇이며, 왜 필요한가?데이터베이스의 중복을 최소화하고 데이터 무결성을 보장하기 위해 데이터를 구조화하는 과정 정규화 전(비정규형 데이터)학번학생명과목담당 교수1001김철수수학, 영어이교수, 박교수1002박영희과학김교수1003이민호수학, 국어, 역사이교수, 최교수, 정교수 1) 1NF : 모든 컬럼이 하나의 원자값을 가지도록 정리학번학생명과목담당 교수1001김철수수학이교수1001김철수영어박교수1002박영희과학김교수1003이민호수학이교수1003이민호국어최교수1003이민호역사정교수 2) 2NF : 부분 함수 종속 제거기본키의 일부에만 종속된컬럼을 분리3NF : 이행적 종속 제거기본키 이외의 컬럼이 다른 컬럼을 결정하지 않도록BCNF : 모든 결정자가 후보키여야 함4NF : 다치종속 제거.. 8.JAR JAR 파일 실행 명령어java -jar ossapp.jar JAR 실행과정1. JVM(Java Vitual Machine) 실행java -jar ossapp.jar 명령어를 입력하면, JVM이 실행됨2. JAR 파일 해석 & 압축 해제(Mainfest 파일 확인)JVM은 JAR 내부의 META-INF/MANIFEST.MF에서 Main-Class를 확인하고, 애플리케이션의 시작업을 찾는다.일반 JAR : Main-Class에 지정된 main() 메서드를 실행Spring Boot JAR : JarLauncher가 먼저 실행되고, Start-Class로 지정된 클래스를 찾아 실행3. 클래스 로드 & 클래스 로더 동작 JVM은 Main-Class의 main() 메서드를 실행하기 위해 ClassLoader를 사.. 1. @Async(비동기) Spring에서 비동기(Asynchronous) 처리를 지원하기 위해 사용된다. 내부적으로는 TaskExecutor를 활용하여 메서드를 별도의 스레드에서 실행된다. @Async 어노테이션 내부 동작1. 프록시(Proxy) 기반 동작Spring AOP를 이용하여 프록시 객체가 생성된다.@Async가 적용된 메서드를 호출 시 프록시 객체가 대신 실행하고, 실제 메서드는 별도의 스레드에서 실행된다.같은 클래스 내에서 this.asyncMethod()로 직접 호출하면 프록시를 거치지 않아 비동기로 실행되지 않는다.2. TaskExecutor를 활용한 비동기 실행@Async는 TaskExecutor(스레드 풀)을 이용하여 실행된다.SimpleAsyncTaskExecutor를 사용하지만, @EnableAsync와 .. 7. 동기,비동기, 블로킹, 논블록킹 1. 기본 개념개념정의예시동기(Synchronous)작업 요청 후 결과를 받을 때까지 기다림전화 통화비동기(Asynchronous)요청 후 결과를 기다리지 않고, 완료되면 알림(콜백, Future,...)문자 메세지블로킹(Blocking)요청한 작업이 끝날 때까지 현재 실행중인 작업이 멈춤엘레베이터에서 기다리는 것논블로킹(Non-blocking)요청한 작업이 끝나지 않아도 다른 작업을 계속 수행 가능식당에서 주문 후 다른 일을 하는 것2. 동기(Synchronous) vs 비동기(Asynchronous)동기(Synchronous)작업을 요청한 후 응답을 받을 때까지 기다려야함요청한 작업이 끝나야 다음 작업을 수행 가능 1) 예제(동기 방식) - Javapublic class SyncExample { .. 6. Garbage Collection(GC) Heap 메모리에서 더 이상 사용되지 않는 객체를 자동으로 제거하는 프로세스.어플리케이션의 메모리 관리를 자동화하여 메모리 누수를 방지하고 메모리 사용을 최적화 하는 중요한 역할.Java 힙 메모리 구조(Heap Memory)Java에서는 Heap 메모리를 관리하며, 이 메모리는 객체를 생성하는 데 사용되는 런타임 메모리 공간이다. Heap 메모리는 크게 Young Generation과 Old Generation으로 나뉜다. 각 영역은 객체 생성, 소멸 및 승격을 관리하는 방식이 다르다.Young Generaion(젊은 세대)객체가 처음 생성될 때 대부분 Yound Generation에 할당됨Eden 영역에 객체가 할당되고, Eden이 꽉 차면 Minor GC가 발생하여 살아남은 객체는 Survivor .. 4. Java Annotation 1. Java Annotation이란? 자바에서 어노테이션(Annotation)은 코드에 메타데이터를 추가하는 방법입니다. 어노테이션은 코드 자체를 변경하지 않지만, 코드에 대한 추가적인 정보를 제공하거나 특정 처리를 할 수 있게 도와줍니다. 주로 컴파일러나 런타임에서 이 정보를 활용하여 특정 작업을 자동으로 처리하거나, 개발자가 의도한 동작을 명확히 할 수 있도록 합니다. 어노테이션의 예를 들면:@Override메서드가 부모 클래스의 메서드를 오버라이드하고 있다는 것을 컴파일러에 알려주는 역할을 합니다. 오타나 실수로 메서드 시그니처가 일치하지 않는 경우 컴파일러가 경고를 줍니다.@EntityJPA에서 데이터베이스 테이블과 매핑되는 클래스를 표시할 때 사용합니다.해당 클래스가 엔티티로서 데이터베이스의 .. 3. Java Collection Framework(JCF) Java에서 Collection이란 데이터의 집합, 그룹을 의미하며 데이터 자료구조인 컬랙션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다. 왜 Collection을 사용하는 것일까?- 다수의 Data를 다루는데 표준화된 클래스를 제공해준다. 그래서 DataStructure(자료구조)를 직접 구현하지 않고 편하게 사용할 수 있다.- 배열과 다르게 객체를 보관하기 위한 공간을 미리 정하지 않아도 되므로, 객체의 수를 동적으로 정할 수 있다. 1. ListList 인터페이스를 직접 @Override(오버라이드)를 통해 재정의할 수도 있다.대표적인 구현체는 ArrayList, LinkedList가 있다.※ 순서가 있는 데이터 집합으로 데이터의 중복을 허용 ArrayList각 데이터에 대한 인덱스(.. 2. Java 멀티쓰레드 환경(volatile, synchronized, atomic) 멀티쓰레드 환경에서 자주 언급되는 가시성, 원자성, 동기화에 대해서 먼저 이해하고 넘어가야합니다.개념원자성(Atomicity)가시성(Visibility)동기화(Synchronization)목적중간에 끊기지 않고 완전한 실행 보장변수 값이 다른 쓰레드에서 즉시 보이게 보장여러 쓰레드에서 동시 접근 제어보장연산이 중간에 끊어지지 않음다른 쓰레드가 즉시 값을 반영원자성, 가시성 보장예시AtomicInteger.incrementAndGet()volatile 변수synchronized 키워드 사용성능매우 효율적(CAS방식)성능 저하 없음성능 저하, 잠금 획득 대기 가능 CAS(Compare And Swap)방식CPU나 메모리에 저장된 현재 값과 기존 값을 비교한 후, 만약 값이 일치하면 새로운 값을 메모리에 반영.. 이전 1 2 3 4 5 ··· 20 다음