전체 글161 Serialization Serialization 개념 직렬화 자바 시스템에서 사용하는 객체나 데이터를 외부의 자바 시스템에서 사용할 수 있도록 바이트 형태로 변환하는 기술 각자의 PC의 운영체제에서는 다른 가상 메모리 주소를 사용하기 때문에 참조 타입의 인스턴스는 전달할 수 없다. 이러한 문제를 해결하기 위해 주소값을 바이트 형태로 변환하여 데이터를 전달할 필요가 존재 직렬화된 데이터는 원시 타입으로 변환되고 파일 저장이나 전송할 때 유의미한 데이터가 된다. 이 과정을 직렬화이다. 역직렬화 직렬화를 통해 변환된 바이트 데이터를 다시 자바 객체나 데이터 형태로 변환하는 기법 직렬화 조건 구현 방식 java.io.serializable 인터페이스를 구현으로 직렬화, 역직렬화가 가능 대상 인터페이스를 구현한 구현체, 원시 타입 데이.. 2023. 5. 9. Object Class Object Class 개념 Object Class Java의 최상위 클래스 Object Class의 메서드를 오버라이딩하여 사용 가능 주요 메서드 toString() 객체의 해시코드를 출력 클래스풀네임@해시코드 형태의 문자열을 출력 오버라이딩하여 객체 정보를 문자열로 표현할 때 주로 사용 equals() 기본적으로는 == 연산 결과를 반환(동일성을 비교) 오버라이딩하여 다른 주소값을 가지는 객체의 동등성을 비교(객체 내용을 비교) hashCode() JVM이 인스턴스를 생성할 때 메모리 주소를 변환하여 부여한 코드 실제 메모리 값과는 별개 오버라이딩하여 주소값은 다르지만 객체 내용이 동등한 경우 동일성을 가지도록 하기 위해 사용 HashSet이나 HashMap의 경우에는 객체를 저장하기 위해 hashC.. 2023. 5. 8. Dirty Checking Dirty Checking 개념 Dirty checking 트랜잭션 내에서 Entity에 변경 사항이 일어났을 때 자동으로 DB에 반영 작동 원리 JPA dirty checking JPA에서는 트랜잭션 내에서 Entity에 변경 사항이 일어났을 때 자동으로 update 쿼리를 날려 반영 동작 방식 JPA에서 트랜잭션이 실행 Entity를 조회 조회된 Entity의 스냅샷 저장 Entity의 데이터 변경 트랜잭션 커밋 후 스냅샷과 현재 Entity를 비교 변경 사항을 update 쿼리로 구성 및 실행 특징 실행 대상 dirty checking 검사 대상은 영속성 컨텍스트에 저장된 Entity 준영속, 비영속 Entity는 DB에 반영되지 않는다. @DynamicUpdate dirty checking은 변경.. 2023. 5. 7. Race Condition Race Condition 개념 경쟁 상태 공유 자원에 대하여 여러 프로세스가 접근하려고 하여 결괏값에 영향을 줄 수 있는 상황 Race Condition 사례 커널 작업 도중 인터럽트 발생 발생 상황 커널 모드에서 데이터를 로드하여 작업하다 인터럽트가 발생하여 해당 데이터를 조작하는 경우 해결 방법 커널 모드에서 작업하는 상태에서는 인터럽트를 disabled시켜서 CPU 제어권을 막는다. System call을 통하여 커널 모드에서 context switching 발생 발생 상황 프로세스가 system call을 통해 커널 모드에서 작업하다가 context switching이 발생하여 다른 프로세스가 CPU 제어권을 가져가서 공유 자원에 접근하는 경우 해결 방법 프로세스가 커널모드에서 작업하는 경우 시.. 2023. 5. 6. 이전 1 2 3 4 5 6 7 ··· 41 다음