본문 바로가기

전체 글

[Preproject] - [1] 4월 14일 금요일 회고 작업하고자 하는 결과물 : 스택오버플로우의 질문&답변 페이지 (=클론코딩) 작업 환경 : Spring initializer, Gradle, Java 11, Spring Boot 2.7.11, InteliJ IDE 사용한 기술 : Java11, Spring data JPA, Mysql, Spring Security(JWT방식), JUnit5, Spring Rest Docs(api specification), AWS EC2 Tools : Git, Github, Discord(프론트엔드와 소통용) 구현 방식 : RESTful API, CSR 작업 기한 : 4월 13일 목요일 ~ 4월 27일 목요일 [총 15일] extra : DB table Schema 제작용 - dbdiagram.io, chatGPT ..... 더보기
[클론코딩_스택오버플로우] pre-project 시작 ! 22년 12월 15일 부터 시작한 코드스테이츠 백엔드 학습 과정의 약 4개월간의 여정 끝나고, 드디어 pre-project 기간이 시작됬다. 약 3주간 진행되는 pre-project의 주제는 스택오버플로우의 질문&답변 페이지를 프론트엔드 과정 수강생과 협업하여 구현하는 것이다. 프론트엔드 수강생 3명, 백엔드 수강생 3명이 협업하여 클론코딩 결과물을 만들면 된다. 프로젝트 개발 진행은 CSR(Client-Side Rendering) 으로 진행되기 때문에, 화면단은 프론트 엔드 수강생들이 담당하고, 백(back)단은 우리 백엔드 수강생 3명이 담당해서 개발을 진행한다. 나는 백엔드 수강생 3명 중 팀장을 맡게 되었다. (프론트엔드 수강생 3명 중에서도 팀장 1명 선출) 정말 부족한 실력이지만 이전에 학습한.. 더보기
추상클래스 vs 인터페이스 추상클래스 추상메서드(미완성 메서드)를 1개 이상 가지고 있는 "클래스" 1. 추상클래스의 구성요소. 추상 클래스는 추상메서드를 가지고 있을 뿐이고 특성이나 내부 요소는 일반적인 클래스와 완전히 동일하다고 이해해야한다. 따라서, 일반적인 클래스가 가질 수 있는 멤버(iv, cv), 생성자, 인스턴스 메서드, 스태틱 메서드를 추상클래스 또한 마찬가지로 가질 수 있다.(추상 클래스의 구성요소가 인터페이스와의 차이점 중 핵심적인 부분이다.) 클래스의 구성요소에 단순하게 추상메서드만 추가된 것으로 이해하면 어렵지 않다. 2. 추상클래스는 객체를 만들 수 없다. 추상클래스는 추상메서드(미완성 메서드)를 가지고 있기에 추상 클래스를 바탕으로 객체를 생성할 수 없다. 설계도가 미완성인 셈이니 미완성된 설계도로 객체라.. 더보기
JVM 의 구조 및 Runtime Data area, Heap area, Stack area Java 소스코드를 작성 하여 실행시키는 순간 부터, 특정 객체 또는 변수가 GC에 의해 제거되어 생을 마감(?) 하기 까지, 메모리에서 발생되는 과정들을 간략하게 정리해보는 포스트 이다. (1) Java 소스 코드를 작성 후 실행을 시키면, Java 컴파일러가 실행되면서 Compile 이 진행된다. Compile이란 프로그래밍 언어로 작성된 소스코드를 기계가 해석할 수 있는 기계어로 변환하는 과정이다. Compile이 진행 되면, .java 파일 확장자가 .class 확장자로 바뀌며 바이트 코드 파일로 변환된다. (2) JVM은 소스코드 프로그램 실행을 위해 OS로 부터 메모리(자원)을 할당 받는다. 실행을 위해서 할당 받는 메모리의 영역이 바로 Runtime Data Area 이다. (3) Class.. 더보기
Java Virtual Machine (JVM) [부제 Java가 운영체제에 독립적인 이유?] JVM이 뭘까?? JVM은 자바 어플리케이션(프로그램)을 실행시키는 도구이다. 정확히는 컴파일러에 의해 변환된 .class 확장자를 가진 바이트 코드 파일을 해석해서 실행시키는 도구이다. 자바로 작성된 프로그램은 모두 이 JVM을 통해서만 실행되기 때문에 자바 프로그램을 실행시키기 위해서는 반드시 JVM이 필요하다. PC에서 실행되는 프로그램은(프로세스)는 실행 전, 운영체제에게 본인이 필요한 자원을 주문하고, 운영체제로 부터 프로그램 실행에 필요한 자원(메모리, 자원 등)을 할당 받는다. 그런데, 이때 프로그램이 운영체제에게 필요한 자원을 요청하는 방식이 OS 마다 다르다. WINDOW , MAC OS , LINUX 라는 다양한 OS가 존재하는 상황에서 프로그래밍 언어를 사용하여 작성한 소스코드가 모든.. 더보기
변수의 초기화 ( 자동초기화, 명시적초기화, 복잡초기화 ) 변수의 초기화란 변수의 선언으로 할당된 공간에 처음으로 값을 저장하는 것을 의미한다. 변수의 초기화를 크게 분류하면 3가지의 방법이 있다. 자동초기화 간단초기화 ( =명시적초기화) 복잡초기화 각각에 대해서 알아보자. 자동초기화 자동초기화 란, 사용자가 변수의 공간에 값을 저장하지 않았을 때 컴파일러에 의해 자동으로 값이 저장되는 것이다. 즉, 사용자가 변수를 수동으로 초기화 하지 않으면 자동으로 초기화 되는 것이다. 선언된 변수의 자료형 타입에 따라서 자동으로 초기화되는 값이 정해져 있다.(기본값 default value) 예를 들어서, int value; 이렇게 변수의 선언만 한 상태에서 변수에 값을 지정해주지 않는다면 변수 value의 공간에 int형 기본값인 0 이 저장된다. 다음 코드를 확인해 보.. 더보기
오버로딩(Overloading) 과 오버라이딩(Overriding) 오버로딩(Overloading) 오버로딩이란, 간단히 말해서 " 메서드 다중 정의 " 이다. 같은 메서드 이름으로, 동일하거나 혹은 다른 동작을 하는 메서드들을 여럿 정의하는 것이다. Java를 처음 배울 때 가장 먼저 접하는 println() 메서드 또한 오버로딩이 적용된 메서드이다. 우리가 println()의 매개변수에 문자열 타입, int 형 타입 등 여러 타입의 데이터를 넣어도 println() 메서드는 "출력"이라는 본인의 기능을 찰떡같이(?) 잘 수행한다. 메서드를 정의해보면 알겠지만, 메서드를 호출하여 매개변수에 넣을 수 있는 자료형의 타입은, 메서드를 정의할 때 매개변수에 지정해둔 특정 타입으로 알맞게 넣어야한다. 그런데 println() 메서드는 우리가 매개변수에 정수형, 문자열 등등.... 더보기
참조변수 this 와 super / 생성자 this() 와 super() / 생성자 중요개념 참조변수 this this 는 인스턴스 자신을 가리키는 일종의 참조변수이다. * this에는 인스턴스 본인의 주소값이 저장되어 있다. 참조변수를 통해서 객체의 변수에 접근할 수 있다는 사실은 당연한 개념이다. 마찬가지로, 참조변수 this 를 통해서도 객체의 변수에 접근할 수 있다. this . iv_이름 클래스를 작성 할 때, 필드에 선언된 iv를 클래스 내부에서 사용할 때, 우리는 " iv_이름 " 만으로 그 값을 사용한다. 하지만, 사실 컴파일러가 우리를 대신해서 몰래 " iv_이름 " 앞에 추가해주는 것이 있다. 바로 참조변수 this 가 컴파일러에 의해서 자동으로 추가 된다. 즉, 원래는 iv 를 클래스 내부에서 사용할 때 마다, 항상 this. 를 변수 앞에 붙여야하지만, 이를 컴파일러가 자동.. 더보기