CS 6

브라우저 렌더링 과정 (google.com을 입력하면?)

면접 질문 중 기본으로 여겨지며 가장 많이 물어본다고 하는 '크롬에 google.com을 입력하면 어떤 일이 발생하나요?' 에 대해서 정리해보려고 한다. 몇번이고 공부하고 외워봐도 며칠이면 기억에서 사라지는 경험을 겪다보니 정리하게 되었다. 네트워크, 브라우저 렌더링 과정을 모두 자세히 설명하자면 말도 안되게 길어지니까 최소치만 써보았다. 특히 브라우저 렌더링 과정을 자세히 다룬 글은 이 포스팅을 참고하면 된다. (네트워크는 알아서 책으로 공부..!) 브라우저에 URL을 입력하면 무슨 일이 발생할까? 1. 브라우저는 URL을 해석한다. 2. 해석한 URL을 토대로 브라우저 캐시에 해당 url이 있는지 확인한다 (여기부턴 있으면 바로 IP를 반환) 3. 없다면 로컬의 hosts파일을 참조해본다. 4. 여기..

CS 2023.09.22

MIPS-Instruction

이런 식의 MIPS Assembly가 있다고 해보자. 이 식은 s1과 s2를 더해서 t0에 저장한다는 밉스 인스트럭션이다. 사실 이 명령 자체가 컴퓨터에는 0x02324020 의 기계어로 표현이 된다. 밉스 레지스터 하나는 32비트의 크기를 가지기 때문에 machine instruction또한 32비트로 제공된다. 밉스가 이해하는 인스트럭션은 크게 3종류이다. R포맷과 I포맷과 J포맷이다. 위의 테이블의 빨간 줄을 보면, 어떤 instruction들이 어떤 format에 속하는지 그리고 그 format은 어떻게 구성되어있는지 나타나있다. 이를 모두 외우거나 할 필요없이 표를 참고하여 적용하면 된다. 표를 보니, add는 R포맷에 있는것을 확인할 수 있다. R포맷으로 설명을 이어보자면, 컴퓨터는 맨 앞의 ..

CS 2021.10.05

Overloading-오버로딩이란?

객체지향 프로그래밍을 공부하다가 오버로딩이라는 단어를 심심치않게 접했었다. 그렇게 들어오던 오버로딩에 대해 오늘 공부했기 때문에 오버로딩에 대해 정리를 해보겠다. 오버로딩은 간단히 말하면, 같은 이름의 메서드를 여러개 정의하는 것이다. 1. 메서드의 이름이 같고 2. 메서드 안의 매개변수의 개수 혹은 타입이 달라야 한다. 오버로딩의 대표적인 예를 찾아보면 println이 있다. void println(boolean x) void println(char x) void println(char[] x) void println(double x) void println(float x) void println(int x) void println(long x) void println(Object x) void pri..

CS 2021.09.29

자바 Cannot make a static reference to the non-static field 오류

package test; public class non_static { static int i = 10; static void Hello() { System.out.println("Hello!"); } public static void main(String[] args){ Hello(); i = 30; } } 자바를 공부중 "Cannot make a static reference to the non-static field" 라는 오류를 만났다. 주어진 코드에서 static int와 static void Hello()의 static을 제외하자 위와 같은 오류가 나왔다. 자바의 컴파일 순서는 1. 자바코드 컴파일 2. 클래스 파일 생성 3. 컴파일된 클래스 파일 실행 이다. static 멤버가 먼저 컴파일이..

CS 2021.09.27

자바 객체,클래스,메소드 (C와 비교)

java를 사용하기 위해 공부하던 중, C와 다른 '객체'와 '클래스' '메소드'등의 개념이 너무 많이 들린다. 처음 시작할때부터 분명 어떤건지 설명을 듣고 시간이 지나며 계속 듣는데도 익숙해지기만 할 뿐 헷갈리는것은 여전하다. 그래서 이곳에 정리를 하며 전부 다 파악은 못해도 파악한 부분에 한해 확실하게 이해를 해야겠다. 객체는 단순히 '지갑' 혹은 '티비'같은 어떤 오브젝트로 우선 예시를 든다. 클래스는, 객체를 정의해놓은 것이다. 고로 클래스는, 객체를 생성하기위해 사용된다. 또한 클래스는, 사용자 정의 타입을 만들 수 있다. class Time { int hour; int minute; float second; } Time이라는 클래스에 사용자 정의 타입을 만든 것이다. 대략적으로 시계를 설계하기..

CS 2021.09.23

포인터 기초: Swap함수

포인터에 대한 이해를 위해 Swap함수를 직접 구현해보았다. 처음 함수만을 배운 이후 정수 a와 b의 값을 함수를 통해 바꾸고 싶을때 생각대로 되지 않는다. #include #define _CRT_SECURE_NO_WARNINGS int swap(int num1, int num2); int main() { int a = 10; int b = 20; printf("Swap 전 a: %d, b: %d\n", a, b); swap(a, b); printf("Swap 후 a: %d, b: %d\n", a, b); return 0; } swap(int x, int y) { int temp = x; x = y; y = temp; printf("Swap 함수 내부 a: %d, b: %d\n", x, y); } swa..

CS 2021.09.21