본문 바로가기

컴퓨터공학

(44)
절차지향 vs 객체지향 절차지향의 대표적 예시로 C언어가 있고, 절차 즉 순서대로 처리하는 프로그래밍 기법이다. 이는 컴퓨터 처리 구조와 비슷하기에 실행 속도가 빠르나, 유지보수가 용이하지 않다. 반대로 객체지향에는 JAVA C++등 언어가 있고, 객체로 모델링해 인스턴스를 만들어 내는 프로그래밍 기법이다. 이는 코드 재활용, 유지보수가 용이하나 설계가 비교적 어렵고, 실행 속도도 비교적 느리다.
[1일1cs] 컴파일러, 인터프리터 컴파일러 : 1. 전체를 한꺼번에 해석. 2. 기계어 번역과정에서 object파일을 만들고 다시 링킹하는 과정이 있기에, 메모리사용이 더 증가. 하지만 이 실행파일을 만든다면 속도가 빨라짐. 3. 한꺼번에 실행하므로, 오류도 실행전에 파악가능. 4. C, C++, JAVA 등 인터프리터 : 1. 한 번에 한 문장 해석. 2. object파일 만들고 링킹하는 과정이 없음. 메모리 효율 좋음. 3. 오류를 실행하고 나서야 파악가능. 4. Python, Javascript 등
DNS와 DHCP DNS는 네임서버에서 이루어지고, 즉 사람이 외우기 힘든 직관적이지 않은 숫자로 된 IP주소를 www.naver.com 과 같이 변환해 주는 프로토콜이다. DHCP는 IP주소, 서버 주소, 게이트웨이 주소등을 할당해주는 프로토콜. IP주소 중복을 방지한다. (고유성확보) 우리의 IP주소는 알다시피 동적인데 이는 DHCP에 요청을 보낼 때 마다 변한다. 먼저 우리의 PC에서 DHCP 서버를 찾는 과정을 거친다. DHCP서버를 찾았다면 IP주소 요청 메세지를 보낸다. DHCP에서는 우리의 PC에서 IP주소 리스트를 보낸다. 우리의 PC는 DHCP의 리스트중 하나를 골라서 요청한다. DHCP는 이를 할당해주고 임대 기간을 통보한다. 이제 우리는, 인터넷을 사용한다.
[1일1cs] 동기와 비동기 블로킹과 논블로킹 동기(Synchronus)와 비동기(Asynchronus)는 프로세스 순서 보장에 관심이 있는 개념. 블로킹과 논블로킹은 실행 제어권에 관심이 있는 개념. 동기는 process A 와 process B 가 있다면, A가 B의 완료에 계속해서 신경을 쓴다. 그렇게 B가 끝나면 A가 실행하고자 한다. (순서 보장) 반면 비동기는 A가 B의 완료에 신경을 쓰지 않고, B가 종료되지 않아도 A가 실행된다. (순서 보장 X) 블로킹과 논블로킹은 process A와 process B 가 있다면, A도중에 B가 실행된다면, 제어권을 B에게 넘긴다면 블로킹. A도중에 B가 실행되어도, A가 계속 실행되며 (제어권을 넘기지 않고) B를 실행한다면 논블로킹. 동기와 비동기 그리고 블로킹과 논블로킹은 조합해서 사용하곤 한다..
[1일1cs] 대표적인 sql종류 3가지 설명, 종류별 명령어 1) DML manipulation 즉, 조작어이다. 데이터를 조작하는 만큼 직관적으로, SELECT(데이터 조회) INSERT(데이터 삽입) DELETE(데이터 삭제) UPDATE(데이터 수정) 가 있다. 2) DDL Define 즉, 정의하는 문이다. 데이터를 정의하는 만큼 직관적으로, CREATE(생성) ALTER(변경) RENAME(이름 재정의) , DROP(삭제) 가 있다. 3) DCL Control 즉 조작어이다. GRANT(권한 부여), REVOKE(권한 취소) +) TCL transaction control을 하는 언어로, COMMIT ( 내용 반영) ROLLBACK(커밋 이전으로 돌림) 등이 있다.
[1일1cs] 라이브러리 vs 프레임워크 간단하게 제어권이 누구에게 있느냐에 따라 구분이된다. 라이브러리는 제어권이 개발자에게있고, 프레임워크는 프레임워크 에게 있다. 라이브러리는 개발자가 제어권을 갖고, 사용처에 맞게 개발자가 활용하는 반면, 프레임워크는 전체적 흐름을 프레임워크에게 제어권을 넘김으로써, 프레임워크가 개발자의 제어권을 대신한다.
[1일1cs] 파라미터 vs 인자 간단하다. 파라미터는 함수 선언시 사용하는 변수 이고, 인자는 함수 호출시 넣는 실제 값 이다. ex . def function(a, b): return a + b 여기서 a, b는 파라미터 answer = function(1, 2) 여기서 1,2 는 인자.
[1일1cs] 브라우저에 url을 입력하면? 1 . 브라우저 창에 google.com 입력. 2. 캐시 메모리에 입력한 도메인 주소의 ip가있는지 탐색. 여기서 네개의 캐시를 확인. 브라우저 캐시 OS캐시 ISP캐시 라우터 캐시 3. 캐시에 있다면 바로 IP주소를 사용하면 되고, 없다면 DNS서버가 DNS쿼리를 통해 단계별로 IP주소 탐색 루트 -> .com 등 나라 -> 다음 레벨 ... 4. 찾은 IP주소 해당 서버와 TCP 연결 시작. 여기서 3-way-handshake 를 통해 tcp연결. 3-way-handshake란 3번의 syn과 ack로 서버와 클라이언트가 데이터를 주고 받는 것. 5. 브라우저가 서버에 http 요청 (GET). 6. 서버가 요청을 처리하고 response를 보냄. request handler에 전달하고 이를 처리 ..