분류 전체보기 58

자바 데이터 타입, 변수 그리고 배열 - 백기선 자바라이브스터디

프리미티브 타입 종류와 값의 범위 그리고 기본 값 총 8가지의 기본타입이 있습니다. Type Default Value(기본값) Size(할당크기) Range of values(범위) Integer(정수형) byte 0 1 byte -128~127 short 0 2 byte -32,768 ~ 32,767 int 0 4 byte -2,147,483,648 ~ 2,147,483,647 long 0 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 Floating-point(실수형) float 0.0 4 byte 32-bit IEEE 754 floating-point double 0.0 8 byte 64-bit IEEE 754 floating -poi..

공부방/JAVA 2023.07.22

JVM 내부 구조

다음 다이어그램은 JVM 사양을 준수하는 Java 가상 머신의 주요 내부 구성 요소를 보여줍니다. Class Loader 와 JVM에 의해 할당된 메모리 영역인 Runtime Data Areas는 각각 아래에서 설명하겠습니다. ClassLoader Subsystem Class Loader 서브시스템은 Java 가상 머신 필수 핵심으로, .class 파일을 loading/reading 하고 바이트 코드를 JVM 메서드 영역에 저장하는 데 사용됩니다. 이 서브시스템은 동적 클래스 Loading을 처리하며 다음과 같은 세 가지 주요 기능을 수행합니다. Loading .class 파일을 JVM 메모리로 로드하는 작업을 처리합니다. 메서드 영역에 바이너리 데이터 즉, 정규화된 클래스 이름, 직계 부모,조상 클래스..

공부방/JAVA 2023.07.15

JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가

JVM이란 무엇인가 JVM(Java Virtual Machine)은 자바를 실행하기 위한 가상 컴퓨터(가상머신) 입니다. 자바로 작성된 애플리케이션은 모두 이 JVM에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요합니다. 컴파일하는 방법 (How to Compile Java Program?) 저희가 작성한 자바 프로그램을 컴파일하려면 먼저 본인 컴퓨터 환경에 JDK(Java 개발 키트)가 설치되어 있어야 합니다. JDK에 대해서는 뒤에서 설명하며 JDK 17를 사용한다는 가정하에 시작하겠습니다(JDK버전 차이는 나중에 다루겠습니다) 우선 저희가 어떤 자바프로그램을 IntelliJ나 Eclipse ide에서 작성했다고 가정합시다. 그리고 작성된 프로그램은 TestProgr..

공부방/JAVA 2023.07.14

요구사항 보고 ERD작성 및 논리적 스키마 도출 방법

문제 제기 프로젝트를 하면서 경험한 일 입니다. 요구사항에 분명히 기재되어 있는 사실 혹은 요구사항에 반영을 미처 못해 실제 설계 과정에서 누락된다면 추후에 데이터베이스를 구축하여 운용할 때 관리해야 할 사실들을 저장하지 못하는 경우가 발생합니다. 예를들어 회원이 삭제된다면 외래키로 갖고 있던 주문 테이블이 문제가 생기기 때문에 회원을 완전 삭제하는 대신 status 필드명을 추가하여 상태만 변경하는 식으로 문제를 해결해야 합니다. 하지만 저는 이러한 문제가 생길지 예상하지 못하여 회원테이블에 status필드명을 추가하지 않았고 추후에 이 문제를 발견하여 테이블을 나중에 수정을 하게 되었습니다. 규모가 작은 프로젝트에서는 뭐 이러한 문제가 생겨도 그때 그냥 바로바로 테이블을 수정하지 뭐 이런 마인드가 별..

말만 들어도 어려워 보이는 트랜잭션에 대해 자세히 살펴보자 3편

https://babgeuleus.tistory.com/67 말만 들어도 어려워 보이는 트랜잭션에 대해 자세히 살펴보자 2편 https://babgeuleus.tistory.com/59 말만 들어도 어려워 보이는 트랜잭션에 대해 자세히 살펴보자 1편 개요 프로젝트를 진행하면서 가끔씩 service부분에서 @Transaction이 readOnly=true로 되어있어 현재 수행하는 babgeuleus.tistory.com 이전 시간에는 트랜잭션의 장애와 로그 회복기법에 대해 배웠습니다. 이번 시간에는 병행 제어에 대해 배우겠습니다. 문제의식 데이터베이스 관리 시스템은 여러 사용자가 데이터베이스를 동시에 공유할 수 있도록 여러 개의 트랜잭션이 동시에 수행되는 병행수행을 지원합니다. 병행수행은 실제로 여러 트랜..

말만 들어도 어려워 보이는 트랜잭션에 대해 자세히 살펴보자 2편

https://babgeuleus.tistory.com/59 말만 들어도 어려워 보이는 트랜잭션에 대해 자세히 살펴보자 1편 개요 프로젝트를 진행하면서 가끔씩 service부분에서 @Transaction이 readOnly=true로 되어있어 현재 수행하는 작업 단위(save,update등)가 불가능하다는 오류가 발생했다는 에러코드가 뜹니다. 물론 제가 babgeuleus.tistory.com 이전 시간에는 트랜잭션의 특성과 상태에 대해 공부를 하였습니다. 이번 시간에는 장애와 회복에 대해 공부를 해보겠습니다. 장애와 회복 회복이란 장애가 발생하였을 때 데이터베이스를 장애가 발생하기 전의 일관된 상태로 복구시키는 것을 말합니다. 그렇다면 장애는 어떤 유형을 말하는 걸까요? 1. 트랜잭션 장애 트랜잭션의 논..

14주차 CafeMate 주문 관리 프로세스 구현

어느새 인증 구현, 메뉴구현에 이어 가장 중요하다 싶은 주문 관리 페이지를 만들어 보도록 하겠습니다. 시나리오 1. 고객이 주문을 했을 때, 직원이 주문 등록 페이지에서 쉽게 주문 정보를 입력한다. 2. 직원은 간단한 폼을 사용하여 필요한 정보(이름,연락처,주문내역 등)을 입력하도록 한다. 3. 주문 등록 페이지에 주문 상태(조리중, 조리완료, 배달중,배달완료)를 등록하고 추후 변경할 수 있도록 합니다. 4. 메뉴 품절정보를 표시하여 직원들이 주문시 품절된 품목을 확인할 수 있도록 합니다. 일단 UI를 보면 로직을 짜기 쉽기에 이런식으로 만들면 될듯 합니다. 다시 정확하게 컨트롤러에 넘길 데이터를 알기 위해 주문 테이블 스키마를 자세히 살펴보겠습니다. 그리고 팀원이 짠 OrderService 코드중 주문..

말만 들어도 어려워 보이는 트랜잭션에 대해 자세히 살펴보자 1편

개요 프로젝트를 진행하면서 가끔씩 service부분에서 @Transaction이 readOnly=true로 되어있어 현재 수행하는 작업 단위(save,update등)가 불가능하다는 오류가 발생했다는 에러코드가 뜹니다. 물론 제가 아는 바 로는 트랜잭션이 하나의 단위로 원자성 단위로 진행되기 위해 선언한다고 대충은 알고 있습니다. 하지만 트랜잭션은 기술면접에서도 중요하게 다루며 자주 생각해야하고 마주쳐야 하는 문제이기 때문에 이번 기회를 통해 자세히 살펴보려고 합니다. 이번 시간을 통해 굉장히 긴 내용으로 다루게 될것이며 학교수업과 데이터베이스 개론의 책을 보며 정리하는 글이므로 자세하게 공부하고 싶은 분은 이번 글을 통해 배워가셨으면 좋겠습니다. 트랜잭션이란 데이터베이스는 다수의 사용자가 동시에 사용하더..