본문 바로가기

Dev68

『Java』 for-each 문을 사용하기 위한 인터페이스는 무엇인가? for-each 문을 사용하기 위해서는 Iterable 인터페이스를 구현해야 한다. 자바 컬렉션 프레임워크의 클래스들은 Iterable 인터페이스를 구현하여 iterator() 메서드를 제공하며 이를 통해 요소들을 순회할 수 있다.  for-each for-each 문은 배열이나 컬렉션과 같은 반복 가능한 객체를 순회(iterate) 하기 위한 간단한 문법을 제공한다.   Iterable Interface for-each 문을 사용하려면 대상 객체가 Iterable 인터페이스를 구현해야 한다. Iterable 인터페이스는 java.lang 패키지에 위치하며 제네릭 인터페이스로 Iterator iterator() 메서드를 선언하고 있다.   Iterable Interface 구조iterator() 메서.. 2024. 11. 19.
『Java』 생성자와 static 블록은 무엇이 다를까? 생성자와 static 블록은 객체와 클래스의 초기화를 담당하는 요소다. 이 둘은 초기화 시점과 적용 범위에서 차이가 있으며 각기 다른 목적을 가지고 있다.  static 블록클래스 로딩 시점에 한 번만 실행되며 클래스 수준에서의 초기화 작업에 사용된다.주로 static 변수의 초기화에 활용된다.인스턴스 생성과는 무관하게 클래스가 메모리에 로드될 때 실행된다. 위 예제에서 static 블록은 MyClass가 로딩될 때 실행되며 staticVariable을 초기화한다.   생성자객체가 생성될 때마다 호출된다.인스턴스 변수의 초기화나 객체 생성 시 필요한 설정을 담당하며, 오버로딩을 통해 다양한 생성자를 정의할 수 있다.반환 타입이 없으며 클래스 이름과 동일한 이름을 가진다.  생성자는 객체가 생성될 때마다 .. 2024. 11. 19.
『Spring Core』 Bean Scopes Bean Scope 스프링 프레임워크에서 빈 스코프란 빈이 생성되고 유지되는 범위를 의미한다. 빈이 얼마나 오래, 어떤 범위에서 유지될지를 결정한다. 스프링은 다음과 같은 빈 스코프를 제공한다.  싱글톤 (Singleton)기본 스코프로, 스프링 컨테이너 시작부터 종료까지 빈이 유지된다. 프로토타입 (Prototype)요청 시마다 새로운 빈 인스턴스를 생성하며, 생성과 의존관계 주입까지만 컨테이너가 관리한다. 웹 관련 스코프request: HTTP 요청이 시작되고 끝날 때까지 빈이 유지된다.session: 세션이 활성화되는 동안 빈이 유지된다.application: 서블릿 컨텍스트와 동일한 범위로 빈이 유지된다.   Singleton Scope 싱글톤 스코프는 스프링의 기본 스코프이므로 별도의 설정 없이.. 2024. 11. 19.
『DataBase』 Oracle SQL 중급 문법 Oracle SQL 기초 문법에 이어서 Oracle 중급 문법을 살펴보자.기초 문법에서 Oracle에서 제공해 주는 기본적인 내장 함수들 몇 개를 살펴봤다. 중급 문법에서는 실질적으로 실무에서 자주 사용하는 문법에 대해 알아보자.  GROUP BY GROUP BY 절은 쿼리 결과를 지정한 표현식(expression)에 따라 그룹으로 묶어 집계 작업을 수행할 때 사용한다. 각 그룹에 대해 하나의 행을 반환하며 집계 함수와 함께 사용하여 그룹별 통계 값을 얻을 수 있다.  department_id별로 그룹화한 후 HAVING 절을 사용하여 평균 급여가 5000 이상 인 부서만 선택한다.   GROUP BY 확장 기능 Oracle SQL은 그룹화 및 집계 작업을 더욱 유연하게 수행할 수 있도록 ROLLUP,.. 2024. 11. 18.
『DataBase』 Oracle SQL 기초 문법 MySQL, MariaDB만 사용해 왔는데 어쩌다 보니 Oracle을 사용하게 되었다.다음에 진행할 프로젝트에서 ORM을 사용할지 Mapper를 사용할지 결정된 게 없기 때문에 우선 Oracle 기초 문법부터 살펴보자.  SELECT문과 별칭 사용DISTINCT 키워드를 사용하여 조회 결과에서 중복된 행을 제거할 수 있다.AS 키워드를 사용하여 열이나 테이블에 별칭을 지정할 수 있다.  날짜 함수NEXT_DAY(date, char): 주어진 날짜 이후의 다음 특정 요일의 날짜를 반환한다.ADD_MONTHS(date, n): 주어진 날짜에 n개월을 더하거나 뺀다.MONTHS_BETWEEN(date1, date2): 두 날짜 사이의 개월 수를 계산한다.  조건문(CASE) 사용 CASE 문은 SQL에서 조건.. 2024. 11. 18.
『Java』 Exception 처리, 맛보기 Exception 계층자바에서 Exception은 프로그램 실행 중에 발생할 수 있는 문제를 처리하기 위한 메커니즘이다.Exception은 크게 Checked Exception과 Unchecked Exception으로 분류된다. 자바의 예외 처리는 다음과 같은 키워드를 사용하며 try, catch, finally, throw, throws예외를 다루기 위한 예외 처리용 객체 또한 제공한다. 객체설명Object- 자바에서 기본형을 제외한 모든 것은 객체다. - 예외도 객체다. - 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object다.Throwable- 최상위 예외다. 하위에 Exception과 Error가 있다.Error- 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에.. 2024. 11. 8.
『Spring Core』 Bean LifeCycle Spring에서 왜 Bean 등록이 필요할까?Spring에서 Bean은 Spring의 IoC(Inversion of Control) 컨테이너에 의해 관리된다. 빈을 등록함으로써 Spring Container는 빈의 생명주기를 관리하고 필요한 곳에 의존성 주입(DI)을 통해 제공할 수 있다.  쉽게 생각해서 의존성 주입과 같은 기술을 편리하게 사용하기 위해서는 객체를 Spring Bean으로 등록하여 Spring Container에서 관리하도록 위임해야 한다.  Spring Bean LifeCycleSpring Container 생성 -> Bean 생성 -> 의존성 주입 -> 초기화 콜백 -> Bean 사용 -> 소멸 전 Callback -> Spring 종료  Bean LifeCycle Callback .. 2024. 11. 7.
『Spring Core』 DI (Dependency Injection) DI (Dependency Injection)의존성 주입은 객체 간의 의존성을 설정하는 방법이다. Spring 컨테이너에 여러 컴포넌트를 빈(Bean)으로 등록하여 객체의 생명주기 관리를 위임하고 빈으로 등록된 객체를 주입받아서 사용할 수 있다.   의존성 주입 방법의존성 주입에는 다음과 같은 방법들이 있다.생성자 주입 (Constructor Injection)세터 주입 (Setter Injection)필드 주입 (Field Injection)일반 메서드 주입 (Method Injection)이 중에서 생성자 주입을 가장 많이 사용하며 Spring에서도 공식적으로 권장하는 방법이다.  생성자 주입생성자를 통해 의존성을 주입하는 방법이다. 생성자 호출 시점에 딱 한 번만 호출되며 이후에는 변경이 불가능하다.. 2024. 11. 7.
『Network』 Docker 정리, 근데 좀 많이 긴 Docker를 왜 쓸까Docker를 사용하면 아래와 같은 장점이 있다.매번 귀찮은 설치 과정을 일일이 거치지 않아도 된다.항상 일관되게 프로그램을 설치할 수 있다. (버전, 환경 설정, 옵션, 운영 체제 등)각 프로그램이 독립적인 환경에서 실행되기 때문에 프로그램 간에 서로 충돌이 일어나지 않는다.  Docker 명령어를 실습하기 전에 알아야 되는 개념이 있다. ✅ IP : 특정 컴퓨터를 가리키는 주소예를 들어, 13.250.14.131 ✅ Port : 실행되고 있는 특정 프로그램의 주소예를 들어, 13.250.14.131:30003000 부분이 포트 번호를 의미한다.  Docker, Container, ImageDocker 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 .. 2024. 11. 4.