31일차 MVC, 자바심화-JVM

LeeJaewon·2022년 11월 30일
0

MVC

Model - View - Controller

Model

  • 모델은 앱이 포함해야할 데이터가 무엇인지를 정의합니다. 데이터의 상태가 변경되면 모델을 일반적으로 뷰에게 알리며(따라서 필요한대로 화면을 변경할 수 있습니다) 가끔 컨트롤러에게 알리기도 합니다(업데이트된 뷰를 제거하기 위해 다른 로직이 필요한 경우).
  • 모델(model)이란 어떠한 동작을 수행하는 코드를 말한다. 표시 형식에 의존하지 않는다. 다시 말해, 사용자에게 어떻게 보일지에 대해 신경쓰지 않아도 된다. 모델은 순수하게 public 함수로만 이루어진다. 몇몇 함수들은 사용자의 질의(query)에 대해 상태 정보를 제공하고 나머지 함수들은 상태를 수정한다.

View

  • 뷰는 앱의 데이터를 보여주는 방식을 정의합니다.
  • MVC에서 모델은 여러 개의 뷰(view)를 가질 수 있다. 뷰는 보여줄 값(모델)을 컨트롤러로부터 받아와 사용자에게 보여준다.

Controller

  • 컨트롤러는 앱의 사용자로부터의 입력에 대한 응답으로 모델 및/또는 뷰를 업데이트하는 로직을 포함합니다.
  • MVC의 뷰는 여러 개의 컨트롤러(controller)를 가지고 있다. 사용자는 컨트롤러를 사용하여 모델의 상태를 바꾼다. 컨트롤러는 모델의 mutator 함수를 호출하여 상태를 바꾼다. 이때 모델의 상태가 바뀌면 모델은 등록된 뷰에 자신의 상태가 바뀌었다는 것을 알리고 뷰는 거기에 맞게 사용자에게 모델의 상태를 보여 준다.

자바심화 강의를 듣고 JVM에 대해서 공부했다.

JVM

  1. JVM의 구조
    업로드중..

위 그림에서 JVM에 대해서 공부했다.


Class Loader System
클래스 파일에 들어있는 정보가 클래스 로더에 의해 Method Area에 올라간다.
Bytecode - JVM이 알아들을 수 있는 명령어 집합. JVM의 목적은 Bytecode를 기계어로 번역해서 CPU에게 작업을 시키는 것.
Bytecode를 기계어로 번역하는걸 Interpreter가 수행
Runtime Data Areas
5가지 요소로 구성되어 있음.

Runtime Data Area

  1. Method Area
    Class에 대한 정보가 저장되어 있는 영역.

  2. Heap
    런타임에 생성되는 모든 객체들이 저장 (GC)
    Method Area & Heap은 모든 스레드가 공유하는 영역. 멀티스레드 프로그래밍을 할 때 동기화에 주의해야 하는 영역.

  3. JVM Stacks(Java Threads)
    Method를 실행하기 위한 정보들이 저장되는 공간.
    Frame이란 자료구조가 들어감. Frame은 Method가 하나 호출될 때마다 새로 생김 Method가 끝나거나 예외처리가 될 경우 사라짐.

  4. Program Counter Registers
    현재 실행되고 있는 명령어의 주소를 저장하고 있는 곳.

  5. Native Method Stacks
    C, C++로 작성된 Method를 실행할 때 사용되는 스택.
    JVM Stacks & Program Counter Registers & Native Method Stacks 이 세 개의 영역은 스레드가 생성 될 때마다 같이 생성 됨. 서로 다른 스레드가 침범할 수 없는 영역.
    하나의 Method안에서 지역변수의 동시성 문제를 걱정하지 않아도 되는 이유.
    업로드중..


profile
한 걸음 한 걸음 꾸준히

0개의 댓글