기술 창고(231)
-
[Java] 객체 / 클래스 / 인스턴스
객체 (Object) 객체라는 것은 물리적으로 존재하거나 추상적인 존재들 중에서 자신의 속성을 가지고 있으며, 식별할 수 있는 것을 말한다. 예를 들어, 사람이라는 객체는 이름, 나이, 성별 과 같은 속성과 먹다, 자다 등의 동작을 수행한다. 이러한 이름, 나이와 같은 속성을 필드라고 하고, 먹고 자는 동작은 메소드라고 표현한다. # 예 : 물리적 존재 - 자동차, 컴퓨터, 사람 / 추상적 존재 - 강의, 주문 클래스 (Class) 클래스는 Java에서 객체를 생성하기 위한 설계도이다. 객체가 가지는 속성(필드)과 동작(메소드), 생성자로 이루어져 있다. - 필드 : 객체의 속성으로서 실제 값이 저장되는 변수에 속한다. - 메소드 : 객체의 동작을 수행하는 블록 혹은 함수이다. - 생성자 : 객체가 실제..
2023.01.12 -
[Java] Stack / Heap
Stack - 객체 타입 참조값 / 원시 타입 데이터들 할당 Heap 영역에 생성된 객체 타입의 데이터들에 대한 참조 값, 원시 타입의 데이터들(byte, short, int, long, double, float, boolean, char) 들이 할당되어 저장된다. 원시 타입의 데이터들의 경우에는 참조값을 저장하는 것이 아니라 저장된 변수 실제 값을 저장하게 된다. # 예 : int = 5 , 5가 저장 - Stack 영역에 있는 변수들은 visibility 를 가진다. 전역변수가 아닌 지역변수가 특정 함수내에서 Stack 에 할당된 경우, 해당 지역변수는 다른 함수에서 접근할 수 없다. 예를 들어, One() 이라는 함수에서 Two() 함수를 호출하고 Two() 함수의 종료되는 중괄호 } 가 실행된 경..
2023.01.12 -
[Java] 자바 컴파일 과정
이전에는 JVM 에 대해서 정리해보았다. JVM을 짤막하게 복습해보자면 원 소스 코드의 java file을 컴파일러를 통해 바이트 코드 class file로 변환하고, 여러 OS 환경과 플랫폼에서 실행될 수 있도록 지원해주는 자바 가상 머신이다. 그렇다면 초기에 개발자가 작성한 원 소스 코드 java file을 컴파일 해주는 작업이 우선적으로 선행이 되어야 하는데 어떻게 컴파일이 되어 바이트 코드로 변환이 되는 것일까? 자바 컴파일 순서 1. 개발자가 자바 소스 코드 작성 (java file) 2. 자바 컴파일러가 자바 소스 코드를 읽어 바이트 코드(class file)로 변환. # 바이트 코드는 아직 컴퓨터가 읽을 수 없는 JVM만이 읽을 수 있는 코드 3. 컴파일된 바이트 코드를 JVM 내부의 클래스..
2023.01.12 -
[Java] JVM (Java Virtual Machine)
JVM 자바 가상 머신을 줄여서 JVM이라고 한다. JVM은 OS(운영체제)와 Java 애플리케이션 사이의 중개자 역할을 한다. JVM은 자바 바이트코드를 실행할 수 있는 환경을 제공해준다. 자바 원 소스 코드(java file)을 자바 컴파일러를 통해서 자바 바이트 코드로 바꾼다.(class file) 이로 인해 자바 바이트 코드가 어떠한 플랫폼에서든 독립적으로 실행될 수 있게 된다. 즉, JVM 덕분에 OS 상관없이 어디서든 Java 애플리케이션을 실행할 수 있게 되는 것이다. JVM 구성 1. Class Loader (클래스 로더) JVM 내에서 바이트 코드 (class flie)을 Loading하고, Linking을 통하여 배치하는 작업을 수행하는 모듈이다. Runtime 시점에서 클래스를 로딩하..
2023.01.11 -
[DB] 영속성 컨텍스트 (EntityManager)
Spring 프로젝트에서 DB를 관리하고 운영하는 작업은 반드시 필요하다. JPA가 대표적인 인터페이스 중 하나인데, JPA 내부 동작 원리를 알려면 영속성 컨텍스트를 반드시 알아야 한다. 영속성 컨텍스트 엔티티(도메인, DB테이블)를 영구 저장하는 환경이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 혹은 논리적 개념이다. EntityManagerFactory에서 요청이 올 때마다 EntityManager를 생성한다. EntityManager는 Factory와 다르게 여러 스레드에서 접근하면 동시성 문제가 발생한다. 따라서, EntityManager 가 생성되면 영속성 컨텍스트가 1:1로 생성된다. EntityManager 를 통해서 영속성 컨텍스트에 접근한다. 엔티티 생명..
2023.01.10 -
[네트워크] TCP - 3 way handshake / 4 way handshake
네트워크 관련된 학습을 진행하다보면 가장 기본적인 대표적인 기술 혹은 과정이라고 생각하는 것이 바로 이 3 Way Handshake, 4 way handshake 이다. WebRTC, WebSocket 을 조금만 만져봤음에도 네트워크에 관해서도 학습을 해야할 필요가 있다고 느껴졌다. 따라서, 기본적인 3 Way Handshake, 4 way handshake를 먼저 정리해보자. TCP (Transmission Control Protocol) TCP란 서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위한 프로토콜이다. (반대로 UDP의 경우 신뢰성이 없다. 비연결형 지향성이기 때문) 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향성 프로토콜이다. 데이터는 네트워크 경로를 통해 전달되..
2023.01.09