[Java] 변수 초기화에 대한 이해
·
🛠️Backend/☕Java
문득 알고리즘 문제를 풀다 변수 초기화에 대해서 의문을 품게 되었었다. (1) 문제 발생import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int f = scanner.nextInt(); int len = Integer.toString(n).length(); String result = ""; // 의문을 갖게 된 부분 String text = ""; // 의문을 갖게 된 부분 for(int..
[Spring MVC] 요청과 응답에 대한 동작 원리
·
🛠️Backend/🌳Spring
목차 ● 1. 웹 서버 & 웹 애플리케이션 서버 ● 2. 스프링부트 환경 내장 서버 ● 1. 웹 서버란?1. 웹 서버 & 웹 애플리케이션 서버 웹 서버란?1. HTTP 프로토콜을 기반으로 클라이언트의 요청을 받아주고 정적인 리소스를 제공해주는 역할을 한다.2. 정확히는, 정적 리소스를 WAS에서 받아서 해석해서 클라이언트에게 전달해주는 역할을 한다. 웹 애플리케이션 서버란?1. 웹 서버가 존재해야지만 존재할 수 있는 서버이며, 동적인 컨텐츠를 제공해주기 위해 존재하는 서버이다.2. 동적인 컨텐츠로는 DB조회나 다양한 로직 처리 및 계산 등 처리를 해서 웹 서버로 전달을 해주는 역할을 한다.2. 스프링부트 환경 내장 서버 스프링부트는 웹 서버 & 웹 애플리케이션 서버를 합친 서버를 내..
[Java] Annotation 이란? ( 애노테이션 )
·
🛠️Backend/☕Java
(1) Annotation(애노테이션) 이란?1. Annotation 이란?- 번역기를 통해 변역을 해보면 Annotation은 "주석"이라는 의미를 뜻한다. 2. Java 에서 Annotation이란?- Java에서 Annotation은 메타데이터를 코드에 추가하기 위한 방법으로 쓰인다.- 애너테이션은 클래스, 메서드, 변수, 매개변수 등 다양한 요소에 대한 추가적인 정보를 제공하며, 이러한 정보를 컴파일러나 런타임 환경에서 활용할 수 있도록 하기 위해 사용이 된다. 3. 메타데이터란?- 코드에 부가적인 정보를 제공해주는 데이터를 메타데이터 라고 한다.- 코드에 부가적인 정보를 제공하기 위해선 애너테이션을 붙히게 되는데 애너테이션이 즉, 메타데이터이다.예시를 들면, 도서관의 책이 있고, 해당 책은 데이..
대용량 트래픽 개념 및 처리 방법
·
정리가 필요한 글
1. 대용량 트래픽 이란?- 웹 사이트, 서버 또는 애플리케이션이 처리해야 하는 데이터 전송량이나 사용자 요청의 수가 매우 큰 상태를 의미함- 일반적으로는 수백만 명 이상의 동시 사용자, 또는 초당 수천 건 이상의 요청을 처리해야 하는 상황을 의미함 2. 대용량 트래픽 처리하는 방법(1) 서버 확장 방식1. 수평적 확장( scale-out )- 서버의 수를 늘리는 개념이고 주로 로드 밸런서가 중간에서 트래픽을 부하분산을 해 서버의 성능을 올린다2. 수직적 확장( scale-up )- 서버의 성능을 올려주는 개념이고 주로 CPU, 메모리 등 하드웨어 부품의 교체로 성능을 올리는 것을 의미한다. (2) 로드 밸런싱서버와 클라이언트 간의 트래픽을 중간 매개체인 로드밸런서를 만들어 트래픽을 부하해 성능 유지 또..
[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정보교육원 이렇게 세개가 유명하다는 걸 알게되었고, 각각 리뷰를 확인해보니 쌍용은 비전공자가 들어가기 좀 어렵다는 ..