Socket Pair
·
Computer Science/Network
OS가 Tcp Connection을 어떻게 적절한 Socket으로 넘기는지 탐구한다.1. 문제 인식이전까지, TCP 패킷들은 포트번호를 통해 프로세스로 통한다고 이해하고 있었다. 이에 따라, ServerSocket이 TCP Connection을 받을때 새로 생성되는 소켓은 항상 새로운 포트를 점유하고, 클라이언트는 이 소켓과 통신한다고 이해했었다. 결론부터 말하자면, 틀렸다. OS는 TCP 패킷을 수신하면 이를 Socket Pair를 확인하여 적절한 Socket으로 매핑한다. 2. 이론출처 1: 컴퓨터 네트워킹 하향식 접근 55p출처 2: UNIX Network Programming : The Sockets Networking API https://books.google.co.kr/books?id=ptS..
Java IO / NIO
·
Java
ref :1.https://www.baeldung.com/linux/kernel-system-call-implementation2.https://github.com/torvalds/linux/blob/master/arch/x86/entry/syscalls/syscall_64.tbl3. https://www.baeldung.com/linux/kernel-system-call-implementation4. https://stackoverflow.com/questions/54878237/is-there-a-separate-kernel-level-thread-for-handling-system-calls-by-user-proces5. https://0xax.gitbooks.io/linux-insides/cont..
외부에서 학교 컴퓨터 접속하기
·
이것저것
이거 글 다 구라입니다. 학기중 LLVM관련 프로젝트를 수행하기 위해 연구실 컴퓨터에 컴파일해뒀다. 한번 컴파일하는데만 약 3시간 4시간이 걸리는 작업이라, 집에서 다시 하는것은 오바.학교는 외부에서의 원격 접근을 굉장히 싫어하기 때문에 잠깐만 접근해 과제를 수행해보자.제일 초기 구성은 다음과 같다. Client = 접근 주체Target = 접근 대상1. SSH 를 통해 접근해보자SSH는 원격 컴퓨터에 접근하기 위한 가장 편리한 도구다. 공유기 망에서는 당연히 접근될꺼니 ,Target Computer는 공유기를 통해 학교망과 연결되어 있음으로, 포트포워딩을 통해 SSH서버 프로세스의 포트를 학교망으로 노출하자.이제 해볼 수 있는 방법은 학교안에서 접근할 때, 학교 밖에서 접근할 때 두 경우만 존재한다.이..
[컴파일러] Scanner Generator
·
Computer Science
1. 과제 소개 Scanner 는 입력 Character Stream 을 Token Stream 으로 변환하는 역할을 컴파일러 내에서 수행합니다. 각각의 토큰들을 식별하기 위한 Recognizer 들을 내부적으로 가지며, 각각의 Recognizer 는 Scanner Generator 가 RE(Regular Expression)을 바탕으로 생성한 DFA 를 통해 각각의 토큰을 식별합니다. Scanner Generator 가 RE 를 바탕으로 한 DFA 의 생성은 다음과 같은 과정으로 이루어집니다. RE to NFA w/ε-move NFA w/ε-moves to DFA DFA → Minimized DFA DFA→RE 이번 과제는 위 네가지 과정 중 첫번째 단계, RE to NFA w/ε-move 과정에 집중..
[Java] Optional 클래스 살펴보기 (2)
·
Java
이전에 다뤘듯이, Optional 의 핵심은 메소드가 null을 리턴하는 상황을 없애는데 있습니다. 따라서 메소드가 null을 직접적으로 리턴하는 대신, 반환하는 값이 null일 가능성이 있음을 나타내는 Optional 클래스를 이용해 이를 표현합니다. [Java] Optional 클래스의 등장 (1) 이번 포스팅에서는 이에 나아가, Optional 클래스가 null 대신 어떻게 값이 없는 상황을 어떻게 모델링하는지에 대해 살펴보도록 하겠습니다. 1. Optional 객체 생성 2. Optional 객체 API 3. Optional과 스트림 4. 예제 Optional 클래스는 선택형 값을 캡슐화 하는 클래스입니다. 값이 있으면 Optional 클래스는 그 값을 감싸고, 없다면 Optional.empty(..
프로젝트중
·
이것저것
사용자 유형별 계정 등록 API를 다르게 구성해야 하는가에 대한 고민. -> 백엔드 단에서 API 하나로 통일, -> 서비스 객체 많아짐 -> 전략 패턴 적용하자( 컨트롤러는 필드를 그대로 매핑하는 역할, 서비스는 (전략을 선택, 전략 실행) 따로 SOLID의 SingleResponseiblity 원칙 적용 -> 사용자 유형별 API 구성
[Java] Optional 클래스의 등장 (1)
·
Java
개발을 하다보면 가장 흔히 맞닦드리는 예외로 NullPointerException이 있습니다. 컴파일 과정에서는 잡기 힘듦과 동시에, 런타임 중 불시에 발생하여 프로그램을 강제 종료시킬 수 있는 이 위협적인 예외는 자바를 사용하는 모든 개발자들이 골머리를 앓는 문제입니다. 이번 포스팅에서는 NullPointerException을 방지하기 위한 방안인 Optional 클래스의 등장 배경과 그 효과에 대해 알아보도록 하겠습니다. Optional 클래스는 참조되는 객체가 Null인지를 컴파일 타임에 확인하도록 개발자에게 의무를 부여합니다. 평화롭던 주말, 당신이 배포한 프로그램이 에러를 일으켜, 잠옷 차림으로 회사에 출근합니다. 책상에 앉아 골똘히 고민하던 당신은 다음과 같은 코드에서 NullPointerEx..
[SpringBoot] 스프링의 에러처리 탐구
·
SpringBoot
스프링은 어플리케이션에서 발생가능한 에러들에 대해 다양한 처리방법을 제공합니다. 어플리케이션 내부에서 발생되는 에러를 감지하고 각각에 대한 적절한 처리를 하기 위해, 서블릿의 에러 처리 플로우에 대해 알아볼 필요가 있습니다. 이번 포스팅에서 이에 대해 중점적으로 다뤄 보겠습니다. Spring MVC에서 모든 요청은 디스패쳐 서블릿을 통합니다. 디스패쳐 서블릿은 요청에 따라 HandlerMapping 객체를 통해 적절한 컨트롤러를 실행합니다. 이 과정은 디스패쳐 서블릿의 doDispatch() 함수 내에서 실행됩니다. 함수내에 try-catch문 을 통해 감지된 에러는 적절한 HandlerExceptionResolver를 선택해 에러를 처리하게 됩니다. 따라서, 아래와 같은 워크 플로우를 가집니다. 1. ..