팩토리 패턴 팩토리 패턴은 객체 생성을 담당하는 인터페이스를 정의하고, 이를 구현한 서브 클래스의 인스턴스를 반환하는 디자인 패턴입니다. 이는 여러 서브 클래스를 가진 슈퍼 클래스에서 인풋에 따라 적절한 자식 클래스의 인스턴스를 반환하는 방식을 갖추고 있습니다. 이러한 패턴을 사용함으로써 객체 생성 및 변경 부분을 캡슐화하여 소스코드의 중복을 줄일 수 있으며, 다형성을 활용하여 유연하고 확장 가능한 코드를 작성할 수 있습니다. 소프트웨어 디자인 패턴 2024.03.27
3장. 함수 정의와 호출 3.1 코틀린에서 컬렉션 만들기 코틀린 컬렉션은 자바 컬렉션과 같은 클래스이다. 하지만 코틀린에서는 자바보다 더 많은 기능을 쓸 수 있다. val strings = listOf ("first”, "second”, ”fourteenth") printin (strings. last ()) // fourteenth val numbers = setOf (1, 14, 2) printin (numbers.max()) // 14 3.2 함수를 호출하기 쉽게 만들기 자바 컬렉션에는 기본적으로 toString 구현이 들어있다. 코틀린을 이용해서 joinToString 함수 구현하기 // joinToString() 함수의 초기 구현 // 제네릭 타입 fun joinToString( collection: Collection.. 개발 언어/코틀린 2024.03.27
2장. 코틀린 기초 2.1 기본 요소 : 함수와 변수 2.1.1 함수 함수를 선언할때 func 키워드를 사용한다. 타라미터 이름 뒤에 파라미터의 타입을 쓴다. 함수를 최상위 수준에 정의할 수 있다. 꼭 클래스 안에 함수를 넣어야할 필요가 없다. 배열도 일반적인 클래스, 코틀린에는 자바와 달리 배열 처리를 위한 문법이 없다. 식이 본문인 함수는 반환타입을 적지 않아도 컴파일러가 자동으로 반환타입을 정해준다. 코틀린에서 if는 식(expression)이다. 자바에서는 모든 제어구조가 문(statement)이지만, 코틀린에서는 Loop를 제외하면 대부분 제어 구조가 식(expression)이다. 문(statement)은 자신은 둘러싸고 있는 가장 안쪽 블록의 최상위 요소로 아무런 값을 만들어내지 않는다. 식(expression).. 개발 언어/코틀린 2024.03.26
1장. 코틀린이란 무엇이며 왜 필요한가? 1. 1 코틀린이란? 코틀린은 자바 플랫폼에서 돌아가는 새로운 개발 언어 코틀린은 간결하고 실용적이며, 자바 코드와 상호운용성을 중시 1.2 코틀린의 주요 특성 1.2.1. 대상 플랫폼 서버, 안드로이 등 자바가 실행되는 모든곳에서 사용 1.2.2. 정적 타입 지정 언어 정적 타입 지정이란? 프로그램 구성요소의 타입을 컴파일 시점에 알수 있고, 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증하는 것 정적타입 지정의 장점 성능 : 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 없으므로 메서드 호출이 더 빠르다. 신뢰성 : 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 더 적어진다. 유지 보수성 : 코드에 다루는 객체가 어떤 타입에.. 개발 언어/코틀린 2024.03.25
트랜잭셔널 전파 트랜잭션 전파란? 트랜잭셔널 전파(Transaction Propagation)는 트랜잭션의 범위를 결정하고 해당 트랜잭션이 다른 메서드나 컴포넌트로 전파되는 방식을 제어하는 메커니즘입니다. 트랜잭셔널 전파는 주로 분산 환경에서 여러 개의 서비스나 메서드 간에 트랜잭션을 관리할 때 사용됩니다. 트랜잭션 전파옵션 사용방법 import org.springframework.transaction.annotation.Transactional; @Service public class MyService { @Autowired private MyRepository repository; @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.REA.. Spring/JPA 2024.03.12
Mysql 재설치 문제 결국엔 mysql 재설치 과정에서 기존 파일들이 남아있어서 발생한 문제.. mysql은 버전, 환경마다 설치되는 위치가 다르므로 삭제하는데 애를 먹는다. 그러니깐 처음에 삭제 잘하자.. ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/MacBookAir.local.pid) 2023-12-02T12:03:52.776659Z 0 [Note] InnoDB: Loading buffer pool(s) from /opt/homebrew/var/mysql/ib_buffer_pool 2023-12-02T12:03:52.776764Z 0 [Note] Plugin 'FEDERATED' is disabled. 2023-12-02T12:03:.. 카테고리 없음 2024.03.11
2. 리액티브 스트림즈 1. 리액티브 스트림즈란? 데이터 스트림을 Non-Blocking이면서 비동기적인 방식으로 처리하기 위한 리액티브 라이브러리의 표준 사양 리액티브 스트림즈를 구현한 구현체로 RxJava, Reactor, Akka Streams, Java 9 Flow API 등이 있다. 2. 리액티브 스트림즈 구성요소 리액티브 스트림즈를 통해 구현해야되는 API 컴포넌트는 Publisher, Subscriber, Subscription, Processtor가 있습니다. Publisher : 데이터를 생성하고 통지(발행, 게시, 방출)하는 역할을 한다. Subscriber : 구독한 Publisher로부터 통지(발행, 게시, 방출)된 데이터를 전달받아서 처리하는 역할을 한다. Subscription : Publisher에 .. Spring/Webflux 2024.03.07
1. 리액티브 시스템과 리액티브 프로그래밍 1. 리액티브 시스템이란? 리액티브 시스템은 리액티브한 원리와 원칙을 적용하여 개발된 소프트웨어 시스템을 의미합니다. 쉽게 말하면 어떤 이벤트나 상황이 발생했을 때, 그에 따라 적절하게 반응을 잘 하는 시스템을 말합니다. 2. 리액티브 선언문으로 리액티브 시스템 이해하기 리액티브 선언문 : https://www.reactivemanifesto.org/ko 2.1 Means(방법) 리액티브 시스템에서 주요 통신 수단으로 무엇을 사용할 것인지 표현한 것입니다. 그림에 나와 있는 비동기 메세지 기반 통신을 통해서 구성요소들 간의 느슨한 결합, 격리성, 위치 투명성을 보장하빈다. 2.2 Form(형성) 메세지 기반 통신을 통애서 어떠한 형태를 지니는 시스템으로 형성되는지를 나타냅니다. 그림에서는 리액티브 시스템.. Spring/Webflux 2024.03.06
서블릿 컨테이너, 스프링부트 동작 과정 서블릿이란? JAVA 언어를 사용하여 웹 애플리케이션을 개발할 때 사용되는 자바 클래스. 서블릿은 클라이언트의 요청을 처리하고, 동적인 웹 컨텐츠를 생성하는데 사용됨. 이렇게 만든 서블릿 클래스는 Tomcat 같은 서블릿 컨테이너(WAS)가 관리하며 클라이언트에서 받은 요청에 맞는 서블릿을 실행시켜 웹페이지 생성 후 반환해준다. WAS WAS 는 Web-Application Server로 동적인 컨텐츠 처리를 담당함. 예를 들어서 Tomcat 이 있음 Spring Boot 에서 Tomcat 과거에는 요청마다 서블릿을 하나씩 매핑하여 처리했던 것과 달리, Spring Boot에서는 DispatchServlet 이라는 서블릿 하나만 만들어 둔 다음, 해당 서블릿이 각 요청을 SpringBoot 에서 개발자가.. Spring/공통 기반 지식 2024.03.06