반응형
목록
Spring (68)
[꼼꼼한 개발자] 꼼코더
🔨 정적 페이지 만들기 resources/static/경로에 index.html을 만들어 놓으면 welcome page로 인식한다. 💡Welcome Page란? 💡 정적페이지란? 도메인만 누르고 들어올 때의 첫 화면 파일을 던저주면 그 파일을 그대로 보여주는 페이지. index.html파일 안에 코드를 작성한다. 2. 서버 재시작(코드수정 시 필수 작업) 후 브라우저를 새로고침 하여 확인한다. 🔨 동적 페이지 만들기 hello.hellospring 아래에 controller라는 패키지를 생성 > controller 패키지 안에 HelloController(자바 클래스)파일을 생성 💡 컨트롤러란? web application에 첫 진입점을 말한다. @Controller 어노테이션 작성을 해줘야 한다. 2...
👀 라이브러리 살펴보기 build.gradle(사진 좌)를 보면 3가지의 라이브러리를(thymeleaf, web, test) 확인할 수 있다. 하지만 실제 라이브러리를 확인할 수 있는 External Libraries폴더에(사진 우) 들어가 보면려면 많은 라이브러리들이 보인다. 내가 받아오지 않는 라이브러리들도 다수 확인 된다. 이유는 gradle이나 maven같은 build 툴들은 의존관계를 전부 관리해 준다. 예시로 starter-web 라이브러리를 당겨오면 필요한 tomcat, spring web과 같은 필요한 다른 의존관계의 것들을 모두 당겨온다. 요즘은 Web Application을 만들려면 많은 라이브러리가 필요하다. 💡 Gradle, maven 같은 툴들은 의존관계가 있는 라이브러리를 함께 ..
🙋🏻♂️ 생성한 프로젝트 속 폴더의 구성과 역할들을 알아보자 .idea : IntelliJ 에서 사용하는 설정 파일 gradle/wrraper : gradle관련해서 gradle를 사용하는 폴더 src/main/java : 실제 패키지와 소스파일이 담겨있다 . src/main/resources : xml과 html같은 설정 파일이 들어간다. src/test : 테스트 코드들과 관련된 소스들이 들어간다 요즘 개발 트랜드에서 중요하다. 🧱 bulid.gradle 폴더는? 버전을 설정하기, 라이브러리를 내려받는 것. 예전에는 위 사진 속 코드를 하나하나 전부 코딩해야 한다. 현재는 spring.io 홈페이지에서 설정파일까지 제공이 된다 된다. 자세히 보면 프로젝트 생성때 선택했던 2.6.7 버전과 자바 언어..
❓필드 vs 속성, 함수 vs 메서드 필드는 영어, 속성은 한글, 함수는 한글, 메서드는 영어? 그렇다면 한글 → 영어, 영어 → 한글로 바꿔보자. 필드 → 지역 속성 → 프로퍼티 함수 → 펑션 메서드 → 방법 눈치챘을지 모르지만 함수라는 말과 메서드라는 말을 둘 다 사용해도 괜찮다. 하지만 객체 지향 프로그래밍을 배울 때 늘 비교되는 것이 절차적 / 구조적 프로그래밍이다 절차적 / 구조적 프로그래밍에서 전역변수를 필드라고 불렀고 기능적 요소를 함수라고 불렀다. 객체 지향 프로그래밍에서 같은 일을 하지만 이름을 그대로 따라 쓰자니 차별화가 없다고 생각했나 보다. 그래서 객체지향에서는 전역변수는 프로퍼티라고 부르고 함수를 메서드라고 부르기 시작했다. Field = 필드 = 속성 = 프로퍼티 = Proper..
👀 멀티 스레드(Multi Thread) 멀티 스레드의 T 메모리 모델은 스택 영역을 스레드 개수만큼 분할해서 쓰는 것이다. 멀티 스레드는 하나의 T 메모리만 사용하는데 스택 영역만 분할해서 사용하는 구조이다. 멀티 스레드는 하나의 스레드에서 다른 스레드의 스택 영역에는 접근할 수 없지만 스태틱 영역과 힙 영역은 공유해서 사용하는 구조이다. 따라서 멀티 프로레스 대비 메모리를 적게 사용할 수 있는 구조이다. 👀 멀티 프로세스(Multi Process) 멀티 프로세스는 다수의 데이터 저장 영역, 즉 다수의 T 메모리를 갖는 구조다. 멀티 프로세스는 각 프로세스 마다 각자의 T 메모리가 있고 각자 공유의 공간이므로 서로 참조할 수 없다. 멀티 프로세스는 하나의 프로세스가 다른 프로레스의 T 메모리 영역을 절..
🎁 지역 변수와 메모리 : 스택 프레임에 갇혔어요! 질문을 해볼 테니 답을 해보자 질문) “변수는 메모리에 있다” 답 > “예” 정답이다. 그렇다면 또 다른 질문을 해보겠다. 질문 > “변수는 T 메모리 구역(스태틱, 스택, 힙) 중 어디에 있을까? 답 > “세군데 모두” 정답이다. 그런데 세 군데 각각에 있는 변수는 각기 다른 목적을 가진다. 그리고 각각의 이름도 지역변수, 클래스 멤버 변수, 객체 멤버 변수로 다르다. 🏞 지역 변수 지역변수는 스택영역에서 일생을 보낸다. 그것도 스택 프레임 안에서 일생을 보낸다. 따라서 스택 프레임이 사라지면 함께 사라진다. ⚡️ 클래스 멤버 변수 클래스 멤버 변수는 스태틱 영역에서 일생을 보낸다. 스태틱 영역에 한 번 자리를 잡으면 JVM이 종료될 때까지 고정된(s..
👀 변수와 메모리 : 변수! 너 어디 있니? 👨🏻💻 예제코드 코드 실행의 5번째 줄 실행 후 T메모리 상황은 아래와 같다(종이와 펜을 가지고 그려볼 수 있어야 한다.) 6번째 줄 실행 시 변수 공간을(i) 마련한다 7번째 줄 실행시 i 변수 공간에 10을 저장된다. 9번째 줄은 d라는 ‘변수 공간이 마련’ 되는 즉시 ‘20.0’라는 값을 저장한다. 이때 중요한 점은 명령문이 '한 개가 아닌 두 개'이다. 10번째 줄은 닫는 중괄호호 ‘}’ main 메서드 스택 프레임이 스택 영역에서 사라진다. (프로그램 종료) 🧱 블록 구문과 메모리 : 블록 스택 프레임 👨🏻💻 예제 코드 6번줄 까지 실행한 후 T 메모리 그림이다 8번째 구문에서 실행할 부분은 if 블록이다. i가 10이 맞으면(true). if 블..
🔎 다시 보는 main() 메서드 : 메서드 스택 프레임 main() 메서드는 프로그램이 실행되는 시작점이다. main() 메서드가 실행될 때 메모리, 특히 T 메모리에서는 어떤 일이 일어날까? 아래 예제 Start.java가 한 줄씩 실행될 때마다 T 메모리가 어떻게 변화하는지 살펴보자. T 메모리 구조는 그림과 같다. 그림에서는 어떤 요소들이 각 영역을 사용하게 될지 비유적으로 표현했다.(해당 비유를 잘 기억하고 외우자) JRE는 먼저 프로그램 안에 main() 메서드가 있는지 확인. 존재한다면 JRE는 프로그램 실행을 위한 사전 준비, 다시 말 해 가상의 기계인 JVM에 전원을 넣어 부팅. 부팅된 JVM은 목적파일을 받아 그 ‘목적 파일을 실행’. JVM은 가장 먼저 java.lang 패키지를 T메..