스프링과 패키지 이름(제어의 역전)
스프링부트에서 패키지를 만들때에는 이름을 com.seo.blog 이하로 만들어야 한다.
스프링은 제어의 역전을 해서 스프링이 직접 객체를 new해서 메모리에 띄우기 때문이다.
싱글톤 패턴 : 레퍼런스 변수를 스프링이 관리해주겠다는 것
기존의 자바에서는 클래스를 new 하면 메모리 안에 공간을 만들고 클래스 변수가 가리키게 된다.
클래스의 메소드는 스택 메모리에 띄워지며 호출이 되면 메모리 안에 만들어지고 호출이 종료되면 메모리에서 사라진다.
- 지역변수 -> 스택
- 전역변수 -> 힙
스택에서 객체를 만들면 결국 지역변수가 관리하기 때문에 다른 스택에서 공유하여 사용할 수 없고, 메소드 내의 변수에 접근하기가 어려워진다. 따라서 전역변수로 선언해서 힙으로 관리하는 등의 방법을 사용하는데, 이런 방법은 복잡하기 때문에 스프링에서 대신 객체를 new 해서 스프링 컨테이너에서 관리해주는 제어의 역전이 일어나게 된다.
제어의 역전은 스프링이 초반에 컴포넌트 스캔을 하고,
(어떤 패키지가 있을때 그 패키지 이름 이하를 전부 스캔해서 필요한 것들을 메모리에 로드 - IOC - 싱글톤 패턴으로 관리하게 된다)
그 기준이 만들어진 패키지의 이름이며, 위에서 본 com.seo.blog로 이름을 정했다면 그 이하로만 스프링이 스캔을 한다.
다른 이름이면 스프링이 스캔하지 않기 때문에 메모리에 띄우지 않는다.
UTF-8
1비트는 전기가 흐르는 하나의 박스로 1 또는 0 하나의 값을 가진다. 즉 경우의 수가 2개이며 나타낼 수 있는 최대의 수는 2개이다.
박스가 3개이면 경우의 수는 8이 되며, 박스가 8개이면 경우의 수는 256이 된다.
비트로 문자를 표현한다면 00은 A, 01은 B, 10은 C, 11은 D와 같이 표현하는 약속이 있다. 모든 알파벳과 숫자, 한글과 같은 여러 문자, 기호들을 다 표현하기 위해서는 약 8비트가 필요하다(8비트= 256개의 경우의 수 = 하나의 문자)
문자와 기호들을 표현하는 약속된 코드표를 아스키코드 표라고 한다. 아스키코드 표를 통해 영어 데이터를 전송할 수 있따. 8비트가 있으면 영어 한 문자를 표현할 수 있으며 이것을 1바이트라고 부른다.
영어가 아닌 한글을 표현하기 위해서는 최소 2바이트가 필요하며, 중국어는 최소 3바이트가 필요하다.
따라서 전 세계의 표준이 나오게 되는데 이것이 UTF-8이다. 데이터를 전송할 때 3바이트로 문자를 전송하게 된다.
'JAVA > Spring' 카테고리의 다른 글
http의 요청방법과 통신방식, header와 body (0) | 2022.02.17 |
---|---|
프로젝트 만들기 (0) | 2022.02.17 |
스프링 컨테이너 (0) | 2022.01.08 |
스프링부트 JPA 개념잡기 (0) | 2022.01.08 |
web.xml과 FrontController 패턴 (0) | 2022.01.06 |