본문 바로가기

전체 글72

『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.
『Java』 동일성 (Identity) vs 동등성 (Equality) 자바에서 객체를 비교할 땐 동일성과 동등성 개념이 필요하다. 동일성 (Identity)메모리 내 주소가 같은지 비교한다. 자바에서는 == 연산자를 사용하여 동일성 비교한다.동등성 (Equality)값이 동등한 지 비교한다. 자바에서는 equals() 메서드를 재정의하여 동등성 비교한다.  자동차 클래스 비교하기  Car 클래스는 name과 position 상태를 가진다. 여기서 같은 이름의 자동차는 존재할 수 없다는 요구사항이 있다고 가정하자. 따라서 이름이 같은 두 Car 객체는 동등한 객체로 취급되어야 한다.   equals() 메서드 재정의this == o로 메모리 주소가 같은지 확인한다.o가 null이거나 클래스 타입이 다르면 false를 반환한다.name 필드의 값이 같은지를 비교하여 논리적 동.. 2024. 11. 4.
『Java』 int 타입과 Integer 타입은 성능 차이가 있는가? 래퍼 클래스 성능래퍼 클래스는 객체이기 때문에 기본형보다 다양한 기능을 제공한다. 그렇다면 왜 기본형도 함께 제공할까?  기본형과 래퍼 클래스의 성능 차이를 살펴보자. 기본형 연산은 래퍼 클래스보다 약 5배 정도 빠르다. 참고로, 실제 성능 차이는 시스템 환경에 따라 다를 수 있다. 기본형은 메모리에서 단순히 그 크기만큼의 공간을 차지한다. 예를 들어, int는 일반적으로 4바이트의 메모리를 사용한다. 반면, 래퍼 클래스인 Integer의 인스턴스는 내부에 필드로 기본형 값을 포함할 뿐만 아니라 자바 객체로서의 메타데이터도 포함하므로 더 많은 메모리를 사용한다.  자바 버전과 시스템에 따라 다르지만, 대략 8~16바이트 정도의 메모리가 추가로 사용된다.   기본형, 래퍼 클래스 어떤 것을 사용해야 할까?.. 2024. 11. 4.
『Network』 Internet Gateway와 NAT Gateway의 차이점은 무엇인가? AWS에서 VPC를 구성할 때 Internet Gateway와 NAT Gateway를 각각 생성하게 된다.  Internet Gateway와 NAT Gateway는 공통적으로 VPC(Virtual Private Cloud) 내 리소스와 인터넷 간 통신을 가능하게 해 준다. 그러나 그 사용 목적과 적용되는 서브넷에 따라 차이가 있다.​ Internet Gateway Internet Gateway는 VPC와 인터넷 사이에서 양방향 통신을 가능하게 하는 장치다.  VPC에 Internet Gateway를 연결하면 퍼블릭 서브넷에 있는 인스턴스들이 퍼블릭 IP를 통해 인터넷에 직접 접근할 수 있다. 이를 통해 VPC 내 리소스가 인터넷과 자유롭게 통신할 수 있다.   Internet Gateway를 사용하여 외.. 2024. 11. 1.
『DataBase』 MyBatis 문법 MyBatis 문법 SQL 매핑 파일 (XML)MyBatis는 SQL 매핑 파일을 사용하여 SQL 쿼리와 자바 메서드를 매핑한다.이 파일은  요소로 시작하고,, , ,  등의 요소를 사용하여 각각의 SQL 쿼리를 정의한다.  #{}MyBatis에서는 SQL 쿼리에 매개 변수를 바인딩하여 동적인 쿼리를 생성할 수 있다.#{} 형식을 사용하여 매개 변수를 바인딩할 수 있다.예를 들어, WHERE id = #{userId}와 같은 형식으로 매개 변수를 사용할 수 있다.  resultMapSQL 쿼리의 결과를 자바 객체에 매핑할 수 있다. 요소를 사용하여 결과 매핑을 정의하고, resultType 속성을 사용하여 자바 객체의 클래스를 지정할 수 있다.  요소를 사용하여 각 열을 자바 객체의 속성에 매핑한다.  .. 2024. 11. 1.
『DataBase』 MyBatis 내부 구조 MyBatis  Java 객체와 SQL문 사이의 자동 매핑 기능을 지원하는 Persistence Framework다. SQL을 별도의 파일로 분리해서 관리하며, 객체와 SQL 간의 파라미터 매핑 작업을 자동으로 처리한다.  ✅ Persistence Framework 데이터의 저장, 조회, 변경, 삭제를 다루는 클래스 및 설정 파일들의 집합이다.   MyBatis 특징간단하고 직관적인 Persistence Framework다. SQL을 그대로 사용할 수 있다.  Spring MyBatis Core ComponentDataBase Access Architecture 위 이미지는 MyBatis와 MyBatis-Spring을 사용하여 데이터베이스에 접근하는 구조를 보여준다.각 계층의 역할은 다음과 같다. 계층.. 2024. 11. 1.