멋쟁이사자처럼 오늘 공부 후기 챌린지 - 백엔드 자바 편
이런 고민을 하고 있다면, 지금 이 순간에도 멋쟁이사자처럼에서 백엔드 자바 부트캠프를 수강하며 자신만의 속도로 성장 중인 수강생들을 주목해보세요.
배우고 잊어버리는 건 누구나 겪는 일이에요. 하지만 멋쟁이사자처럼 부트캠프는 단순히 배우는 것에 그치지 않고, 배운 내용을 내 것으로 만드는 방법까지 고민하고 있어요. 그렇다면, 배운 것을 가장 효과적으로 습득하는 방법은 무엇일까요? 바로 기록하고 정리하는 것이죠. 배운 내용을 정리하고 기록하면, 기억은 오래 남고 실전에서도 활용할 수 있으니까요!
멋쟁이사자처럼 부트캠프는 수강생들이 배운 내용을 정리하고 공유할 수 있도록 TIL (Today I Learned) 블로그 챌린지를 진행하고 있어요. 그래서 오늘, 강사님과 멘토님에게 배운 내용을 체계적으로 기록하며 성장하고 있는 수강생의 이야기를 가져왔어요. 작고 사소해 보일지라도 배운 내용을 정리하고, 기록하면서 성장한 이들의 소중한 경험을 지금 확인해 보세요.
System.out.println() : System클래스의 out객체의 println메소드
a()은 함수 b.a()는 메서드(b 객체이면 인스턴스 메서드. 클래스이면 정적 메서드)
연산자(. ->)를 사용해 객체의 멤버에 접근(귀속연산자. 포인트연산자)
참조관계 = 주소를 통해 연결한 상태에서 CRUD할 수 있는 상태(참조. &역참조). 클래스 다이어그램에서 사각형은 클래스를 나타내며, 클래스의 이름, 속성(필드), 메서드가 포함됩니다.
OS는 프로그램이 실행될 때 프로세스 단위(thread)로 메모리를 할당한다
JVM도 하나의 프로세스이고 OS로부터 메모리를 할당받아서 그 안에 힙, 스택등을 구성한다
OS는 일반적으로 힙을 활용해서 JVM 힙 영역을 만들고 OS의 스택을 활용해서 JVM stack을 만든다
JVM은 OS와 독립적인 것처럼 보이지만 OS의 자원을 사용한다
Tool+exe+M/m으로 구성되어 있다
exe를 받으면 플랫폼에 종속적이고 받지 않으면 플랫폼에 독립적이다(독립적이면 os의 cs, ds를 사용하지 않는다)
cs, ds를 통해 실제 메모리 주소를 리턴받을 수 있다
JVM은 독립적으로 OS의 static, heap, stack만 사용한다
OS Memory Map(M/m)
cs = Code segment
ds = Data segment
static = 정적 바인딩(static, class + struct, union, function)
heap = 동적 할당
stack = 고정 값 관리
int main() {
static int a = 100;
float f = 6.7f;
return 0;
}
cs에 코드를 ds에 &a, &f를 static에 100을 stack에 6.7f를 저장한다
heap은 할당되는 메모리 위치가 동적으로 이루어진다(프로그램이 실행할 때 다른 프로그램이 실행되지 않는 공간을 찾아서 실행된다)
new 연산자로 메모리 할당하고 실행이 끝나면 가비지 컬렉션이 메모리 할당 해제
JVM : 자바 프로그램 실행하는 실행 환경
JVM 메모리 구조
메소드 영역 : 클래스 정보
힙 : 객체 배열. 참조형
스택 : 메소드 호출할 때 사용되는 지역변수.매개변수.리턴 값등
레지스터PC Register : 현재 실행중인 명령어의 주소 저장
Native Method Stack : 자바가 아닌 네이티브 코드(c,c++) 실행
클래스 : 패키지 내에서 실제로 작동하는 개체들. 기능+속성
패키지 : 각 모듈 안에서 세부 구분
모듈 : 큰 기능과 목적을 가진 범위
프로젝트 : 여러 개의 모듈. 패키지를 실행되는 단위 프로세스
Project > Module > Package > Class
Java
객체지향 프로그래밍 언어로 Oracle에서 관리하며 플랫폼에 독립적이며 Java Virtual Machine에서 실행된다(독립적이므로 OS의 저장이 아닌 가상머신 사용 자신만의 메모리)
JDK 21(Java Development Kit)
가용성과 호환성을 갖추고 있다
패턴 매칭 기능 확장 : switch, instanceof의 패턴 매칭 향상
새로운 스트림 템플릿 도입
레코드 패턴 : 복합 객체의 데이터 추출 간소화
스코프 로컬 변수 : 멀티 스레드 환경에서 데이터 전파를 쉽게 처리
JDK = JRE(Java Runtime Environment) + JDT(Java Development Tools)
Java SE(Standard Edition)
자바의 기본적인 플랫폼, 데스크톱, 서버, 임베디드 시스템 등에서 사용되는 자바 애플리케이션을 개발하기 위한 필수 라이브러리 제공
Jakarta EE(Enterprise Edition) <- Java EE
Java SE을 기반으로 하여 java Community Process를 통해 표준화
분산 서버측 구성요소 모델 EJB 마이크로서비스(MSA)로 대체
OpenJDK 종류 : Oracle, Adopt, Amazon, Red Hat, Azul
프로그램설치 위치와 프로그램 호출 위치가 다르기 때문에 path위치를 설정해준다
spring boot를 위해 Java SE 21버전을 사용할 예정이다
앞으로는 Github Repository에 push하면 Jenkins에 webhook을 전달하고 Gradle을 빌드하고 Dockerhub에 push, pull하여 이미지를 Amazon EC2로 가져와 spring boot로 run하는 과정을 다루어 볼 예정이다!
공부는 배울 때 끝나는 게 아니라, 되새기고 활용할 때 완성돼요. 그런 의미에서 오늘 소개한 이야기는 단순한 후기가 아니라, 학습을 더 효과적으로 만들고 나만의 것으로 만드는 과정이었을 거예요. 여러분도 배운 내용을 정리하고, 더 오래 기억하는 습관을 만들어 보세요. 작은 차이가 결국 큰 결과를 만들 테니까요!
내가 배운 것을 글로 정리하는 것이 처음에는 어렵게 느껴질 수도 있지만 멋쟁이사자처럼과 함께 꾸준히 기록하다 보면 스스로 변화하고 있다는 걸 깨닫게 될 거예요. 자! 이제 여러분 차례에요. 언제나 여러분의 곁에는 멋쟁이사자처럼이 있으니 고민하지 말고 배움을 기록하고, 성장의 발자취를 남겨보세요!
홈 : 멋사 부트캠프
멋쟁이사자처럼의 13년 교육 노하우로 IT 취업의 꿈을 현실로!

