본문 바로가기
반응형

Language/자바&코틀린15

[I/O 이해하기-2] Stream vs Channel [I/O 이해하기-1] 동기와 비동기 VS Blocking과 Non Blocking[I/O 이해하기-2] Stream vs Channel[I/O 이해하기-3] 톰캣의 요청 수신 방식I/O스트림과 채널은 I/O 작업을 처리하는데 사용된다.I/O란 Input/Ouput의 약자로 입력값을 읽어들이는 작업과 출력값을 쓰는 작업을 말한다. I/O 작업은 대게 애플리케이션 내에서만 이뤄지는 작업이 아니다.클라이언트의 요청을 읽어들이는 서버(전송계층 -> 응용 계층)클라이언트가 서버로 요청을 보내게되면 요청 데이터가 전송계층에 패킷 형태로 존재한다.서버의 애플리케이션에서 시스템 콜을 실행하는 프로그래밍 명령어를 통해 이를 애플리케이션으로 가져온다.디스크에 저장된 파일 읽어들이는 경우 (하드웨어 -> 애플리케이션 서버.. 2024. 5. 9.
[I/O 이해하기-1] 동기와 비동기 VS Blocking과 Non Blocking [I/O 이해하기-1] 동기와 비동기 VS Blocking과 Non Blocking[I/O 이해하기-2] Stream vs Channel[I/O 이해하기-3] 톰캣의 요청 수신 방식 동기와 비동기는 요청 작업의 완료여부를 체크하고 작업을 순차적으로 처리하느냐의 차이로 구분할 수 있고,Blocking과 NonBlocking은 제어권을 누가 갖는지에 따른 작업 차단(block) 유무로 구분할 수 있다. 동기와 비동기는 순서에 관한 것이고, Blocking과 NonBlocking은 작업 차단 유무에 관한 것이다.동기와 비동기  동기는 요청 작업의 완료여부를 체크하고 작업을 순차적으로 진행한다.특정 함수를 호출하면 완료 응답을 받고 다음 작업을 진행한다.통신 환경이라면 사용자의 요청에 응답을 제공한 이후 다음 .. 2024. 5. 5.
코틀린 querydsl, mapstruct 생성자에 따른 동작 방식 코틀린, 스프링, jpa, querydsl 환경에서 불변객체를 만드는 방법에 대해 알아보겠다. 자바 위주의 스프링, querydsl, mapstruct 개념이나 사용법을 그대로 받아들이려고 하면 코틀린에서 객체의 불변성이 깨지거나 디폴트값 선언으로 비즈니스 규칙을 깨트리는 생성자들이 생겨날 수 있다. 나의 경우도 그러하였는데 코틀린, 스프링, querydsl, mapstruct 환경에서 객체 불변성을 지키며 디폴트값을 제거하는 방법에 대해 공유하겠다.Querydsl을 통해 매핑받는 객체 디폴트 값 없애기projection.bean, projection.fieldsprojection.bean 방식은 자바 빈 객체 형태만 받을 수 있다. 허나 세터 메서드가 없어도 리플렉션을 통해 매핑이 가능하다고 한다.세터.. 2024. 3. 16.
자바 예외의 종류와 처리방식 예외의 종류와 처리방식자바에서 프로그램이 비정상적인 동작을 일으키는 경우 Error 또는 Exception이 발생하게 된다.Error와 Exception ErrorExceptionChecked ExceptionRuntime Exception복구 여부복구 불가복구 가능예외 종류컴파일 타임- 문법 오류- 타입 체크  런타임- StackOverFlowError- OutOfMemoryError  예외 처리처리불가 컴파일러에 의해 예외 처리 강제예외 처리 강제화 되지 않음예외 상속관계Error와 Exception 모두 Throwable 클래스를 상속 받는다.Throwable 클래스는 message와 stackTrace를 담고 있는데 message는 Error와 Exception의 구체적인 정보를 간단히 제공하는 .. 2024. 2. 19.
반응형