[Java] JVM 동작 원리
·
🛠️Backend/☕Java
IDE는 자바 프로그램의 실행 명령어들을 대신 입력을 해주어 명령어를 몰라도 코드를 실행 할 수 있게 해준다. 이러한 추상화 덕분에 편리하지만 이러한 지식 없이 자바를 공부한다면 공부의 효율성이 떨어질 수 있다는 단점이 있다. JVM(Java Virtual Machine) 동작 원리JVM은 "java ClassName" 명령어를 통해 실행을 시킬 수 있게 된다. ClassName은 반드시 main 메서드가 들어있는 주 클래스여야 한다. JVM이 실행이 된 후 JVM의 부트스트랩 클래스 로더가 필요한 클래스 파일인 java.lang 패키지의 클래스 파일들을 먼저 로드 해준다. 이후, 애플리케이션 클래스 로더가 main 메서드 주 클래스를 로드를 해주게 된다. 이러한 과정이 다 끝나면, JVM은 main 메..
[Spring Framework] IoC 컨테이너 & Bean 개념 이해 하기
·
🛠️Backend/🌳Spring
1. IoC Container ( 스프링 컨테이너 )앞서 살펴본 IoC는 "제어의 역전", IoC Container에게 제어의 권한을 넘긴다고 설명을 했었다. IoC Container는 객체를 의존성 주입을 시켜주기 위한 객체들을 모두 컨테이너에 넣어서 보관을 하게 된다. 해당 컨테이너는 내부의 객체들을 관리합니다. 과정으로는 먼저 컨테이너에 의해 인스턴스화 되고, 인스턴스화 된 객체들은 의존성 주입이 자동으로 됩니다.이렇듯, IoC Container는 Bean(객체) 들을 관리하며, 자동으로 의존성을 주입해주는 역할을 한다. * IoC Container가 관리하는 객체들은 모두 Bean이다. - IoC 컨테이너는 자바의 객체로써 존재한다.- 대표적인 구현체로는 BeanFactory 와 이를 확장한 인터..
[Spring Framework] IoC & DI 개념 이해 하기
·
🛠️Backend/🌳Spring
1. IoC (Inversion of Control)Inversion of Control의 뜻은 "제어의 역전"이다. 여기서 말하는 제어는, 객체를 직접 생성하거나 찾는 방식에서 벗어나 Spring Framework의 IoC 컨테이너 에게 제어의 권한을 넘김으로써, IoC 컨테이너가 필요할 때 알아서 객체를 생성하고 필요한 의존성을 알아서 주입을 해주는 방식을 의미한다.- 객체의 제어를 외부에서 담당하게 한다는 폭 넓은 개념- IoC Container에게 제어 권한을 넘긴다는 개념 * IoC Container : Spring Framework가 의존성 주입을 자동을 해주기 위한 "Bean"들의 집합과 "Bean"들을 관리해주는 공간이다.* Bean : Spring Framework가 관리하는 객체들을 "..
[Spring Framework] Spring & Spring Framework 차이
·
🛠️Backend/🌳Spring
✅ 1. Spring 이란?DI (Dependency Injection) / IoC (Inversion of Control) 같은 개념과, 그 개념을 구현한 프레임워크 전체를 아우르는 용어즉, Spring 은 Spring 생태계 전체를 포괄하는 용어이다.이 생태계에는 Spring Data JPA, Spring MVC, Spring Security 등이 포함이 되어 있음.✅ 2. Spring Framework 란?위의 DI 와 IoC 개념을 바탕으로 만든 프레임워크이다.프레임워크: 개발자가 애플리케이션을 만들 때 따라야 하는 일정한 규칙을 틀로 만들어 놓은 것을 의미한다. 규칙을 만들어 놓은 이유는, 해당 틀에서 개발을 하면 스프링의 모든 모듈이나 기능들을 알 필요없이 개발이 가능하기 때문이다. 매우 효율..
[Java] 클래스와 객체의 정의
·
🛠️Backend/☕Java
(1) 클래스와 객체 붕어빵틀? 붕어빵?클래스와 객체를 설명할 때 붕어빵틀과 붕어빵으로 주로 예시를 든다. 해당 예시는 솔직히 처음 배우는 입장에서는 전혀 예시를 통해 이해를 하기가 쉽지는 않을 것이다. 예시를 든 이해보다는 정확한 이해를 하기 위해 여기서 예시는 생략한다. (2) 클래스와 객체란?클래스란?자바 언어를 활용해 코드를 작성하다 보면, 해당 코드를 작성할 파일이 필요하다. 해당 파일 내부에 class 키워드가 붙으면 해당 파일은 자바 소스코드를 작성할 수 있는 클래스 파일이 된다. 이것이 클래스이다. 객체란?자바에서는 new 키워드를 이용해 객체를 생성할 수 있다. 런타임에 하나의 클래스를 가지고 동일한 객체들을 여럿 생성할 수 있게 된다. 즉, 객체는 클래스의 정보를 토대로 동적으로 만들어..
KH정보교육원(종로) 국비 자바 개발자 과정 수료 후기
·
정보
( 이 글은 개인적인 생각이라 다 맞는건 아니라고 생각합니다. 그냥 참고만 하셨으면 좋겠습니다! ) 국비 과정 수료 후기를 남기도록 하겠습니다.일단 후기에 앞서 저는 23년도 1월부터 6월까지 총 6개월 가량 수업을 들었고, 과정에서 세미프로젝트 및 파이널프로젝트 이렇게 총 2개를 진행했습니다. 당시 저의 나이는 23살 고졸이라 비전공자로 지식이 없던 상태로 수업을 진행하게 되었습니다. 참고로 저는 현재는 국비 학원(KH) 1곳과 국비 캠프 1곳 총 2곳을 다닌 상태입니다! 1. KH정보교육원을 다니게 된 이유일단 처음 알아 볼 당시 국비 학원으로 유명한 학원인 비트캠프, 쌍용교육센터, KH정보교육원 이렇게 세개가 유명하다는 걸 알게되었고, 각각 리뷰를 확인해보니 쌍용은 비전공자가 들어가기 좀 어렵다는 ..
EduWithMe-Project
·
⛺스파르타코딩클럽
프로젝트 목차1. 프로젝트 개요2. 담당 역할3. 트러블 슈팅4. API 명세서5. ERD6. 아키텍처 설계1. 프로젝트 개요프로젝트 정보● 프로젝트 명 : EduWithMe● 인원 : 4명● 작업 기간 : 총 28일 ( 2024.07.20 ~ 2024.08.20 )● Project / Git-Hub : https://github.com/five-star-school/eduWithMe-backend 서비스 설명모든 연령과 배경의 사용자들이 언제 어디서나 접근할 수 있는 개인 맞춤형 학습을 통해 성장하며, 선생님과 학생 간의상호작용을 강화하고 학습 동기를 높이는 교육 플랫폼입니다.2. 담당 역할[1] 실시간 채팅 기능1. 실시간 채팅 기능 구현 목적실시간 사용자 상호작용 필요성:- 사용자들이 실시간으로 문..
내일배움캠프 66일차 TIL - 최종 프로젝트( D-2 )
·
⛺스파르타코딩클럽
2024.07.19🔥오늘의 공부🔥    ●  1. 최종 프로젝트 ( D-2 ) 최종 프로젝트에 대한 마음가짐 및 목표드디어 최종 프로젝트 단계에 들게 되었습니다. 기존에는 리더를 한번도 안해봤지만 마지막인 만큼 제대로 해보자는 생각에 리더를 신청하여 팀의 리더가 되었습니다. 리더라는 무게감을 느끼고 팀원 누구보다 열심히 해야하겠다는 마음가짐으로 프로젝트에 임할 생각이며, 팀으로써 프로젝트를 무사히 마치는 것이 목표이며, 개인적으로써는 다양한 기술들을 접함으로써 많은 실력 향상이 목표입니다. 🎇프로젝트 기획🎇     ●  팀명 : 5성 스쿨     ●  프로젝트 명 : EduWithMe     ●  주제 : 교육  웹 사이트     ●  소개 : 방을 만든 관리자가 문제를 출제하여 방에 입장한 일반..
내일배움캠프 62일차 TIL - JPA(CascadeType, OrphanRemoval)
·
⛺스파르타코딩클럽
2024.07.15🔥오늘의 공부🔥    ●  1. CascadeType    ●  2. orphanRemoval Entity간 관계를 정의할 때 사용될 수 있는 설정 1. CascadeType ( 영속성 전이 )Entity 클래스 중 @OneToMany인 1에 해당하는 부모클래스에게 줄 수 있는 옵션으로, 해당 옵션은 연관 관계가 맺어져 있는 자식 엔티티에 부모 엔티티의 영속성 상태를 전이를 시켜주는 옵션이다. 해당 옵션을 사용하면, 아래 해당 이미지에서는 REMOVE 옵션을 사용하고 있지만, 저장, 병합, ALL 등 다양한 옵션이 있지만 여기서는 REMOVE만을 다루겠다.아래 옵션을 사용하게 되면 부모 엔티티가 삭제 될 때, 자식 엔티티도 같이 삭제를 도와준다. 즉, 영속성을 전이 시켜준다. 2. ..
내일배움캠프 61일차 TIL - 쿼리 최적화
·
⛺스파르타코딩클럽
2024.07.12🔥오늘의 공부🔥    ●  1. ㅇㅇㅇㅇ  최적화주어진 자원(시간, 하드웨어 등)과 같은 제약조건 내에서 최선의 결과(속도 향상, 비용 감소 등)을 도출하기 위해 전체 시스템 또는 코드 구조를 재설계하거나 개선하는 과정을 최적화라고 칭한며, 특정 부분의 성능을 개선하여 전체 성능을 향상하는 것을 목표로 한다. 정리하면 최소한의 자원을 이용해 성능을 향상 시킨다는 것을 최적화라고 칭한다. 최적화 전략1. 성능 측정 : 최적화 전후의 성능을 객관적으로 측정하고 비교합니다.2. 점진적 적용 : 한 번에 많은 변경을 하기보다는 단계적으로 최적화를 진행합니다.3. 모니터링 : 최적화 후 시스템의 전반적인 성능과 안정성을 지속적으로 모니터링 합니다.4. trade-off 고려 : 성능 향상과 ..