분류 전체보기 16

[프로젝트 초기 세팅] 프로젝트 초기 세팅하기

스프링 버전 : 2.7.18spring initializer에서 2점대는 지원을 중단하였기 때문에 의존성 추가 후 프로젝트 내에서 버전을 낮추었다.2점대의 실제 버전은 2.7.18 버전이 유일하게 있는 Release 버전이라 2.7.18로 설정했다. 안정적인 릴리즈 : 2.7.18 버전은 이미 충분한 테스트와 버그 수정을 거친 안정적인 릴리스.광범위한 커뮤니티 지원 : 많은 개발자들이 사용하고 있어 문제 발생 시 도움 받을 수 있는 리소스 풍부 자바 버전 :  11스트림 API 활용 : 자바 11의 향상된 스트림 API를 활용하여 데이터 처리를 더욱 효율적으로 수행 가능

[에러] If you want an embedded database (H2, HSQL or Derby)

프로젝트 초기 설정을 하고 실행하는 중 아래와 같은 에러가 발생했다. 결론부터 말하면 DataSource 설정이 제대로 되어 있지 않아서 그런 것이고appliction.yml 파일에 DataSource 설정을 추가하면 간단히 해결된다. 2024-05-15 20:44:27.412 ERROR 5148 --- [ main] o.s.b.web.embedded.tomcat.TomcatStarter  : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'webMvcMetricsFilter' defined..

REST란? REST API란? RESTful이란?

REST란HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP METHOD(POST,GET,PUT,DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다. CRUD Operation이란 CRUD는 대부분 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리리능인 create. read. update, delete를 묶어서 일컫는 말로  REST에서의 CRUD Operation 동작의 예시는 다음과 같다. Create : 데이터 생성(POST)Read : 데이터 조회(GET)Update : 데이터 수정(PUT, PATCH)Delete : 데이터 삭제(DELETE) REST의 구성 요소1. 자원(Resource)..

프로젝트 2024.05.14

추상 클래스와 인터페이스의 차이점은 무엇이며, 각각을 사용하는 적절한 시나리오에 대해 설명해주세요.

추상 클래스와 인터페이스는 자바에서 객체 지향 프로그래밍의 다형성을 실현하는데 사용되는 두가지 주요 매커니즘입니다. 둘 다 직접 인스턴스화 할 수 없으며, 하위 클래스 또는 구현 클래스가 메서드를 구현하도록 강제합니다. 그러나 목적, 사용 방법, 그리고 제공하는 기능에 있어서 중요한 차이점이 있습니다.  추상 클래스는 상태와 동작을 공유하는 클래스의 계층을 구성할 때 사용되며, 다중 상속을 지원하지 않습니다.반면 인터페이스는, 구현 클래스가 특정 동작을 수행할 수 있음을 보장하는 계약 역할을 하며, 다중 구현이 가능합니다.따라서 설계의 목적과 필요에 따라 적절한 선택이 필요합니다.

기술면접 2024.05.12

checkedException vs uncheckedEexception

자바의 예외는 크게 3가지로 나눌 수 있습니다.체크 예외(Checked Exception)에러(Error)언체크 예외(Unchecked Exception)에러(Error)란?에러는 시스템에 비정상적인 상황이 발생했을 경우에 발생합니다. 예를들어, 메모리 부족(OutofMemoryError)이나 스택오버플로우(StackOverflowError)와 같이 복구할 수 없는 것을 말합니다.이러한 에러는 개발자가 예측하기도 쉽지 않고 처리할 수 있는 방법도 없습니다. 예외(Exception)이란?예외는 프로그램 실행 중에 개발자의 실수로 예기치 않은 상황이 발생했을 때 입니다. 예를들어 배열의 범위를 벗어난(ArrayIndexOutOfBoundsException), 값이 null이 참조변수를 참조(NullPoint..

프로젝트 2024.05.12

@Transactional이란?

모든 작업들이 성공적으로 완료되어야 작업 묶음의 결과를 적용하고, 어떤 작업에서 오류가 발생했을 때는 이전에 있던 모든 작업들이 성공적이었더라도 없었던 일처럼 완전히 되돌리는 것이 트랜잭션의 개념입니다.데이터베이스를 다룰 때 트랜잭션을 적용하면 데이터 추가, 갱신, 삭제 등으로 이루어진 작업을 처리하던 중 오류가 발생했을 때 모든 작업들을 원상태로 되돌릴 수 있습니다. 모든 작업들이 성공해야만 최종적으로 데이터베이스에 반영하도록 합니다. 트랜잭션의 특징  트랜잭션의 특징은 크게 4가지로 구분된다.  원자성 (Atomicity)일관성 (Consistency)독립성 (Isolation)지속성 (Durability)  첫번째로, 원자성은 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 ..

프로젝트 2024.05.12

멀티 프로세스 대신 멀티 스레드를 사용하는 이유는 무엇인가요?

멀티 프로세스와 멀티 스레드멀티 프로세스 : 하나의 운영체제 안에서 여러 프로세스가 동시에 실행되는 것 멀티 스레드 : 하나의 프로세스 안에서 여러 스레드를 사용하여 동시에 처리하는 것멀티 스레드 장단점 장점공유하고 있는 메모리만큼의 메모리 자원을 아낄 수 있다.스레드 간 통신 비용이 적고 응답 시간이 빠르다. 단점스레드 하나가 프로세스 내 자원을 망쳐버린다면 모든 프로세스가 종료될 수 있다.자원을 공유하기 때문에 동기화 문제가 발생할 수 있다. 멀티 스레드를 사용하는 주된 이유는 자원의 효율적 사용과 실행 효율성 때문입니다. 멀티스레드는 하나의 프로세스 내에서 여러 작업을 병렬로 수행할 수 있게 해주며, 이때 스레드들은 프로세스의 메모리와 자원을 관리합니다. 이러한 공유 매커티즘은 멀티 프로세스 방식에..

기술면접 2024.05.08

멀티스레드 프로그래밍에서 동기화(Synchronization)가 왜 필요한가요? 예를 들어 설명해주세요.

멀티스레드 프로그래밍에서 동기화는 여러 스레드가 동시에 같은 메모리(자원)에 접근할 때 데이터의 일관성과 정확성을 보장하기 위해 필요합니다.  동기화를 하지 않으면 스레드들이 자원을 동시에 읽고 쓸 때 '경쟁 조건'이 발생할 수 있으며, 이는 예측 불가능한 결과나 데이터의 손상을 초래할 할 수 있습니다.   자바에서는 syncronized 키워드를 사용하여 메서드나 코드 블록을 동기화할 수 있습니다.이 키워드는 해당 메서드나 코드 블록에 동시에 하나의 스레드만 접근할 수 있도록 보장합니다. 또한, Lock 인터페이스와구현체들을 사용하여 더 세밀한 동기화 제어가 가능합니다.

기술면접 2024.05.08

자바에서 가비지 컬렉션(GC)의 원리를 설명해주세요.

- 자바에서 가비지 컬렉션(GC)은 프로그램이 동적으로 할당한 메모리 중에서 더 이상 사용되지 않는 부분을 자동으로 찾아서 해제하는 메커니즘입니다.  이 과정은 메모리 누수를 방지하고, 프로그램의 안정성을 유지하는 데 도움을 줍니다.   가비지 컬렉션의 기본 원리는 '도달 가능성(Reachability)' 분석입니다. 특정 객체가 '도달 가능한' 상태라는 것은 프로그램의 루트 집합(Root Set)에서 출발하여 참조를 따라갔을 때 도달할수 있는 객체를 의미합니다.  루트 집합에는 지역변수, 활성 스레드, 정적 변수 등이 포함됩니다.  GC는 이러한 루트 집합으로부터 시작하여 참조되는 객체들을 추적하고, 추적되지 않는 객체들을가비지로 판단하여 메모리를 회수합니다.   자바에서는 주로 마크-스위프트(Mark..

기술면접 2024.05.05

자바가 확장한 객체 지향

이제 객체 지향 4대 특성을 넘어 자바가 객체 지향을 확장하기 위해 사용하는 키워드와 개념을 살펴보자. 01_ abstract 키워드 _ 추상 메서드와 추상 클래스 -동물 타입의 참조 변수를 통해 하위 클래스의 인스턴스가 가진 aaa() 메서드를 호출하고 있으니 상위 클래스인 동물의 aaa() 메서드는 반드시 존재해야 한다. 그런데 실수로 동물 클래스의 인스턴스를 만들고 그렇게 만들어진 동물 객체의 aaa() 메서드를 호출하면 난감해진다. 바로 이런 경우 추상 메서드를 사용하게 된다. 메서드 선언은 있으되 몸체는 없는 형태로 메서드를 구현하는것이다.   - 아래는 추상 클래스를 사용한 예제이다.1. 동물 객체는 어떻게 울어야 하지? / 누가 실수로 동물 객체를 만들면 어떡하지?2. 동물 참조 변수 배열로..

Java 2024.05.04