기술 창고(246)
-
[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 -
[DB] 트랜잭션 (Transaction) with 4가지 특성
트랜잭션(Transaction) 트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능 (예 : Update, Delete)을 수행하기 위한 작업의 단위 혹은 일련의 연산들을 말한다. 트랜잭션 특성 1. 원자성(Atomicity) 트랜잭션의 연산은 데이터베이스에 전부 반영이 되어야하거나 전부 반영이 되지 않아야한다. 즉, 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다. 2. 일관성(Consistency) 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다. 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가..
2023.01.09 -
Stateful / Stateless
개발을 하고 사이트를 구현하다보면 단순히 개발 지식만 알고있어야 하는게 아니라 그외의 부가적인 지식들도 알고있어야 한다. 네트워크가 그 중 하나라고 생각한다. 네트워크 개념 중 자주 언급되는 기본적인 개념인 Stateful 과 Stateless 에 대해서 정리해보자 Stateful 과 Stateless 는 클라이언트와 서버 간의 네트워크 통신이 어떻게 이루어지는지에 대한 개념이다. 네트워크 프로토콜이라고 봐도 무방하다. 해당 개념들을 정리하기에 앞서 우선 Session 에 대한 개념을 조금은 알 필요가 있다. Session이란 일정 시간동안 같은 사용자(정확하게 브라우저를 말한다)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술. 즉, 방문자가 웹서버에 접속해 있는 ..
2023.01.09 -
[Java] 동일성 (Identity) / 동등성 (equality)
동일성 동일성은 두 개의 객체가 완전히 같은 경우를 뜻한다. 좀 더 늘려서 말하자면 두 객체는 사실상 하나의 객체로 봐도 되고, 주소 값이 같아서 두 변수가 같은 객체를 가리키는 것과 같다. 즉, 주소 값이 동일한 경우를 동일하다고 말한다. 동일한지 알 수 있는 방법은 "==" 연산자를 통해 확인할 수 있다. 참고로 원시타입(Primitive Type)의 변수들은 객체를 참조하고 있는 것이 아닌 원초적인 변수들이므로 == 연산자를 사용했을 때 내용값이 같다면 동일하다고 판단한다. 동등성 두 개의 객체가 같은 정보값을 같고 있는 경우를 뜻한다. 동등성은 변수가 참조하고 있는 객체의 주소가 다르더라도 내용값만 같으면 동등하다고 말한다. 즉, 주소 값이 서로 다르더라도 값만 같으면 동등하다고 말한다. 동등한지..
2023.01.09