자바(버전 8 기준) 오브젝트 생성 과정 톺아보기 (+ JVM Runtime Data Area 영역) Intro 이번에 java 및 JVM의 Runtime Data Area 영역에 대해 공부를 하였는데, 자바에서 오브젝트가 생성 시 어떤 과정을 거치며 jvm 메모리 영역에 올라가는지에 대해 조금 더 자세히 알게되어 정리하고자 합니다. (사실 지금부터 제가하는 말은 거짓말입니다.; 가려서 들어주시고, 틀린점은 바로잡아주시면 업데이트해놓도록 하겠습니다.) 아래와 같은 Product 모델 클래스가 있다고 가정을 하고, 이 클래스의 오브젝트를 생성해보도록 한다. public class Product { public static final int PAYMENT_WINDOW_TITLE_MAX_BYTE = 4000;..
TCP는 Transport layer(4 layer)의 프로토콜인데, 4 layer의 통신은 애플리케이션 프로세스들간의 논리적인 통신이라고 할 수 있다. 호스트의 TCP 소프트웨어간에 데이터를 교환하는 unit은 TCP segment라고 부름.TCP segment는 TCP header와 TCP data(optional)로 구성되어 있다. [TCP segment = TCP header + TCP data] TCP header의 format은 다음과 같다. port numberTCP나 UDP와 같은 transport layer에서 호스트에서 실행중인 애플리케이션 프로세스로 TCP 패킷을 demultiplexing해주기 위해서 각 애플리케이션 프로세스의 소켓은 고유한 identifier를 가지고 있는데, 이게..
API를 개발하다보면 API의 버전을 나눌 필요가 있다. 그런데 API가 바뀔 때가 아니더라도 UI나 아이콘과 같은 것들이 바뀔 때 클라이언트의 버전은 올라가야한다. 그래서 버전을 구분하는 것을 API Level과 Version으로 나누도록 한다. API Level: API가 추가되거나 값이 바뀔때 올라가도록 함Version: API가 변경되지 않더라도 다른 무언가가 바뀌었을 때 올라가도록 함따라서 일정 API Level에 따라 URI에 클라이언트의 버전을 path를 추가하는 방식을 사용한다. AP 서버를 운영하다보면 웹 서버 엔진을 사용하게 되는데, 나는 nginx를 사용하였기에 nginx를 통해서 API versioning을 해보았다. nginx에서 http request의 header를 변수로 가져..