일단 씻고 나가자

23.10.04 본문

Study/닥치는 대로 주워 담기

23.10.04

일단 씻고 나가자 2023. 10. 4. 23:59

2023. 10. 04 수요일

 

 

- [Effective Java] enum 자료형에서 특정 값의 index를 뽑는 방법? 유의점?

: ordinal() 이라는 함수를 사용하며, valueOf() 함수와 연계한다.

enum Alphabet {A, B} 가 있다면, (enum 에서는 문자 외에 다른 형태로 enum 변수를 설정할 수 없다.) Alphabet.valueOf(“A”).ordinal() 으로 0을 추출할 수 있다.

이때 해당 문자가 없다면 에러를 낸다.

 

이러한 방법은 enum에 새로운 변수가 순서를 무시하고 추가될 때 문제를 낼 수 있는 여지가 있으며, 따라서 Map을 쓰거나 enum Alphabet{A(1) int num;} 으로 선언하고 생성자를 추가하거나 스프링의 경우 @AllArgsArgument를 추가하여 해결한다.

 

ordinal() 함수는 공식 문서에서도 enumSet, enumMap을 제외하면 사용을 권하지 않는다.

 

 

- DNS? DNS의 작동 순서? 메일 서버의 종류, 설명?

: Domain Name System. IP 대신 기억하기 쉬운 문자열로 대체하여 접근할 수 있으며, 이용자가 해당 주소를 문자로 입력 시 IP로 바꿔주는 시스템.

 

이용자가 URL을 입력하면, 웹브라우저에 해당 내용이 없을 시 DNS 프로토콜을 통해 DNS 서버 중 하나를 찾아가서 IP 주소를 확인한다. DNSnetwork protocolUDP를 활용하며, 해당 서버가 정보를 가지고 있지 않다면 다른 DNS 서버에게 다시 요청한다. 최초 확인 이후부터는 다른 서버를 찾아가지 않고 저장된 IP로 이동하게 해준다.

 

메일 서버에는 SMTP(Simple Mail Transfer Protocol 송신 전용)POP3(Post Office Protocol 수신 전용) 두 가지가 있다.

 

메일 수신에는 POP3(110 포트)IMAP(143 포트)이 대표적이며, POP3는 중앙 서버에서 로컬 장치로 이메일을 내려주고 내려준 이메일은 삭제하는 방식, IMAP은 중앙 서버에 모든 메일을 모두 저장하고 있다가 어느 기기에서도 보여줄 수 있는 방식을 가지고 있다. 각각 용량과 동기화에서 장,단점을 갖는다.

 

메일 송신에는 SMTPMIME(Multi-purpose Internet Mail Extensions) 프로토콜이 있는데, SMTPMIME을 적용한 형태로 쓰인다. SMTP는 오래전부터 쓰였기 때문에 ASCII 코드로만 변환하여 전송하는데, 시대의 발전에 따라 첨부파일, html, 다른 나라 언어 등도 담겨야 할 필요성이 생기자 MIME이 탄생하였다. MIMESMTPbody부의 최상단에 쓰이며, 특정 문자 혹은 파일을 MIME 형식으로 엔코딩하고 수신 시 MIME이 디코딩하여 보이는 방식으로 동작한다.

 

 

- FTP, 설명?

: File Transfer Protocol. 파일질라와 같이, 서버와 클라이언트 사이의 파일 전달을 위한 프로토콜. 서버에 접속하여 파일 이름 수정, 삭제 등의 제어를 위한 21번 포트와, 파일을 받는 용도의 20번 포트 두 가지를 사용한다.

 

FTPactive, passive mode의 두 가지 모드가 있는데,

active에서는 클라이언트 쪽에서 특정 포트를 알려주고 서버가 클라이언트쪽으로 접속하게 하는 방식으로 방화벽 등의 이슈가 생길 수 있으므로,

passive에서는 이를 보안하여 TCP/IP 모델을 참고, 서버가 허용된 특정 포트를 알려주고 클라이언트가 접속하도록 한다.

 

 

 

- 웹브라우저의 동작 과정?

URL 입력. URLDNS 프로토콜을 통해 IP 주소로 변환된다.

HTTP request -> TCP packet -> IP packet -> Ethernet Frame 순으로 네트워크 스택을 따라가서 전기신호로 변환하고 전송하고, 서버는 역순으로 데이터를 역캡슐화 하여 웹서버 프로그램으로 보낸다. 웹서버에서는 request를 판독하여 적합하다면 역시 네트워크 스택으로 변환하여 response 하고 다시 클라이언트로 전송한다.

서버에서 받은 html 파일을 파싱하여 DOM(Document Object Model) tree, CSSOM(CSS Object Model) tree 두 가지를 생성하고, 둘이 합쳐진 render tree를 생성하여 최종적인 rendering(layout, paint, compositing) 처리를 진행한다. javascript에 의해 태그가 변경되거나 한다면 html 파일 파싱 이후의 모든 과정을 반복한다.

+ 해당 방식은 작은 변화에도 모든 과정을 반복해야 하기 때문에 부담이 많이 갈 수 있다. virtual DOM 방식은 DOM의 형태를 가볍게 json 형태로 메모리에 올려놓은 후, 변경이 있을 때마다 json만 변경시키고 변경이 끝나면 한 번에 rendering 시킨다. 이 기술을 적용시킨 것이 React, Vue.js 등이다.

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

23.10.10  (0) 2023.10.11
23.10.05  (0) 2023.10.06
23.08.04  (0) 2023.08.04
23.08.03  (0) 2023.08.04
23.08.02  (0) 2023.08.03