본문 바로가기
반응형

Language8

[I/O 이해하기] Stream vs Channel I/O스트림과 채널은 I/O 작업을 처리하는데 사용된다.I/O란 Input/Ouput의 약자로 입력값을 읽어들이는 작업과 출력값을 쓰는 작업을 말한다. I/O 작업은 대게 애플리케이션 내에서만 이뤄지는 작업이 아니다.대표적인 I/O 작업을 통해 어떻게 동작하는지 알아보자.클라이언트의 요청을 읽어들이는 서버(전송계층 -> 애플리케이션 계층)클라이언트가 서버로 요청을 보내게되면 요청 데이터가 전송계층에 패킷 형태로 존재한다.서버의 애플리케이션에서 시스템 콜을 실행하는 프로그래밍 명령어를 통해 이를 애플리케이션으로 가져온다.디스크에 저장된 파일 읽어들이는 경우 (하드웨어 -> 애플리케이션 서버)파일이 존재하는 디스크 경로에 접근하여 해당 데이터를 읽어들여 메모리에 적재함그다음 애플리케이션에서 시스템 콜을 수행.. 2024. 5. 5.
코틀린 querydsl, mapstruct 생성자에 따른 동작 방식 코틀린, 스프링, jpa, querydsl 환경에서 불변객체를 만드는 방법에 대해 알아보겠다. 자바 위주의 스프링, querydsl, mapstruct 개념이나 사용법을 그대로 받아들이려고 하면 코틀린에서 객체의 불변성이 깨지거나 디폴트값 선언으로 비즈니스 규칙을 깨트리는 생성자들이 생겨날 수 있다. 나의 경우도 그러하였는데 코틀린, 스프링, querydsl, mapstruct 환경에서 객체 불변성을 지키며 디폴트값을 제거하는 방법에 대해 공유하겠다. Querydsl을 통해 매핑받는 객체 디폴트 값 없애기 projection.bean, projection.fields projection.bean 방식은 자바 빈 객체 형태만 받을 수 있다. 허나 세터 메서드가 없어도 리플렉션을 통해 매핑이 가능하다고 한다.. 2024. 3. 16.
자바 예외의 종류와 처리방식 예외종류 자바에서 프로그램이 비정상적인 동작을 일으키는 경우 Error 또는 Exception이 발생하게 된다. Error와 Exception의 차이는 복구가능하냐 복구 불가능하냐로 구분할 수 있습니다. 문법, 타입체크와 같은 과정을 통해 발생하는 컴파일 타임에러와 OutOfMemoryError나 StackOverflowError와 같은 실행중에 발생할 수 있는 런타임 에러는 개발자가 복구할 수 있는 동작이 아니다. 그에 반면 IOException , SqlException, NullPoiterException과 같은 예외는 개발자가 예외를 catch하여 처리할 수 있다. Error와 Exception 모두 Throwable 클래스를 상속 받는다. Throwable 클래스는 message와 stackTr.. 2024. 2. 19.
컴파일 타임 의존성과 런타임 의존성 객체지향 프로그래밍에서는 객체간의 의존성이 빈번하게 발생한다. 의존이란 나(객체)의 변경이 나를 사용하는 다른 객체에 영향을 미치는 것을 말한다. 이러한 의존관계의 설정은 컴파일 타임에 결정되기도 하고 런타임에 결정되기도 한다. 컴파일 타임 의존성과 런타임 의존성은 말그대로 어느 시점에 의존성이 결정되느냐의 차이이다. 이 시점의 차이를 구분하기 어렵다면 일단은 아래와 같이 이해해보자. 컴파일 타임 의존성 : 컴파일러 관할 영역 -> 순수 프로그래밍 코드를 통해 의존관계 확인 가능 -> 의존성 변경시 코드 변경 필요 런타임 의존성 : 컴파일러 관할 영역 밖 -> xml, 어노테이션을 통해 의존관계 확인 가능 -> 의존성 변경시 코드 변경 필요X 컴파일 타임과 런타임 의존성의 구분 컴파일러는 자바 코드를 바.. 2024. 2. 11.
반응형