(네트워크 관련)
“주소창에 url을 입력하면 ui에 네이버화면이 로딩됩니다.” 라고 말하면 안됩니다.
입력 후 일련의 과정을 설명해야 합니다.
만약 화면이 랜더링이 안될 때 어디에 문제가 있는지 역추적을 할 수 있어야 하기 때문에 과정을 아는 것이 중요.
네이버 주소를 입력하면 입력된 주소가 실제로 어떤 컴퓨터에 연결되어 있는지 알아내기 위해 DNS 서버에 질의를 보냅니다. DNS 서버는 도메인에 해당하는 IP 주소를 찾아 브라우저에 알려줍니다.
브라우저는 DNS로 받은 IP 주소를 이용하여 해당 서버(네이버)와 TCP 연결을 요청합니다.
연결이 된다는 것은 클라이언트와 서버가 데이터를 주고 받을 수 있게 됩니다.
브라우저는 서버에 HTTP 요청을 보냅니다.
이 요청은 네이버 홈페이지의 HTML 문서를 보내달라는 요청입니다.
받은 HTML 문서를 랜더링하여 웹페이지를 화면에 표시합니다.
간단히 요약하면 네이버 주소를 입력하면 DNS를 통해 IP 주소를 찾고, TCP 연결을 통해 서버와 통신하여 HTML 문서를 받아와 브라우저가 화면에 랜더링하는 과정을 거치게 됩니다.
(운영체제, 메모리 관련)
우선 공통적으로 쿠키, 로컬 스토리지, 세션 스토리지는 웹 애플리케이션에서 사용자 정보를 저장하기 위해 사용되는 메커니즘이며 모두 클라이언트에서 저장합니다.
쿠키는 서버가 클라이언트에 보내는 작은 크기의 텍스트 파일로, 클라이언트는 이를 저장 후
다음 요청 시 서버로 다시 보냅니다.
특히, 로그인 상태 유지에 쓰이며 유효 기간은 서버에서 설정 됩니다.
로컬 스토리지는 데이터를 영구적으로 저장하는 메커니즘입니다.
브라우저 종료 후에도 데이터가 유지되며 쿠키보다 많은 양의 데이터를 저장할 수 있습니다.
사용자의 설정 저장 혹은 장바구니 정보 저장 등에 쓰입니다.
세션 스토리지는 데이터를 임시로 저장하는 메커니즘입니다.
브라우저 탭을 닫으면 데이터가 삭제됩니다.
페이지 간에 데이터를 전달 혹은 검색 결과와 같은 임시 데이터를 저장합니다.
즉, 쿠키는 서버와 클라이언트 간의 상태를 유지하는 간단한 설정에 쓰이고,
로컬스토리지는 자주 변경하지 않는 장기간 데이터를 저장 할 때,
세션 스토리지는 특정 세션 동안만 사용해야 할 데이터를 저장할 때 사용합니다.
(객체지향 프로그래밍 관련)
오버로딩과 오버라이딩은 객체지향 프로그래밍에서 자주 사용되는 개념으로, 메서드를 다양하게 활용하는 방법입니다.
우선 오버로딩은 같은 이름의 메서드를 여러개 정의하는 것을 말합니다.
메서드의 이름은 같지만 매개변수의 개수나 타입이 달라야합니다.
add라는 메서드가 있을 때, 매개 변수로 정수형, 실수형 등 여러개의 메소드를 정의 할 수 있습니다.
오버로딩의 장점은 코드의 재사용성을 높이고 가독성을 향상시킵니다.
오버라이딩은 상위 클래스의 매서드를 하위 클래스에서 재정의하는 것을 말합니다.
‘동물’이라는 상위 클래스에서 ‘소리’라는 메서드를 정의 한다면
이를 상속받는 ‘고양이’라는 하위 클래스에서 ‘소리’ 메서드를 오버라이딩하여 ‘야옹’이라는 소리를 출력하도록 구현할 수 있습니다.
오버라이딩의 장점은 클래스 상속 관계에서 특정 메서드의 기능을 변경할 수 있다는 점입니다.
즉, 오버로딩은 같은 이름의 메서드를 매개변수의 차이로 구분하여 사용하는 방법이고
오버라이딩은 상위 클래스의 메서드를 하위 클래스에서 재정의하여 다형성을 구현하는 방법입니다.
(운영체제 관련)
프로세스는 실행중인 프로그램은 의미하며
스레드는 프로세스 내 실행 단위를 의미합니다.
각 프로세스는 독립적인 메모리 공간을 가지며, 운영체제는 프로세스 간의 자원 접근을 분리합니다.
하나의 프로세스가 실패해도 다른 프로세스에는 영향을 미치지 않습니다.
스레드는 프로세스 내에서 여러 스레드, 멀티스레드로 존재 가능하며 메모리와 자원을 공유합니다.
이를 통해 스레드 간의 통신이 빠르고 효율적이지만, 하나의 스레드가 문제를 일으킬 경우 같은 프로세스 내의 다른 스레드에도 영향을 미칠 수 있습니다.
요약하면 프로세스는 자원(메모리와 CPU)을 프로세스마다 할당받아서 사용하는데
스레드는 프로세스 안에서 다른 스레드와 자원(메모리와 CPU)을 공유해서 사용합니다.