전체 글 73

컬렉션 프레임워크 와 스트림

자료구조의 분류 -대표적으로 많이 분류되는 방법은 선형 자료구조, 비선형 자료구조로 나눌수 있다. 이러한 분류를 보통 "형태에 따른 자료구조"라고 보고, 각 자료구조에 알맞게 구체화 된 것들을 '구현된 자료구조'라 한다. 선형자료구조 선형자료구조는 쉽게 생각해서 데이터가 일렬로 연결된 형태라고 보면된다. 선형자료구조는 대표적으로 리스트(List), 큐(Queue) , 덱(Deque) 이 있다. 비선형자료구조 일렬로 나열된 것이 아닌, 각 요소가 여러 개의 요소와 연결된 형태를 생각하면 된다. 거미줄 대표적인 비선형 자료구조는 그래프(Graph), 트리(Tree)이다. 컬렉션 프레임워크 LIST컬렉션 List 인터페이스: 순서가 있는 데이터의 집합을 나타냅니다. 중복 요소를 허용합니다.선형 자료구조를 구현..

CS/자바 2023.04.27

자바의 예외처리 종류

1.Error(오류) 와 Exception(예외) 먼저 오류와 예외츼 개념을 정리하자 오류(Error) 는 시스템에서 비정상적인 상황이 생겼을 때 발생한다. 메모리 부족, 네트워크 장애 등 이는 시스템 레벨에서 발생하기 때문에 심각한 수준의 오류이다. 따라서 개발자가 미리 예측하여 처리할 수 없기 때문에, 어플리케이션에서 오류에 대한 처리르 신경쓰지 않아도 된다. 오류가 시스템 레벨에서 발생한다면, 예외는 개발자가 구현한 로직에서 발생한다. 예외는 발생할 상황을 미리 예측하여 처리할 수 있다. 개발자가 처리할 수 있기 때문에 예외를 구분하고 그에 따른 처리 방법을 명확히 알고 적용하는 것이 중요하다. 2. Checked Eception과 Unchecked Exception Checked Eception ..

CS/자바 2023.04.27

객체지향 프로그래밍(OOP :Object-Oriented Programming)

객체 지향 프로그래밍은 현실 세계의 사물같은 객체를 만들고, 객체에서 필요한 특징(필드,메소드 ... )을 뽑아 프로그래밍 수행하는 것이다. 객체지향 프로그래밍은 총 4가지 특징이 있다. 추상화, 캡슐화, 상속성, 다형성이다. 이를 통해 코드의 재사용을 통해 반복적인 코드를 최소화하고, 코드를 최대한 간결하게 표현한다. 프로그램을 보다 유연하고 변경이 용이하게 만들수 있다는 점이다. 객체란 무엇인가?? 주변을 둘러보면 마우스, 모니터 , 키보드 등 우리가 주변에서 흔히 볼수 있는 "모든 실재하는 대상"을 객체 지향프로그래밍 언어에서는 객체라고 부른다.객체는 우리가 보고 느끼고 인지할 수 있는 그 모든것을 의미 객체지향 프로그래밍(OOP) 4가지 특징 1.추상화 -객체의 공통적인 속성과 기능을 추출하여 정..

CS/자바 2023.04.27

자바 프로그램 실행 과정 및 기본 구조

-목차- 1.자바 발생배경 2.자바 컴파일 과정 및 구조 3.자바 메모리 구조 4.가비지 컬렉션 자바는 1995년 썬 마이크로시스템즈에서 발표한 객체 지향 프로그래밍 언어이다. 그 당시에 문제점 : 각각의 하드웨어 와 운영체제마다 프로그램을 개발해야 하는 번거로움 당시 인터넷이 급격하게 발전하면서 웹 어플리케이션 개발이 많이 이루어졌다. 이에 어플리케이션을 쉽게 개발할 수 있는 언어가 필요하였다. 자바는 운영체제와 하드웨어에 독립적으로 동작하는 플랫폼과 인터넷에서 동작하는 어플리케이션 개발을 위한 언어로써 탄생하게 되었다. 자바는 어떻게 독립적으로 동작하는 플랫폼을 구현할 수 있지? 자바 컴파일러는 소스 코드를 바이트 코드로 변환한다. 바이트 코드는 JVM이 이해할 수 있는 중간 코드 형태로 운영체제와 ..

CS/자바 2023.04.27

[spring] AOP 주의사항(프록시와 내부호출)

스프링은 프록시 방식의 AOP를 사용한다 따라서 AOP를 적용하려면 항상 프록시를 통해 대상 객체(Target)을 호출해야 한다. 이렇게 해야 프록시에서 먼저 어드바이스를 호출하고, 이후에 대상 겍체를 호출한다. 하지만, 대상 객체의 내부에서 메서드 호출이 발생하면 프록시를 거치지 않고 대상 객체를 직접 호출하는 문제가 발생한다. 실무에서 반드시 한번은 만나서 고생하는 문제 프록시와 내부호출 : 내부호출이 발생하는 예제 package hello.aop.internalcall; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @Slf4j @Component public class CallServiceV0 {..

spring 2023.04.27

[spring] 스프링 AOP적용

어디바이스 유형 AOP에서 가장 많이 사용되는 어드바이스 유형은 아래와 같습니다. @Before: 메서드 실행 전에 실행되는 어드바이스입니다. @After: 메서드 실행 후에 실행되는 어드바이스입니다. 예외 발생 여부에 관계없이 항상 실행됩니다. @AfterReturning: 메서드가 성공적으로 반환된 후에 실행되는 어드바이스입니다. @AfterThrowing: 메서드에서 예외가 발생한 경우 실행되는 어드바이스입니다. @Around: 메서드 실행 전과 후 모두에 실행되는 어드바이스입니다. 메서드 실행 전/후에 추가적인 처리가 필요한 경우 사용합니다. 포인트컷 지시자 종류 포인트컷 표현식은 에스팩트J가 제공하는 포인트컷 표현식을 줄여서 말하는 것이다. 포인트컷 지시자의 종류 execution : 메소드 실..

spring 2023.04.27

[spring] 스프링 AOP개념이해

-목차- 1.AOP가 발생배경 2.AOP란 무엇인가? 3.AOP 적용방식 4.AOP 용어정리 1.AOP가 발생한 배경 애플리케이션 로직은 크게 핵심기능 과 부가기능으로 나눠진다. 핵심 기능은 해당 객체가 제공하는 고유의 기능 부가 기능은 핵심 기능을 보조하기 위해 제공되는 기능 그렇지만 여러 곳에서 공통으로 사용하는 부가기능!!! 부가 기능을 적용해야 하는 클래스가 100개이면 100개 모두 동일한 코드 추가?????? 부가 기능 적용 문제를 정리하면 다음과 같다. - 부가 기능을 적용할 때 아주 많은 반복이 필요하다. - 부가 기능이 여러 곳에 퍼져서 중복 코드를 만들어 낸다. - 부가 기능을 변경할 때 중복 때문에 많은 수정이 필요하다. - 부가 기능의 적용 대상을 변경할 때 많은 수정이 필요하다. ..

spring 2023.04.24

로그 추적기 ( 템플릿 콜백 패턴)

템플릿 콜백 패턴 정의 템플릿 콜백 패턴은 객체지향 소프트웨어 디자인 패턴 중 하나로, 동작의 일부를 서브클래스 또는 콜백함수에게 위임하여 동작의 일부를 커스터마이징할 수 있는 구조를 제공하는 패턴이다. 자주 사용되는 패턴중 하나이고, 스프링에서 xxxTemplate 가 있다면 템플릿 콜백 패턴으로 만들어져 있다고 생각하면 된다. 콜백이란, 어떤 작업이 완료되거나 특정 이벤트가 발생하면 시스템에서 미리 등록된 함수(또는 메서드)를 호출하는 것을 말한다. 템플릿 입장에서는 내 영역 뒤에서 로직이 실현되서 '콜백'이다. 템플릿 콜백 패턴 코드 아무리 최적화를 해도 결국 로그 추적기를 적용하기 위해서 원본 코드를 수정해야 한다는 점이다. 클래스가 수백개이면 수백개를 다 힘들게 수정하는가? 지금부터 원본 코드를..

spring 2023.04.17

로그추적기 사용(feat.템플릿메서드 패턴)

-목차- 1. 로그추적기 문제점 2.템플릿 메서드 패턴 2-1.템플릿메서드 정의 2-2.템플릿메서드 패턴코드 구현 3. 전략 패턴 3.1전략패턴(필드주입) 3.2전략패턴(파타미터전달) 3.3전략패턴 결론 1.현 로그추적기 문제점 위 두사진의 핵심기능은 단 한줄이다.!!!!! 그렇지만 로그추적기를 사용하기 위해 넣었던 코드가 중복되고 , 핵심기능 코드보다 더 복잡하다!!! 좋은 설계는 변하는 것과 변하지 않는 것을 분리하는 것이다. 핵심기능 부분은 변하고, 로그 추적기를 사용하는 부분은 변하지 않는 부분이다. 이 둘을 분리해서 모듈화 해야 한다.!! 템플릿 메서드 패턴은 이런 문제를 해결하는 디자인 패턴이다. 로그 남기는 부분에 단일 책임원칙(SRP)을 지킨 것이다. 변경 지점을 하나로 모아서 변경에 쉽게..

spring 2023.04.17