본문 바로가기

컴퓨터 상식

(9)
[Java] Boxing vs No Boxing 속도 차이 결과부터 말하자면 별로 차이 안난다. import java.util.function.IntPredicate; import java.util.function.Predicate; public class study { public static void main(String[] args) { IntPredicate evenNumbers = (int i) -> i % 2 == 0; Predicate oddNumbers = (Integer i) -> i % 2 != 0; int beforeTime, afterTime, result; int circle = 100000000; // Warm-up // beforeTime = (int) System.currentTimeMillis(); // for (int i = 0;..
HTTP 버전 별 특징 https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP HTTP의 진화 HTTP는 월드 와이드 웹에 내재된 프로토콜입니다. Tim Berners-Lee에 의해 1989년부터 1991년에 발명된 HTTP는, 본래의 단순함의 대부분을 지키면서 확장성 위에서 만들어지도록, 많은 수정을 거쳐왔습 developer.mozilla.org 를 참조했습니다. HTTP 0.9 - No Version Number(0.9는 나중에 붙은 것) - Status Code도 없었다. 파일만 덜렁 날아감. - 가능한 Method는 GET이 유일했다. - HTTP 헤더 없음 A very Simple HTML Page HTTP 1.0 (RFC 194..
가상메모리에도 불구하고 OOM(OutOfMemory)이 발생하는 이유 프로그램을 실행할 때 모든 영역이 다 필요한 건 아니다. PC(Program Counter)가 가리키는 부분과 관련된 데이터, 힙, 스택영역이 필요하기 때문에 OS는 가상메모리 라는 걸 활용한다. 가상메모리 = Main Memory + Hard Disk 즉 필요없는 부분은 하드디스크에 뒀다가 필요할 때 부른다. 이 과정을 Page Swapping 이라고 부른다. 프로세스의 모든 영역이 Swap의 대상이므로 Heap과 Stack 영역도 그로부터 자유롭지 못하다. 여기서 드는 의문 그러면 OOM(Out of Memory)은 왜 발생하지? 이 에러는 할당된 범위를 넘어선 영역에 대해서 메모리 할당을 요구할 때 발생한다. 보통 Runtime 때 Heap 영역에서 발생한다. Heap을 Swapping 하면 계속 ..
크롬(Chrome)의 각 탭은 프로세스(Thread)다. Chrome의 각 Tab은 Thread일까 Process일까. 정답은 Process다. 왜 그런지 실험을 통해 알아보자. 실험을 위해 Chrome에서 Tab 세 개를 만들었다. wmic process get Caption, ParentProcessId, ProcessId | find /i "chrome" CMD에 명령했다. 굉장히 많은 chrome Process가 생겼다. 주목해야할 점은 이들의 PPID 와 PID이다. PPID는 부모의 PID를 의미한다. 그림에서 왼쪽에 있는게 각 프로세스의 PPID이고 오른쪽이 PID이다. 제일 위에 있는 프로세스의 PID가 20668이고, 그 밑의 모든 프로세스의 PPID가 20668이므로 제일 위에 있는 프로세스가 모든 프로세스의 부모 프로세스이다. 위에 있는 게..
REST API 정리 https://www.youtube.com/watch?v=RP_f5dMoHFc 이 강연의 내용을 정리하고 내 생각을 첨언했습니다. REST 서론 WEB은 정보를 하이퍼텍스트로 연결합니다. WEB이 나온 유래를 생각해봐도 정보 공유의 목적이 컸으니까 어쩌면 당연하겠네요. 그 정보를 표현하는 형식은 HTML 식별자는 URI 전송 방법은 HTTP Protocol입니다. 1990 년 ~ 2000년 대, 웹이 폭발적으로 성장하죠. 당시 대학원생이었던 로이 필딩은 "Web 생태계를 훼손하지 않고 (전송 방법인) HTTP를 향상시킬 방법이 있을까?"를 고민합니다. 그 답이 HTTP Object Model 입니다. 이걸 4년 뒤, 1998년에 REST라는 이름으로 발표합니다. 그리고 2년 뒤에 박사논문으로 발표합니다...
Ajax는 Restful 할 수 있는가. Ajax는 비동기적인 웹 어플리케이션을 제작하려고 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법이다. 궁금한 건 이 Ajax가 Restful API가 될 수 있냐는 것이다. 걸리는 지점은 REST 중 Uniform Interface의 HATEOAS(Hypermedia as Transfer Engine of Application State) 이다. An application's state is roughly the entire contents of its memory. 여기서 Application State은 응용프로그램을 실행하는데 필요한 항목의 총합을 말한다. 그러니까 결국 이 페이지를 실행하는데 필요한 항목들을 전이하는 엔진..
Garbage Collection(GC)에서 이름이 Eden인 이유 자바의 Garbage Collector는 크게 두 가지로 구성된다. 1. Young Generation, Old Generation. 그 중 Young Generation은 다시 Eden Space, Survival Space0, Survival Space1 으로 이루어진다. 궁금증은 왜 Eden Space일까? 였다 https://stackoverflow.com/questions/5383256/eden-space-name-origin-in-garbage-collection/5383337 'Eden space' name origin in Garbage Collection In Garbage Collection terminology, why is it called 'Eden Space'? Just like..
Gmail과 Naver Mail이 이메일 속도에서 차이가 나는 이유는? 개발자 취업준비 오픈카톡방에 속해있다. 발표가 나면 굉장히 빠르게 '오 OO 발표났어요!'라고 소식이 공유된다. 만약 이 발표가 이메일을 통할 경우 꼭 나오는 말이 '어... 전 아직 안왔어요' 였다. 그 이유가 궁금했다. (시간차가 짧으면 ISP 차이라고 생각했을텐데 시간차가 수 분이 나는 경우도 있어서 궁금했다) 나는 이 현상의 원인을 '서버 위치'라고 생각했다. 이 가정의 발단은 '메일을 늦게 받는 분이 대게 GMail을 사용한다는 것'이다. 우선 Email을 보내면 어떤 일이 일어나는지 살펴보자. 우리는 이메일을 쓸 때 UserName @ HostName. TLD 이런 식으로 쓴다. 예를 들면 abcd@gmail.com abcd@naver.com 이런 식이다. 이메일을 쓴 후 Send 버튼을 누르..
Ctrl C하고 Ctrl V하면 어떤 일이 벌어질까? https://superuser.com/questions/1436622/how-do-ctrlc-and-ctrlv-work How do Ctrl+C and Ctrl+V work? I was always wondering what happens under the hood (in the operating system) when I copy an image (selecting it and using Ctrl+C) into a Word file (pasting it with Ctrl+V), for example. superuser.com Windows는 이렇다. 윈도우에선 Cliboard API와 Storage Buffer가 커널에서 제공된다. Ctrl C를 누르는 순간 윈도우즈 Win32 API function..